]> Dogcows Code - chaz/openbox/blobdiff - src/client.cc
popups for moving and resizing
[chaz/openbox] / src / client.cc
index e55f681f58a7edaba152905dd4f23d8908f3fe30..8e00198a117dfb397bdf576a7195bd92e8d77489 100644 (file)
@@ -66,12 +66,14 @@ Client::Client(int screen, Window window)
 
   updateProtocols();
 
-  // got the type, the mwmhints, and the protocols, so we're ready to set up
+  getGravity();        // get the attribute gravity
+  updateNormalHints(); // this may override the attribute gravity
+
+  // got the type, the mwmhints, the protocols, and the normal hints (min/max
+  // sizes), so we're ready to set up
   // the decorations/functions
   setupDecorAndFunctions();
   
-  getGravity();        // get the attribute gravity
-  updateNormalHints(); // this may override the attribute gravity
   // also get the initial_state and set _iconic if we aren't "starting"
   // when we're "starting" that means we should use whatever state was already
   // on the window over the initial map state, because it was already mapped
@@ -307,6 +309,10 @@ void Client::setupDecorAndFunctions()
   if (_disabled_decorations & Decor_Close)
     _decorations &= ~Decor_Close;
 
+  // You can't shade without a titlebar
+  if (!(_decorations & Decor_Titlebar))
+    _functions &= ~Func_Shade;
+  
   changeAllowedActions();
 
   if (frame) {
@@ -1140,15 +1146,23 @@ void Client::internal_move(int x, int y)
     event.xconfigure.display = **otk::display;
     event.xconfigure.event = _window;
     event.xconfigure.window = _window;
-    event.xconfigure.x = x;
-    event.xconfigure.y = y;
+    
+    // root window coords with border in mind
+    event.xconfigure.x = x - _border_width + frame->size().left;
+    event.xconfigure.y = y - _border_width + frame->size().top;
+    
     event.xconfigure.width = _area.width();
     event.xconfigure.height = _area.height();
     event.xconfigure.border_width = _border_width;
-    event.xconfigure.above = frame->window();
+    event.xconfigure.above = frame->plate();
     event.xconfigure.override_redirect = False;
     XSendEvent(event.xconfigure.display, event.xconfigure.window, False,
                StructureNotifyMask, &event);
+#if 0//def DEBUG
+    printf("Sent synthetic ConfigureNotify %d,%d %d,%d to 0x%lx\n",
+           event.xconfigure.x, event.xconfigure.y, event.xconfigure.width,
+           event.xconfigure.height, event.xconfigure.window);
+#endif
   }
 }
 
This page took 0.023026 seconds and 4 git commands to generate.