summaryrefslogtreecommitdiff
path: root/openbox/focus.c
diff options
context:
space:
mode:
Diffstat (limited to 'openbox/focus.c')
-rw-r--r--openbox/focus.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/openbox/focus.c b/openbox/focus.c
index fad53e92..73099a4b 100644
--- a/openbox/focus.c
+++ b/openbox/focus.c
@@ -193,9 +193,30 @@ void focus_nothing()
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)