return c;
}
- ob_debug_type(OB_DEBUG_FOCUS, "trying omnipresentness\n");
- if (allow_refocus && old &&
- old->desktop == DESKTOP_ALL &&
- client_normal(old) &&
- client_focus(old))
- {
- ob_debug_type(OB_DEBUG_FOCUS, "found in omnipresentness\n");
- return old;
- }
-
-
ob_debug_type(OB_DEBUG_FOCUS, "trying the focus order\n");
for (it = focus_order; it; it = g_list_next(it)) {
c = it->data;
event_curtime);
}
+void focus_order_add_new(ObClient *c)
+{
+ if (c->iconic)
+ focus_order_to_top(c);
+ else {
+ g_assert(!g_list_find(focus_order, c));
+ /* if there are any iconic windows, put this above them in the order,
+ but if there are not, then put it under the currently focused one */
+ if (focus_order && ((ObClient*)focus_order->data)->iconic)
+ focus_order = g_list_insert(focus_order, c, 0);
+ else
+ focus_order = g_list_insert(focus_order, c, 1);
+ }
+
+ /* in the middle of cycling..? kill it. */
+ focus_cycle_stop();
+}
+
void focus_order_remove(ObClient *c)
{
focus_order = g_list_remove(focus_order, c);
+
+ /* in the middle of cycling..? kill it. */
+ focus_cycle_stop();
}
void focus_order_to_top(ObClient *c)