]> Dogcows Code - chaz/openbox/blobdiff - openbox/client.c
revert my commit of d3th, it fucked up focus badly
[chaz/openbox] / openbox / client.c
index 83291132a14535917763ad0c622b6f743e566fcb..59af202a6d426a9b28d14eb41da3c36026161ad7 100644 (file)
@@ -1647,9 +1647,7 @@ static ObStackingLayer calc_layer(ObClient *self)
 {
     ObStackingLayer l;
 
-    if (self->fullscreen &&
-        (client_focused(self) || client_search_focus_tree(self)))
-        l = OB_STACKING_LAYER_FULLSCREEN;
+    if (self->fullscreen) l = OB_STACKING_LAYER_FULLSCREEN;
     else if (self->type == OB_CLIENT_TYPE_DESKTOP)
         l = OB_STACKING_LAYER_DESKTOP;
     else if (self->type == OB_CLIENT_TYPE_DOCK) {
@@ -1671,9 +1669,7 @@ static void client_calc_layer_recursive(ObClient *self, ObClient *orig,
 
     old = self->layer;
     own = calc_layer(self);
-    self->layer = MAX(l, own);
-
-    g_message("calc for 0x%x %d %d", self->window, old, self->layer);
+    self->layer = l > own ? l : own;
 
     for (it = self->transients; it; it = it->next)
         client_calc_layer_recursive(it->data, orig,
@@ -1681,6 +1677,7 @@ static void client_calc_layer_recursive(ObClient *self, ObClient *orig,
 
     if (!raised && l != old)
        if (orig->frame) { /* only restack if the original window is managed */
+            /* XXX add_non_intrusive ever? */
             stacking_remove(CLIENT_AS_WINDOW(self));
             stacking_add(CLIENT_AS_WINDOW(self));
         }
@@ -2529,15 +2526,14 @@ gboolean client_focus(ObClient *self)
     /* choose the correct target */
     self = client_focus_target(self);
 
-    if (!self->frame->visible) {
-        /* update the focus lists */
-        focus_order_to_top(self);
+    if (!client_can_focus(self)) {
+        if (!self->frame->visible) {
+            /* update the focus lists */
+            focus_order_to_top(self);
+        }
         return FALSE;
     }
 
-    if (!client_can_focus(self))
-        return FALSE;
-
     if (self->can_focus) {
         /* RevertToPointerRoot causes much more headache than RevertToNone, so
            I choose to use it always, hopefully to find errors quicker, if any
@@ -2565,8 +2561,6 @@ gboolean client_focus(ObClient *self)
        XSendEvent(ob_display, self->window, FALSE, NoEventMask, &ce);
     }
 
-    focus_set_client(self);
-
 #ifdef DEBUG_FOCUS
     ob_debug("%sively focusing %lx at %d\n",
              (self->can_focus ? "act" : "pass"),
This page took 0.025204 seconds and 4 git commands to generate.