]> Dogcows Code - chaz/openbox/blobdiff - openbox/frame.c
watch for reverttoparent reverting to the root window, which will create a DetailInfe...
[chaz/openbox] / openbox / frame.c
index 953ed07d1e5c889037a13c7ba249ce2e8708094d..880ab1b552cc20952166a685ef491871b73e8825 100644 (file)
@@ -2,7 +2,7 @@
 
    frame.c for the Openbox window manager
    Copyright (c) 2006        Mikael Magnusson
-   Copyright (c) 2003        Ben Jansens
+   Copyright (c) 2003-2007   Dana Jansens
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -29,7 +29,8 @@
 #include "moveresize.h"
 #include "render/theme.h"
 
-#define PLATE_EVENTMASK (SubstructureRedirectMask | ButtonPressMask)
+#define PLATE_EVENTMASK (SubstructureRedirectMask | ButtonPressMask | \
+                         FocusChangeMask)
 #define FRAME_EVENTMASK (EnterWindowMask | LeaveWindowMask | \
                          ButtonPressMask | ButtonReleaseMask | \
                          VisibilityChangeMask)
@@ -233,6 +234,8 @@ static void frame_free(ObFrame *self)
 
 void frame_show(ObFrame *self)
 {
+    ob_debug("frame_show for window 0x%x : %d\n", self->client->window,
+             self->visible);
     if (!self->visible) {
         self->visible = TRUE;
         XMapWindow(ob_display, self->client->window);
@@ -242,9 +245,11 @@ void frame_show(ObFrame *self)
 
 void frame_hide(ObFrame *self)
 {
+    ob_debug("frame_hide for window 0x%x : %d\n", self->client->window,
+             self->visible);
     if (self->visible) {
         self->visible = FALSE;
-        self->client->ignore_unmaps += 2;
+        self->client->ignore_unmaps += 1;
         /* we unmap the client itself so that we can get MapRequest
            events, and because the ICCCM tells us to! */
         XUnmapWindow(ob_display, self->window);
@@ -474,7 +479,7 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
             vals[1] = self->size.right;
             vals[2] = self->size.top;
             vals[3] = self->size.bottom;
-            PROP_SETA32(self->client->window, kde_net_wm_frame_strut,
+            PROP_SETA32(self->client->window, net_frame_extents,
                         cardinal, vals, 4);
         }
 
@@ -530,11 +535,11 @@ void frame_grab_client(ObFrame *self, ObClient *client)
        req's) the ButtonPress is to catch clicks on the client border */
     XSelectInput(ob_display, self->plate, PLATE_EVENTMASK);
 
+    frame_adjust_area(self, TRUE, TRUE, FALSE);
+
     /* map the client so it maps when the frame does */
     XMapWindow(ob_display, client->window);
 
-    frame_adjust_area(self, TRUE, TRUE, FALSE);
-
     /* set all the windows for the frame in the window_map */
     g_hash_table_insert(window_map, &self->window, client);
     g_hash_table_insert(window_map, &self->plate, client);
This page took 0.026934 seconds and 4 git commands to generate.