]> Dogcows Code - chaz/openbox/blobdiff - openbox/focus_cycle_popup.c
Merge branch 'master' into chaz
[chaz/openbox] / openbox / focus_cycle_popup.c
index 16770ed7d33d342d792f04df936fa13798895753..e1ea8488874fbc159d75f3423bf894b21505e95e 100644 (file)
@@ -102,7 +102,8 @@ static ObIconPopup *single_popup;
 static gchar   *popup_get_name (ObClient *c);
 static gboolean popup_setup    (ObFocusCyclePopup *p,
                                 gboolean create_targets,
-                                gboolean refresh_targets);
+                                gboolean refresh_targets,
+                                gboolean linear);
 static void     popup_render   (ObFocusCyclePopup *p,
                                 const ObClient *c);
 
@@ -250,7 +251,7 @@ static void popup_target_free(ObFocusCyclePopupTarget *t)
 }
 
 static gboolean popup_setup(ObFocusCyclePopup *p, gboolean create_targets,
-                            gboolean refresh_targets)
+                            gboolean refresh_targets, gboolean linear)
 {
     gint maxwidth, n;
     GList *it;
@@ -279,7 +280,10 @@ static gboolean popup_setup(ObFocusCyclePopup *p, gboolean create_targets,
        and count them */
     maxwidth = 0;
     n = 0;
-    for (it = g_list_last(focus_order); it; it = g_list_previous(it)) {
+    for (it = g_list_last(linear ? client_list : focus_order);
+         it;
+         it = g_list_previous(it))
+    {
         ObClient *ft = it->data;
 
         if (focus_cycle_valid(ft)) {
@@ -392,7 +396,7 @@ static void popup_render(ObFocusCyclePopup *p, const ObClient *c)
     gint ml, mt, mr, mb;
     gint l, t, r, b;
     gint x, y, w, h;
-    Rect const *screen_area = NULL;
+    const Rect *screen_area = NULL;
     gint i;
     GList *it;
     const ObFocusCyclePopupTarget *newtarget;
@@ -700,10 +704,8 @@ static void popup_render(ObFocusCyclePopup *p, const ObClient *c)
     XFlush(obt_display);
 }
 
-void focus_cycle_popup_show(ObClient *c, gboolean iconic_windows,
-                            gboolean all_desktops, gboolean dock_windows,
-                            gboolean desktop_windows,
-                            ObFocusCyclePopupMode mode)
+void focus_cycle_popup_show(ObClient *c, ObFocusCyclePopupMode mode,
+                            gboolean linear)
 {
     g_assert(c != NULL);
 
@@ -714,7 +716,7 @@ void focus_cycle_popup_show(ObClient *c, gboolean iconic_windows,
 
     /* do this stuff only when the dialog is first showing */
     if (!popup.mapped) {
-        popup_setup(&popup, TRUE, FALSE);
+        popup_setup(&popup, TRUE, FALSE, linear);
         /* this is fixed once the dialog is shown */
         popup.mode = mode;
     }
@@ -747,22 +749,15 @@ void focus_cycle_popup_hide(void)
     popup_cleanup();
 }
 
-void focus_cycle_popup_single_show(struct _ObClient *c,
-                                   gboolean iconic_windows,
-                                   gboolean all_desktops,
-                                   gboolean dock_windows,
-                                   gboolean desktop_windows)
+void focus_cycle_popup_single_show(struct _ObClient *c)
 {
     gchar *text;
 
     g_assert(c != NULL);
 
     /* do this stuff only when the dialog is first showing */
-    if (!popup.mapped) {
-        Rect const *a;
-
-        popup_setup(&popup, FALSE, FALSE);
-        g_assert(popup.targets == NULL);
+    if (!single_popup->popup->mapped) {
+        const Rect *a;
 
         /* position the popup */
         a = screen_physical_area_primary(FALSE);
@@ -828,14 +823,15 @@ static ObClient* popup_revert(ObClient *target)
 }
 
 ObClient* focus_cycle_popup_refresh(ObClient *target,
-                                    gboolean redraw)
+                                    gboolean redraw,
+                                    gboolean linear)
 {
     if (!popup.mapped) return NULL;
 
     if (!focus_cycle_valid(target))
         target = popup_revert(target);
 
-    redraw = popup_setup(&popup, TRUE, TRUE) && redraw;
+    redraw = popup_setup(&popup, TRUE, TRUE, linear) && redraw;
 
     if (!target && popup.targets)
         target = ((ObFocusCyclePopupTarget*)popup.targets->data)->client;
This page took 0.022426 seconds and 4 git commands to generate.