X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fmouse.c;h=9edda8ebf96aa05e7469ebe203feb6ac2f7cd2af;hb=66afa1dcebaf8f1562311d1293baf4094f9ac011;hp=522eba8cbf9c8ccb27b241ae330c8ad4ab6c4083;hpb=6042ba5e992739c5afdce742ee73ac1eed7fd499;p=chaz%2Fopenbox diff --git a/openbox/mouse.c b/openbox/mouse.c index 522eba8c..9edda8eb 100644 --- a/openbox/mouse.c +++ b/openbox/mouse.c @@ -179,7 +179,7 @@ void mouse_event(ObClient *client, XEvent *e) static Time ltime; static guint button = 0, state = 0, lbutton = 0; static Window lwindow = None; - static gint px, py; + static gint px, py, pwx = -1, pwy = -1; ObFrameContext context; gboolean click = FALSE; @@ -187,11 +187,14 @@ void mouse_event(ObClient *client, XEvent *e) switch (e->type) { case ButtonPress: - context = frame_context(client, e->xany.window); + context = frame_context(client, e->xbutton.window, + e->xbutton.x, e->xbutton.y); context = mouse_button_frame_context(context, e->xbutton.button); px = e->xbutton.x_root; py = e->xbutton.y_root; + if (pwx == -1) pwx = e->xbutton.x; + if (pwy == -1) pwy = e->xbutton.y; button = e->xbutton.button; state = e->xbutton.state; @@ -209,9 +212,12 @@ void mouse_event(ObClient *client, XEvent *e) break; case ButtonRelease: - context = frame_context(client, e->xany.window); + /* use where the press occured in the window */ + context = frame_context(client, e->xbutton.window, pwx, pwy); context = mouse_button_frame_context(context, e->xbutton.button); + pwx = pwy = -1; + if (e->xbutton.button == button) { /* clicks are only valid if its released over the window */ gint junk1, junk2; @@ -272,7 +278,7 @@ void mouse_event(ObClient *client, XEvent *e) case MotionNotify: if (button) { - context = frame_context(client, e->xany.window); + context = frame_context(client, e->xmotion.window, pwx, pwy); context = mouse_button_frame_context(context, button); if (ABS(e->xmotion.x_root - px) >=