{
if (moveresize_client == client)
moveresize_end(TRUE);
+ if (popup && client == popup->client)
+ popup->client = NULL;
}
void moveresize_startup(gboolean reconfig)
popup_position(popup, gravity, x, y);
}
+ popup->client = c;
popup_show(popup, text);
g_free(text);
}
ungrab_pointer();
popup_hide(popup);
+ popup->client = NULL;
if (!moving) {
#ifdef SYNC
a = screen_physical_area_all_monitors();
switch (edge_warp_dir) {
- case OB_DIRECTION_NORTH:
- y = a->height - 1;
- break;
- case OB_DIRECTION_EAST:
- x = a->x;
- break;
- case OB_DIRECTION_SOUTH:
- y = a->y;
- break;
- case OB_DIRECTION_WEST:
- x = a->width - 1;
- break;
- default:
+ case OB_DIRECTION_NORTH:
+ y = a->height - 1;
+ break;
+ case OB_DIRECTION_EAST:
+ x = a->x;
+ break;
+ case OB_DIRECTION_SOUTH:
+ y = a->y;
+ break;
+ case OB_DIRECTION_WEST:
+ x = a->width - 1;
+ break;
+ default:
g_assert_not_reached();
}
for (i = 0; i < screen_num_monitors; ++i) {
const Rect *a = screen_physical_area_monitor(i);
+
+ if (!RECT_CONTAINS(*a, x, y))
+ continue;
+
if (x == RECT_LEFT(*a)) dir = OB_DIRECTION_WEST;
if (x == RECT_RIGHT(*a)) dir = OB_DIRECTION_EAST;
if (y == RECT_TOP(*a)) dir = OB_DIRECTION_NORTH;
else /* if (sym == XK_Up)) */
dir = OB_DIRECTION_NORTH;
- client_find_resize_directional(moveresize_client, key_resize_edge,
- key_resize_edge == dir,
+ ObClientDirectionalResizeType resize_type =
+ key_resize_edge == dir ? CLIENT_RESIZE_GROW
+ : CLIENT_RESIZE_SHRINK;
+
+ client_find_resize_directional(moveresize_client,
+ key_resize_edge,
+ resize_type,
&x, &y, &w, &h);
dw = w - moveresize_client->area.width;
dh = h - moveresize_client->area.height;