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),
{
GList *it;
guint old;
- XEvent e;
g_assert(num < screen_num_desktops);
}
}
- 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)
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)