]> Dogcows Code - chaz/openbox/blobdiff - openbox/event.c
use the osd theme stuff for the dock instead of active titlebar
[chaz/openbox] / openbox / event.c
index 6b5ba70e60e15514198a2660909fc93b83ed31ed..fa83c29e992b2ce027d468e0b28ede57da5513bc 100644 (file)
@@ -499,7 +499,7 @@ static void event_process(const XEvent *ec, gpointer data)
 
             focus_left_screen = FALSE;
 
-            focus_fallback(FALSE, FALSE, TRUE);
+            focus_fallback(FALSE, config_focus_under_mouse, TRUE);
 
             /* We don't get a FocusOut for this case, because it's just moving
                from our Inferior up to us. This happens when iconifying a
@@ -551,7 +551,7 @@ static void event_process(const XEvent *ec, gpointer data)
                 */
 
                 if (!focus_left_screen)
-                    focus_fallback(FALSE, FALSE, TRUE);
+                    focus_fallback(FALSE, config_focus_under_mouse, TRUE);
             }
         }
         else if (!client)
@@ -607,7 +607,7 @@ static void event_process(const XEvent *ec, gpointer data)
                 ob_debug_type(OB_DEBUG_FOCUS,
                               "Focus went to an unmanaged window 0x%x !\n",
                               ce.xfocus.window);
-                focus_fallback(TRUE, FALSE, TRUE);
+                focus_fallback(TRUE, config_focus_under_mouse, TRUE);
             }
         }
 
@@ -723,6 +723,7 @@ static void event_handle_root(XEvent *e)
         } else if (msgtype == prop_atoms.net_showing_desktop) {
             screen_show_desktop(e->xclient.data.l[0] != 0, NULL);
         } else if (msgtype == prop_atoms.ob_control) {
+            ob_debug("OB_CONTROL: %d\n", e->xclient.data.l[0]);
             if (e->xclient.data.l[0] == 1)
                 ob_reconfigure();
             else if (e->xclient.data.l[0] == 2)
@@ -730,8 +731,10 @@ static void event_handle_root(XEvent *e)
         }
         break;
     case PropertyNotify:
-        if (e->xproperty.atom == prop_atoms.net_desktop_names)
+        if (e->xproperty.atom == prop_atoms.net_desktop_names) {
+            ob_debug("UPDATE DESKTOP NAMES\n");
             screen_update_desktop_names();
+        }
         else if (e->xproperty.atom == prop_atoms.net_desktop_layout)
             screen_update_layout();
         break;
@@ -1484,9 +1487,25 @@ static void event_handle_client(ObClient *client, XEvent *e)
 
         msgtype = e->xproperty.atom;
         if (msgtype == XA_WM_NORMAL_HINTS) {
+            gint x, y, w, h, lw, lh;
+
+            ob_debug("Update NORMAL hints\n");
             client_update_normal_hints(client);
             /* normal hints can make a window non-resizable */
-            client_setup_decor_and_functions(client, TRUE);
+            client_setup_decor_and_functions(client, FALSE);
+
+            /* make sure the client's sizes are within its bounds */
+            RECT_TO_DIMS(client->area, x, y, w, h);
+            client_try_configure(client, &x, &y, &w, &h, &lw, &lh, FALSE);
+            if (!RECT_EQUAL_DIMS(client->area, x, y, w, h)) {
+                gulong ignore_start;
+
+                ob_debug("Configuring client x %d y %d w %d h %d\n",
+                         x, y, w, h);
+                ignore_start = event_start_ignore_all_enters();
+                client_configure(client, x, y, w, h, FALSE, TRUE);
+                event_end_ignore_all_enters(ignore_start);
+            }
         } else if (msgtype == XA_WM_HINTS) {
             client_update_wmhints(client);
         } else if (msgtype == XA_WM_TRANSIENT_FOR) {
This page took 0.024394 seconds and 4 git commands to generate.