diff options
Diffstat (limited to 'sway/desktop/xdg_shell.c')
-rw-r--r-- | sway/desktop/xdg_shell.c | 12 |
1 files changed, 12 insertions, 0 deletions
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 | ||
328 | static 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 | |||
328 | static void handle_request_fullscreen(struct wl_listener *listener, void *data) { | 335 | static 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); |