/* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*-
focus.c for the Openbox window manager
/* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*-
focus.c for the Openbox window manager
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- focus_cycle(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE);
+ focus_cycle(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, CurrentTime);
focus_indicator.right.obwin.type = Window_Internal;
focus_indicator.bottom.obwin.type = Window_Internal;
focus_indicator.right.obwin.type = Window_Internal;
focus_indicator.bottom.obwin.type = Window_Internal;
attr.override_redirect = True;
attr.background_pixel = BlackPixel(ob_display, ob_screen);
focus_indicator.top.win =
createWindow(RootWindow(ob_display, ob_screen),
attr.override_redirect = True;
attr.background_pixel = BlackPixel(ob_display, ob_screen);
focus_indicator.top.win =
createWindow(RootWindow(ob_display, ob_screen),
focus_indicator.left.win =
createWindow(RootWindow(ob_display, ob_screen),
focus_indicator.left.win =
createWindow(RootWindow(ob_display, ob_screen),
focus_indicator.right.win =
createWindow(RootWindow(ob_display, ob_screen),
focus_indicator.right.win =
createWindow(RootWindow(ob_display, ob_screen),
focus_indicator.bottom.win =
createWindow(RootWindow(ob_display, ob_screen),
focus_indicator.bottom.win =
createWindow(RootWindow(ob_display, ob_screen),
stacking_add(INTERNAL_AS_WINDOW(&focus_indicator.top));
stacking_add(INTERNAL_AS_WINDOW(&focus_indicator.left));
stacking_add(INTERNAL_AS_WINDOW(&focus_indicator.top));
stacking_add(INTERNAL_AS_WINDOW(&focus_indicator.left));
- XSetInputFocus(ob_display, PointerRoot, RevertToNone, event_lasttime);
+ XSetInputFocus(ob_display, PointerRoot, RevertToNone, CurrentTime);
#endif
/* when nothing will be focused, send focus to the backup target */
XSetInputFocus(ob_display, screen_support_win, RevertToNone,
#endif
/* when nothing will be focused, send focus to the backup target */
XSetInputFocus(ob_display, screen_support_win, RevertToNone,
- focus_cycle(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE);
+ focus_cycle(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, CurrentTime);
active = client ? client->window : None;
PROP_SET32(RootWindow(ob_display, ob_screen),
net_active_window, window, active);
active = client ? client->window : None;
PROP_SET32(RootWindow(ob_display, ob_screen),
net_active_window, window, active);
for (it = c->transients; it; it = g_slist_next(it)) {
if (it->data == top) return NULL;
ret = find_transient_recursive(it->data, top, skip);
for (it = c->transients; it; it = g_slist_next(it)) {
if (it->data == top) return NULL;
ret = find_transient_recursive(it->data, top, skip);
- if (ret && ret != skip && client_normal(ret)) return ret;
- if (it->data != skip && client_normal(it->data)) return it->data;
+ if (ret && ret != skip && client_normal(ret) &&
+ client_can_focus(ret) && client_validate(ret))
+ return ret;
+ if (it->data != skip && client_normal(it->data) &&
+ client_can_focus(it->data) && client_validate(it->data))
+ return it->data;
- else {
- if ((target = client_under_pointer()) &&
- client_search_transient
- (client_search_top_transient(target), old))
- {
- trans = TRUE;
- }
- }
+ else if ((target = client_under_pointer()) &&
+ client_search_transient
+ (client_search_top_parent(target), old))
+ trans = TRUE;
if (sit->data == it->data)
if ((target =
focus_fallback_transient(sit->data, old)))
if (sit->data == it->data)
if ((target =
focus_fallback_transient(sit->data, old)))
if (config_focus_follow &&
(type == OB_FOCUS_FALLBACK_UNFOCUSING || !config_focus_last))
{
if ((target = client_under_pointer()))
if (config_focus_follow &&
(type == OB_FOCUS_FALLBACK_UNFOCUSING || !config_focus_last))
{
if ((target = client_under_pointer()))
for (it = focus_order[screen_desktop]; it; it = g_list_next(it))
if (type != OB_FOCUS_FALLBACK_UNFOCUSING || it->data != old)
for (it = focus_order[screen_desktop]; it; it = g_list_next(it))
if (type != OB_FOCUS_FALLBACK_UNFOCUSING || it->data != old)
- ob_rr_theme->handle_height +
- ob_rr_theme->bwidth * 2);
+ MAX(1, MAX(ob_rr_theme->paddingx,
+ ob_rr_theme->paddingy)) * 2 +
+ ob_rr_theme->fbwidth * 2);
ft->type == OB_CLIENT_TYPE_MENU ||
ft->type == OB_CLIENT_TYPE_UTILITY))) &&
((ft->can_focus || ft->focus_notify) &&
ft->type == OB_CLIENT_TYPE_MENU ||
ft->type == OB_CLIENT_TYPE_UTILITY))) &&
((ft->can_focus || ft->focus_notify) &&
}
void focus_cycle(gboolean forward, gboolean linear, gboolean interactive,
}
void focus_cycle(gboolean forward, gboolean linear, gboolean interactive,
- gboolean dialog, gboolean done, gboolean cancel)
+ gboolean dialog, gboolean done, gboolean cancel, Time time)
- gboolean dialog, gboolean done, gboolean cancel)
+ gboolean dialog, gboolean done, gboolean cancel,
+ Time time)