summaryrefslogtreecommitdiff
path: root/src/misc.c
diff options
context:
space:
mode:
authorOlivier Fourdan <fourdan.olivier@wanadoo.fr>2005-09-13 20:12:02 +0000
committerOlivier Fourdan <fourdan.olivier@wanadoo.fr>2005-09-13 20:12:02 +0000
commit6344f36d8f666710f1d476556ffd5049b1ee4a1e (patch)
tree9e518517e471abd1dd04c3cceefe1062c8d5ba60 /src/misc.c
parent94a91a19af7330edb1d63bd4c9e510e5066db14b (diff)
downloadxfwm4-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.c29
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,