summaryrefslogtreecommitdiff
path: root/openbox/moveresize.c
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-08-12 19:57:04 +0000
committerDana Jansens <danakj@orodu.net>2003-08-12 19:57:04 +0000
commit35ed95fe18e9b8d7a79f79f4fd7466a2b46435e3 (patch)
treee6591143a46ae20426da8a035f1d12fa70d006d8 /openbox/moveresize.c
parent950b85b9880012ed45b81854b5b5865b1de08a87 (diff)
move the resistance plugin into the kernel. dont resist when move/resizing with the keyboard, only when doing it with the mouse.
Diffstat (limited to 'openbox/moveresize.c')
-rw-r--r--openbox/moveresize.c25
1 files changed, 14 insertions, 11 deletions
diff --git a/openbox/moveresize.c b/openbox/moveresize.c
index 564bf711..14abd5cd 100644
--- a/openbox/moveresize.c
+++ b/openbox/moveresize.c
@@ -6,6 +6,7 @@
#include "frame.h"
#include "dispatch.h"
#include "openbox.h"
+#include "resist.h"
#include "popup.h"
#include "config.h"
#include "render/render.h"
@@ -72,12 +73,8 @@ void moveresize_start(ObClient *c, int x, int y, guint b, guint32 cnr)
start_ch = c->area.height;
start_x = x;
start_y = y;
- if (corner == prop_atoms.net_wm_moveresize_move_keyboard ||
- corner == prop_atoms.net_wm_moveresize_size_keyboard)
- button = 0; /* mouse can't end it without being pressed first */
- else
- button = b;
corner = cnr;
+ button = b;
if (corner == prop_atoms.net_wm_moveresize_move ||
corner == prop_atoms.net_wm_moveresize_move_keyboard) {
@@ -145,10 +142,13 @@ void moveresize_end(gboolean cancel)
moveresize_client = NULL;
}
-static void do_move()
+static void do_move(gboolean resist)
{
Rect *a;
+ if (resist)
+ resist_move(moveresize_client, &cur_x, &cur_y);
+
dispatch_move(moveresize_client, &cur_x, &cur_y);
/* get where the client should be */
@@ -164,7 +164,7 @@ static void do_move()
moveresize_client->frame->area.y - a->y);
}
-static void do_resize()
+static void do_resize(gboolean resist)
{
/* dispatch_resize needs the frame size */
cur_x += moveresize_client->frame->size.left +
@@ -172,6 +172,9 @@ static void do_resize()
cur_y += moveresize_client->frame->size.top +
moveresize_client->frame->size.bottom;
+ if (resist)
+ resist_size(moveresize_client, &cur_x, &cur_y, lockcorner);
+
dispatch_resize(moveresize_client, &cur_x, &cur_y, lockcorner);
cur_x -= moveresize_client->frame->size.left +
@@ -207,7 +210,7 @@ void moveresize_event(XEvent *e)
if (moving) {
cur_x = start_cx + e->xmotion.x_root - start_x;
cur_y = start_cy + e->xmotion.y_root - start_y;
- do_move();
+ do_move(TRUE);
} else {
if (corner == prop_atoms.net_wm_moveresize_size_topleft) {
cur_x = start_cw - (e->xmotion.x_root - start_x);
@@ -250,7 +253,7 @@ void moveresize_event(XEvent *e)
} else
g_assert_not_reached();
- do_resize();
+ do_resize(TRUE);
}
} else if (e->type == KeyPress) {
if (e->xkey.keycode == ob_keycode(OB_KEY_ESCAPE))
@@ -269,7 +272,7 @@ void moveresize_event(XEvent *e)
cur_y -= MAX(4, moveresize_client->size_inc.height);
else
return;
- do_resize();
+ do_resize(FALSE);
} else if (corner == prop_atoms.net_wm_moveresize_move_keyboard) {
if (e->xkey.keycode == ob_keycode(OB_KEY_RIGHT))
cur_x += 4;
@@ -281,7 +284,7 @@ void moveresize_event(XEvent *e)
cur_y -= 4;
else
return;
- do_move();
+ do_move(FALSE);
}
}
}