From 2253b5e341e2a20dee5c0c17eae3f5a8baa1b6ac Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Sat, 19 May 2007 20:31:08 +0000 Subject: fix the popup for directional focusing, only show what is going to be a valid target. change directional focus to use the same criteria as normal cycling. --- openbox/focus_cycle_popup.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'openbox/focus_cycle_popup.c') diff --git a/openbox/focus_cycle_popup.c b/openbox/focus_cycle_popup.c index 4d6ccdca..b171e942 100644 --- a/openbox/focus_cycle_popup.c +++ b/openbox/focus_cycle_popup.c @@ -71,9 +71,13 @@ struct _ObFocusCyclePopup static ObFocusCyclePopup popup; static gchar *popup_get_name (ObClient *c); -static void popup_setup (ObFocusCyclePopup *p,gboolean all_desktops, - gboolean dock_windows, gboolean desktop_windows); -static void popup_render (ObFocusCyclePopup *p, const ObClient *c); +static void popup_setup (ObFocusCyclePopup *p, + gboolean iconic_windows, + gboolean all_desktops, + gboolean dock_windows, + gboolean desktop_windows); +static void popup_render (ObFocusCyclePopup *p, + const ObClient *c); static Window create_window(Window parent, guint bwidth, gulong mask, XSetWindowAttributes *attr) @@ -142,7 +146,8 @@ void focus_cycle_popup_shutdown(gboolean reconfig) RrAppearanceFree(popup.a_bg); } -static void popup_setup(ObFocusCyclePopup *p,gboolean all_desktops, +static void popup_setup(ObFocusCyclePopup *p, + gboolean iconic_windows, gboolean all_desktops, gboolean dock_windows, gboolean desktop_windows) { gint maxwidth, n; @@ -161,6 +166,7 @@ static void popup_setup(ObFocusCyclePopup *p,gboolean all_desktops, ObClient *ft = it->data; if (focus_cycle_target_valid(ft, + iconic_windows, all_desktops, dock_windows, desktop_windows)) @@ -410,7 +416,7 @@ static void popup_render(ObFocusCyclePopup *p, const ObClient *c) p->last_target = newtarget; } -void focus_cycle_popup_show(ObClient *c, +void focus_cycle_popup_show(ObClient *c, gboolean iconic_windows, gboolean all_desktops, gboolean dock_windows, gboolean desktop_windows) { @@ -418,7 +424,8 @@ void focus_cycle_popup_show(ObClient *c, /* do this stuff only when the dialog is first showing */ if (!popup.mapped) - popup_setup(&popup, all_desktops, dock_windows, desktop_windows); + popup_setup(&popup, iconic_windows, all_desktops, + dock_windows, desktop_windows); g_assert(popup.targets != NULL); popup_render(&popup, c); -- cgit v1.2.3