Enlightenment CVS committal
Author : kwo
Project : e16
Module : e
Dir : e16/e/src
Modified Files:
Tag: branch-exp
E.h Makefile.am events.c ewins.c
Removed Files:
Tag: branch-exp
evhandlers.c
Log Message:
Eliminate evhandlers.c.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v
retrieving revision 1.314.2.25
retrieving revision 1.314.2.26
diff -u -3 -r1.314.2.25 -r1.314.2.26
--- E.h 23 Aug 2004 21:14:42 -0000 1.314.2.25
+++ E.h 24 Aug 2004 18:15:10 -0000 1.314.2.26
@@ -1713,11 +1713,12 @@
/* edge.c */
void EdgeWindowsShow(void);
void EdgeWindowsHide(void);
-void EdgeHandleEnter(XEvent * ev);
-void EdgeHandleLeave(XEvent * ev);
-void EdgeHandleMotion(XEvent * ev);
/* events.c */
+/* Re-mapped X-events */
+#define EX_EVENT_SHAPE_NOTIFY 64
+#define EX_EVENT_SCREEN_CHANGE_NOTIFY 65
+
#define ENABLE_DEBUG_EVENTS 1
#if ENABLE_DEBUG_EVENTS
#define EDBUG_TYPE_EWINS 128
@@ -1743,19 +1744,6 @@
void EventDebugInit(const char *s);
void EventShow(const XEvent * ev);
-/* evhandlers.c */
-void HandleMouseDown(XEvent * ev);
-void HandleMouseUp(XEvent * ev);
-void HandleMotion(XEvent * ev);
-void HandleConfigureNotify(XEvent * ev);
-void HandleConfigureRequest(XEvent * ev);
-void HandleResizeRequest(XEvent * ev);
-void HandleCirculateRequest(XEvent * ev);
-void HandleProperty(XEvent * ev);
-void HandleClientMessage(XEvent * ev);
-void HandleChildShapeChange(XEvent * ev);
-void HandleScreenChange(XEvent * ev);
-
/* ewins.c */
#define EWIN_CHANGE_NAME (1<<0)
#define EWIN_CHANGE_ICON_NAME (1<<1)
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/Makefile.am,v
retrieving revision 1.43.2.8
retrieving revision 1.43.2.9
diff -u -3 -r1.43.2.8 -r1.43.2.9
--- Makefile.am 15 Aug 2004 16:25:32 -0000 1.43.2.8
+++ Makefile.am 24 Aug 2004 18:15:11 -0000 1.43.2.9
@@ -40,7 +40,6 @@
edge.c \
emodule.c \
events.c \
- evhandlers.c \
ewins.c \
ewin-ops.c \
file.c \
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/events.c,v
retrieving revision 1.69.2.7
retrieving revision 1.69.2.8
diff -u -3 -r1.69.2.7 -r1.69.2.8
--- events.c 22 Aug 2004 01:30:08 -0000 1.69.2.7
+++ events.c 24 Aug 2004 18:15:11 -0000 1.69.2.8
@@ -85,6 +85,23 @@
}
static void
+ModeGetXY(Window rwin, int rx, int ry)
+{
+ Window child;
+
+ if (Mode.wm.window)
+ {
+ XTranslateCoordinates(disp, rwin, VRoot.win,
+ rx, ry, &Mode.x, &Mode.y, &child);
+ }
+ else
+ {
+ Mode.x = rx;
+ Mode.y = ry;
+ }
+}
+
+static void
HandleEvent(XEvent * ev)
{
void **lst;
@@ -134,6 +151,11 @@
switch (ev->type)
{
+ Slideout *pslideout;
+
+ case KeyPress: /* 2 */
+ case KeyRelease: /* 3 */
+ break;
case ButtonPress: /* 4 */
SoundPlay("SOUND_BUTTON_CLICK");
@@ -147,44 +169,87 @@
if (Mode.double_click)
ev->xbutton.time = 0;
- HandleMouseDown(ev);
+ ModeGetXY(ev->xbutton.root, ev->xbutton.x_root, ev->xbutton.y_root);
break;
case ButtonRelease: /* 5 */
SoundPlay("SOUND_BUTTON_RAISE");
- HandleMouseUp(ev);
+ /* DON'T handle clicks whilst moving/resizing things */
+ if ((Mode.mode != MODE_NONE) &&
+ (!((Mode.place) &&
+ (Mode.mode == MODE_MOVE_PENDING || Mode.mode == MODE_MOVE))))
+ {
+ if ((int)Mode.last_button != (int)ev->xbutton.button)
+ EDBUG_RETURN_;
+ }
+
+ ModeGetXY(ev->xbutton.root, ev->xbutton.x_root, ev->xbutton.y_root);
+
+ pslideout = Mode.slideout;
+
+ ActionsEnd(NULL);
+
+ if ((Mode.slideout) && (pslideout))
+ SlideoutHide(Mode.slideout);
+
+ Mode.action_inhibit = 0;
break;
case MotionNotify: /* 6 */
TooltipsHandleEvent(); /* TBD */
- HandleMotion(ev);
+
+ Mode.px = Mode.x;
+ Mode.py = Mode.y;
+ ModeGetXY(ev->xmotion.root, ev->xmotion.x_root, ev->xmotion.y_root);
+
+ desks.current = DesktopAt(Mode.x, Mode.y);
+
+ if ((!(ev->xmotion.state
+ & (Button1Mask | Button2Mask | Button3Mask | Button4Mask |
+ Button5Mask)) && (!Mode.place)))
+ {
+ if (ActionsEnd(NULL))
+ EDBUG_RETURN_;
+ }
+
+ ActionsHandleMotion();
break;
case EnterNotify: /* 7 */
Mode.context_win = ev->xany.window;
case LeaveNotify: /* 8 */
break;
+ case MapRequest: /* 20 */
+ break;
+ case ReparentNotify: /* 21 */
+ break;
case ConfigureNotify: /* 22 */
- HandleConfigureNotify(ev);
+ if (ev->xconfigure.window == VRoot.win)
+ DialogOK("Wheee! (ConfigureNotify)",
+ "Screen size changed to\n%dx%d pixels",
+ ev->xconfigure.width, ev->xconfigure.height);
break;
case ConfigureRequest: /* 23 */
- HandleConfigureRequest(ev);
break;
case ResizeRequest: /* 25 */
- HandleResizeRequest(ev);
break;
case CirculateRequest: /* 27 */
- HandleCirculateRequest(ev);
break;
case PropertyNotify: /* 28 */
- HandleProperty(ev);
break;
case ClientMessage: /* 33 */
- HandleClientMessage(ev);
+ HintsProcessClientMessage(&(ev->xclient));
break;
default:
if (ev->type == event_base_shape + ShapeNotify)
- HandleChildShapeChange(ev);
+ ev->type = EX_EVENT_SHAPE_NOTIFY;
#ifdef USE_XRANDR
else if (ev->type == event_base_randr + RRScreenChangeNotify)
- HandleScreenChange(ev);
+ {
+ ev->type = EX_EVENT_SCREEN_CHANGE_NOTIFY;
+ XRRScreenChangeNotifyEvent *rrev =
+ (XRRScreenChangeNotifyEvent *) ev;
+ DialogOK("Wheee! (RRScreenChangeNotify)",
+ "Screen size changed to\n%dx%d pixels (%dx%d millimeters)",
+ rrev->width, rrev->height, rrev->mwidth, rrev->mheight);
+ }
#endif
break;
}
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/Attic/ewins.c,v
retrieving revision 1.1.2.5
retrieving revision 1.1.2.6
diff -u -3 -r1.1.2.5 -r1.1.2.6
--- ewins.c 22 Aug 2004 01:30:08 -0000 1.1.2.5
+++ ewins.c 24 Aug 2004 18:15:11 -0000 1.1.2.6
@@ -1043,6 +1043,192 @@
EwinWithdraw(ewin);
}
+static void
+EwinEventConfigureRequest(EWin * ewin, XEvent * ev)
+{
+ Window win, winrel;
+ EWin *ewin2;
+ int x = 0, y = 0, w = 0, h = 0;
+ XWindowChanges xwc;
+
+ win = ev->xconfigurerequest.window;
+
+ if (ewin)
+ {
+ x = ewin->x;
+ y = ewin->y;
+ w = ewin->client.w;
+ h = ewin->client.h;
+ winrel = 0;
+ if (ev->xconfigurerequest.value_mask & CWX)
+ x = ev->xconfigurerequest.x;
+ if (ev->xconfigurerequest.value_mask & CWY)
+ y = ev->xconfigurerequest.y;
+ if (ev->xconfigurerequest.value_mask & CWWidth)
+ w = ev->xconfigurerequest.width;
+ if (ev->xconfigurerequest.value_mask & CWHeight)
+ h = ev->xconfigurerequest.height;
+ if (ev->xconfigurerequest.value_mask & CWSibling)
+ winrel = ev->xconfigurerequest.above;
+ if (ev->xconfigurerequest.value_mask & CWStackMode)
+ {
+ ewin2 = FindItem(NULL, winrel, LIST_FINDBY_ID, LIST_TYPE_EWIN);
+ if (ewin2)
+ winrel = ewin2->win;
+ xwc.sibling = winrel;
+ xwc.stack_mode = ev->xconfigurerequest.detail;
+ if (Mode.mode == MODE_NONE)
+ {
+ if (xwc.stack_mode == Above)
+ RaiseEwin(ewin);
+ else if (xwc.stack_mode == Below)
+ LowerEwin(ewin);
+ }
+ /* else
+ * XConfigureWindow(disp, ewin->win,
+ * ev->xconfigurerequest.value_mask &
+ * (CWSibling | CWStackMode), &xwc); */
+ }
+#if 0 /* Let's try disabling this */
+ /* this ugly workaround here is because x11amp is very brain-dead */
+ /* and sets its minunum and maximm sizes the same - fair enough */
+ /* to ensure it doesnt get resized - BUT hwne it shades itself */
+ /* it resizes down to a smaller size - of course keeping the */
+ /* minimum and maximim size same - E unconditionally disallows any */
+ /* client window to be resized outside of its constraints */
+ /* (any client could do this resize - not just x11amp thus E is */
+ /* imposing the hints x11amp set up - this works around by */
+ /* modifying the constraints to fit what the app requested */
+ if (w < ewin->client.width.min)
+ ewin->client.width.min = w;
+ if (w > ewin->client.width.max)
+ ewin->client.width.max = w;
+ if (h < ewin->client.height.min)
+ ewin->client.height.min = h;
+ if (h > ewin->client.height.max)
+ ewin->client.height.max = h;
+#endif
+
+ if (ev->xconfigurerequest.value_mask & (CWX | CWY))
+ {
+ /* Correct position taking gravity into account */
+ ewin->client.x = x;
+ ewin->client.y = y;
+ EwinGetPosition(ewin, &x, &y);
+ }
+
+ Mode.move.check = 0; /* Don't restrict client requests */
+ MoveResizeEwin(ewin, x, y, w, h);
+ Mode.move.check = 1;
+ if (Mode.mode == MODE_MOVE_PENDING || Mode.mode == MODE_MOVE)
+ ICCCM_Configure(ewin);
+ {
+ char pshaped;
+
+ pshaped = ewin->client.shaped;
+ ICCCM_GetShapeInfo(ewin);
+ if (pshaped != ewin->client.shaped)
+ {
+ SyncBorderToEwin(ewin);
+ PropagateShapes(ewin->win);
+ }
+ }
+ ReZoom(ewin);
+ }
+ else
+ {
+ xwc.x = ev->xconfigurerequest.x;
+ xwc.y = ev->xconfigurerequest.y;
+ xwc.width = ev->xconfigurerequest.width;
+ xwc.height = ev->xconfigurerequest.height;
+ xwc.border_width = ev->xconfigurerequest.border_width;
+ xwc.sibling = ev->xconfigurerequest.above;
+ xwc.stack_mode = ev->xconfigurerequest.detail;
+ XConfigureWindow(disp, win, ev->xconfigurerequest.value_mask, &xwc);
+ }
+}
+
+static void
+EwinEventResizeRequest(EWin * ewin, XEvent * ev)
+{
+ Window win;
+ int w, h;
+
+ win = ev->xresizerequest.window;
+
+ if (ewin)
+ {
+ w = ev->xresizerequest.width;
+ h = ev->xresizerequest.height;
+ ResizeEwin(ewin, w, h);
+ {
+ char pshaped;
+
+ pshaped = ewin->client.shaped;
+ ICCCM_GetShapeInfo(ewin);
+ if (pshaped != ewin->client.shaped)
+ {
+ SyncBorderToEwin(ewin);
+ PropagateShapes(ewin->win);
+ }
+ }
+ ReZoom(ewin);
+ }
+ else
+ {
+ EResizeWindow(disp, win, ev->xresizerequest.width,
+ ev->xresizerequest.height);
+ }
+}
+
+static void
+EwinEventCirculateRequest(EWin * ewin, XEvent * ev)
+{
+ Window win;
+
+ win = ev->xcirculaterequest.window;
+
+ if (ewin)
+ {
+ if (ev->xcirculaterequest.place == PlaceOnTop)
+ RaiseEwin(ewin);
+ else
+ LowerEwin(ewin);
+ }
+ else
+ {
+ if (ev->xcirculaterequest.place == PlaceOnTop)
+ XRaiseWindow(disp, win);
+ else
+ XLowerWindow(disp, win);
+ }
+}
+
+static void
+EwinEventPropertyNotify(EWin * ewin, XEvent * ev)
+{
+ GrabX();
+ EwinChangesStart(ewin);
+
+ HintsProcessPropertyChange(ewin, ev->xproperty.atom);
+ SessionGetInfo(ewin, ev->xproperty.atom);
+ SyncBorderToEwin(ewin);
+
+ EwinChangesProcess(ewin);
+ UngrabX();
+}
+
+static void
+EwinEventShapeChange(EWin * ewin)
+{
+ const Border *b;
+
+ b = ewin->border;
+ SyncBorderToEwin(ewin);
+ if (ewin->border == b)
+ PropagateShapes(ewin->win);
+}
+
#if 0
static void
EwinEventVisibility(EWin * ewin __UNUSED__, int state __UNUSED__)
@@ -1558,6 +1744,18 @@
case ButtonPress:
FocusHandleClick(ewin, ev->xany.window);
break;
+ case MapRequest:
+ EwinDeIconify(ewin);
+ break;
+ case ConfigureRequest:
+ EwinEventConfigureRequest(ewin, ev);
+ break;
+ case ResizeRequest:
+ EwinEventResizeRequest(ewin, ev);
+ break;
+ case CirculateRequest:
+ EwinEventCirculateRequest(ewin, ev);
+ break;
default:
Eprintf("EwinHandleEventsContainer: type=%2d win=%#lx: %s\n",
ev->type, ewin->client.win, EwinGetTitle(ewin));
@@ -1581,7 +1779,6 @@
case FocusOut:
case ConfigureNotify:
case GravityNotify:
- case PropertyNotify:
break;
case DestroyNotify:
EwinEventDestroy(ewin);
@@ -1592,6 +1789,20 @@
case MapNotify:
EwinEventMap(ewin);
break;
+ case ConfigureRequest:
+ EwinEventConfigureRequest(ewin, ev);
+ break;
+ case ResizeRequest:
+ EwinEventResizeRequest(ewin, ev);
+ break;
+ case CirculateRequest:
+ EwinEventCirculateRequest(ewin, ev);
+ break;
+ case PropertyNotify:
+ EwinEventPropertyNotify(ewin, ev);
+ break;
+ case EX_EVENT_SHAPE_NOTIFY:
+ EwinEventShapeChange(ewin);
default:
#if DEBUG_EWIN_EVENTS
Eprintf("EwinHandleEventsClient: type=%2d win=%#lx: %s\n",
@@ -1612,6 +1823,27 @@
case MapRequest:
AddToFamily(ev->xmaprequest.window);
break;
+ case ConfigureRequest:
+#if 0
+ Eprintf("EwinHandleEventsRoot ConfigureRequest %#lx\n",
+ ev->xconfigurerequest.window);
+#endif
+ EwinEventConfigureRequest(NULL, ev);
+ break;
+ case ResizeRequest:
+#if 0
+ Eprintf("EwinHandleEventsRoot ResizeRequest %#lx\n",
+ ev->xresizerequest.window);
+#endif
+ EwinEventResizeRequest(NULL, ev);
+ break;
+ case CirculateRequest:
+#if 0
+ Eprintf("EwinHandleEventsRoot CirculateRequest %#lx\n",
+ ev->xcirculaterequest.window);
+#endif
+ EwinEventCirculateRequest(NULL, ev);
+ break;
default:
#if 0
Eprintf("EwinHandleEventsRoot: type=%2d win=%#lx\n",
-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media
100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33
Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs