popup = popup_new(FALSE);
if (!reconfig)
- client_add_destructor(client_dest, NULL);
+ client_add_destroy_notify(client_dest, NULL);
}
void moveresize_shutdown(gboolean reconfig)
if (!reconfig) {
if (moveresize_in_progress)
moveresize_end(FALSE);
- client_remove_destructor(client_dest);
+ client_remove_destroy_notify(client_dest);
}
popup_free(popup);
(c->functions & OB_CLIENT_FUNC_RESIZE)))
return;
+ if (cnr == prop_atoms.net_wm_moveresize_size_topleft)
+ cur = OB_CURSOR_NORTHWEST;
+ else if (cnr == prop_atoms.net_wm_moveresize_size_top)
+ cur = OB_CURSOR_NORTH;
+ else if (cnr == prop_atoms.net_wm_moveresize_size_topright)
+ cur = OB_CURSOR_NORTHEAST;
+ else if (cnr == prop_atoms.net_wm_moveresize_size_right)
+ cur = OB_CURSOR_EAST;
+ else if (cnr == prop_atoms.net_wm_moveresize_size_bottomright)
+ cur = OB_CURSOR_SOUTHEAST;
+ else if (cnr == prop_atoms.net_wm_moveresize_size_bottom)
+ cur = OB_CURSOR_SOUTH;
+ else if (cnr == prop_atoms.net_wm_moveresize_size_bottomleft)
+ cur = OB_CURSOR_SOUTHWEST;
+ else if (cnr == prop_atoms.net_wm_moveresize_size_left)
+ cur = OB_CURSOR_WEST;
+ else if (cnr == prop_atoms.net_wm_moveresize_size_keyboard)
+ cur = OB_CURSOR_SOUTHEAST;
+ else if (cnr == prop_atoms.net_wm_moveresize_move)
+ cur = OB_CURSOR_MOVE;
+ else if (cnr == prop_atoms.net_wm_moveresize_move_keyboard)
+ cur = OB_CURSOR_MOVE;
+ else
+ g_assert_not_reached();
+
+ /* keep the pointer bounded to the screen for move/resize */
+ if (!grab_pointer(FALSE, TRUE, cur))
+ return;
+ if (!grab_keyboard()) {
+ ungrab_pointer();
+ return;
+ }
+
frame_end_iconify_animation(c->frame);
moveresize_client = c;
moveresize_in_progress = TRUE;
- if (corner == prop_atoms.net_wm_moveresize_size_topleft)
- cur = OB_CURSOR_NORTHWEST;
- else if (corner == prop_atoms.net_wm_moveresize_size_top)
- cur = OB_CURSOR_NORTH;
- else if (corner == prop_atoms.net_wm_moveresize_size_topright)
- cur = OB_CURSOR_NORTHEAST;
- else if (corner == prop_atoms.net_wm_moveresize_size_right)
- cur = OB_CURSOR_EAST;
- else if (corner == prop_atoms.net_wm_moveresize_size_bottomright)
- cur = OB_CURSOR_SOUTHEAST;
- else if (corner == prop_atoms.net_wm_moveresize_size_bottom)
- cur = OB_CURSOR_SOUTH;
- else if (corner == prop_atoms.net_wm_moveresize_size_bottomleft)
- cur = OB_CURSOR_SOUTHWEST;
- else if (corner == prop_atoms.net_wm_moveresize_size_left)
- cur = OB_CURSOR_WEST;
- else if (corner == prop_atoms.net_wm_moveresize_size_keyboard)
- cur = OB_CURSOR_SOUTHEAST;
- else if (corner == prop_atoms.net_wm_moveresize_move)
- cur = OB_CURSOR_MOVE;
- else if (corner == prop_atoms.net_wm_moveresize_move_keyboard)
- cur = OB_CURSOR_MOVE;
- else
- g_assert_not_reached();
-
#ifdef SYNC
if (config_resize_redraw && !moving && extensions_shape &&
moveresize_client->sync_request && moveresize_client->sync_counter)
waiting_for_sync = FALSE;
}
#endif
-
- grab_pointer(TRUE, FALSE, cur);
- grab_keyboard(TRUE);
}
void moveresize_end(gboolean cancel)
{
gint x, y;
- grab_keyboard(FALSE);
- grab_pointer(FALSE, FALSE, OB_CURSOR_NONE);
+ ungrab_keyboard();
+ ungrab_pointer();
popup_hide(popup);