diff options
| author | Dana Jansens <danakj@orodu.net> | 2003-06-04 23:11:26 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2003-06-04 23:11:26 +0000 |
| commit | 68cc6e30b8d985d95016668a29aa273a75ce6d44 (patch) | |
| tree | 774a24d8152781c1a8418086339b924790575009 /openbox/client.c | |
| parent | a865fe603fb9843b2f7d7c4db259fd97dc3915b5 (diff) | |
remove the client_remaximize function, and replace it with the client_reconfigure function, which just calls client_configure with the window's current location and dimensions, user=TRUE and final=TRUE.
add support for the VIDMODE extension in client_configure, namely, fullscreen windows are positioned at the point of the viewport rather than at 0,0.
call client_reconfigure when uniconifying a window, so that fullscreen windows are put at the point of the view port.
Diffstat (limited to 'openbox/client.c')
| -rw-r--r-- | openbox/client.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/openbox/client.c b/openbox/client.c index a9a9eb5f..f17d1baf 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -1031,7 +1031,7 @@ void client_setup_decor_and_functions(Client *self) we may also need to be repositioned */ frame_adjust_area(self->frame, TRUE, TRUE); /* with new decor, the window's maximized size may change */ - client_remaximize(self); + client_reconfigure(self); } else { /* this makes sure that these windows appear on all desktops */ if (self->type == Type_Desktop && self->desktop != DESKTOP_ALL) @@ -1089,19 +1089,10 @@ static void client_change_allowed_actions(Client *self) } } -void client_remaximize(Client *self) +void client_reconfigure(Client *self) { - int dir; - if (self->max_horz && self->max_vert) - dir = 0; - else if (self->max_horz) - dir = 1; - else if (self->max_vert) - dir = 2; - else - return; /* not maximized */ - self->max_horz = self->max_vert = FALSE; - client_maximize(self, TRUE, dir, FALSE); + client_configure(self, Corner_TopLeft, self->area.x, self->area.y, + self->area.width, self->area.height, TRUE, TRUE); } void client_update_wmhints(Client *self) @@ -1618,8 +1609,12 @@ void client_configure(Client *self, Corner anchor, int x, int y, int w, int h, /* set the size and position if fullscreen */ if (self->fullscreen) { +#ifdef VIDMODE + XF86VidModeGetViewPort(ob_display, ob_screen, &x, &y); +#else x = 0; y = 0; +#endif w = screen_physical_size.width; h = screen_physical_size.height; user = FALSE; /* ignore that increment etc shit when in fullscreen */ @@ -1867,6 +1862,11 @@ void client_iconify(Client *self, gboolean iconic, gboolean curdesk) /* this puts it after the current focused window */ focus_order_remove(self); focus_order_add_new(self); + + /* this is here cuz with the VIDMODE extension, the viewport can change + while a fullscreen window is iconic, and when it uniconifies, it + would be nice if it did so to the new position of the viewport */ + client_reconfigure(self); } client_change_state(self); client_showhide(self); |
