]> Dogcows Code - chaz/openbox/blobdiff - openbox/focus.c
change the --config-file to --config, which works differently..
[chaz/openbox] / openbox / focus.c
index aac6675e3a1fc7ccf18aaf0b64ce27bb822116cd..94257205196fa039a31eb3b3afa0a990a54406c6 100644 (file)
@@ -318,10 +318,10 @@ static void popup_cycle(ObClient *c, gboolean show)
                                 (p->iconic ? p->icon_title : p->title),
                                 NULL);
             */
-        icon_popup_delay_show(focus_cycle_popup, G_USEC_PER_SEC/12,
-                              (title ? title :
-                               (c->iconic ? c->icon_title : c->title)),
-                              client_icon(p, 48, 48));
+        icon_popup_show(focus_cycle_popup,
+                        (title ? title :
+                         (c->iconic ? c->icon_title : c->title)),
+                        client_icon(p, 48, 48));
         g_free(title);
     }
 }
@@ -475,12 +475,20 @@ static gboolean valid_focus_target(ObClient *ft, gboolean dock_windows)
     else
         ok = (ft->type == OB_CLIENT_TYPE_NORMAL ||
               ft->type == OB_CLIENT_TYPE_DIALOG ||
-              (!client_has_group_siblings(ft) &&
-               (ft->type == OB_CLIENT_TYPE_TOOLBAR ||
+              ((ft->type == OB_CLIENT_TYPE_TOOLBAR ||
                 ft->type == OB_CLIENT_TYPE_MENU ||
-                ft->type == OB_CLIENT_TYPE_UTILITY)));
+                ft->type == OB_CLIENT_TYPE_UTILITY) &&
+               /* let alt-tab go to these windows when a window in its group
+                  already has focus ... */
+               ((focus_client && ft->group == focus_client->group) ||
+                /* ... or if there are no application windows in its group */
+                !client_has_application_group_siblings(ft))));
     ok = ok && (ft->can_focus || ft->focus_notify);
-    ok = ok && !ft->skip_pager;
+    if (!dock_windows && /* use dock windows that skip taskbar too */
+        !(ft->type == OB_CLIENT_TYPE_TOOLBAR || /* also, if we actually are */
+          ft->type == OB_CLIENT_TYPE_MENU ||    /* being allowed to target */
+          ft->type == OB_CLIENT_TYPE_UTILITY))  /* one of these, don't let */
+        ok = ok && !ft->skip_taskbar;           /*  skip taskbar stop us */
     ok = ok && (ft->desktop == screen_desktop || ft->desktop == DESKTOP_ALL);
     ok = ok && ft == client_focus_target(ft);
     return ok;
@@ -491,7 +499,7 @@ static gboolean valid_focus_target(ObClient *ft, gboolean dock_windows)
         for (it = ft->transients; it; it = g_slist_next(it)) {
             ObClient *c = it->data;
 
-            if (c->frame->visible)
+            if (frame_visible(c->frame))
                 return FALSE;
         }
         return TRUE;
This page took 0.023117 seconds and 4 git commands to generate.