X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fmoveresize.c;h=837f3e92feec451dd59993944d42fa9f785fc36e;hb=62c311ba92fe5c187cc70151eb719a2fdf3efce4;hp=6a1e235421be94245bd65f399c9987e91eea58c0;hpb=8ae589465fc2d89857a8a9e5782cb297e8dc58aa;p=chaz%2Fopenbox diff --git a/openbox/moveresize.c b/openbox/moveresize.c index 6a1e2354..837f3e92 100644 --- a/openbox/moveresize.c +++ b/openbox/moveresize.c @@ -70,7 +70,7 @@ void moveresize_startup(gboolean reconfig) popup = popup_new(FALSE); if (!reconfig) - client_add_destructor(client_dest, NULL); + client_add_destroy_notify(client_dest, NULL); } void moveresize_shutdown(gboolean reconfig) @@ -78,7 +78,7 @@ 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); @@ -162,6 +162,39 @@ void moveresize_start(ObClient *c, gint x, gint y, guint b, guint32 cnr) (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; @@ -197,31 +230,6 @@ void moveresize_start(ObClient *c, gint x, gint y, guint b, guint32 cnr) 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) @@ -262,17 +270,14 @@ void moveresize_start(ObClient *c, gint x, gint y, guint b, guint32 cnr) 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);