+/* -*- indent-tabs-mode: t; tab-width: 4; c-basic-offset: 4; -*-
+
+ screen.c for the Openbox window manager
+ Copyright (c) 2003 Ben Jansens
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ See the COPYING file for a copy of the GNU General Public License.
+*/
+
#include "debug.h"
#include "openbox.h"
#include "dock.h"
{
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)