summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-04-24 19:53:50 +0000
committerDana Jansens <danakj@orodu.net>2007-04-24 19:53:50 +0000
commit0116d82463197bea2890230d71a69e4b92489166 (patch)
treea257b7c2447dbc857587395fbfdda863ab0d6e7c /openbox
parentca8665e3093108d5b148916de69ffd9a13be88e4 (diff)
don't activate and change desktops if the client's not on the current desktop and its user_time is older than the last time you changed desktops
Diffstat (limited to 'openbox')
-rw-r--r--openbox/client.c10
-rw-r--r--openbox/screen.c4
-rw-r--r--openbox/screen.h2
3 files changed, 15 insertions, 1 deletions
diff --git a/openbox/client.c b/openbox/client.c
index 8098b3dc..2ca9b518 100644
--- a/openbox/client.c
+++ b/openbox/client.c
@@ -385,10 +385,18 @@ void client_manage(Window window)
ob_debug("Want to focus new window 0x%x with time %u (last time %u)\n",
self->window, self->user_time, last_time);
+ /* if it's on another desktop */
+ if (!(self->desktop == screen_desktop || self->desktop == DESKTOP_ALL)
+ && /* the timestamp is from before you changed desktops */
+ self->user_time && screen_desktop_user_time &&
+ !event_time_after(self->user_time, screen_desktop_user_time))
+ {
+ activate = FALSE;
+ }
/* If nothing is focused, or a parent was focused, then focus this
always
*/
- if (!focus_client || client_search_focus_parent(self) != NULL)
+ else if (!focus_client || client_search_focus_parent(self) != NULL)
activate = TRUE;
else
{
diff --git a/openbox/screen.c b/openbox/screen.c
index 71748d65..97cab3e6 100644
--- a/openbox/screen.c
+++ b/openbox/screen.c
@@ -58,6 +58,7 @@ gboolean screen_showing_desktop;
DesktopLayout screen_desktop_layout;
gchar **screen_desktop_names;
Window screen_support_win;
+Time screen_desktop_user_time = CurrentTime;
static Rect **area; /* array of desktop holding array of xinerama areas */
static Rect *monitor_area;
@@ -475,6 +476,9 @@ void screen_set_desktop(guint num)
}
event_ignore_queued_enters();
+
+ if (event_curtime != CurrentTime)
+ screen_desktop_user_time = event_curtime;
}
static void get_row_col(guint d, guint *r, guint *c)
diff --git a/openbox/screen.h b/openbox/screen.h
index 970cde34..bedc2e6d 100644
--- a/openbox/screen.h
+++ b/openbox/screen.h
@@ -38,6 +38,8 @@ extern guint screen_last_desktop;
extern gboolean screen_showing_desktop;
/*! The support window also used for focus and stacking */
extern Window screen_support_win;
+/*! The last time at which the user changed desktops */
+extern Time screen_desktop_user_time;
typedef struct DesktopLayout {
ObOrientation orientation;