fix for wrapping in desktop cycling
Dana Jansens danakj@orodu.net
1 files changed,
14 insertions(+),
21 deletions(-)
jump to
M
openbox/screen.c
→
openbox/screen.c
@@ -663,7 +663,7 @@ gboolean dialog, gboolean done, gboolean cancel)
{ guint r, c; static guint d = (guint)-1; - guint ret; + guint ret, oldd; if (d == (guint)-1) d = screen_desktop;@@ -671,6 +671,7 @@
if ((cancel || done) && dialog) goto show_cycle_dialog; + oldd = d; get_row_col(d, &r, &c); if (linear) {@@ -696,19 +697,17 @@ switch (dir) {
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 @@ break;
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 @@ break;
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 @@ break;
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; } }