Enlightenment CVS committal Author : kwo Project : e16 Module : e
Dir : e16/e/src Modified Files: E.h buttons.c desktops.c dialog.c edge.c events.c ewins.c iconify.c ipc.c magwin.c menus.c moveresize.c pager.c Log Message: Fix incorrect tracking of pointer motion when dragging window (noted by Jon Foster). =================================================================== RCS file: /cvs/e/e16/e/src/E.h,v retrieving revision 1.597 retrieving revision 1.598 diff -u -3 -r1.597 -r1.598 --- E.h 22 Sep 2007 10:21:17 -0000 1.597 +++ E.h 21 Dec 2007 22:04:52 -0000 1.598 @@ -458,8 +458,9 @@ struct { Time time; - int x, y; - int px, py; + int cx, cy; /* Any detected pointer movement */ + int mx, my; /* Motion event */ + int px, py; /* Previous motion event */ Time last_btime; Window last_bpress; Window last_bpress2; =================================================================== RCS file: /cvs/e/e16/e/src/buttons.c,v retrieving revision 1.106 retrieving revision 1.107 diff -u -3 -r1.106 -r1.107 --- buttons.c 10 Sep 2007 20:26:53 -0000 1.106 +++ buttons.c 21 Dec 2007 22:04:54 -0000 1.107 @@ -421,8 +421,8 @@ GrabPointerSet(EoGetWin(b), ECSR_GRAB, 0); Mode.mode = MODE_BUTTONDRAG; Mode_buttons.move_pending = 1; - Mode_buttons.start_x = Mode.events.x; - Mode_buttons.start_y = Mode.events.y; + Mode_buttons.start_x = Mode.events.cx; + Mode_buttons.start_y = Mode.events.cy; } static void @@ -434,7 +434,7 @@ if (!Mode_buttons.move_pending) { - dsk = DesktopAt(Mode.events.x, Mode.events.y); + dsk = DesktopAt(Mode.events.mx, Mode.events.my); ButtonMoveToDesktop(b, dsk); dsk = EoGetDesk(b); ButtonMoveRelative(b, -EoGetX(dsk), -EoGetY(dsk)); @@ -558,15 +558,15 @@ if (Mode.mode != MODE_BUTTONDRAG) return; - dx = Mode.events.x - Mode.events.px; - dy = Mode.events.y - Mode.events.py; + dx = Mode.events.mx - Mode.events.px; + dy = Mode.events.my - Mode.events.py; if (Mode_buttons.move_pending) { int x, y; - x = Mode.events.x - Mode_buttons.start_x; - y = Mode.events.y - Mode_buttons.start_y; + x = Mode.events.mx - Mode_buttons.start_x; + y = Mode.events.my - Mode_buttons.start_y; if (x < 0) x = -x; if (y < 0) =================================================================== RCS file: /cvs/e/e16/e/src/desktops.c,v retrieving revision 1.272 retrieving revision 1.273 diff -u -3 -r1.272 -r1.273 --- desktops.c 18 Nov 2007 09:47:45 -0000 1.272 +++ desktops.c 21 Dec 2007 22:04:54 -0000 1.273 @@ -1747,8 +1747,8 @@ dsk = _DeskGet(desk); - desks.drag_x0 = Mode.events.x - EoGetX(dsk); - desks.drag_y0 = Mode.events.y - EoGetY(dsk); + desks.drag_x0 = Mode.events.cx - EoGetX(dsk); + desks.drag_y0 = Mode.events.cy - EoGetY(dsk); Mode.mode = MODE_DESKDRAG; } @@ -1764,8 +1764,8 @@ { int x, y; - x = Mode.events.x - desks.drag_x0; - y = Mode.events.y - desks.drag_y0; + x = Mode.events.mx - desks.drag_x0; + y = Mode.events.my - desks.drag_y0; switch (Conf.desks.dragdir) { @@ -1967,7 +1967,7 @@ case MotionNotify: /* Motion over desk buttons doesn't go here - We probably don't care much. */ - DesksSetCurrent(DesktopAt(Mode.events.x, Mode.events.y)); + DesksSetCurrent(DesktopAt(Mode.events.mx, Mode.events.my)); TooltipsSetPending(1, DeskGetAclass, dsk); break; =================================================================== RCS file: /cvs/e/e16/e/src/dialog.c,v retrieving revision 1.192 retrieving revision 1.193 diff -u -3 -r1.192 -r1.193 --- dialog.c 15 Dec 2007 17:10:47 -0000 1.192 +++ dialog.c 21 Dec 2007 22:04:54 -0000 1.193 @@ -2183,8 +2183,8 @@ break; if (ev->xmotion.window == WinGetXwin(di->item.slider.knob_win)) { - dx = Mode.events.x - Mode.events.px; - dy = Mode.events.y - Mode.events.py; + dx = Mode.events.mx - Mode.events.px; + dy = Mode.events.my - Mode.events.py; if (di->item.slider.horizontal) { di->item.slider.wanted_val += dx; =================================================================== RCS file: /cvs/e/e16/e/src/edge.c,v retrieving revision 1.36 retrieving revision 1.37 diff -u -3 -r1.36 -r1.37 --- edge.c 18 Nov 2007 09:47:46 -0000 1.36 +++ edge.c 21 Dec 2007 22:04:54 -0000 1.37 @@ -90,14 +90,14 @@ dx = 0; if (ah == 1) dy = 0; - Mode.events.px = Mode.events.x; - Mode.events.py = Mode.events.y; - Mode.events.x += dx; - Mode.events.y += dy; - EXWarpPointer(VRoot.xwin, Mode.events.x, Mode.events.y); + Mode.events.px = Mode.events.mx; + Mode.events.py = Mode.events.my; + Mode.events.mx += dx; + Mode.events.my += dy; + EXWarpPointer(VRoot.xwin, Mode.events.mx, Mode.events.my); DeskCurrentMoveAreaBy(dax, day); - Mode.events.px = Mode.events.x; - Mode.events.py = Mode.events.y; + Mode.events.px = Mode.events.mx; + Mode.events.py = Mode.events.my; } static void =================================================================== RCS file: /cvs/e/e16/e/src/events.c,v retrieving revision 1.143 retrieving revision 1.144 diff -u -3 -r1.143 -r1.144 --- events.c 2 Dec 2007 18:39:16 -0000 1.143 +++ events.c 21 Dec 2007 22:04:54 -0000 1.144 @@ -268,13 +268,13 @@ if (Mode.wm.window) { - XTranslateCoordinates(disp, rwin, VRoot.xwin, - rx, ry, &Mode.events.x, &Mode.events.y, &child); + XTranslateCoordinates(disp, rwin, VRoot.xwin, rx, ry, + &Mode.events.cx, &Mode.events.cy, &child); } else { - Mode.events.x = rx; - Mode.events.y = ry; + Mode.events.cx = rx; + Mode.events.cy = ry; } } @@ -321,9 +321,11 @@ case MotionNotify: Mode.events.time = ev->xmotion.time; - Mode.events.px = Mode.events.x; - Mode.events.py = Mode.events.y; + Mode.events.px = Mode.events.mx; + Mode.events.py = Mode.events.my; ModeGetXY(ev->xmotion.root, ev->xmotion.x_root, ev->xmotion.y_root); + Mode.events.mx = Mode.events.cx; + Mode.events.my = Mode.events.cy; Mode.events.on_screen = ev->xmotion.same_screen; break; @@ -890,7 +892,9 @@ ev->xbutton.subwindow, ev->xbutton.state, ev->xbutton.button); break; case MotionNotify: - Eprintf("%s sub=%#lx\n", buf, ev->xcrossing.subwindow); + Eprintf("%s sub=%#lx x,y=%d,%d rx,ry=%d,%d\n", buf, + ev->xmotion.subwindow, ev->xmotion.x, ev->xmotion.y, + ev->xmotion.x_root, ev->xmotion.y_root); break; case EnterNotify: case LeaveNotify: =================================================================== RCS file: /cvs/e/e16/e/src/ewins.c,v retrieving revision 1.209 retrieving revision 1.210 diff -u -3 -r1.209 -r1.210 --- ewins.c 4 Dec 2007 21:13:25 -0000 1.209 +++ ewins.c 21 Dec 2007 22:04:54 -0000 1.210 @@ -508,7 +508,7 @@ int i, num; Desk *dsk; - dsk = DesktopAt(Mode.events.x, Mode.events.y); + dsk = DesktopAt(Mode.events.cx, Mode.events.cy); EQueryPointer(EoGetWin(dsk), &px, &py, NULL, NULL); lst = EwinListGetForDesk(&num, dsk); @@ -862,8 +862,8 @@ DeskGoto(dsk); EQueryPointer(NULL, &rx, &ry, NULL, NULL); - Mode.events.x = rx; - Mode.events.y = ry; + Mode.events.cx = rx; + Mode.events.cy = ry; /* try to center the window on the mouse pointer */ newWinX = rx; @@ -923,11 +923,11 @@ DeskGoto(dsk); EQueryPointer(NULL, &rx, &ry, NULL, NULL); - Mode.events.x = rx; - Mode.events.y = ry; + Mode.events.cx = rx; + Mode.events.cy = ry; ewin->state.placed = 1; - x = Mode.events.x + 1; - y = Mode.events.y + 1; + x = Mode.events.cx + 1; + y = Mode.events.cy + 1; EwinMoveToDesktopAt(ewin, dsk, x, y); EwinMove(ewin, x, y); EwinShow(ewin); =================================================================== RCS file: /cvs/e/e16/e/src/iconify.c,v retrieving revision 1.225 retrieving revision 1.226 diff -u -3 -r1.225 -r1.226 --- iconify.c 7 Apr 2007 16:18:53 -0000 1.225 +++ iconify.c 21 Dec 2007 22:04:54 -0000 1.226 @@ -574,7 +574,7 @@ name = EwinGetIconName(ewin); if (name) - TooltipShow(tt, name, NULL, Mode.events.x, Mode.events.y); + TooltipShow(tt, name, NULL, Mode.events.cx, Mode.events.cy); break; case LeaveNotify: =================================================================== RCS file: /cvs/e/e16/e/src/ipc.c,v retrieving revision 1.304 retrieving revision 1.305 diff -u -3 -r1.304 -r1.305 --- ipc.c 28 Nov 2007 19:28:54 -0000 1.304 +++ ipc.c 21 Dec 2007 22:04:54 -0000 1.305 @@ -1360,10 +1360,10 @@ { int j; - ev.x = Mode.events.x; - ev.y = Mode.events.y; - ev.x_root = Mode.events.x; - ev.y_root = Mode.events.y; + ev.x = Mode.events.cx; + ev.y = Mode.events.cy; + ev.x_root = Mode.events.cx; + ev.y_root = Mode.events.cy; for (j = 0; j < (int)(sizeof(ks) / sizeof(struct _keyset)); j++) { if (strncmp(ks[j].ch, &(s[i]), strlen(ks[j].ch))) =================================================================== RCS file: /cvs/e/e16/e/src/magwin.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- magwin.c 19 May 2007 18:44:39 -0000 1.5 +++ magwin.c 21 Dec 2007 22:04:55 -0000 1.6 @@ -318,8 +318,8 @@ case MotionNotify: if (mw->grabbing) { - mw->cx = Mode.events.x; - mw->cy = Mode.events.y; + mw->cx = Mode.events.mx; + mw->cy = Mode.events.my; mw->update = 1; } else =================================================================== RCS file: /cvs/e/e16/e/src/menus.c,v retrieving revision 1.291 retrieving revision 1.292 diff -u -3 -r1.291 -r1.292 --- menus.c 19 Dec 2007 21:00:47 -0000 1.291 +++ menus.c 21 Dec 2007 22:04:55 -0000 1.292 @@ -1342,26 +1342,27 @@ int my_width, my_height, x_org, y_org, head_num = 0; head_num = - ScreenGetGeometry(Mode.events.x, Mode.events.y, &x_org, &y_org, + ScreenGetGeometry(Mode.events.mx, Mode.events.my, &x_org, &y_org, &my_width, &my_height); - if (Mode.events.x > ((x_org + my_width) - (menu_scroll_dist + 1))) + if (Mode.events.mx > ((x_org + my_width) - (menu_scroll_dist + 1))) { - xdist = -(menu_scroll_dist + (Mode.events.x - (x_org + my_width))); + xdist = + -(menu_scroll_dist + (Mode.events.mx - (x_org + my_width))); } - else if (Mode.events.x < (menu_scroll_dist + x_org)) + else if (Mode.events.mx < (menu_scroll_dist + x_org)) { - xdist = x_org + menu_scroll_dist - (Mode.events.x); + xdist = x_org + menu_scroll_dist - (Mode.events.mx); } - if (Mode.events.y > (VRoot.h - (menu_scroll_dist + 1))) + if (Mode.events.my > (VRoot.h - (menu_scroll_dist + 1))) { ydist = - -(menu_scroll_dist + (Mode.events.y - (y_org + my_height))); + -(menu_scroll_dist + (Mode.events.my - (y_org + my_height))); } - else if (Mode.events.y < (menu_scroll_dist + y_org)) + else if (Mode.events.my < (menu_scroll_dist + y_org)) { - ydist = y_org + menu_scroll_dist - (Mode.events.y); + ydist = y_org + menu_scroll_dist - (Mode.events.my); } /* That's a hack to avoid unwanted events: =================================================================== RCS file: /cvs/e/e16/e/src/moveresize.c,v retrieving revision 1.82 retrieving revision 1.83 diff -u -3 -r1.82 -r1.83 --- moveresize.c 5 Sep 2007 19:12:56 -0000 1.82 +++ moveresize.c 21 Dec 2007 22:04:55 -0000 1.83 @@ -95,8 +95,8 @@ Mode.mode = MODE_MOVE_PENDING; Mode.constrained = constrained; - Mode_mr.win_x = Mode.events.x - (EoGetX(ewin) + EoGetX(EoGetDesk(ewin))); - Mode_mr.win_y = Mode.events.y - (EoGetY(ewin) + EoGetY(EoGetDesk(ewin))); + Mode_mr.win_x = Mode.events.cx - (EoGetX(ewin) + EoGetX(EoGetDesk(ewin))); + Mode_mr.win_y = Mode.events.cy - (EoGetY(ewin) + EoGetY(EoGetDesk(ewin))); EwinRaise(ewin); gwins = ListWinGroupMembersForEwin(ewin, GROUP_ACTION_MOVE, nogroup @@ -159,7 +159,7 @@ } Mode.mode = MODE_NONE; - d2 = DesktopAt(Mode.events.x, Mode.events.y); + d2 = DesktopAt(Mode.events.mx, Mode.events.my); for (i = 0; i < num; i++) { @@ -253,8 +253,10 @@ if (Mode_mr.grab_server) EGrabServer(); - dx = Mode.events.x - Mode_mr.win_x - EoGetX(EoGetDesk(ewin)) - ewin->shape_x; - dy = Mode.events.y - Mode_mr.win_y - EoGetY(EoGetDesk(ewin)) - ewin->shape_y; + dx = + Mode.events.mx - Mode_mr.win_x - EoGetX(EoGetDesk(ewin)) - ewin->shape_x; + dy = + Mode.events.my - Mode_mr.win_y - EoGetY(EoGetDesk(ewin)) - ewin->shape_y; /* Redraw any windows that were in "move mode" */ lst = ListWinGroupMembersForEwin(ewin, GROUP_ACTION_MOVE, @@ -316,8 +318,8 @@ default: case MODE_RESIZE: Mode.mode = hv; - x = Mode.events.x - EoGetX(ewin); - y = Mode.events.y - EoGetY(ewin); + x = Mode.events.cx - EoGetX(ewin); + y = Mode.events.cy - EoGetY(ewin); w = EoGetW(ewin) >> 1; h = EoGetH(ewin) >> 1; ww = EoGetW(ewin) / 6; @@ -376,7 +378,7 @@ case MODE_RESIZE_H: Mode.mode = hv; - x = Mode.events.x - EoGetX(ewin); + x = Mode.events.cx - EoGetX(ewin); w = EoGetW(ewin) >> 1; if (x < w) Mode_mr.resize_detail = RD(1, 0); @@ -387,7 +389,7 @@ case MODE_RESIZE_V: Mode.mode = hv; - y = Mode.events.y - EoGetY(ewin); + y = Mode.events.cy - EoGetY(ewin); h = EoGetH(ewin) >> 1; if (y < h) Mode_mr.resize_detail = RD(0, 1); @@ -397,8 +399,8 @@ break; } - Mode_mr.start_x = Mode.events.x; - Mode_mr.start_y = Mode.events.y; + Mode_mr.start_x = Mode.events.cx; + Mode_mr.start_y = Mode.events.cy; Mode_mr.win_x = EoGetX(ewin); Mode_mr.win_y = EoGetY(ewin); Mode_mr.win_w = ewin->client.w; @@ -475,7 +477,7 @@ if (!ewin) return; - EdgeCheckMotion(Mode.events.x, Mode.events.y); + EdgeCheckMotion(Mode.events.mx, Mode.events.my); gwins = ListWinGroupMembersForEwin(ewin, GROUP_ACTION_MOVE, Mode_mr.nogroup || Mode.move.swap, &num); @@ -502,8 +504,8 @@ Mode.mode = MODE_MOVE; } - dx = Mode.events.x - Mode.events.px; - dy = Mode.events.y - Mode.events.py; + dx = Mode.events.mx - Mode.events.px; + dy = Mode.events.my - Mode.events.py; jumpx = 0; jumpy = 0; @@ -649,18 +651,17 @@ /* check for sufficient overlap and avoid flickering */ if (((ewin1->shape_x >= ewin2->shape_x && ewin1->shape_x <= ewin2->shape_x + - EoGetW(ewin2) / 2 && Mode.events.x <= Mode.events.px) || + EoGetW(ewin2) / 2 && Mode.events.mx <= + Mode.events.px) || (ewin1->shape_x <= ewin2->shape_x && ewin1->shape_x + EoGetW(ewin1) / 2 >= - ewin2->shape_x && - Mode.events.x >= Mode.events.px)) && - ((ewin1->shape_y >= ewin2->shape_y - && ewin1->shape_y <= - ewin2->shape_y + EoGetH(ewin2) / 2 - && Mode.events.y <= Mode.events.py) - || (EoGetY(ewin1) <= EoGetY(ewin2) - && ewin1->shape_y + EoGetH(ewin1) / 2 >= - ewin2->shape_y && Mode.events.y >= Mode.events.py))) + ewin2->shape_x && Mode.events.mx >= Mode.events.px)) && + ((ewin1->shape_y >= ewin2->shape_y && + ewin1->shape_y <= ewin2->shape_y + EoGetH(ewin2) / 2 && + Mode.events.my <= Mode.events.py) || + (EoGetY(ewin1) <= EoGetY(ewin2) && + ewin1->shape_y + EoGetH(ewin1) / 2 >= + ewin2->shape_y && Mode.events.my >= Mode.events.py))) { int tmp_swapcoord_x; int tmp_swapcoord_y; @@ -701,12 +702,12 @@ default: break; case 1: /* Left */ - w = Mode_mr.win_w - (Mode.events.x - Mode_mr.start_x); + w = Mode_mr.win_w - (Mode.events.mx - Mode_mr.start_x); ICCCM_SizeMatch(ewin, w, h, &w, &h); x = Mode_mr.win_x + (Mode_mr.win_w - w); break; case 2: /* Right */ - w = Mode_mr.win_w + (Mode.events.x - Mode_mr.start_x); + w = Mode_mr.win_w + (Mode.events.mx - Mode_mr.start_x); ICCCM_SizeMatch(ewin, w, h, &w, &h); break; } @@ -716,12 +717,12 @@ default: break; case 1: /* Top */ - h = Mode_mr.win_h - (Mode.events.y - Mode_mr.start_y); + h = Mode_mr.win_h - (Mode.events.my - Mode_mr.start_y); ICCCM_SizeMatch(ewin, w, h, &w, &h); y = Mode_mr.win_y + (Mode_mr.win_h - h); break; case 2: /* Bottom */ - h = Mode_mr.win_h + (Mode.events.y - Mode_mr.start_y); + h = Mode_mr.win_h + (Mode.events.my - Mode_mr.start_y); ICCCM_SizeMatch(ewin, w, h, &w, &h); break; } =================================================================== RCS file: /cvs/e/e16/e/src/pager.c,v retrieving revision 1.250 retrieving revision 1.251 diff -u -3 -r1.250 -r1.251 --- pager.c 28 Nov 2007 19:23:06 -0000 1.250 +++ pager.c 21 Dec 2007 22:04:55 -0000 1.251 @@ -1094,8 +1094,8 @@ if (tt) { if (ewin) - TooltipShow(tt, EwinGetIconName(ewin), NULL, Mode.events.x, - Mode.events.y); + TooltipShow(tt, EwinGetIconName(ewin), NULL, Mode.events.cx, + Mode.events.cy); else TooltipHide(tt); } @@ -1377,8 +1377,8 @@ Hiwin *phi = hiwin; /* Delta in pager coords */ - dx = Mode.events.x - Mode.events.px; - dy = Mode.events.y - Mode.events.py; + dx = Mode.events.mx - Mode.events.px; + dy = Mode.events.my - Mode.events.py; if (dx == 0 && dy == 0) return; @@ -1485,8 +1485,8 @@ if (!ewin) goto done; - in_vroot = (Mode.events.x >= 0 && Mode.events.x < VRoot.w && - Mode.events.y >= 0 && Mode.events.y < VRoot.h); + in_vroot = (Mode.events.cx >= 0 && Mode.events.cx < VRoot.w && + Mode.events.cy >= 0 && Mode.events.cy < VRoot.h); if (button == Conf_pagers.win_button) { @@ -1528,8 +1528,8 @@ { /* Pointer is not in pager or iconbox */ /* Move window(s) to pointer location */ - x = Mode.events.x - EoGetW(ewin) / 2; - y = Mode.events.y - EoGetH(ewin) / 2; + x = Mode.events.cx - EoGetW(ewin) / 2; + y = Mode.events.cy - EoGetH(ewin) / 2; EwinGroupMove(ewin, DesksGetCurrent(), x, y); } } ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs