diff options
author | fluxgen <fluxgen> | 2002-04-12 14:54:57 (GMT) |
---|---|---|
committer | fluxgen <fluxgen> | 2002-04-12 14:54:57 (GMT) |
commit | af9a5aa8a490ae3ee7ecfc98666dc869f8b72537 (patch) | |
tree | cb48bdcde337d00b80d2eb531408ae6422ea0717 | |
parent | 6075c934837f1f50770507e1e0b8b060d2935030 (diff) | |
download | fluxbox-af9a5aa8a490ae3ee7ecfc98666dc869f8b72537.zip fluxbox-af9a5aa8a490ae3ee7ecfc98666dc869f8b72537.tar.bz2 |
added workspace warping
-rw-r--r-- | src/Window.cc | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/src/Window.cc b/src/Window.cc index 260fa7c..e53d461 100644 --- a/src/Window.cc +++ b/src/Window.cc | |||
@@ -22,7 +22,7 @@ | |||
22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
23 | // DEALINGS IN THE SOFTWARE. | 23 | // DEALINGS IN THE SOFTWARE. |
24 | 24 | ||
25 | // $Id: Window.cc,v 1.42 2002/04/09 23:17:11 fluxgen Exp $ | 25 | // $Id: Window.cc,v 1.43 2002/04/12 14:54:57 fluxgen Exp $ |
26 | 26 | ||
27 | #include "Window.hh" | 27 | #include "Window.hh" |
28 | 28 | ||
@@ -3337,11 +3337,35 @@ void FluxboxWindow::motionNotifyEvent(XMotionEvent *me) { | |||
3337 | XDrawRectangle(display, screen->getRootWindow(), screen->getOpGC(), | 3337 | XDrawRectangle(display, screen->getRootWindow(), screen->getOpGC(), |
3338 | frame.move_x, frame.move_y, frame.resize_w, | 3338 | frame.move_x, frame.move_y, frame.resize_w, |
3339 | frame.resize_h); | 3339 | frame.resize_h); |
3340 | } else | 3340 | } else { |
3341 | // Warp to next or previous workspace? | ||
3342 | if (screen->isWorkspaceWarping()) { | ||
3343 | int cur_id = screen->getCurrentWorkspaceID(); | ||
3344 | int new_id = cur_id; | ||
3345 | const int warpPad = screen->getEdgeSnapThreshold(); | ||
3346 | if (me->x_root >= int(screen->getWidth()) - warpPad && | ||
3347 | frame.x < int(me->x_root - frame.grab_x - screen->getBorderWidth())) { | ||
3348 | new_id = (cur_id + 1) % screen->getCount(); | ||
3349 | dx = -me->x_root; | ||
3350 | } else if (me->x_root <= warpPad && | ||
3351 | frame.x > int(me->x_root - frame.grab_x - screen->getBorderWidth())) { | ||
3352 | new_id = (cur_id - 1 + screen->getCount()) % screen->getCount(); | ||
3353 | dx = screen->getWidth() - me->x_root; | ||
3354 | } | ||
3355 | if (new_id != cur_id) { | ||
3356 | frame.x += dx; | ||
3357 | XWarpPointer(display, None, None, 0, 0, 0, 0, dx, 0); | ||
3358 | screen->reassociateWindow(this, new_id, True); | ||
3359 | screen->changeWorkspaceID(new_id); | ||
3360 | setInputFocus(); | ||
3361 | } | ||
3362 | } | ||
3363 | |||
3341 | configure(dx, dy, frame.width, frame.height); | 3364 | configure(dx, dy, frame.width, frame.height); |
3365 | } | ||
3342 | 3366 | ||
3343 | screen->showPosition(dx, dy); | 3367 | screen->showPosition(dx, dy); |
3344 | } | 3368 | } |
3345 | } else if (functions.resize && | 3369 | } else if (functions.resize && |
3346 | (((me->state & Button1Mask) && (me->window == frame.right_grip || | 3370 | (((me->state & Button1Mask) && (me->window == frame.right_grip || |
3347 | me->window == frame.left_grip)) || | 3371 | me->window == frame.left_grip)) || |