X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fmoveresize.c;h=837f3e92feec451dd59993944d42fa9f785fc36e;hb=83da4ec9398d197f39461cd7305163b2676840c8;hp=ac51f8b6e83399675dbb24cae379f6cbeba37b1d;hpb=acfa2af3c2eacd099869cc5aebdcfa1241214e8b;p=chaz%2Fopenbox diff --git a/openbox/moveresize.c b/openbox/moveresize.c index ac51f8b6..837f3e92 100644 --- a/openbox/moveresize.c +++ b/openbox/moveresize.c @@ -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);