}
+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);
savePlaceIgnoreShaded(resource.ignore_shaded);
savePlaceIgnoreMaximized(resource.ignore_maximized);
saveAllowScrollLock(resource.allow_scroll_lock);
+ saveWorkspaceWarping(resource.workspace_warping);
toolbar->save_rc();
slit->save_rc();
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;
}
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;
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; }
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
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();