Clean up the FillToEdge action implementation
[dana/openbox.git] / openbox / moveresize.c
index 1625ccf..d12a64d 100644 (file)
@@ -83,6 +83,8 @@ static void client_dest(ObClient *client, gpointer data)
 {
     if (moveresize_client == client)
         moveresize_end(TRUE);
+    if (popup && client == popup->client)
+        popup->client = NULL;
 }
 
 void moveresize_startup(gboolean reconfig)
@@ -167,6 +169,7 @@ static void popup_coords(ObClient *c, const gchar *format, gint a, gint b)
 
         popup_position(popup, gravity, x, y);
     }
+    popup->client = c;
     popup_show(popup, text);
     g_free(text);
 }
@@ -312,6 +315,7 @@ void moveresize_end(gboolean cancel)
     ungrab_pointer();
 
     popup_hide(popup);
+    popup->client = NULL;
 
     if (!moving) {
 #ifdef SYNC
@@ -582,19 +586,19 @@ static void edge_warp_move_ptr(void)
     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();
     }
 
@@ -791,8 +795,13 @@ static void resize_with_keys(KeySym sym, guint state)
         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;