+
+}
+
+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->client->max_horz ||
+ self->max_vert != self->client->max_vert ||
+ self->shaded != self->client->shaded)
+ {
+ gboolean r = (self->client->functions & OB_CLIENT_FUNC_RESIZE) &&
+ !(self->client->max_horz && self->client->max_vert);
+ gboolean topbot = !self->client->max_vert;
+ gboolean sh = self->client->shaded;
+ XSetWindowAttributes a;
+
+ /* these ones turn off when max vert, and some when shaded */
+ a.cursor = ob_cursor(r && topbot && !sh ?
+ 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);
+ XChangeWindowAttributes(ob_display, self->innerbottom, CWCursor, &a);
+
+ /* these ones change when shaded */
+ 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->tllresize, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->titletopleft, CWCursor, &a);
+ a.cursor = ob_cursor(r ? (sh ? OB_CURSOR_EAST : OB_CURSOR_NORTHEAST) :
+ OB_CURSOR_NONE);
+ XChangeWindowAttributes(ob_display, self->titleright, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->trtresize, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->trrresize, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->titletopright, CWCursor, &a);
+
+ /* these ones are pretty static */
+ a.cursor = ob_cursor(r ? OB_CURSOR_WEST : OB_CURSOR_NONE);
+ XChangeWindowAttributes(ob_display, self->left, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->innerleft, CWCursor, &a);
+ a.cursor = ob_cursor(r ? OB_CURSOR_EAST : OB_CURSOR_NONE);
+ XChangeWindowAttributes(ob_display, self->right, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->innerright, 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);
+ XChangeWindowAttributes(ob_display, self->lgripleft, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->lgriptop, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->lgripbottom, CWCursor, &a);
+ a.cursor = ob_cursor(r ? OB_CURSOR_SOUTHEAST : OB_CURSOR_NONE);
+ XChangeWindowAttributes(ob_display, self->rgrip, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->handleright, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->rgripright, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->rgriptop, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->rgripbottom, CWCursor, &a);
+ }