X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fclient.c;h=87cdba96973d61b55cef4f8f76bcff33ea6bbcee;hb=069e9607fa433190307bb8242294a109e88165de;hp=c0f3d0119fd22011104b9c1c0a67058038ebb913;hpb=7e83fa0866433a93f56a4914934f1d8497e28cf0;p=chaz%2Fopenbox diff --git a/openbox/client.c b/openbox/client.c index c0f3d011..87cdba96 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -1027,10 +1027,7 @@ void client_setup_decor_and_functions(Client *self) if (self->type == Type_Desktop && self->desktop != DESKTOP_ALL) client_set_desktop(self, DESKTOP_ALL, FALSE); - /* change the decors on the frame, and with more/less decorations, - we may also need to be repositioned */ - frame_adjust_area(self->frame, TRUE, TRUE); - /* with new decor, the window's maximized size may change */ + /* adjust the client's decorations, etc. */ client_reconfigure(self); } else { /* this makes sure that these windows appear on all desktops */ @@ -1091,8 +1088,11 @@ static void client_change_allowed_actions(Client *self) void client_reconfigure(Client *self) { + /* by making this pass FALSE for user, we avoid the emacs event storm where + every configurenotify causes an update in its normal hints, i think this + is generally what we want anyways... */ client_configure(self, Corner_TopLeft, self->area.x, self->area.y, - self->area.width, self->area.height, TRUE, TRUE); + self->area.width, self->area.height, FALSE, TRUE); } void client_update_wmhints(Client *self) @@ -1772,6 +1772,9 @@ void client_configure(Client *self, Corner anchor, int x, int y, int w, int h, /* move/resize the frame to match the request */ if (self->frame) { + if (self->decorations != self->frame->decorations) + moved = resized = TRUE; + if (moved || resized) frame_adjust_area(self->frame, moved, resized);