X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fframe.c;h=16910265c93881797bd862f873360332f0fe6a1e;hb=9b95bf5ce0366680bfd0155429296d6535b25443;hp=3565f54ee0d4c2080b95792f4bc29755f21fd0af;hpb=89c7b236b580a78ea529c4c65bc5944c0a52bdf5;p=chaz%2Fopenbox diff --git a/openbox/frame.c b/openbox/frame.c index 3565f54e..16910265 100644 --- a/openbox/frame.c +++ b/openbox/frame.c @@ -262,6 +262,9 @@ void frame_hide(ObFrame *self) self->visible = FALSE; if (!frame_iconify_animating(self)) XUnmapWindow(ob_display, self->window); + /* unmap the plate along with the client. some people (libwnck) look + to see if it is unmapped when the client is iconified, for whatever + reason. so let's play along... */ XUnmapWindow(ob_display, self->plate); /* we unmap the client itself so that we can get MapRequest events, and because the ICCCM tells us to! */ @@ -753,16 +756,24 @@ static void frame_adjust_cursors(ObFrame *self) { if ((self->functions & OB_CLIENT_FUNC_RESIZE) != (self->client->functions & OB_CLIENT_FUNC_RESIZE) || - ((self->max_horz && self->max_vert) != - (self->client->max_horz && self->client->max_vert))) + self->max_horz != self->client->max_horz || + self->max_vert != self->client->max_vert) { gboolean r = (self->client->functions & OB_CLIENT_FUNC_RESIZE) && !(self->client->max_horz && self->client->max_vert); + gboolean topbot = !self->client->max_vert; XSetWindowAttributes a; - a.cursor = ob_cursor(r ? OB_CURSOR_NORTH : OB_CURSOR_NONE); + /* these ones turn off when max vert */ + a.cursor = ob_cursor(r && topbot ? OB_CURSOR_NORTH : OB_CURSOR_NONE); XChangeWindowAttributes(ob_display, self->topresize, CWCursor, &a); XChangeWindowAttributes(ob_display, self->titletop, CWCursor, &a); + a.cursor = ob_cursor(r && topbot ? OB_CURSOR_SOUTH : OB_CURSOR_NONE); + XChangeWindowAttributes(ob_display, self->handle, CWCursor, &a); + XChangeWindowAttributes(ob_display, self->handletop, CWCursor, &a); + XChangeWindowAttributes(ob_display, self->handlebottom, CWCursor, &a); + + /* these ones don't */ a.cursor = ob_cursor(r ? OB_CURSOR_NORTHWEST : OB_CURSOR_NONE); XChangeWindowAttributes(ob_display, self->tltresize, CWCursor, &a); XChangeWindowAttributes(ob_display, self->tllresize, CWCursor, &a); @@ -777,10 +788,6 @@ static void frame_adjust_cursors(ObFrame *self) XChangeWindowAttributes(ob_display, self->left, CWCursor, &a); a.cursor = ob_cursor(r ? OB_CURSOR_EAST : OB_CURSOR_NONE); XChangeWindowAttributes(ob_display, self->right, CWCursor, &a); - a.cursor = ob_cursor(r ? OB_CURSOR_SOUTH : OB_CURSOR_NONE); - XChangeWindowAttributes(ob_display, self->handle, CWCursor, &a); - XChangeWindowAttributes(ob_display, self->handletop, CWCursor, &a); - XChangeWindowAttributes(ob_display, self->handlebottom, CWCursor, &a); a.cursor = ob_cursor(r ? OB_CURSOR_SOUTHWEST : OB_CURSOR_NONE); XChangeWindowAttributes(ob_display, self->lgrip, CWCursor, &a); XChangeWindowAttributes(ob_display, self->handleleft, CWCursor, &a); @@ -1259,6 +1266,10 @@ ObFrameContext frame_context(ObClient *client, Window win, gint x, gint y) context */ return OB_FRAME_CONTEXT_TITLEBAR; } + else if (self->max_vert && + (win == self->titletop || win == self->topresize)) + /* can't resize vertically when max vert */ + return OB_FRAME_CONTEXT_TITLEBAR; if (win == self->window) return OB_FRAME_CONTEXT_FRAME; if (win == self->label) return OB_FRAME_CONTEXT_TITLEBAR; @@ -1383,7 +1394,7 @@ void frame_frame_gravity(ObFrame *self, gint *x, gint *y, gint w, gint h) case StaticGravity: case ForgetGravity: /* the client's position won't move */ - *x -= self->size.left; + *x += self->size.left; break; }