]> Dogcows Code - chaz/openbox/blobdiff - openbox/client_list_menu.c
skip taskbar windows dont appear in the client menu
[chaz/openbox] / openbox / client_list_menu.c
index acf9f071837204a20d005ecbb646e3ae0d9e25a0..2ac2903869b01b98e72f0149763448fe321d183b 100644 (file)
@@ -31,7 +31,8 @@
 
 static GSList *desktop_menus;
 
-typedef struct {
+typedef struct
+{
     guint desktop;
 } DesktopData;
 
@@ -48,11 +49,11 @@ static void desk_menu_update(ObMenuFrame *frame, gpointer data)
 
     for (it = focus_order[d->desktop], i = 0; it; it = g_list_next(it), ++i) {
         ObClient *c = it->data;
-        if (client_normal(c)) {
-            GSList *acts;
+        if (client_normal(c) && !c->skip_taskbar) {
+            GSList *acts = NULL;
             ObAction* act;
             ObMenuEntry *e;
-            ObClientIcon *icon;
+            const ObClientIcon *icon;
 
             empty = FALSE;
 
@@ -64,7 +65,11 @@ static void desk_menu_update(ObMenuFrame *frame, gpointer data)
             act = action_from_string("Activate",
                                      OB_USER_ACTION_MENU_SELECTION);
             act->data.activate.any.c = c;
-            acts = g_slist_prepend(NULL, act);
+            acts = g_slist_append(acts, act);
+            act = action_from_string("Desktop",
+                                     OB_USER_ACTION_MENU_SELECTION);
+            act->data.desktop.desk = d->desktop;
+            acts = g_slist_append(acts, act);
             e = menu_add_normal(menu, i,
                                 (c->iconic ? c->icon_title : c->title), acts);
 
@@ -79,12 +84,12 @@ static void desk_menu_update(ObMenuFrame *frame, gpointer data)
     if (empty) {
         /* no entries */
 
-        GSList *acts;
+        GSList *acts = NULL;
         ObAction* act;
         act = action_from_string("Desktop", OB_USER_ACTION_MENU_SELECTION);
         act->data.desktop.desk = d->desktop;
-        acts = g_slist_prepend(NULL, act);
-        menu_add_normal(menu, 0, "Switch to...", acts);
+        acts = g_slist_append(acts, act);
+        menu_add_normal(menu, 0, _("Go there..."), acts);
     }
 }
 
@@ -92,12 +97,11 @@ static void desk_menu_update(ObMenuFrame *frame, gpointer data)
    when we make the actions! */
 static void desk_menu_execute(ObMenuEntry *self, guint state, gpointer data)
 {
-    GSList *it;
+    ObAction *a;
 
-    for (it = self->data.normal.actions; it; it = g_slist_next(it))
-    {
-        ObAction *act = it->data;
-        action_run(it->data, act->data.any.c, state);
+    if (self->data.normal.actions) {
+        a = self->data.normal.actions->data;
+        action_run(self->data.normal.actions, a->data.any.c, state);
     }
 }
 
This page took 0.024692 seconds and 4 git commands to generate.