Remember the maximized state of a window when it goes fullscreen and try restore it after
Dana Jansens danakj@orodu.net
2 files changed,
17 insertions(+),
0 deletions(-)
M
openbox/client.c
→
openbox/client.c
@@ -3149,6 +3149,9 @@ client_change_state(self); /* change the state hints on the client */
if (fs) { self->pre_fullscreen_area = self->area; + self->pre_fullscreen_max_horz = self->max_horz; + self->pre_fullscreen_max_vert = self->max_vert; + /* if the window is maximized, its area isn't all that meaningful. save its premax area instead. */ if (self->max_horz) {@@ -3169,6 +3172,17 @@ h = self->area.height;
} else { g_assert(self->pre_fullscreen_area.width > 0 && self->pre_fullscreen_area.height > 0); + + self->max_horz = self->pre_fullscreen_max_horz; + self->max_vert = self->pre_fullscreen_max_vert; + if (self->max_horz) { + self->pre_max_area.x = self->pre_fullscreen_area.x; + self->pre_max_area.width = self->pre_fullscreen_area.width; + } + if (self->max_vert) { + self->pre_max_area.y = self->pre_fullscreen_area.y; + self->pre_max_area.height = self->pre_fullscreen_area.height; + } x = self->pre_fullscreen_area.x; y = self->pre_fullscreen_area.y;
M
openbox/client.h
→
openbox/client.h
@@ -147,6 +147,9 @@ /*! Position and size of the window prior to being maximized */
Rect pre_max_area; /*! Position and size of the window prior to being fullscreened */ Rect pre_fullscreen_area; + /*! Remember if the window was maximized before going fullscreen */ + gboolean pre_fullscreen_max_horz, + pre_fullscreen_max_vert; /*! The window's strut The strut defines areas of the screen that are marked off-bounds for