X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Ffocus_cycle.c;h=063de6447bfa3b5f44d9483a752e1ac768764888;hb=6d0c4d7fadd2d67760ef62e11385fd261ba6a3c4;hp=0396dd86d9ed624be717361132776ee6391f1850;hpb=6c5f6ed1f5d501c79977a55c0f2430ebdd32ef6c;p=chaz%2Fopenbox diff --git a/openbox/focus_cycle.c b/openbox/focus_cycle.c index 0396dd86..063de644 100644 --- a/openbox/focus_cycle.c +++ b/openbox/focus_cycle.c @@ -19,7 +19,6 @@ #include "focus_cycle.h" #include "focus_cycle_indicator.h" -#include "focus_cycle_popup.h" #include "client.h" #include "frame.h" #include "focus.h" @@ -56,23 +55,23 @@ void focus_cycle_stop(ObClient *ifclient) /* stop focus cycling if the given client is a valid focus target, and so the cycling is being disrupted */ if (focus_cycle_target && ifclient && - focus_valid_target(ifclient, + focus_valid_target(ifclient, TRUE, focus_cycle_iconic_windows, focus_cycle_all_desktops, focus_cycle_dock_windows, focus_cycle_desktop_windows)) { - focus_cycle(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE); - focus_directional_cycle(0, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE); + focus_cycle(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,TRUE); + focus_directional_cycle(0, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE); } } ObClient* focus_cycle(gboolean forward, gboolean all_desktops, gboolean dock_windows, gboolean desktop_windows, gboolean linear, gboolean interactive, - gboolean dialog, gboolean done, gboolean cancel) + gboolean showbar, ObFocusCyclePopupMode mode, + gboolean done, gboolean cancel) { - static ObClient *t = NULL; static GList *order = NULL; GList *it, *start, *list; ObClient *ft = NULL; @@ -96,7 +95,6 @@ ObClient* focus_cycle(gboolean forward, gboolean all_desktops, list = client_list; } - if (focus_cycle_target == NULL) { focus_cycle_iconic_windows = TRUE; focus_cycle_all_desktops = all_desktops; @@ -119,7 +117,7 @@ ObClient* focus_cycle(gboolean forward, gboolean all_desktops, if (it == NULL) it = g_list_last(list); } ft = it->data; - if (focus_valid_target(ft, + if (focus_valid_target(ft, TRUE, focus_cycle_iconic_windows, focus_cycle_all_desktops, focus_cycle_dock_windows, @@ -128,15 +126,15 @@ ObClient* focus_cycle(gboolean forward, gboolean all_desktops, if (interactive) { if (ft != focus_cycle_target) { /* prevents flicker */ focus_cycle_target = ft; - focus_cycle_draw_indicator(ft); + focus_cycle_draw_indicator(showbar ? ft : NULL); } - if (dialog) - /* same arguments as focus_target_valid */ - focus_cycle_popup_show(ft, - focus_cycle_iconic_windows, - focus_cycle_all_desktops, - focus_cycle_dock_windows, - focus_cycle_desktop_windows); + /* same arguments as focus_target_valid */ + focus_cycle_popup_show(ft, + focus_cycle_iconic_windows, + focus_cycle_all_desktops, + focus_cycle_dock_windows, + focus_cycle_desktop_windows, + mode); return focus_cycle_target; } else if (ft != focus_cycle_target) { focus_cycle_target = ft; @@ -149,7 +147,6 @@ ObClient* focus_cycle(gboolean forward, gboolean all_desktops, done_cycle: if (done && !cancel) ret = focus_cycle_target; - t = NULL; focus_cycle_target = NULL; g_list_free(order); order = NULL; @@ -165,7 +162,7 @@ done_cycle: /* this be mostly ripped from fvwm */ static ObClient *focus_find_directional(ObClient *c, ObDirection dir, gboolean dock_windows, - gboolean desktop_windows) + gboolean desktop_windows) { gint my_cx, my_cy, his_cx, his_cy; gint offset = 0; @@ -190,7 +187,7 @@ static ObClient *focus_find_directional(ObClient *c, ObDirection dir, /* the currently selected window isn't interesting */ if (cur == c) continue; - if (!focus_valid_target(it->data, FALSE, FALSE, dock_windows, + if (!focus_valid_target(it->data, TRUE, FALSE, FALSE, dock_windows, desktop_windows)) continue; @@ -261,7 +258,7 @@ static ObClient *focus_find_directional(ObClient *c, ObDirection dir, ObClient* focus_directional_cycle(ObDirection dir, gboolean dock_windows, gboolean desktop_windows, gboolean interactive, - gboolean dialog, + gboolean showbar, gboolean dialog, gboolean done, gboolean cancel) { static ObClient *first = NULL; @@ -295,19 +292,19 @@ ObClient* focus_directional_cycle(ObDirection dir, gboolean dock_windows, GList *it; for (it = focus_order; it; it = g_list_next(it)) - if (focus_valid_target(it->data, + if (focus_valid_target(it->data, TRUE, focus_cycle_iconic_windows, focus_cycle_all_desktops, focus_cycle_dock_windows, focus_cycle_desktop_windows)) ft = it->data; } - + if (ft && ft != focus_cycle_target) {/* prevents flicker */ focus_cycle_target = ft; if (!interactive) goto done_cycle; - focus_cycle_draw_indicator(ft); + focus_cycle_draw_indicator(showbar ? ft : NULL); } if (focus_cycle_target && dialog) /* same arguments as focus_target_valid */