aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Kirill Primak <vyivel@eclair.cafe>2022-05-27 16:42:47 +0300
committerLibravatar Simon Ser <contact@emersion.fr>2022-05-27 15:49:57 +0200
commit6a59e38aeb71ad55191a20d81f9367141673c96b (patch)
tree5a29c2ff5e2c02ed106969a3b4b13453c3be8956
parentchore: chase wlroots xdg-shell update (diff)
downloadsway-6a59e38aeb71ad55191a20d81f9367141673c96b.tar.gz
sway-6a59e38aeb71ad55191a20d81f9367141673c96b.tar.zst
sway-6a59e38aeb71ad55191a20d81f9367141673c96b.zip
xdg-shell: schedule a configure on maximize request
-rw-r--r--include/sway/tree/view.h1
-rw-r--r--sway/desktop/xdg_shell.c12
2 files changed, 13 insertions, 0 deletions
diff --git a/include/sway/tree/view.h b/include/sway/tree/view.h
index 95708a04..0dcbf1aa 100644
--- a/include/sway/tree/view.h
+++ b/include/sway/tree/view.h
@@ -131,6 +131,7 @@ struct sway_xdg_shell_view {
131 struct wl_listener commit; 131 struct wl_listener commit;
132 struct wl_listener request_move; 132 struct wl_listener request_move;
133 struct wl_listener request_resize; 133 struct wl_listener request_resize;
134 struct wl_listener request_maximize;
134 struct wl_listener request_fullscreen; 135 struct wl_listener request_fullscreen;
135 struct wl_listener set_title; 136 struct wl_listener set_title;
136 struct wl_listener set_app_id; 137 struct wl_listener set_app_id;
diff --git a/sway/desktop/xdg_shell.c b/sway/desktop/xdg_shell.c
index 16121733..8da922d5 100644
--- a/sway/desktop/xdg_shell.c
+++ b/sway/desktop/xdg_shell.c
@@ -325,6 +325,13 @@ static void handle_new_popup(struct wl_listener *listener, void *data) {
325 popup_create(wlr_popup, &xdg_shell_view->view); 325 popup_create(wlr_popup, &xdg_shell_view->view);
326} 326}
327 327
328static void handle_request_maximize(struct wl_listener *listener, void *data) {
329 struct sway_xdg_shell_view *xdg_shell_view =
330 wl_container_of(listener, xdg_shell_view, request_maximize);
331 struct wlr_xdg_toplevel *toplevel = xdg_shell_view->view.wlr_xdg_toplevel;
332 wlr_xdg_surface_schedule_configure(toplevel->base);
333}
334
328static void handle_request_fullscreen(struct wl_listener *listener, void *data) { 335static void handle_request_fullscreen(struct wl_listener *listener, void *data) {
329 struct sway_xdg_shell_view *xdg_shell_view = 336 struct sway_xdg_shell_view *xdg_shell_view =
330 wl_container_of(listener, xdg_shell_view, request_fullscreen); 337 wl_container_of(listener, xdg_shell_view, request_fullscreen);
@@ -398,6 +405,7 @@ static void handle_unmap(struct wl_listener *listener, void *data) {
398 405
399 wl_list_remove(&xdg_shell_view->commit.link); 406 wl_list_remove(&xdg_shell_view->commit.link);
400 wl_list_remove(&xdg_shell_view->new_popup.link); 407 wl_list_remove(&xdg_shell_view->new_popup.link);
408 wl_list_remove(&xdg_shell_view->request_maximize.link);
401 wl_list_remove(&xdg_shell_view->request_fullscreen.link); 409 wl_list_remove(&xdg_shell_view->request_fullscreen.link);
402 wl_list_remove(&xdg_shell_view->request_move.link); 410 wl_list_remove(&xdg_shell_view->request_move.link);
403 wl_list_remove(&xdg_shell_view->request_resize.link); 411 wl_list_remove(&xdg_shell_view->request_resize.link);
@@ -446,6 +454,10 @@ static void handle_map(struct wl_listener *listener, void *data) {
446 wl_signal_add(&toplevel->base->events.new_popup, 454 wl_signal_add(&toplevel->base->events.new_popup,
447 &xdg_shell_view->new_popup); 455 &xdg_shell_view->new_popup);
448 456
457 xdg_shell_view->request_maximize.notify = handle_request_maximize;
458 wl_signal_add(&toplevel->events.request_maximize,
459 &xdg_shell_view->request_maximize);
460
449 xdg_shell_view->request_fullscreen.notify = handle_request_fullscreen; 461 xdg_shell_view->request_fullscreen.notify = handle_request_fullscreen;
450 wl_signal_add(&toplevel->events.request_fullscreen, 462 wl_signal_add(&toplevel->events.request_fullscreen,
451 &xdg_shell_view->request_fullscreen); 463 &xdg_shell_view->request_fullscreen);