void clientUpdateFocus (ScreenInfo *screen_info, Client * c, unsigned short flags) { Client *c2; gboolean restacked; TRACE ("entering"); c2 = ((client_focus != c) ? client_focus : NULL); if ((c) && !clientAcceptFocus (c)) { TRACE ("SKIP_FOCUS set for client \"%s\" (0x%lx)", c->name, c->window); pending_focus = NULL; return; } if ((c) && (c == client_focus) && !(flags & FOCUS_FORCE)) { TRACE ("client \"%s\" (0x%lx) is already focused, ignoring request", c->name, c->window); pending_focus = NULL; return; } client_focus = c; if (c2) { clientSetNetState (c2); clientAdjustFullscreenLayer (c2, FALSE); frameQueueDraw (c2, FALSE); clientUpdateOpacity (c2); } if (c) { user_focus = c; clientInstallColormaps (c); if (flags & FOCUS_SORT) { clientSortRing(c); } if (FLAG_TEST(c->flags, CLIENT_FLAG_DEMANDS_ATTENTION)) { TRACE ("un-setting WM_STATE_DEMANDS_ATTENTION flag on \"%s\" (0x%lx)", c->name, c->window); FLAG_UNSET (c->flags, CLIENT_FLAG_DEMANDS_ATTENTION); } clientSetNetState (c); restacked = clientAdjustFullscreenLayer (c, TRUE); if (!restacked && screen_info->params->click_to_focus) { clientRaise (c, None); clientSetLastRaise (c); } frameQueueDraw (c, FALSE); clientUpdateOpacity (c); } clientSetNetActiveWindow (screen_info, c, 0); pending_focus = NULL; }
static void clientCycleFocusAndRaise (Client *c) { ScreenInfo *screen_info; DisplayInfo *display_info; Client *ancestor; g_return_if_fail (c != NULL); TRACE ("client \"%s\" (0x%lx)", c->name, c->window); screen_info = c->screen_info; display_info = screen_info->display_info; ancestor = clientGetTransientFor(c); clientRaise (c, None); clientShow (ancestor, TRUE); clientUnshade (c); clientSetFocus (screen_info, c, myDisplayGetCurrentTime (display_info), NO_FOCUS_FLAG); clientSetLastRaise (c); }
static void clientCycleFocusAndRaise (Client *c) { ScreenInfo *screen_info; DisplayInfo *display_info; Client *sibling; g_return_if_fail (c != NULL); TRACE ("entering clientFocusAndRaise"); screen_info = c->screen_info; display_info = screen_info->display_info; sibling = clientGetTransientFor(c); clientRaise (sibling, None); clientShow (sibling, TRUE); clientUnshade (c); clientSetFocus (screen_info, c, myDisplayGetCurrentTime (display_info), NO_FOCUS_FLAG); clientSetLastRaise (c); }