diff options
| author | Dana Jansens <danakj@orodu.net> | 2003-03-21 18:38:08 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2003-03-21 18:38:08 +0000 |
| commit | 327a0b3de75187a23bb01ce5e8e6992fd1106a81 (patch) | |
| tree | 0c82dedb2972c7cfedc234704c510d6ea71a4e45 /engines/openbox | |
| parent | a822cbe13b18eca60b220b9b312210c02b946a3b (diff) | |
always adjust the frames size and position together, so there is no more weird resizing before moving and edge flickering when resizing from the top/left
Diffstat (limited to 'engines/openbox')
| -rw-r--r-- | engines/openbox/openbox.c | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/engines/openbox/openbox.c b/engines/openbox/openbox.c index c488efba..06b36616 100644 --- a/engines/openbox/openbox.c +++ b/engines/openbox/openbox.c @@ -407,7 +407,7 @@ void frame_adjust_shape(ObFrame *self) #endif } -void frame_adjust_size(ObFrame *self) +void frame_adjust_area(ObFrame *self) { if (self->frame.client->decorations & Decor_Border) { self->bwidth = s_bwidth; @@ -461,11 +461,19 @@ void frame_adjust_size(ObFrame *self) XMapWindow(ob_display, self->handle); } else XUnmapWindow(ob_display, self->handle); - - XResizeWindow(ob_display, self->frame.window, self->width, - (self->frame.client->shaded ? TITLE_HEIGHT : - self->innersize.top + self->innersize.bottom + - self->frame.client->area.height)); + + /* find the new coordinates */ + self->frame.area.x = self->frame.client->area.x; + self->frame.area.y = self->frame.client->area.y; + frame_client_gravity((Frame*)self, + &self->frame.area.x, &self->frame.area.y); + /* move and resize the top level frame */ + XMoveResizeWindow(ob_display, self->frame.window, + self->frame.area.x, self->frame.area.y, + self->width, + (self->frame.client->shaded ? TITLE_HEIGHT : + self->innersize.top + self->innersize.bottom + + self->frame.client->area.height)); /* do this in two steps because clients whose gravity is set to 'Static' don't end up getting moved at all with an XMoveResizeWindow */ @@ -493,16 +501,6 @@ void frame_adjust_size(ObFrame *self) frame_adjust_shape(self); } -void frame_adjust_position(ObFrame *self) -{ - self->frame.area.x = self->frame.client->area.x; - self->frame.area.y = self->frame.client->area.y; - frame_client_gravity((Frame*)self, - &self->frame.area.x, &self->frame.area.y); - XMoveWindow(ob_display, self->frame.window, - self->frame.area.x, self->frame.area.y); -} - void frame_adjust_state(ObFrame *self) { render_max(self); @@ -548,8 +546,7 @@ void frame_grab_client(ObFrame *self, Client *client) /* map the client so it maps when the frame does */ XMapWindow(ob_display, client->window); - frame_adjust_size(self); - frame_adjust_position(self); + frame_adjust_area(self); /* set all the windows for the frame in the client_map */ g_hash_table_insert(client_map, (gpointer)self->frame.window, client); |
