aboutsummaryrefslogtreecommitdiffstats
path: root/sway/tree/view.c
diff options
context:
space:
mode:
authorLibravatar Ronan Pigott <rpigott@berkeley.edu>2020-07-30 16:31:52 -0700
committerLibravatar Simon Ser <contact@emersion.fr>2020-08-05 11:05:49 +0200
commitf478f4cc6663f9519281f08334f1f27e3182b022 (patch)
treeb309a8f99c857d1beac60bd4d07a1dca1f722ae4 /sway/tree/view.c
parentview: implement foreign toplevel fullscreen indicator (diff)
downloadsway-f478f4cc6663f9519281f08334f1f27e3182b022.tar.gz
sway-f478f4cc6663f9519281f08334f1f27e3182b022.tar.zst
sway-f478f4cc6663f9519281f08334f1f27e3182b022.zip
view: implement foreign toplevel fullscreen request
Diffstat (limited to 'sway/tree/view.c')
-rw-r--r--sway/tree/view.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/sway/tree/view.c b/sway/tree/view.c
index 2353feff..b1837242 100644
--- a/sway/tree/view.c
+++ b/sway/tree/view.c
@@ -636,6 +636,33 @@ static void handle_foreign_activate_request(
636 } 636 }
637} 637}
638 638
639static void handle_foreign_fullscreen_request(
640 struct wl_listener *listener, void *data) {
641 struct sway_view *view = wl_container_of(
642 listener, view, foreign_fullscreen_request);
643 struct wlr_foreign_toplevel_handle_v1_fullscreen_event *event = data;
644
645 // Match fullscreen command behavior for scratchpad hidden views
646 struct sway_container *container = view->container;
647 if (!container->workspace) {
648 while (container->parent) {
649 container = container->parent;
650 }
651 }
652
653 container_set_fullscreen(container,
654 event->fullscreen ? FULLSCREEN_WORKSPACE : FULLSCREEN_NONE);
655 if (event->fullscreen) {
656 arrange_root();
657 } else {
658 if (container->parent) {
659 arrange_container(container->parent);
660 } else if (container->workspace) {
661 arrange_workspace(container->workspace);
662 }
663 }
664}
665
639static void handle_foreign_close_request( 666static void handle_foreign_close_request(
640 struct wl_listener *listener, void *data) { 667 struct wl_listener *listener, void *data) {
641 struct sway_view *view = wl_container_of( 668 struct sway_view *view = wl_container_of(
@@ -676,6 +703,9 @@ void view_map(struct sway_view *view, struct wlr_surface *wlr_surface,
676 view->foreign_activate_request.notify = handle_foreign_activate_request; 703 view->foreign_activate_request.notify = handle_foreign_activate_request;
677 wl_signal_add(&view->foreign_toplevel->events.request_activate, 704 wl_signal_add(&view->foreign_toplevel->events.request_activate,
678 &view->foreign_activate_request); 705 &view->foreign_activate_request);
706 view->foreign_fullscreen_request.notify = handle_foreign_fullscreen_request;
707 wl_signal_add(&view->foreign_toplevel->events.request_fullscreen,
708 &view->foreign_fullscreen_request);
679 view->foreign_close_request.notify = handle_foreign_close_request; 709 view->foreign_close_request.notify = handle_foreign_close_request;
680 wl_signal_add(&view->foreign_toplevel->events.request_close, 710 wl_signal_add(&view->foreign_toplevel->events.request_close,
681 &view->foreign_close_request); 711 &view->foreign_close_request);