#include <glib.h>
#include <assert.h>
+#define FOCUS_INDICATOR_WIDTH 5
+
ObClient *focus_client = NULL;
GList *focus_order = NULL;
ObClient *focus_cycle_target = NULL;
be used
*/
if (focus_cycle_target == client)
- focus_cycle(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE);
+ focus_cycle(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE);
}
static Window createWindow(Window parent, gulong mask,
be used.
*/
if (focus_cycle_target)
- focus_cycle(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE);
+ focus_cycle(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE);
focus_client = client;
gint x, y, w, h;
gint wt, wl, wr, wb;
- wt = wl = wr = wb = MAX(3,
- MAX(1, MAX(ob_rr_theme->paddingx,
- ob_rr_theme->paddingy)) * 2 +
- ob_rr_theme->fbwidth * 2);
+ wt = wl = wr = wb = FOCUS_INDICATOR_WIDTH;
x = focus_cycle_target->frame->area.x;
y = focus_cycle_target->frame->area.y;
}
}
-static gboolean valid_focus_target(ObClient *ft, gboolean dock_windows)
+static gboolean valid_focus_target(ObClient *ft,
+ gboolean all_desktops,
+ gboolean dock_windows)
{
gboolean ok = FALSE;
/* we don't use client_can_focus here, because that doesn't let you
ft->type == OB_CLIENT_TYPE_MENU || /* being allowed to target */
ft->type == OB_CLIENT_TYPE_UTILITY)) /* one of these, don't let */
ok = ok && !ft->skip_taskbar; /* skip taskbar stop us */
- ok = ok && (ft->desktop == screen_desktop || ft->desktop == DESKTOP_ALL);
+ if (!all_desktops)
+ ok = ok && (ft->desktop == screen_desktop ||
+ ft->desktop == DESKTOP_ALL);
ok = ok && ft == client_focus_target(ft);
return ok;
/*
*/
}
-void focus_cycle(gboolean forward, gboolean dock_windows,
+void focus_cycle(gboolean forward, gboolean all_desktops,
+ gboolean dock_windows,
gboolean linear, gboolean interactive,
gboolean dialog, gboolean done, gboolean cancel)
{
if (it == NULL) it = g_list_last(list);
}
ft = it->data;
- if (valid_focus_target(ft, dock_windows)) {
+ if (valid_focus_target(ft, all_desktops, dock_windows)) {
if (interactive) {
if (ft != focus_cycle_target) { /* prevents flicker */
focus_cycle_target = ft;
GList *it;
for (it = focus_order; it; it = g_list_next(it))
- if (valid_focus_target(it->data, dock_windows))
+ if (valid_focus_target(it->data, FALSE, dock_windows))
ft = it->data;
}