X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fframe.c;h=052f12df8d44e33613c0b52494d58411974deead;hb=4c672be2e1f39e72eb7d7e99f129e61338f481b2;hp=953ed07d1e5c889037a13c7ba249ce2e8708094d;hpb=56307d60773d0eaf65b10414cd0e3ec0b2adc156;p=chaz%2Fopenbox diff --git a/openbox/frame.c b/openbox/frame.c index 953ed07d..052f12df 100644 --- a/openbox/frame.c +++ b/openbox/frame.c @@ -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) @@ -244,7 +245,7 @@ void frame_hide(ObFrame *self) { 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 +475,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 +531,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); @@ -976,6 +977,7 @@ void frame_flash_start(ObFrame *self) G_USEC_PER_SEC * 0.6, flash_timeout, self, + g_direct_equal, flash_done); g_get_current_time(&self->flash_end); g_time_val_add(&self->flash_end, G_USEC_PER_SEC * 5);