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