]> Dogcows Code - chaz/openbox/commitdiff
add rc option for workspaceWarping
authorDana Jansens <danakj@orodu.net>
Tue, 23 Jul 2002 04:22:42 +0000 (04:22 +0000)
committerDana Jansens <danakj@orodu.net>
Tue, 23 Jul 2002 04:22:42 +0000 (04:22 +0000)
src/Screen.cc
src/Screen.hh
src/Window.cc

index 86d425d7be868c906705320edb3a61f365cb2982..6970fdf68111095befb48096e916cf5eadeafc67 100644 (file)
@@ -537,6 +537,13 @@ void BScreen::saveAllowScrollLock(bool a) {
 }
 
 
+void BScreen::saveWorkspaceWarping(bool w) {
+  resource.workspace_warping = w;
+  config->setValue(screenstr + "workspaceWarping",
+                   resource.workspace_warping);
+}
+
+
 void BScreen::save_rc(void) {
   saveSloppyFocus(resource.sloppy_focus);
   saveAutoRaise(resource.auto_raise);
@@ -564,6 +571,7 @@ void BScreen::save_rc(void) {
   savePlaceIgnoreShaded(resource.ignore_shaded);
   savePlaceIgnoreMaximized(resource.ignore_maximized);
   saveAllowScrollLock(resource.allow_scroll_lock);
+  saveWorkspaceWarping(resource.workspace_warping);
 
   toolbar->save_rc();
   slit->save_rc();
@@ -699,9 +707,13 @@ void BScreen::load_rc(void) {
                          resource.ignore_maximized))
     resource.ignore_maximized = true;
 
-  if (! config->getValue(screenstr + "disableBindingsWithScrollLock",
-                         resource.allow_scroll_lock))
-    resource.allow_scroll_lock = false;
+if (! config->getValue(screenstr + "disableBindingsWithScrollLock",
+                       resource.allow_scroll_lock))
+  resource.allow_scroll_lock = false;
+
+  if (! config->getValue(screenstr + "workspaceWarping",
+                         resource.workspace_warping))
+    resource.workspace_warping = false;
 }
 
 
index a36205539b110991f00695d77b56c8a75fab7e40..12cd960db07751490f7c4a07e8a96f538d3e32a9 100644 (file)
@@ -148,7 +148,8 @@ private:
     bool sloppy_focus, auto_raise, auto_edge_balance, ordered_dither,
       opaque_move, full_max, focus_new, focus_last, click_raise,
       allow_scroll_lock, hide_toolbar, window_to_window_snap,
-      window_corner_snap, aa_fonts, ignore_shaded, ignore_maximized;
+      window_corner_snap, aa_fonts, ignore_shaded, ignore_maximized,
+      workspace_warping;
     BColor border_color;
 
     unsigned int workspaces;
@@ -218,6 +219,8 @@ public:
   inline bool getWindowCornerSnap(void) const
     { return resource.window_corner_snap; }
   inline bool allowScrollLock(void) const { return resource.allow_scroll_lock; }
+  inline bool doWorkspaceWarping(void) const
+    { return resource.workspace_warping; }
 
   inline const GC &getOpGC(void) const { return opGC; }
 
@@ -290,6 +293,7 @@ public:
   void savePlaceIgnoreShaded(bool i);
   void savePlaceIgnoreMaximized(bool i);
   void saveAllowScrollLock(bool a);
+  void saveWorkspaceWarping(bool w);
   inline void iconUpdate(void) { iconmenu->update(); }
 
 #ifdef    HAVE_STRFTIME
index 8119a54c3cee949dc85c6c7e0129c1d3143dcbcf..b13002d6ae2a86a19d49e1d85602a6efdbf6098f 100644 (file)
@@ -2962,55 +2962,57 @@ void BlackboxWindow::doMove(int x_root, int y_root) {
   dx -= frame.border_w;
   dy -= frame.border_w;
 
-  // workspace warping
-  bool warp = False;
-  unsigned int dest = screen->getCurrentWorkspaceID();
-  if (x_root <= 0) {
-    warp = True;
+  if (screen->doWorkspaceWarping()) {
+    // workspace warping
+    bool warp = False;
+    unsigned int dest = screen->getCurrentWorkspaceID();
+    if (x_root <= 0) {
+      warp = True;
 
-    if (dest > 0) dest--;
-    else dest = screen->getNumberOfWorkspaces() - 1;
+      if (dest > 0) dest--;
+      else dest = screen->getNumberOfWorkspaces() - 1;
 
-  } else if (x_root >= screen->getRect().right()) {
-    warp = True;
+    } else if (x_root >= screen->getRect().right()) {
+      warp = True;
 
-    if (dest < screen->getNumberOfWorkspaces() - 1) dest++;
-    else dest = 0;
-  }
-  if (warp) {
-    endMove();
-    bool focus = flags.focused; // had focus while moving?
-    if (! flags.stuck)
-      screen->reassociateWindow(this, dest, False);
-    screen->changeWorkspaceID(dest);
-    if (focus)
-      setInputFocus();
-    /*
-       If the XWarpPointer is done after the configure, we can end up
-       grabbing another window, so made sure you do it first.
-    */
-    int dest_x;
-    if (x_root <= 0) {
-      dest_x = screen->getRect().right() - 1;
-      XWarpPointer(blackbox->getXDisplay(), None, 
-                   screen->getRootWindow(), 0, 0, 0, 0,
-                   dest_x, y_root);
+      if (dest < screen->getNumberOfWorkspaces() - 1) dest++;
+      else dest = 0;
+    }
+    if (warp) {
+      endMove();
+      bool focus = flags.focused; // had focus while moving?
+      if (! flags.stuck)
+        screen->reassociateWindow(this, dest, False);
+      screen->changeWorkspaceID(dest);
+      if (focus)
+        setInputFocus();
 
-      configure(dx + (screen->getRect().width() - 1), dy,
-                frame.rect.width(), frame.rect.height());
-    } else {
-      dest_x = 0;
-      XWarpPointer(blackbox->getXDisplay(), None, 
-                   screen->getRootWindow(), 0, 0, 0, 0,
-                   dest_x, y_root);
+      /*
+         If the XWarpPointer is done after the configure, we can end up
+         grabbing another window, so made sure you do it first.
+         */
+      int dest_x;
+      if (x_root <= 0) {
+        dest_x = screen->getRect().right() - 1;
+        XWarpPointer(blackbox->getXDisplay(), None, 
+                     screen->getRootWindow(), 0, 0, 0, 0,
+                     dest_x, y_root);
+
+        configure(dx + (screen->getRect().width() - 1), dy,
+                  frame.rect.width(), frame.rect.height());
+      } else {
+        dest_x = 0;
+        XWarpPointer(blackbox->getXDisplay(), None, 
+                     screen->getRootWindow(), 0, 0, 0, 0,
+                     dest_x, y_root);
 
-      configure(dx - (screen->getRect().width() - 1), dy,
-                frame.rect.width(), frame.rect.height());
-    }
+        configure(dx - (screen->getRect().width() - 1), dy,
+                  frame.rect.width(), frame.rect.height());
+      }
 
-    beginMove(dest_x, y_root);
-    return;
+      beginMove(dest_x, y_root);
+      return;
+    }
   }
 
   const int snap_distance = screen->getEdgeSnapThreshold();
This page took 0.032027 seconds and 4 git commands to generate.