]> Dogcows Code - chaz/openbox/blobdiff - openbox/moveresize.c
revert that, center the popups for move/resize and keychains
[chaz/openbox] / openbox / moveresize.c
index 3d9914c5ffae4b48710fc8ddb20ceaebcb59a09c..232cc9b9716abe38d3a79138f1e969264fbe9758 100644 (file)
@@ -68,6 +68,7 @@ static void client_dest(ObClient *client, gpointer data)
 void moveresize_startup(gboolean reconfig)
 {
     popup = popup_new(FALSE);
+    popup_set_text_align(popup, RR_JUSTIFY_CENTER);
 
     if (!reconfig)
         client_add_destroy_notify(client_dest, NULL);
@@ -152,25 +153,51 @@ static void popup_coords(ObClient *c, const gchar *format, gint a, gint b)
 void moveresize_start(ObClient *c, gint x, gint y, guint b, guint32 cnr)
 {
     ObCursor cur;
-
-    moving = (cnr == prop_atoms.net_wm_moveresize_move ||
-              cnr == prop_atoms.net_wm_moveresize_move_keyboard);
+    gboolean mv = (cnr == prop_atoms.net_wm_moveresize_move ||
+                   cnr == prop_atoms.net_wm_moveresize_move_keyboard);
 
     if (moveresize_in_progress || !c->frame->visible ||
-        !(moving ?
+        !(mv ?
           (c->functions & OB_CLIENT_FUNC_MOVE) :
           (c->functions & OB_CLIENT_FUNC_RESIZE)))
         return;
 
-    if (!grab_pointer(TRUE, FALSE, cur))
+    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(TRUE)) {
-        grab_pointer(FALSE, FALSE, OB_CURSOR_NONE);
+    if (!grab_keyboard()) {
+        ungrab_pointer();
         return;
     }
 
     frame_end_iconify_animation(c->frame);
 
+    moving = mv;
     moveresize_client = c;
     start_cx = c->area.x;
     start_cy = c->area.y;
@@ -204,31 +231,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)
@@ -275,8 +277,8 @@ 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);
 
@@ -296,7 +298,8 @@ void moveresize_end(gboolean cancel)
         get_resize_position(&x, &y, cancel);
         client_configure(moveresize_client, x, y,
                          (cancel ? start_cw : cur_x),
-                         (cancel ? start_ch : cur_y), TRUE, TRUE);
+                         (cancel ? start_ch : cur_y),
+                         TRUE, TRUE);
     }
 
     moveresize_in_progress = FALSE;
@@ -315,7 +318,8 @@ static void do_move(gboolean keyboard)
 
     client_configure(moveresize_client, cur_x, cur_y,
                      moveresize_client->area.width,
-                     moveresize_client->area.height, TRUE, FALSE);
+                     moveresize_client->area.height,
+                     TRUE, FALSE);
     if (config_resize_popup_show == 2) /* == "Always" */
         popup_coords(moveresize_client, "%d x %d",
                      moveresize_client->frame->area.x,
@@ -324,31 +328,32 @@ static void do_move(gboolean keyboard)
 
 static void do_resize()
 {
+    gint x, y, w, h, lw, lh;
+
+    /* see if it is actually going to resize */
+    x = 0;
+    y = 0;
+    w = cur_x;
+    h = cur_y;
+    client_try_configure(moveresize_client, &x, &y, &w, &h,
+                         &lw, &lh, TRUE);
+    if (w == moveresize_client->area.width &&
+        h == moveresize_client->area.height)
+    {
+        return;
+    }
+
 #ifdef SYNC
     if (config_resize_redraw && extensions_sync &&
         moveresize_client->sync_request && moveresize_client->sync_counter)
     {
         XEvent ce;
         XSyncValue val;
-        gint x, y, w, h, lw, lh;
 
         /* are we already waiting for the sync counter to catch up? */
         if (waiting_for_sync)
             return;
 
-        /* see if it is actually going to resize */
-        x = 0;
-        y = 0;
-        w = cur_x;
-        h = cur_y;
-        client_try_configure(moveresize_client, &x, &y, &w, &h,
-                             &lw, &lh, TRUE);
-        if (w == moveresize_client->area.width &&
-            h == moveresize_client->area.height)
-        {
-            return;
-        }
-
         /* increment the value we're waiting for */
         ++moveresize_client->sync_counter_value;
         XSyncIntToValue(&val, moveresize_client->sync_counter_value);
@@ -371,11 +376,8 @@ static void do_resize()
     }
 #endif
 
-    {
-        gint x, y;
-        get_resize_position(&x, &y, FALSE);
-        client_configure(moveresize_client, x, y, cur_x, cur_y, TRUE, FALSE);
-    }
+    get_resize_position(&x, &y, FALSE);
+    client_configure(moveresize_client, x, y, cur_x, cur_y, TRUE, FALSE);
 
     /* this would be better with a fixed width font ... XXX can do it better
        if there are 2 text boxes */
This page took 0.024932 seconds and 4 git commands to generate.