]> Dogcows Code - chaz/openbox/commitdiff
moved the 'moving window' logic into separate functions "startMove" "doMove" and...
authorDana Jansens <danakj@orodu.net>
Sun, 28 Apr 2002 11:26:55 +0000 (11:26 +0000)
committerDana Jansens <danakj@orodu.net>
Sun, 28 Apr 2002 11:26:55 +0000 (11:26 +0000)
src/Window.cc
src/Window.h

index 115b8c0f111939b20ef035ba689e352d2807360d..51e2b41b2be51407796714480b4085af7b0654ab 100644 (file)
@@ -2483,8 +2483,6 @@ void OpenboxWindow::buttonPressEvent(XButtonEvent *be) {
   // alt + left/right click begins interactively moving/resizing the window
   // when the mouse is moved
   if (be->state == Mod1Mask && (be->button == 1 || be->button == 3)) {
-    frame.grab_x = be->x_root - frame.x - frame.border_w;
-    frame.grab_y = be->y_root - frame.y - frame.border_w;
     if (be->button == 3) {
       if (screen->getWindowZones() == 4 &&
           be->y < (signed) frame.height / 2) {
@@ -2699,21 +2697,7 @@ void OpenboxWindow::buttonReleaseEvent(XButtonEvent *re) {
   // when the window is being interactively moved, a button release stops the
   // move where it is
   if (flags.moving) {
-    flags.moving = False;
-
-    openbox.maskWindowEvents(0, (OpenboxWindow *) 0);
-    if (!screen->opaqueMove()) {
-      XDrawRectangle(display, screen->getRootWindow(), screen->getOpGC(),
-                     frame.move_x, frame.move_y, frame.resize_w - 1,
-                     frame.resize_h - 1);
-
-      configure(frame.move_x, frame.move_y, frame.width, frame.height);
-      openbox.ungrab();
-    } else {
-      configure(frame.x, frame.y, frame.width, frame.height);
-    }
-    screen->hideGeometry();
-    XUngrabPointer(display, CurrentTime);
+    endMove();
   // when the window is being interactively resized, a button release stops the
   // resizing
   } else if (flags.resizing) {
@@ -2745,101 +2729,137 @@ void OpenboxWindow::buttonReleaseEvent(XButtonEvent *re) {
 }
 
 
-void OpenboxWindow::motionNotifyEvent(XMotionEvent *me) {
-  if (!flags.resizing && (me->state & Button1Mask) && functions.move &&
-      (frame.title == me->window || frame.label == me->window ||
-       frame.handle == me->window || frame.window == me->window)) {
-    if (! flags.moving) {
-      XGrabPointer(display, me->window, False, Button1MotionMask |
-                   ButtonReleaseMask, GrabModeAsync, GrabModeAsync,
-                   None, openbox.getMoveCursor(), CurrentTime);
+void OpenboxWindow::startMove(int x, int y) {
+  ASSERT(!flags.moving);
 
-      if (windowmenu && windowmenu->isVisible())
-        windowmenu->hide();
+  XGrabPointer(display, frame.window, False, Button1MotionMask |
+               ButtonReleaseMask, GrabModeAsync, GrabModeAsync,
+               None, openbox.getMoveCursor(), CurrentTime);
 
-      flags.moving = True;
+  if (windowmenu && windowmenu->isVisible())
+    windowmenu->hide();
 
-      openbox.maskWindowEvents(client.window, this);
+  flags.moving = True;
 
-      if (! screen->opaqueMove()) {
-        openbox.grab();
+  openbox.maskWindowEvents(client.window, this);
 
-        frame.move_x = frame.x;
-       frame.move_y = frame.y;
-        frame.resize_w = frame.width + (frame.border_w * 2);
-        frame.resize_h = ((flags.shaded) ? frame.title_h : frame.height) +
-          (frame.border_w * 2);
+  if (! screen->opaqueMove()) {
+    openbox.grab();
 
-       screen->showPosition(frame.x, frame.y);
+    frame.move_x = frame.x;
+    frame.move_y = frame.y;
+    frame.resize_w = frame.width + (frame.border_w * 2);
+    frame.resize_h = ((flags.shaded) ? frame.title_h : frame.height) +
+      (frame.border_w * 2);
 
-       XDrawRectangle(display, screen->getRootWindow(), screen->getOpGC(),
-                      frame.move_x, frame.move_y,
-                      frame.resize_w - 1, frame.resize_h - 1);
-      }
-    } else {
-      int dx = me->x_root - frame.grab_x, dy = me->y_root - frame.grab_y;
-
-      dx -= frame.border_w;
-      dy -= frame.border_w;
-
-      int snap_distance = screen->edgeSnapThreshold();
-      // width/height of the snapping window
-      unsigned int snap_w = frame.width + (frame.border_w * 2);
-      unsigned int snap_h = area().h() + (frame.border_w * 2);
-      if (snap_distance) {
-        int drx = screen->size().w() - (dx + snap_w);
-
-        if (dx < drx && (dx > 0 && dx < snap_distance) ||
-                        (dx < 0 && dx > -snap_distance) )
-          dx = 0;
-        else if ( (drx > 0 && drx < snap_distance) ||
-                  (drx < 0 && drx > -snap_distance) )
-          dx = screen->size().w() - snap_w;
-
-        int dtty, dbby, dty, dby;
-        switch (screen->getToolbar()->placement()) {
-        case Toolbar::TopLeft:
-        case Toolbar::TopCenter:
-        case Toolbar::TopRight:
-          dtty = screen->getToolbar()->getExposedHeight() +
-                frame.border_w;
-          dbby = screen->size().h();
-          break;
-
-        default:
-          dtty = 0;
-         dbby = screen->getToolbar()->area().y();
-          break;
-        }
+    screen->showPosition(frame.x, frame.y);
 
-        dty = dy - dtty;
-        dby = dbby - (dy + snap_h);
+    XDrawRectangle(display, screen->getRootWindow(), screen->getOpGC(),
+                   frame.move_x, frame.move_y,
+                   frame.resize_w - 1, frame.resize_h - 1);
+  }
+  frame.grab_x = x - frame.x - frame.border_w;
+  frame.grab_y = y - frame.y - frame.border_w;
+}
 
-        if ( (dy > 0 && dty < snap_distance) ||
-            (dy < 0 && dty > -snap_distance) )
-          dy = dtty;
-        else if ( (dby > 0 && dby < snap_distance) ||
-                 (dby < 0 && dby > -snap_distance) )
-          dy = dbby - snap_h;
-      }
 
-      if (screen->opaqueMove()) {
-       configure(dx, dy, frame.width, frame.height);
-      } else {
-       XDrawRectangle(display, screen->getRootWindow(), screen->getOpGC(),
-                      frame.move_x, frame.move_y, frame.resize_w - 1,
-                      frame.resize_h - 1);
+void OpenboxWindow::doMove(int x, int y) {
+  ASSERT(flags.moving);
 
-       frame.move_x = dx;
-       frame.move_y = dy;
+  int dx = x - frame.grab_x, dy = y - frame.grab_y;
 
-       XDrawRectangle(display, screen->getRootWindow(), screen->getOpGC(),
-                      frame.move_x, frame.move_y, frame.resize_w - 1,
-                      frame.resize_h - 1);
-      }
+  dx -= frame.border_w;
+  dy -= frame.border_w;
+
+  int snap_distance = screen->edgeSnapThreshold();
+  // width/height of the snapping window
+  unsigned int snap_w = frame.width + (frame.border_w * 2);
+  unsigned int snap_h = area().h() + (frame.border_w * 2);
+  if (snap_distance) {
+    int drx = screen->size().w() - (dx + snap_w);
 
-      screen->showPosition(dx, dy);
+    if (dx < drx && (dx > 0 && dx < snap_distance) ||
+        (dx < 0 && dx > -snap_distance) )
+      dx = 0;
+    else if ( (drx > 0 && drx < snap_distance) ||
+             (drx < 0 && drx > -snap_distance) )
+      dx = screen->size().w() - snap_w;
+
+    int dtty, dbby, dty, dby;
+    switch (screen->getToolbar()->placement()) {
+    case Toolbar::TopLeft:
+    case Toolbar::TopCenter:
+    case Toolbar::TopRight:
+      dtty = screen->getToolbar()->getExposedHeight() +
+        frame.border_w;
+      dbby = screen->size().h();
+      break;
+
+    default:
+      dtty = 0;
+      dbby = screen->getToolbar()->area().y();
+      break;
     }
+
+    dty = dy - dtty;
+    dby = dbby - (dy + snap_h);
+
+    if ( (dy > 0 && dty < snap_distance) ||
+        (dy < 0 && dty > -snap_distance) )
+      dy = dtty;
+    else if ( (dby > 0 && dby < snap_distance) ||
+             (dby < 0 && dby > -snap_distance) )
+      dy = dbby - snap_h;
+  }
+
+  if (screen->opaqueMove()) {
+    configure(dx, dy, frame.width, frame.height);
+  } else {
+    XDrawRectangle(display, screen->getRootWindow(), screen->getOpGC(),
+                   frame.move_x, frame.move_y, frame.resize_w - 1,
+                   frame.resize_h - 1);
+
+    frame.move_x = dx;
+    frame.move_y = dy;
+
+    XDrawRectangle(display, screen->getRootWindow(), screen->getOpGC(),
+                   frame.move_x, frame.move_y, frame.resize_w - 1,
+                   frame.resize_h - 1);
+  }
+
+  screen->showPosition(dx, dy);
+}
+
+
+void OpenboxWindow::endMove() {
+  ASSERT(flags.moving);
+
+  flags.moving = False;
+
+  openbox.maskWindowEvents(0, (OpenboxWindow *) 0);
+  if (!screen->opaqueMove()) {
+    XDrawRectangle(display, screen->getRootWindow(), screen->getOpGC(),
+                   frame.move_x, frame.move_y, frame.resize_w - 1,
+                   frame.resize_h - 1);
+
+    configure(frame.move_x, frame.move_y, frame.width, frame.height);
+    openbox.ungrab();
+  } else {
+    configure(frame.x, frame.y, frame.width, frame.height);
+  }
+  screen->hideGeometry();
+  XUngrabPointer(display, CurrentTime);
+}
+
+
+void OpenboxWindow::motionNotifyEvent(XMotionEvent *me) {
+  if (!flags.resizing && (me->state & Button1Mask) && functions.move &&
+      (frame.title == me->window || frame.label == me->window ||
+       frame.handle == me->window || frame.window == me->window)) {
+    if (!flags.moving)
+      startMove(me->x_root, me->y_root);
+    else
+      doMove(me->x_root, me->y_root);
   } else if (functions.resize &&
             (((me->state & Button1Mask) && (me->window == frame.right_grip ||
                                             me->window == frame.left_grip)) ||
index b916ca67a409cf8246196da58b49359126438cad..faaf9a0031e16e89849ed88abca2c016a4b16529 100644 (file)
@@ -203,93 +203,94 @@ private:
   } frame;
 
 protected:
-  Bool getState(void);
+  Bool getState();
   Window createToplevelWindow(int x, int y, unsigned int width,
                              unsigned int height, unsigned int borderwidth);
   Window createChildWindow(Window parent, Cursor = None);
 
-  void getWMName(void);
-  void getWMIconName(void);
-  void getWMNormalHints(void);
-  void getWMProtocols(void);
-  void getWMHints(void);
-  void getMWMHints(void);
-  void getOpenboxHints(void);
-  void setNetWMAttributes(void);
-  void associateClientWindow(void);
-  void decorate(void);
-  void decorateLabel(void);
+  void getWMName();
+  void getWMIconName();
+  void getWMNormalHints();
+  void getWMProtocols();
+  void getWMHints();
+  void getMWMHints();
+  void getOpenboxHints();
+  void setNetWMAttributes();
+  void associateClientWindow();
+  void decorate();
+  void decorateLabel();
   void positionButtons(Bool redecorate_label = False);
-  void positionWindows(void);
-  void createCloseButton(void);
-  void createIconifyButton(void);
-  void createMaximizeButton(void);
-  void redrawLabel(void);
-  void redrawAllButtons(void);
+  void positionWindows();
+  void createCloseButton();
+  void createIconifyButton();
+  void createMaximizeButton();
+  void redrawLabel();
+  void redrawAllButtons();
   void redrawCloseButton(Bool);
   void redrawIconifyButton(Bool);
   void redrawMaximizeButton(Bool);
-  void restoreGravity(void);
-  void setGravityOffsets(void);
+  void restoreGravity();
+  void setGravityOffsets();
   void setState(unsigned long);
-  void upsize(void);
-  void downsize(void);
+  void upsize();
+  void downsize();
   void right_fixsize(int *gx = 0, int *gy = 0);
   void left_fixsize(int *gx = 0, int *gy = 0);
+  void doMove(int x, int y);
 
 
 public:
   OpenboxWindow(Openbox &b, Window w, BScreen *s = (BScreen *) 0);
-  virtual ~OpenboxWindow(void);
-
-  inline Bool isTransient(void) const { return flags.transient; }
-  inline Bool isFocused(void) const { return flags.focused; }
-  inline Bool isVisible(void) const { return flags.visible; }
-  inline Bool isIconic(void) const { return flags.iconic; }
-  inline Bool isShaded(void) const { return flags.shaded; }
-  inline Bool isMaximized(void) const { return flags.maximized; }
-  inline Bool isMaximizedFull(void) const { return flags.maximized == 1; }
-  inline Bool isStuck(void) const { return flags.stuck; }
-  inline Bool isIconifiable(void) const { return functions.iconify; }
-  inline Bool isMaximizable(void) const { return functions.maximize; }
-  inline Bool isResizable(void) const { return functions.resize; }
-  inline Bool isClosable(void) const { return functions.close; }
-
-  inline Bool hasTitlebar(void) const { return decorations.titlebar; }
-  inline Bool hasTransient(void) const
+  virtual ~OpenboxWindow();
+
+  inline Bool isTransient() const { return flags.transient; }
+  inline Bool isFocused() const { return flags.focused; }
+  inline Bool isVisible() const { return flags.visible; }
+  inline Bool isIconic() const { return flags.iconic; }
+  inline Bool isShaded() const { return flags.shaded; }
+  inline Bool isMaximized() const { return flags.maximized; }
+  inline Bool isMaximizedFull() const { return flags.maximized == 1; }
+  inline Bool isStuck() const { return flags.stuck; }
+  inline Bool isIconifiable() const { return functions.iconify; }
+  inline Bool isMaximizable() const { return functions.maximize; }
+  inline Bool isResizable() const { return functions.resize; }
+  inline Bool isClosable() const { return functions.close; }
+
+  inline Bool hasTitlebar() const { return decorations.titlebar; }
+  inline Bool hasTransient() const
   { return ((client.transient) ? True : False); }
 
-  inline OpenboxWindow *getTransient(void) { return client.transient; }
-  inline OpenboxWindow *getTransientFor(void) { return client.transient_for; }
+  inline OpenboxWindow *getTransient() { return client.transient; }
+  inline OpenboxWindow *getTransientFor() { return client.transient_for; }
 
-  inline BScreen *getScreen(void) { return screen; }
+  inline BScreen *getScreen() { return screen; }
 
-  inline const Window &getFrameWindow(void) const { return frame.window; }
-  inline const Window &getClientWindow(void) const { return client.window; }
+  inline const Window &getFrameWindow() const { return frame.window; }
+  inline const Window &getClientWindow() const { return client.window; }
 
-  inline Windowmenu * getWindowmenu(void) { return windowmenu; }
+  inline Windowmenu * getWindowmenu() { return windowmenu; }
 
-  inline char **getTitle(void) { return &client.title; }
-  inline char **getIconTitle(void) { return &client.icon_title; }
-  //inline const int &getXFrame(void) const { return frame.x; }
-  //inline const int &getYFrame(void) const { return frame.y; }
-  //inline const int &getXClient(void) const { return client.x; }
-  //inline const int &getYClient(void) const { return client.y; }
-  inline const int &getWorkspaceNumber(void) const { return workspace_number; }
-  inline const int &getWindowNumber(void) const { return window_number; }
+  inline char **getTitle() { return &client.title; }
+  inline char **getIconTitle() { return &client.icon_title; }
+  //inline const int &getXFrame() const { return frame.x; }
+  //inline const int &getYFrame() const { return frame.y; }
+  //inline const int &getXClient() const { return client.x; }
+  //inline const int &getYClient() const { return client.y; }
+  inline const int &getWorkspaceNumber() const { return workspace_number; }
+  inline const int &getWindowNumber() const { return window_number; }
 
-  //inline const unsigned int &getWidth(void) const { return frame.width; }
-  //inline const unsigned int &getHeight(void) const {
+  //inline const unsigned int &getWidth() const { return frame.width; }
+  //inline const unsigned int &getHeight() const {
   //  if (!flags.shaded)
   //    return frame.height;
   //  else
   //    return frame.title_h;
   //}
-  //inline const unsigned int &getClientHeight(void) const
+  //inline const unsigned int &getClientHeight() const
   //{ return client.height; }
-  //inline const unsigned int &getClientWidth(void) const
+  //inline const unsigned int &getClientWidth() const
   //{ return client.width; }
-  inline const unsigned int &getTitleHeight(void) const
+  inline const unsigned int &getTitleHeight() const
   { return frame.title_h; }
 
   //inline const Point origin() const {
@@ -314,26 +315,29 @@ public:
   
   inline void setWindowNumber(int n) { window_number = n; }
   
-  Bool validateClient(void);
-  Bool setInputFocus(void);
+  Bool validateClient();
+  Bool setInputFocus();
 
   void setFocusFlag(Bool);
-  void iconify(void);
+  void iconify();
   void deiconify(Bool reassoc = True, Bool raise = True);
-  void close(void);
-  void withdraw(void);
+  void close();
+  void withdraw();
   void maximize(unsigned int button);
-  void shade(void);
-  void stick(void);
-  void unstick(void);
-  void reconfigure(void);
+  void shade();
+  void stick();
+  void unstick();
+  void reconfigure();
   void installColormap(Bool);
-  void restore(void);
+  void restore();
   void configure(int dx, int dy, unsigned int dw, unsigned int dh);
   void setWorkspace(int n);
   void changeOpenboxHints(OpenboxHints *);
-  void restoreAttributes(void);
+  void restoreAttributes();
 
+  void startMove(int x, int y);
+  void endMove();
+  
   void buttonPressEvent(XButtonEvent *);
   void buttonReleaseEvent(XButtonEvent *);
   void motionNotifyEvent(XMotionEvent *);
@@ -349,7 +353,7 @@ public:
   void shapeEvent(XShapeEvent *);
 #endif // SHAPE
 
-  virtual void timeout(void);
+  virtual void timeout();
 };
 
 
This page took 0.041007 seconds and 4 git commands to generate.