X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fmoveresize.c;h=b0b1f2a106daabeda8afb1a38aa3947084a8cc42;hb=378adaa94f0fac07dc65f0531e950c7ec8944cdf;hp=eba2106692f729b4ed3db445c0a80827dd2c48d7;hpb=10df03b957576d8feef365490345756c5af8a624;p=chaz%2Fopenbox diff --git a/openbox/moveresize.c b/openbox/moveresize.c index eba21066..b0b1f2a1 100644 --- a/openbox/moveresize.c +++ b/openbox/moveresize.c @@ -159,6 +159,8 @@ void moveresize_start(ObClient *c, gint x, gint y, guint b, guint32 cnr) (c->functions & OB_CLIENT_FUNC_RESIZE))) return; + frame_end_iconify_animation(c->frame); + moveresize_client = c; start_cx = c->area.x; start_cy = c->area.y; @@ -395,8 +397,10 @@ static void calc_resize(gboolean resist) moveresize_client->frame->size.bottom; } -void moveresize_event(XEvent *e) +gboolean moveresize_event(XEvent *e) { + gboolean used = FALSE; + g_assert(moveresize_in_progress); if (e->type == ButtonPress) { @@ -405,9 +409,11 @@ void moveresize_event(XEvent *e) start_y = e->xbutton.y_root; button = e->xbutton.button; /* this will end it now */ } + used = e->xbutton.button == button; } else if (e->type == ButtonRelease) { if (!button || e->xbutton.button == button) { moveresize_end(FALSE); + used = TRUE; } } else if (e->type == MotionNotify) { if (moving) { @@ -459,12 +465,19 @@ void moveresize_event(XEvent *e) calc_resize(TRUE); do_resize(); } + used = TRUE; } else if (e->type == KeyPress) { - if (e->xkey.keycode == ob_keycode(OB_KEY_ESCAPE)) + if (e->xkey.keycode == ob_keycode(OB_KEY_ESCAPE)) { moveresize_end(TRUE); - else if (e->xkey.keycode == ob_keycode(OB_KEY_RETURN)) + used = TRUE; + } else if (e->xkey.keycode == ob_keycode(OB_KEY_RETURN)) { moveresize_end(FALSE); - else { + used = TRUE; + } else if (e->xkey.keycode == ob_keycode(OB_KEY_RIGHT) || + e->xkey.keycode == ob_keycode(OB_KEY_LEFT) || + e->xkey.keycode == ob_keycode(OB_KEY_DOWN) || + e->xkey.keycode == ob_keycode(OB_KEY_UP)) + { if (corner == prop_atoms.net_wm_moveresize_size_keyboard) { gint dx = 0, dy = 0, ox = cur_x, oy = cur_y; @@ -474,10 +487,8 @@ void moveresize_event(XEvent *e) dx = -MAX(4, moveresize_client->size_inc.width); else if (e->xkey.keycode == ob_keycode(OB_KEY_DOWN)) dy = MAX(4, moveresize_client->size_inc.height); - else if (e->xkey.keycode == ob_keycode(OB_KEY_UP)) + else /* if (e->xkey.keycode == ob_keycode(OB_KEY_UP)) */ dy = -MAX(4, moveresize_client->size_inc.height); - else - return; cur_x += dx; cur_y += dy; @@ -497,6 +508,8 @@ void moveresize_event(XEvent *e) actually is */ start_x += dx - (cur_x - ox); start_y += dy - (cur_y - oy); + + used = TRUE; } else if (corner == prop_atoms.net_wm_moveresize_move_keyboard) { gint dx = 0, dy = 0, ox = cur_x, oy = cur_y; gint opx, px, opy, py; @@ -507,10 +520,8 @@ void moveresize_event(XEvent *e) dx = -4; else if (e->xkey.keycode == ob_keycode(OB_KEY_DOWN)) dy = 4; - else if (e->xkey.keycode == ob_keycode(OB_KEY_UP)) + else /* if (e->xkey.keycode == ob_keycode(OB_KEY_UP)) */ dy = -4; - else - return; cur_x += dx; cur_y += dy; @@ -532,6 +543,8 @@ void moveresize_event(XEvent *e) actually is */ start_x += (px - opx) - (cur_x - ox); start_y += (py - opy) - (cur_y - oy); + + used = TRUE; } } } @@ -540,6 +553,8 @@ void moveresize_event(XEvent *e) { waiting_for_sync = FALSE; /* we got our sync... */ do_resize(); /* ...so try resize if there is more change pending */ + used = TRUE; } #endif + return used; }