all repos — openbox @ 3acd5ff0c5c04cfe405e853e8e4a3e004abe1a94

openbox fork - make it a bit more like ryudo

fix for wrapping in desktop cycling
Dana Jansens danakj@orodu.net
commit

3acd5ff0c5c04cfe405e853e8e4a3e004abe1a94

parent

73e7b2925ad39d5bde6c916a0e8da0c500fb147e

1 files changed, 14 insertions(+), 21 deletions(-)

jump to
M openbox/screen.copenbox/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; } }