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