dont check if relatives have focus. gtk apps all set application even when its from a user event
This commit is contained in:
parent
f2e88d2491
commit
cc9ef6f22d
1 changed files with 10 additions and 29 deletions
|
@ -3412,37 +3412,18 @@ void client_activate(ObClient *self, gboolean here, gboolean user)
|
||||||
{
|
{
|
||||||
guint32 last_time = focus_client ? focus_client->user_time : CurrentTime;
|
guint32 last_time = focus_client ? focus_client->user_time : CurrentTime;
|
||||||
gboolean allow = FALSE;
|
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;
|
allow = TRUE;
|
||||||
/* if the request came from an application and something already has focus
|
/* otherwise, if they didn't give a time stamp or if it is too old, they
|
||||||
then do some checks; */
|
don't get focus */
|
||||||
else {
|
else
|
||||||
GSList *it;
|
allow = event_curtime && event_time_after(event_curtime, last_time);
|
||||||
|
|
||||||
/* 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));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
ob_debug_type(OB_DEBUG_FOCUS,
|
ob_debug_type(OB_DEBUG_FOCUS,
|
||||||
"Want to activate window 0x%x with time %u (last time %u), "
|
"Want to activate window 0x%x with time %u (last time %u), "
|
||||||
|
|
Loading…
Reference in a new issue