aboutsummaryrefslogtreecommitdiff
path: root/rootston
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2018-03-26 23:39:29 -0400
committerGitHub <noreply@github.com>2018-03-26 23:39:29 -0400
commitd1d983a303209aa701b5d2d8084d2bf1f2d7f904 (patch)
treea3d4009404f4d9057c9fd8f422fffccce2c340c8 /rootston
parentb1c4f01bad11fec82c45b48db7739d621f2d58a9 (diff)
parent07ca9764891f8de90fe2892051dac980bd472df2 (diff)
Merge pull request #680 from Ongy/roots_unfullscreen
unset fullscreen when surface is brought to front
Diffstat (limited to 'rootston')
-rw-r--r--rootston/seat.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/rootston/seat.c b/rootston/seat.c
index d2d211ba..017e6221 100644
--- a/rootston/seat.c
+++ b/rootston/seat.c
@@ -723,6 +723,33 @@ void roots_seat_set_focus(struct roots_seat *seat, struct roots_view *view) {
wl_list_insert(&seat->input->server->desktop->views, &view->link);
}
+
+ bool unfullscreen = true;
+
+#ifdef WLR_HAS_XWAYLAND
+ if (view && view->type == ROOTS_XWAYLAND_VIEW &&
+ view->xwayland_surface->override_redirect) {
+ unfullscreen = false;
+ }
+#endif
+
+ if (unfullscreen) {
+ struct roots_desktop *desktop = view->desktop;
+ struct roots_output *output;
+ struct wlr_box box;
+ view_get_box(view, &box);
+ wl_list_for_each(output, &desktop->outputs, link) {
+ if (output->fullscreen_view &&
+ output->fullscreen_view != view &&
+ wlr_output_layout_intersects(
+ desktop->layout,
+ output->wlr_output, &box)) {
+ view_set_fullscreen(output->fullscreen_view,
+ false, NULL);
+ }
+ }
+ }
+
struct roots_view *prev_focus = roots_seat_get_focus(seat);
if (view == prev_focus) {
return;