summaryrefslogtreecommitdiff
path: root/openbox/client.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-06-04 23:11:26 +0000
committerDana Jansens <danakj@orodu.net>2003-06-04 23:11:26 +0000
commit68cc6e30b8d985d95016668a29aa273a75ce6d44 (patch)
tree774a24d8152781c1a8418086339b924790575009 /openbox/client.c
parenta865fe603fb9843b2f7d7c4db259fd97dc3915b5 (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.c26
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);