summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
authorMikael Magnusson <mikachu@gmail.com>2008-10-29 13:48:03 +0100
committerMikael Magnusson <mikachu@gmail.com>2008-10-29 13:48:34 +0100
commitc230443c6596039f426542f5a286120891a745c5 (patch)
tree453807056a3f985b4b51d372c5b8d31f84b994a2 /openbox
parente6fea245756b59f83dc0f51d13feee9cf093a1a1 (diff)
parent6a35e7c594959ee17392aec76ba074565a63ea57 (diff)
Merge branch 'backport' into work
Diffstat (limited to 'openbox')
-rw-r--r--openbox/actions/desktop.c7
-rw-r--r--openbox/client.c6
2 files changed, 12 insertions, 1 deletions
diff --git a/openbox/actions/desktop.c b/openbox/actions/desktop.c
index e1bd5520..e352aa2e 100644
--- a/openbox/actions/desktop.c
+++ b/openbox/actions/desktop.c
@@ -140,7 +140,12 @@ static gboolean run_func(ObActionsData *data, gpointer options)
go = o->follow;
}
- if (go) screen_set_desktop(d, TRUE);
+ if (go) {
+ screen_set_desktop(d, TRUE);
+ if (data->client)
+ client_bring_helper_windows(data->client);
+ }
+
actions_client_move(data, FALSE);
}
return FALSE;
diff --git a/openbox/client.c b/openbox/client.c
index ab00cd0d..5686a939 100644
--- a/openbox/client.c
+++ b/openbox/client.c
@@ -202,6 +202,7 @@ void client_manage(Window window, ObPrompt *prompt)
gboolean transient = FALSE;
Rect place, *monitor;
Time launch_time, map_time;
+ gint user_time;
ob_debug("Managing window: 0x%lx", window);
@@ -264,6 +265,9 @@ void client_manage(Window window, ObPrompt *prompt)
/* tell startup notification that this app started */
launch_time = sn_app_started(self->startup_id, self->class, self->name);
+ if (!OBT_PROP_GET32(self->window, NET_WM_USER_TIME, CARDINAL, &user_time))
+ user_time = map_time;
+
/* do this after we have a frame.. it uses the frame to help determine the
WM_STATE to apply. */
client_change_state(self);
@@ -280,6 +284,8 @@ void client_manage(Window window, ObPrompt *prompt)
/* this means focus=true for window is same as config_focus_new=true */
((config_focus_new || (settings && settings->focus == 1)) ||
client_search_focus_tree_full(self)) &&
+ /* NET_WM_USER_TIME 0 when mapping means don't focus */
+ (user_time != 0) &&
/* this checks for focus=false for the window */
(!settings || settings->focus != 0) &&
focus_valid_target(self, FALSE, FALSE, TRUE, FALSE, FALSE))