]> git.sur5r.net Git - i3/i3/commitdiff
Replace the old fullscreen container when requesting fullscreen
authorMichael Stapelberg <michael@stapelberg.de>
Sun, 8 Apr 2012 15:53:37 +0000 (17:53 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Sun, 8 Apr 2012 15:53:37 +0000 (17:53 +0200)
Fixes: #510
src/con.c
testcases/t/100-fullscreen.t

index 724961ff68562c1c2179d767ac1a874c43f5e70e..c24a379f7abc186a1fd2dc5944da7a1e03992be0 100644 (file)
--- a/src/con.c
+++ b/src/con.c
@@ -520,10 +520,12 @@ void con_toggle_fullscreen(Con *con, int fullscreen_mode) {
             fullscreen = con_get_fullscreen_con(workspace, CF_OUTPUT);
         }
         if (fullscreen != NULL) {
-            LOG("Not entering fullscreen mode, container (%p/%s) "
-                "already is in fullscreen mode\n",
+            /* Disable fullscreen for the currently fullscreened
+             * container and enable it for the one the user wants
+             * to have in fullscreen mode. */
+            LOG("Disabling fullscreen for (%p/%s) upon user request\n",
                 fullscreen, fullscreen->name);
-            goto update_netwm_state;
+            fullscreen->fullscreen_mode = CF_NONE;
         }
 
         /* 2: enable fullscreen */
@@ -533,7 +535,6 @@ void con_toggle_fullscreen(Con *con, int fullscreen_mode) {
         con->fullscreen_mode = CF_NONE;
     }
 
-update_netwm_state:
     DLOG("mode now: %d\n", con->fullscreen_mode);
 
     /* update _NET_WM_STATE if this container has a window */
index f8fc92a24aee749c58bbd58d31c3383e6a3d8e86..cee77132593c06e2917eea4fe1179fe09a6a5103 100644 (file)
@@ -104,9 +104,10 @@ ok(($wrect->{y} - $orect->{y}) < $threshold, 'y coordinate fullscreen');
 ok(abs($wrect->{width} - $orect->{width}) < $threshold, 'width coordinate fullscreen');
 ok(abs($wrect->{height} - $orect->{height}) < $threshold, 'height coordinate fullscreen');
 
-###############################################################################
-# test if setting two windows in fullscreen mode at the same time does not work
-###############################################################################
+################################################################################
+# Verify that when one window wants to go into fullscreen mode, the old
+# fullscreen window will be replaced.
+################################################################################
 
 $original_rect = X11::XCB::Rect->new(x => 0, y => 0, width => 30, height => 30);
 my $swindow = open_window(
@@ -130,7 +131,7 @@ is(fullscreen_windows(), 1, 'amount of fullscreen windows');
 
 $window->fullscreen(0);
 sync_with_i3;
-is(fullscreen_windows(), 0, 'amount of fullscreen windows');
+is(fullscreen_windows(), 1, 'amount of fullscreen windows');
 
 ok($swindow->mapped, 'window mapped after other fullscreen ended');