]> Dogcows Code - chaz/openbox/blobdiff - openbox/screen.c
allow the use of keycodes directly in key bindings
[chaz/openbox] / openbox / screen.c
index b1b1a561c1da8678044757f4fe9529dc883f1a49..1295ccaae1f33196b7b4e0814fed9e2d1673ba3b 100644 (file)
@@ -350,6 +350,8 @@ void screen_set_num_desktops(guint num)
 
     g_assert(num > 0);
 
+    if (screen_num_desktops == num) return;
+
     old = screen_num_desktops;
     screen_num_desktops = num;
     PROP_SET32(RootWindow(ob_display, ob_screen),
@@ -396,7 +398,6 @@ void screen_set_desktop(guint num)
 {
     GList *it;
     guint old;
-    XEvent e;
      
     g_assert(num < screen_num_desktops);
 
@@ -434,17 +435,8 @@ void screen_set_desktop(guint num)
         }
     }
 
-    XSync(ob_display, FALSE);
-    /* focus the last focused window on the desktop, and ignore enter events
-       from the switch so it doesnt mess with the focus */
-    while (XCheckTypedEvent(ob_display, EnterNotify, &e));
-#ifdef DEBUG_FOCUS
-    ob_debug("switch fallback\n");
-#endif
-    focus_fallback(OB_FOCUS_FALLBACK_DESKTOP);
-#ifdef DEBUG_FOCUS
-    ob_debug("/switch fallback\n");
-#endif
+    if (!focus_client)
+        focus_fallback(OB_FOCUS_FALLBACK_NOFOCUS);
 }
 
 static void get_row_col(guint d, guint *r, guint *c)
@@ -736,7 +728,7 @@ void screen_update_layout()
                     if (rows * cols >= screen_num_desktops + cols)
                         rows--;
                 } else if (rows == 0) {
-                    rows = screen_num_desktops / rows;
+                    rows = screen_num_desktops / cols;
                     if (cols * rows < screen_num_desktops)
                         rows++;
                     if (cols * rows >= screen_num_desktops + rows)
This page took 0.021521 seconds and 4 git commands to generate.