diff options
author | Olivier Fourdan <fourdan.olivier@wanadoo.fr> | 2005-09-13 20:12:02 +0000 |
---|---|---|
committer | Olivier Fourdan <fourdan.olivier@wanadoo.fr> | 2005-09-13 20:12:02 +0000 |
commit | 6344f36d8f666710f1d476556ffd5049b1ee4a1e (patch) | |
tree | 9e518517e471abd1dd04c3cceefe1062c8d5ba60 /src/misc.c | |
parent | 94a91a19af7330edb1d63bd4c9e510e5066db14b (diff) | |
download | xfwm4-6344f36d8f666710f1d476556ffd5049b1ee4a1e.tar.gz |
Be smarter when showing/hiding sidewalk windows, that greatly improves panel autohide feature
(Old svn revision: 17584)
Diffstat (limited to 'src/misc.c')
-rw-r--r-- | src/misc.c | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/src/misc.c b/src/misc.c index 17905a6b3..871847711 100644 --- a/src/misc.c +++ b/src/misc.c @@ -168,12 +168,14 @@ checkWindowOnRoot(ScreenInfo *screen_info, Window w) void placeSidewalks(ScreenInfo *screen_info, gboolean activate) { + NetWmDesktopLayout l = screen_info->desktop_layout; + g_return_if_fail (MYWINDOW_XWINDOW (screen_info->sidewalk[0]) != None); g_return_if_fail (MYWINDOW_XWINDOW (screen_info->sidewalk[1]) != None); g_return_if_fail (MYWINDOW_XWINDOW (screen_info->sidewalk[2]) != None); g_return_if_fail (MYWINDOW_XWINDOW (screen_info->sidewalk[3]) != None); - if (activate) + if ((activate) && (l.cols > 1)) { /*left*/ xfwmWindowShow (&screen_info->sidewalk[0], @@ -184,16 +186,6 @@ placeSidewalks(ScreenInfo *screen_info, gboolean activate) xfwmWindowShow (&screen_info->sidewalk[1], gdk_screen_get_width (screen_info->gscr) - 2, 0, 2, gdk_screen_get_height (screen_info->gscr), FALSE); - - /*top*/ - xfwmWindowShow (&screen_info->sidewalk[2], - 0, 0, - gdk_screen_get_width (screen_info->gscr), 2, FALSE); - - /*bottom*/ - xfwmWindowShow (&screen_info->sidewalk[3], - 0, gdk_screen_get_height (screen_info->gscr) - 2, - gdk_screen_get_width (screen_info->gscr), 2, FALSE); } else /* Place the windows off screen */ { @@ -206,7 +198,22 @@ placeSidewalks(ScreenInfo *screen_info, gboolean activate) xfwmWindowShow (&screen_info->sidewalk[1], gdk_screen_get_width (screen_info->gscr), 0, 2, gdk_screen_get_height (screen_info->gscr), FALSE); + } + if ((activate) && (l.rows > 1)) + { + /*top*/ + xfwmWindowShow (&screen_info->sidewalk[2], + 0, 0, + gdk_screen_get_width (screen_info->gscr), 2, FALSE); + + /*bottom*/ + xfwmWindowShow (&screen_info->sidewalk[3], + 0, gdk_screen_get_height (screen_info->gscr) - 2, + gdk_screen_get_width (screen_info->gscr), 2, FALSE); + } + else /* Place the windows off screen */ + { /*top*/ xfwmWindowShow (&screen_info->sidewalk[2], 0, -2, |