From 3acd5ff0c5c04cfe405e853e8e4a3e004abe1a94 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Sun, 13 May 2007 21:17:32 +0000 Subject: [PATCH] fix for wrapping in desktop cycling --- openbox/screen.c | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/openbox/screen.c b/openbox/screen.c index 1cbb2a5e..97fa8849 100644 --- a/openbox/screen.c +++ b/openbox/screen.c @@ -663,7 +663,7 @@ guint screen_cycle_desktop(ObDirection dir, gboolean wrap, gboolean linear, { guint r, c; static guint d = (guint)-1; - guint ret; + guint ret, oldd; if (d == (guint)-1) d = screen_desktop; @@ -671,6 +671,7 @@ guint screen_cycle_desktop(ObDirection dir, gboolean wrap, gboolean linear, if ((cancel || done) && dialog) goto show_cycle_dialog; + oldd = d; get_row_col(d, &r, &c); if (linear) { @@ -696,19 +697,17 @@ guint screen_cycle_desktop(ObDirection dir, gboolean wrap, gboolean linear, case OB_DIRECTION_EAST: ++c; if (c >= screen_desktop_layout.columns) { - if (wrap) { + if (wrap) c = 0; - } else { - d = screen_desktop; + else goto show_cycle_dialog; - } } d = translate_row_col(r, c); if (d >= screen_num_desktops) { if (wrap) { ++c; } else { - d = screen_desktop; + d = oldd; goto show_cycle_dialog; } } @@ -716,19 +715,17 @@ guint screen_cycle_desktop(ObDirection dir, gboolean wrap, gboolean linear, case OB_DIRECTION_WEST: --c; if (c >= screen_desktop_layout.columns) { - if (wrap) { + if (wrap) c = screen_desktop_layout.columns - 1; - } else { - d = screen_desktop; + else goto show_cycle_dialog; - } } d = translate_row_col(r, c); if (d >= screen_num_desktops) { if (wrap) { --c; } else { - d = screen_desktop; + d = oldd; goto show_cycle_dialog; } } @@ -736,19 +733,17 @@ guint screen_cycle_desktop(ObDirection dir, gboolean wrap, gboolean linear, case OB_DIRECTION_SOUTH: ++r; if (r >= screen_desktop_layout.rows) { - if (wrap) { + if (wrap) r = 0; - } else { - d = screen_desktop; + else goto show_cycle_dialog; - } } d = translate_row_col(r, c); if (d >= screen_num_desktops) { if (wrap) { ++r; } else { - d = screen_desktop; + d = oldd; goto show_cycle_dialog; } } @@ -756,19 +751,17 @@ guint screen_cycle_desktop(ObDirection dir, gboolean wrap, gboolean linear, case OB_DIRECTION_NORTH: --r; if (r >= screen_desktop_layout.rows) { - if (wrap) { + if (wrap) r = screen_desktop_layout.rows - 1; - } else { - d = screen_desktop; + else goto show_cycle_dialog; - } } d = translate_row_col(r, c); if (d >= screen_num_desktops) { if (wrap) { --r; } else { - d = screen_desktop; + d = oldd; goto show_cycle_dialog; } } -- 2.45.2