Enlightenment CVS committal Author : kwo Project : e16 Module : e
Dir : e16/e/src Modified Files: E.h borders.c grabs.c menus.c moveresize.c Log Message: Attempt to fix pointer grab problem. =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v retrieving revision 1.331 retrieving revision 1.332 diff -u -3 -r1.331 -r1.332 --- E.h 17 Nov 2004 19:31:08 -0000 1.331 +++ E.h 20 Nov 2004 17:55:11 -0000 1.332 @@ -1997,6 +1997,7 @@ #define EDBUG_TYPE_SESSION 134 #define EDBUG_TYPE_SNAPS 135 #define EDBUG_TYPE_DESKS 136 +#define EDBUG_TYPE_GRABS 137 int EventDebug(unsigned int type); #else #define EventDebug(type) 0 =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/borders.c,v retrieving revision 1.234 retrieving revision 1.235 diff -u -3 -r1.234 -r1.235 --- borders.c 19 Nov 2004 23:14:47 -0000 1.234 +++ borders.c 20 Nov 2004 17:55:11 -0000 1.235 @@ -329,7 +329,6 @@ EWin **lst; int i, k, num, speed, fx, fy, x, y; char doslide, manplace; - char cangrab = 0; EDBUG(3, "AddToFamily"); @@ -479,18 +478,11 @@ if ((!ewin->client.transient) && (Conf.place.manual) && (!ewin->client.already_placed) && (!Mode.wm.startup) && (!Mode.place)) { + char cangrab; + cangrab = GrabPointerSet(VRoot.win, ECSR_GRAB, 0); - if ((cangrab == GrabNotViewable) || (cangrab == AlreadyGrabbed) - || (cangrab == GrabFrozen)) - { - XUngrabPointer(disp, CurrentTime); - cangrab = 0; - } - else - { - manplace = 1; - cangrab = 1; - } + if (cangrab == GrabSuccess) + manplace = 1; } /* if it hasn't been placed yet.... find a spot for it */ @@ -512,10 +504,8 @@ if (ewin->desktop >= 0) GotoDesktop(ewin->desktop); - GrabPointerSet(VRoot.win, ECSR_GRAB, 0); XQueryPointer(disp, VRoot.win, &root_return, &junk, &rx, &ry, &wx, &wy, &mask); - XUngrabPointer(disp, CurrentTime); Mode.x = rx; Mode.y = ry; ewin->client.already_placed = 1; =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/grabs.c,v retrieving revision 1.19 retrieving revision 1.20 diff -u -3 -r1.19 -r1.20 --- grabs.c 14 Aug 2004 15:06:26 -0000 1.19 +++ grabs.c 20 Nov 2004 17:55:12 -0000 1.20 @@ -74,6 +74,7 @@ EDBUG_RETURN_; } +#if 0 /* Unused */ void GrabButtonsSet(Window win, unsigned int csr) { @@ -86,15 +87,16 @@ Mode.grabs.pointer_grab_window = win; Mode.grabs.pointer_grab_active = 1; } +#endif int GrabPointerSet(Window win, unsigned int csr, int confine) { - int ret; + int ret = -1; Window confine_to = (confine) ? win : None; if (Mode.grabs.pointer_grab_active) - return 1; + goto done; ret = XGrabPointer(disp, win, True, ButtonPressMask | ButtonReleaseMask | PointerMotionMask | @@ -105,6 +107,11 @@ Mode.grabs.pointer_grab_window = win; Mode.grabs.pointer_grab_active = 1; + done: + if (EventDebug(EDBUG_TYPE_GRABS)) + Eprintf("GrabPointerSet: %#lx, ret=%d\n", Mode.grabs.pointer_grab_window, + ret); + return ret; } @@ -112,10 +119,14 @@ GrabPointerRelease(void) { if (!Mode.grabs.pointer_grab_active) - return; + goto done; XUngrabPointer(disp, CurrentTime); + done: + if (EventDebug(EDBUG_TYPE_GRABS)) + Eprintf("GrabPointerRelease: %#lx\n", Mode.grabs.pointer_grab_window); + Mode.grabs.pointer_grab_active = 0; Mode.grabs.pointer_grab_window = None; } =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/menus.c,v retrieving revision 1.154 retrieving revision 1.155 diff -u -3 -r1.154 -r1.155 --- menus.c 12 Nov 2004 17:34:14 -0000 1.154 +++ menus.c 20 Nov 2004 17:55:12 -0000 1.155 @@ -1848,7 +1848,6 @@ m = FindItem(name, 0, LIST_FINDBY_NAME, LIST_TYPE_MENU); if (m) { - XUngrabPointer(disp, CurrentTime); if (!FindEwinByMenu(m)) /* Don't show if already shown */ MenuShow(m, 0); Mode.menus.list[0] = m; @@ -1992,8 +1991,6 @@ EDBUG(5, "ShowInternalMenu"); - XUngrabPointer(disp, CurrentTime); - if (!ms) { ms = FindItem(style, 0, LIST_FINDBY_NAME, LIST_TYPE_MENU_STYLE); @@ -2317,7 +2314,6 @@ Mode.menus.list[0] = m; Mode.menus.current_depth = 1; MenuShowMasker(m); - XUngrabPointer(disp, CurrentTime); ewin = FindEwinByMenu(m); if (ewin) { =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/moveresize.c,v retrieving revision 1.23 retrieving revision 1.24 diff -u -3 -r1.23 -r1.24 --- moveresize.c 14 Aug 2004 15:06:26 -0000 1.23 +++ moveresize.c 20 Nov 2004 17:55:12 -0000 1.24 @@ -94,6 +94,7 @@ int d, wasresize = 0, num, i; EDBUG(6, "doMoveEnd"); + GrabPointerRelease(); if (ewin && ewin != mode_moveresize_ewin) @@ -169,13 +170,7 @@ Conf.movemode = move_mode_real; Mode.nogroup = 0; Mode.move.swap = 0; - - if (Mode.have_place_grab) - { - Mode.have_place_grab = 0; - XUngrabPointer(disp, CurrentTime); - } - + Mode.have_place_grab = 0; EwinUpdateAfterMoveResize(ewin, 0); EDBUG_RETURN(0); ------------------------------------------------------- This SF.Net email is sponsored by: InterSystems CACHE FREE OODBMS DOWNLOAD - A multidimensional database that combines robust object and relational technologies, making it a perfect match for Java, C++,COM, XML, ODBC and JDBC. www.intersystems.com/match8 _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs