summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-05-08 02:33:20 +0000
committerDana Jansens <danakj@orodu.net>2007-05-08 02:33:20 +0000
commitcc9ef6f22d5264a2a6b3c88558134d43ef8d34ea (patch)
tree505292b13a1a619ddb3e9af91c598f596a5cf7bf
parentf2e88d24910c1c4a8e6c0f89770a6abd36b6fbab (diff)
dont check if relatives have focus. gtk apps all set application even when its from a user event
-rw-r--r--openbox/client.c39
1 files changed, 10 insertions, 29 deletions
diff --git a/openbox/client.c b/openbox/client.c
index 8592aa93..872d964b 100644
--- a/openbox/client.c
+++ b/openbox/client.c
@@ -3412,37 +3412,18 @@ void client_activate(ObClient *self, gboolean here, gboolean user)
{
guint32 last_time = focus_client ? focus_client->user_time : CurrentTime;
gboolean allow = FALSE;
- gboolean relative = FALSE;
- if (user || !focus_client)
+ /* if the request came from the user, or if nothing is focused, then grant
+ the request.
+ if the currently focused app doesn't set a user_time, then it can't
+ benefit from any focus stealing prevention.
+ */
+ if (user || !focus_client || !last_time)
allow = TRUE;
- /* if the request came from an application and something already has focus
- then do some checks; */
- else {
- GSList *it;
-
- /* search if someone related to us by transience already has focus */
- for (it = client_search_all_top_parents(self); it && !relative;
- it = g_slist_next(it))
- {
- if (client_search_transient(it->data, focus_client))
- relative = TRUE;
- }
-
- /* search if someone in the group already has focus */
- for (it = client_search_all_top_parents(self); it && !relative;
- it = g_slist_next(it))
- {
- if (client_search_transient(it->data, focus_client))
- relative = TRUE;
- }
-
- /* if a relative has focus, then if the time is newer (or we can't
- check the time - very lenient), allow focus to move */
- allow = relative && (!event_curtime || !last_time ||
- event_time_after(event_curtime, last_time));
- }
-
+ /* otherwise, if they didn't give a time stamp or if it is too old, they
+ don't get focus */
+ else
+ allow = event_curtime && event_time_after(event_curtime, last_time);
ob_debug_type(OB_DEBUG_FOCUS,
"Want to activate window 0x%x with time %u (last time %u), "