]> Dogcows Code - chaz/openbox/blobdiff - src/Window.cc
sync with bb-cvs
[chaz/openbox] / src / Window.cc
index 835cbdecad764b3031696b084e0aa6c96424f346..1b86b285241795e16793f6649f598956abdeea27 100644 (file)
@@ -590,8 +590,8 @@ void BlackboxWindow::decorate(void) {
   }
 
   if (decorations & Decor_Border) {
-    frame.fborder_pixel = screen->getWindowStyle()->f_focus.pixel();
-    frame.uborder_pixel = screen->getWindowStyle()->f_unfocus.pixel();
+    frame.fborder_pixel = screen->getWindowStyle()->f_focus.color().pixel();
+    frame.uborder_pixel = screen->getWindowStyle()->f_unfocus.color().pixel();
   }
 
   if (decorations & Decor_Handle) {
@@ -2710,7 +2710,7 @@ void BlackboxWindow::reparentNotifyEvent(const XReparentEvent *re) {
 
 
 void BlackboxWindow::propertyNotifyEvent(const XPropertyEvent *pe) {
-  if (pe->state == PropertyDelete)
+  if (pe->state == PropertyDelete || ! validateClient())
     return;
 
 #if 0
@@ -3065,7 +3065,6 @@ void BlackboxWindow::doMove(int x_root, int y_root) {
   assert(flags.moving);
   assert(blackbox->getChangingWindow() == this);
 
-  bool warp = False;
   int dx = x_root - frame.grab_x, dy = y_root - frame.grab_y;
   dx -= frame.border_w;
   dy -= frame.border_w;
@@ -3074,7 +3073,7 @@ void BlackboxWindow::doMove(int x_root, int y_root) {
 
   if (screen->doOpaqueMove()) {
     if (screen->doWorkspaceWarping())
-      warp = doWorkspaceWarping(x_root, y_root, dx, dy);
+      doWorkspaceWarping(x_root, y_root, dx);
 
     configure(dx, dy, frame.rect.width(), frame.rect.height());
   } else {
@@ -3086,7 +3085,7 @@ void BlackboxWindow::doMove(int x_root, int y_root) {
                    frame.changing.height() - 1);
 
     if (screen->doWorkspaceWarping())
-      warp = doWorkspaceWarping(x_root, y_root, dx, dy);
+      doWorkspaceWarping(x_root, y_root, dx);
 
     frame.changing.setPos(dx, dy);
 
@@ -3102,8 +3101,7 @@ void BlackboxWindow::doMove(int x_root, int y_root) {
 }
 
 
-bool BlackboxWindow::doWorkspaceWarping(int x_root, int y_root,
-                                        int &dx, int dy) {
+void BlackboxWindow::doWorkspaceWarping(int x_root, int y_root, int &dx) {
   // workspace warping
   bool warp = False;
   unsigned int dest = screen->getCurrentWorkspaceID();
@@ -3120,7 +3118,7 @@ bool BlackboxWindow::doWorkspaceWarping(int x_root, int y_root,
     else dest = 0;
   }
   if (! warp)
-    return False;
+    return;
 
   bool focus = flags.focused; // had focus while moving?
 
@@ -3133,15 +3131,13 @@ bool BlackboxWindow::doWorkspaceWarping(int x_root, int y_root,
     dx -= screen->getRect().width() - 1;
   }
 
-  /*
-     We grab the X server here so that we dont end up magically grabbing
-     a different window dring the warp.
-  */
-
   if (! flags.stuck)
     screen->reassociateWindow(this, dest, False);
   screen->changeWorkspaceID(dest);
 
+  if (screen->doOpaqueMove())
+    XGrabServer(blackbox->getXDisplay());
+
   XUngrabPointer(blackbox->getXDisplay(), CurrentTime);
   XWarpPointer(blackbox->getXDisplay(), None, 
                screen->getRootWindow(), 0, 0, 0, 0,
@@ -3151,10 +3147,12 @@ bool BlackboxWindow::doWorkspaceWarping(int x_root, int y_root,
                GrabModeAsync, GrabModeAsync,
                None, blackbox->getMoveCursor(), CurrentTime);
 
+  if (screen->doOpaqueMove())
+    XUngrabServer(blackbox->getXDisplay());
+
   if (focus)
     setInputFocus();
 
-  return True;
 }
 
 
This page took 0.023889 seconds and 4 git commands to generate.