fix fullscreen windows being stuck in the wrong layer when they come out of
fullscreen. add a new layer where fullscreen windows go when are aren't focused, below all normal windows, so you can alt-tab to a below layer window and it will show itself.
This commit is contained in:
parent
12c9b56dad
commit
2e7359a2fd
2 changed files with 22 additions and 12 deletions
|
@ -2367,9 +2367,12 @@ static ObStackingLayer calc_layer(ObClient *self)
|
|||
self->frame->size.bottom == 0 && self->frame->size.top == 0 &&
|
||||
RECT_EQUAL(self->area,
|
||||
*screen_physical_area_monitor
|
||||
(client_monitor(self)))))) &&
|
||||
(client_focused(self) || client_search_focus_tree(self)))
|
||||
(client_monitor(self))))))) {
|
||||
if (client_focused(self) || client_search_focus_tree(self))
|
||||
l = OB_STACKING_LAYER_FULLSCREEN;
|
||||
else
|
||||
l = OB_STACKING_LAYER_FULLSCREEN_BELOW;
|
||||
}
|
||||
else if (self->above) l = OB_STACKING_LAYER_ABOVE;
|
||||
else if (self->below) l = OB_STACKING_LAYER_BELOW;
|
||||
else l = OB_STACKING_LAYER_NORMAL;
|
||||
|
@ -2814,7 +2817,6 @@ void client_fullscreen(ObClient *self, gboolean fs)
|
|||
|
||||
self->fullscreen = fs;
|
||||
client_change_state(self); /* change the state hints on the client */
|
||||
client_calc_layer(self); /* and adjust out layer/stacking */
|
||||
|
||||
if (fs) {
|
||||
self->pre_fullscreen_area = self->area;
|
||||
|
@ -2850,8 +2852,15 @@ void client_fullscreen(ObClient *self, gboolean fs)
|
|||
|
||||
client_move_resize(self, x, y, w, h);
|
||||
|
||||
/* and adjust our layer/stacking. do this after resizing the window,
|
||||
and applying decorations, because windows which fill the screen are
|
||||
considered "fullscreen" and it affects their layer */
|
||||
client_calc_layer(self);
|
||||
|
||||
if (fs) {
|
||||
/* try focus us when we go into fullscreen mode */
|
||||
client_focus(self);
|
||||
}
|
||||
}
|
||||
|
||||
static void client_iconify_recursive(ObClient *self,
|
||||
|
|
|
@ -29,11 +29,12 @@
|
|||
typedef enum {
|
||||
OB_STACKING_LAYER_INVALID,
|
||||
OB_STACKING_LAYER_DESKTOP, /*!< 0 - desktop windows */
|
||||
OB_STACKING_LAYER_BELOW, /*!< 1 - normal windows w/ below */
|
||||
OB_STACKING_LAYER_NORMAL, /*!< 2 - normal windows */
|
||||
OB_STACKING_LAYER_ABOVE, /*!< 3 - normal windows w/ above */
|
||||
OB_STACKING_LAYER_FULLSCREEN, /*!< 4 - fullscreeen windows */
|
||||
OB_STACKING_LAYER_INTERNAL, /*!< 5 - openbox windows/menus */
|
||||
OB_STACKING_LAYER_FULLSCREEN_BELOW, /*!< 1 - unfocused fullscreens */
|
||||
OB_STACKING_LAYER_BELOW, /*!< 2 - normal windows w/ below */
|
||||
OB_STACKING_LAYER_NORMAL, /*!< 3 - normal windows */
|
||||
OB_STACKING_LAYER_ABOVE, /*!< 4 - normal windows w/ above */
|
||||
OB_STACKING_LAYER_FULLSCREEN, /*!< 5 - fullscreeen windows */
|
||||
OB_STACKING_LAYER_INTERNAL, /*!< 6 - openbox windows/menus */
|
||||
OB_NUM_STACKING_LAYERS
|
||||
} ObStackingLayer;
|
||||
|
||||
|
|
Loading…
Reference in a new issue