]> Dogcows Code - chaz/openbox/blobdiff - openbox/moveresize.c
gracefully handle grabs failing when doing interactive actions
[chaz/openbox] / openbox / moveresize.c
index ba10af4b3adb4cd2faa8a088d0b5fb9546a90c6f..9f0f41ba7e51c546aea225c22b97f93fab07761b 100644 (file)
@@ -1,4 +1,4 @@
-/* -*- indent-tabs-mode: t; tab-width: 4; c-basic-offset: 4; -*-
+/* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*-
 
    moveresize.c for the Openbox window manager
    Copyright (c) 2003        Ben Jansens
@@ -46,7 +46,7 @@ static ObCorner lockcorner;
 
 static ObPopup *popup = NULL;
 
-static void client_dest(gpointer client)
+static void client_dest(ObClient *client, gpointer data)
 {
     if (moveresize_client == client)
         moveresize_end(TRUE);    
@@ -57,7 +57,7 @@ void moveresize_startup(gboolean reconfig)
     popup = popup_new(FALSE);
 
     if (!reconfig)
-        client_add_destructor(client_dest);
+        client_add_destructor(client_dest, NULL);
 }
 
 void moveresize_shutdown(gboolean reconfig)
@@ -90,7 +90,13 @@ void moveresize_start(ObClient *c, int x, int y, guint b, guint32 cnr)
 {
     ObCursor cur;
 
-    if (moveresize_in_progress || !c->frame->visible)
+    moving = (cnr == prop_atoms.net_wm_moveresize_move ||
+              cnr == prop_atoms.net_wm_moveresize_move_keyboard);
+
+    if (moveresize_in_progress || !c->frame->visible ||
+        !(moving ?
+          (c->functions & OB_CLIENT_FUNC_MOVE) :
+          (c->functions & OB_CLIENT_FUNC_RESIZE)))
         return;
 
     moveresize_client = c;
@@ -116,15 +122,12 @@ void moveresize_start(ObClient *c, int x, int y, guint b, guint32 cnr)
                      c->area.width / 2, c->area.height / 2);
     */
 
-    if (corner == prop_atoms.net_wm_moveresize_move ||
-        corner == prop_atoms.net_wm_moveresize_move_keyboard) {
+    if (moving) {
         cur_x = start_cx;
         cur_y = start_cy;
-        moving = TRUE;
     } else {
         cur_x = start_cw;
         cur_y = start_ch;
-        moving = FALSE;
     }
 
     moveresize_in_progress = TRUE;
This page took 0.022095 seconds and 4 git commands to generate.