summaryrefslogtreecommitdiff
path: root/openbox/moveresize.c
diff options
context:
space:
mode:
authorMikael Magnusson <mikachu@comhem.se>2007-08-03 13:17:05 +0200
committerMikael Magnusson <mikachu@comhem.se>2007-08-03 13:17:05 +0200
commit074bd96696084ced565c4d1b67884a6381cc8d0e (patch)
tree1b1d589e2fff8f9eea44c3d8c0cb4773c31d3509 /openbox/moveresize.c
parentdacc9dac7a8232180fb824fe2eea7d026def99c9 (diff)
Change resizing terminals to work for top and left edges too, the code is a little ugly.
Diffstat (limited to 'openbox/moveresize.c')
-rw-r--r--openbox/moveresize.c25
1 files changed, 16 insertions, 9 deletions
diff --git a/openbox/moveresize.c b/openbox/moveresize.c
index dd0605c6..55a42c7f 100644
--- a/openbox/moveresize.c
+++ b/openbox/moveresize.c
@@ -120,6 +120,8 @@ void moveresize_start(ObClient *c, gint x, gint y, guint b, guint32 cnr)
ObCursor cur;
gboolean mv = (cnr == prop_atoms.net_wm_moveresize_move ||
cnr == prop_atoms.net_wm_moveresize_move_keyboard);
+ gint up = 1;
+ gint left = 1;
if (moveresize_in_progress || !c->frame->visible ||
!(mv ?
@@ -127,23 +129,28 @@ void moveresize_start(ObClient *c, gint x, gint y, guint b, guint32 cnr)
(c->functions & OB_CLIENT_FUNC_RESIZE)))
return;
- if (cnr == prop_atoms.net_wm_moveresize_size_topleft)
+ if (cnr == prop_atoms.net_wm_moveresize_size_topleft) {
cur = OB_CURSOR_NORTHWEST;
- else if (cnr == prop_atoms.net_wm_moveresize_size_top)
+ up = left = -1;
+ } else if (cnr == prop_atoms.net_wm_moveresize_size_top) {
cur = OB_CURSOR_NORTH;
- else if (cnr == prop_atoms.net_wm_moveresize_size_topright)
+ up = -1;
+ } else if (cnr == prop_atoms.net_wm_moveresize_size_topright) {
cur = OB_CURSOR_NORTHEAST;
- else if (cnr == prop_atoms.net_wm_moveresize_size_right)
+ up = -1;
+ } else if (cnr == prop_atoms.net_wm_moveresize_size_right)
cur = OB_CURSOR_EAST;
else if (cnr == prop_atoms.net_wm_moveresize_size_bottomright)
cur = OB_CURSOR_SOUTHEAST;
else if (cnr == prop_atoms.net_wm_moveresize_size_bottom)
cur = OB_CURSOR_SOUTH;
- else if (cnr == prop_atoms.net_wm_moveresize_size_bottomleft)
+ else if (cnr == prop_atoms.net_wm_moveresize_size_bottomleft) {
cur = OB_CURSOR_SOUTHWEST;
- else if (cnr == prop_atoms.net_wm_moveresize_size_left)
+ left = -1;
+ } else if (cnr == prop_atoms.net_wm_moveresize_size_left) {
cur = OB_CURSOR_WEST;
- else if (cnr == prop_atoms.net_wm_moveresize_size_keyboard)
+ left = -1;
+ } else if (cnr == prop_atoms.net_wm_moveresize_size_keyboard)
cur = OB_CURSOR_SOUTHEAST;
else if (cnr == prop_atoms.net_wm_moveresize_move)
cur = OB_CURSOR_MOVE;
@@ -172,8 +179,8 @@ void moveresize_start(ObClient *c, gint x, gint y, guint b, guint32 cnr)
friendly. you essentially start the resize in the middle of the
increment instead of at 0, so you have to move half an increment
either way instead of a full increment one and 1 px the other. */
- start_x = x - (mv ? 0 : c->size_inc.width / 2);
- start_y = y - (mv ? 0 : c->size_inc.height / 2);
+ start_x = x - (mv ? 0 : left * c->size_inc.width / 2);
+ start_y = y - (mv ? 0 : up * c->size_inc.height / 2);
corner = cnr;
button = b;
key_resize_edge = -1;