don't show vertical resize context/arrow when the window is shaded
This commit is contained in:
parent
6005c3c861
commit
383f1ee85f
3 changed files with 22 additions and 9 deletions
|
@ -3174,7 +3174,7 @@ void client_shade(ObClient *self, gboolean shade)
|
||||||
client_change_state(self);
|
client_change_state(self);
|
||||||
client_change_wm_state(self); /* the window is being hidden/shown */
|
client_change_wm_state(self); /* the window is being hidden/shown */
|
||||||
/* resize the frame to just the titlebar */
|
/* resize the frame to just the titlebar */
|
||||||
frame_adjust_area(self->frame, FALSE, FALSE, FALSE);
|
frame_adjust_area(self->frame, FALSE, TRUE, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void client_close(ObClient *self)
|
void client_close(ObClient *self)
|
||||||
|
|
|
@ -334,6 +334,7 @@ void frame_adjust_area(ObFrame *self, gboolean moved,
|
||||||
self->decorations = self->client->decorations;
|
self->decorations = self->client->decorations;
|
||||||
self->max_horz = self->client->max_horz;
|
self->max_horz = self->client->max_horz;
|
||||||
self->max_vert = self->client->max_vert;
|
self->max_vert = self->client->max_vert;
|
||||||
|
self->shaded = self->client->shaded;
|
||||||
|
|
||||||
if (self->decorations & OB_FRAME_DECOR_BORDER ||
|
if (self->decorations & OB_FRAME_DECOR_BORDER ||
|
||||||
(self->client->undecorated && config_theme_keepborder))
|
(self->client->undecorated && config_theme_keepborder))
|
||||||
|
@ -804,15 +805,18 @@ static void frame_adjust_cursors(ObFrame *self)
|
||||||
if ((self->functions & OB_CLIENT_FUNC_RESIZE) !=
|
if ((self->functions & OB_CLIENT_FUNC_RESIZE) !=
|
||||||
(self->client->functions & OB_CLIENT_FUNC_RESIZE) ||
|
(self->client->functions & OB_CLIENT_FUNC_RESIZE) ||
|
||||||
self->max_horz != self->client->max_horz ||
|
self->max_horz != self->client->max_horz ||
|
||||||
self->max_vert != self->client->max_vert)
|
self->max_vert != self->client->max_vert ||
|
||||||
|
self->shaded != self->client->shaded)
|
||||||
{
|
{
|
||||||
gboolean r = (self->client->functions & OB_CLIENT_FUNC_RESIZE) &&
|
gboolean r = (self->client->functions & OB_CLIENT_FUNC_RESIZE) &&
|
||||||
!(self->client->max_horz && self->client->max_vert);
|
!(self->client->max_horz && self->client->max_vert);
|
||||||
gboolean topbot = !self->client->max_vert;
|
gboolean topbot = !self->client->max_vert;
|
||||||
|
gboolean sh = self->client->shaded;
|
||||||
XSetWindowAttributes a;
|
XSetWindowAttributes a;
|
||||||
|
|
||||||
/* these ones turn off when max vert */
|
/* these ones turn off when max vert, and some when shaded */
|
||||||
a.cursor = ob_cursor(r && topbot ? OB_CURSOR_NORTH : OB_CURSOR_NONE);
|
a.cursor = ob_cursor(r && topbot && !sh ?
|
||||||
|
OB_CURSOR_NORTH : OB_CURSOR_NONE);
|
||||||
XChangeWindowAttributes(ob_display, self->topresize, CWCursor, &a);
|
XChangeWindowAttributes(ob_display, self->topresize, CWCursor, &a);
|
||||||
XChangeWindowAttributes(ob_display, self->titletop, CWCursor, &a);
|
XChangeWindowAttributes(ob_display, self->titletop, CWCursor, &a);
|
||||||
a.cursor = ob_cursor(r && topbot ? OB_CURSOR_SOUTH : OB_CURSOR_NONE);
|
a.cursor = ob_cursor(r && topbot ? OB_CURSOR_SOUTH : OB_CURSOR_NONE);
|
||||||
|
@ -821,17 +825,21 @@ static void frame_adjust_cursors(ObFrame *self)
|
||||||
XChangeWindowAttributes(ob_display, self->handlebottom, CWCursor, &a);
|
XChangeWindowAttributes(ob_display, self->handlebottom, CWCursor, &a);
|
||||||
XChangeWindowAttributes(ob_display, self->innerbottom, CWCursor, &a);
|
XChangeWindowAttributes(ob_display, self->innerbottom, CWCursor, &a);
|
||||||
|
|
||||||
/* these ones don't */
|
/* these ones change when shaded */
|
||||||
a.cursor = ob_cursor(r ? OB_CURSOR_NORTHWEST : OB_CURSOR_NONE);
|
a.cursor = ob_cursor(r ? (sh ? OB_CURSOR_WEST : OB_CURSOR_NORTHWEST) :
|
||||||
|
OB_CURSOR_NONE);
|
||||||
|
XChangeWindowAttributes(ob_display, self->titleleft, CWCursor, &a);
|
||||||
XChangeWindowAttributes(ob_display, self->tltresize, CWCursor, &a);
|
XChangeWindowAttributes(ob_display, self->tltresize, CWCursor, &a);
|
||||||
XChangeWindowAttributes(ob_display, self->tllresize, CWCursor, &a);
|
XChangeWindowAttributes(ob_display, self->tllresize, CWCursor, &a);
|
||||||
XChangeWindowAttributes(ob_display, self->titletopleft, CWCursor, &a);
|
XChangeWindowAttributes(ob_display, self->titletopleft, CWCursor, &a);
|
||||||
XChangeWindowAttributes(ob_display, self->titleleft, CWCursor, &a);
|
a.cursor = ob_cursor(r ? (sh ? OB_CURSOR_EAST : OB_CURSOR_NORTHEAST) :
|
||||||
a.cursor = ob_cursor(r ? OB_CURSOR_NORTHEAST : OB_CURSOR_NONE);
|
OB_CURSOR_NONE);
|
||||||
|
XChangeWindowAttributes(ob_display, self->titleright, CWCursor, &a);
|
||||||
XChangeWindowAttributes(ob_display, self->trtresize, CWCursor, &a);
|
XChangeWindowAttributes(ob_display, self->trtresize, CWCursor, &a);
|
||||||
XChangeWindowAttributes(ob_display, self->trrresize, CWCursor, &a);
|
XChangeWindowAttributes(ob_display, self->trrresize, CWCursor, &a);
|
||||||
XChangeWindowAttributes(ob_display, self->titletopright, CWCursor, &a);
|
XChangeWindowAttributes(ob_display, self->titletopright, CWCursor, &a);
|
||||||
XChangeWindowAttributes(ob_display, self->titleright, CWCursor, &a);
|
|
||||||
|
/* these ones are pretty static */
|
||||||
a.cursor = ob_cursor(r ? OB_CURSOR_WEST : OB_CURSOR_NONE);
|
a.cursor = ob_cursor(r ? OB_CURSOR_WEST : OB_CURSOR_NONE);
|
||||||
XChangeWindowAttributes(ob_display, self->left, CWCursor, &a);
|
XChangeWindowAttributes(ob_display, self->left, CWCursor, &a);
|
||||||
XChangeWindowAttributes(ob_display, self->innerleft, CWCursor, &a);
|
XChangeWindowAttributes(ob_display, self->innerleft, CWCursor, &a);
|
||||||
|
@ -1328,6 +1336,10 @@ ObFrameContext frame_context(ObClient *client, Window win, gint x, gint y)
|
||||||
(win == self->titletop || win == self->topresize))
|
(win == self->titletop || win == self->topresize))
|
||||||
/* can't resize vertically when max vert */
|
/* can't resize vertically when max vert */
|
||||||
return OB_FRAME_CONTEXT_TITLEBAR;
|
return OB_FRAME_CONTEXT_TITLEBAR;
|
||||||
|
else if (self->shaded &&
|
||||||
|
(win == self->titletop || win == self->topresize))
|
||||||
|
/* can't resize vertically when shaded */
|
||||||
|
return OB_FRAME_CONTEXT_TITLEBAR;
|
||||||
|
|
||||||
if (win == self->window) return OB_FRAME_CONTEXT_FRAME;
|
if (win == self->window) return OB_FRAME_CONTEXT_FRAME;
|
||||||
if (win == self->label) return OB_FRAME_CONTEXT_TITLEBAR;
|
if (win == self->label) return OB_FRAME_CONTEXT_TITLEBAR;
|
||||||
|
|
|
@ -167,6 +167,7 @@ struct _ObFrame
|
||||||
gint cbwidth_b; /* client border width */
|
gint cbwidth_b; /* client border width */
|
||||||
gboolean max_horz; /* when maxed some decorations are hidden */
|
gboolean max_horz; /* when maxed some decorations are hidden */
|
||||||
gboolean max_vert; /* when maxed some decorations are hidden */
|
gboolean max_vert; /* when maxed some decorations are hidden */
|
||||||
|
gboolean shaded; /* decorations adjust when shaded */
|
||||||
|
|
||||||
/* the leftmost and rightmost elements in the titlebar */
|
/* the leftmost and rightmost elements in the titlebar */
|
||||||
ObFrameContext leftmost;
|
ObFrameContext leftmost;
|
||||||
|
|
Loading…
Reference in a new issue