Enlightenment CVS committal
Author : kwo
Project : e16
Module : e
Dir : e16/e/src
Modified Files:
E.h actions.c evhandlers.c globals.c gnome.c
Log Message:
Fix action processing at end of window move.
Don't send events to non-existing buttonproxy window.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v
retrieving revision 1.180
retrieving revision 1.181
diff -u -3 -r1.180 -r1.181
--- E.h 12 Jan 2004 21:05:00 -0000 1.180
+++ E.h 13 Jan 2004 20:01:43 -0000 1.181
@@ -1318,6 +1318,7 @@
char nogroup;
char keybinds_changed;
char firsttime;
+ Window button_proxy_win;
}
EMode;
@@ -1904,6 +1905,7 @@
void AddToAction(Action * act, int id, void *params);
void AddAction(ActionClass * a, Action * act);
int EventAclass(XEvent * ev, ActionClass * a);
+void doActionEnd(void);
int spawnMenu(void *params);
int hideMenu(void *params);
int doNothing(void *params);
@@ -2833,7 +2835,6 @@
extern Window init_win1;
extern Window init_win2;
extern Window init_win_ext;
-extern Window bpress_win;
extern int deskorder[ENLIGHTENMENT_CONF_NUM_DESKTOPS];
#define FILEPATH_LEN_MAX 4096
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/actions.c,v
retrieving revision 1.128
retrieving revision 1.129
diff -u -3 -r1.128 -r1.129
--- actions.c 12 Jan 2004 20:43:17 -0000 1.128
+++ actions.c 13 Jan 2004 20:01:43 -0000 1.129
@@ -1239,6 +1239,55 @@
EDBUG_RETURN(0);
}
+void
+doActionEnd(void)
+{
+ EWin *ewin;
+ int i, num;
+ EWin **gwins;
+
+ switch (mode.mode)
+ {
+ case MODE_RESIZE:
+ case MODE_RESIZE_H:
+ case MODE_RESIZE_V:
+ doResizeEnd(NULL);
+ mode.action_inhibit = 1;
+ break;
+ case MODE_MOVE:
+ ewin = mode.ewin;
+ if (ewin)
+ {
+ gwins =
+ ListWinGroupMembersForEwin(ewin, ACTION_MOVE, mode.nogroup,
+ &num);
+ if ((conf.movemode == 0) && (mode.mode == MODE_MOVE))
+ for (i = 0; i < num; i++)
+ DetermineEwinFloat(gwins[i], 0, 0);
+ Efree(gwins);
+ }
+ doMoveEnd(NULL);
+ if (mode.have_place_grab)
+ {
+ mode.have_place_grab = 0;
+ XUngrabPointer(disp, CurrentTime);
+ }
+ mode.ewin = NULL;
+ mode.action_inhibit = 1;
+ break;
+ case MODE_DESKDRAG:
+ mode.mode = MODE_NONE;
+ break;
+ case MODE_BUTTONDRAG:
+ if (!mode.button_move_pending)
+ mode.action_inhibit = 1;
+ doDragButtonEnd(NULL);
+ break;
+ default:
+ break;
+ }
+}
+
int
doRaise(void *params)
{
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/evhandlers.c,v
retrieving revision 1.138
retrieving revision 1.139
diff -u -3 -r1.138 -r1.139
--- evhandlers.c 12 Jan 2004 20:43:18 -0000 1.138
+++ evhandlers.c 13 Jan 2004 20:01:44 -0000 1.139
@@ -95,6 +95,14 @@
DoIn("TOOLTIP_TIMEOUT", conf.tooltips.tiptime, ToolTipTimeout, 0, NULL);
}
+static void
+ButtonProxySendEvent(XEvent * ev)
+{
+ if (mode.button_proxy_win)
+ XSendEvent(disp, mode.button_proxy_win, False, SubstructureNotifyMask,
+ ev);
+}
+
void
HandleClientMessage(XEvent * ev)
{
@@ -1343,7 +1351,7 @@
if (ac)
{
if (!EventAclass(ev, ac))
- XSendEvent(disp, bpress_win, False, SubstructureNotifyMask, ev);
+ ButtonProxySendEvent(ev);
}
EDBUG_RETURN_;
}
@@ -1415,9 +1423,7 @@
{
Window win = ev->xbutton.window;
EWin *ewin;
- int i, num;
Slideout *pslideout;
- EWin **gwins;
EDBUG(5, "HandleMouseUp");
@@ -1461,57 +1467,20 @@
}
#endif
- switch (mode.mode)
+ doActionEnd();
+ if (mode.place)
{
- case MODE_RESIZE:
- case MODE_RESIZE_H:
- case MODE_RESIZE_V:
- doResizeEnd(NULL);
- mode.action_inhibit = 1;
- break;
- case MODE_MOVE:
- ewin = mode.ewin;
- if (ewin)
- {
- gwins =
- ListWinGroupMembersForEwin(ewin, ACTION_MOVE, mode.nogroup,
- &num);
- if ((conf.movemode == 0) && (mode.mode == MODE_MOVE))
- for (i = 0; i < num; i++)
- DetermineEwinFloat(gwins[i], 0, 0);
- Efree(gwins);
- }
- doMoveEnd(NULL);
- if (mode.have_place_grab)
- {
- mode.have_place_grab = 0;
- XUngrabPointer(disp, CurrentTime);
- }
- mode.ewin = NULL;
- mode.action_inhibit = 1;
- if (mode.place)
- {
- mode.place = 0;
- goto exit;
- }
- break;
- case MODE_DESKDRAG:
- mode.mode = MODE_NONE;
- break;
- case MODE_BUTTONDRAG:
- if (!mode.button_move_pending)
- mode.action_inhibit = 1;
- doDragButtonEnd(NULL);
- break;
- default:
- break;
+ mode.place = 0;
+ goto exit;
}
if (sentpress)
{
+ /* We never get here? */
sentpress = 0;
- XSendEvent(disp, bpress_win, False, SubstructureNotifyMask, ev);
+ ButtonProxySendEvent(ev);
}
+
mode.context_win = last_bpress;
ewin = SlideoutsGetContextEwin();
@@ -1525,10 +1494,13 @@
mode.justclicked = 1;
}
- if (MenusEventMouseUp(ev))
+ if (!clickmenu && BordersEventMouseUp(ev))
goto exit;
- if (!clickmenu && BordersEventMouseUp(ev))
+ if (mode.action_inhibit)
+ goto exit;
+
+ if (MenusEventMouseUp(ev))
goto exit;
if (ButtonsEventMouseUp(ev))
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/globals.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -3 -r1.24 -r1.25
--- globals.c 12 Jan 2004 20:43:18 -0000 1.24
+++ globals.c 13 Jan 2004 20:01:44 -0000 1.25
@@ -55,7 +55,6 @@
Window init_win1 = 0;
Window init_win2 = 0;
Window init_win_ext = 0;
-Window bpress_win = 0;
int deskorder[ENLIGHTENMENT_CONF_NUM_DESKTOPS];
char themepath[FILEPATH_LEN_MAX];
char themename[FILEPATH_LEN_MAX];
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/gnome.c,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -3 -r1.29 -r1.30
--- gnome.c 12 Jan 2004 20:43:18 -0000 1.29
+++ gnome.c 13 Jan 2004 20:01:44 -0000 1.30
@@ -770,11 +770,11 @@
CARD32 val;
atom_set = XInternAtom(disp, "_WIN_DESKTOP_BUTTON_PROXY", False);
- bpress_win = ECreateWindow(root.win, -80, -80, 24, 24, 0);
- val = bpress_win;
+ mode.button_proxy_win = ECreateWindow(root.win, -80, -80, 24, 24, 0);
+ val = mode.button_proxy_win;
XChangeProperty(disp, root.win, atom_set, XA_CARDINAL, 32,
PropModeReplace, (unsigned char *)&val, 1);
- XChangeProperty(disp, bpress_win, atom_set, XA_CARDINAL, 32,
+ XChangeProperty(disp, mode.button_proxy_win, atom_set, XA_CARDINAL, 32,
PropModeReplace, (unsigned char *)&val, 1);
}
-------------------------------------------------------
This SF.net email is sponsored by: Perforce Software.
Perforce is the Fast Software Configuration Management System offering
advanced branching capabilities and atomic changes on 50+ platforms.
Free Eval! http://www.perforce.com/perforce/loadprog.html
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs