Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        dialog.c 


Log Message:
Simplify dialog event processing.

===================================================================
RCS file: /cvs/e/e16/e/src/dialog.c,v
retrieving revision 1.151
retrieving revision 1.152
diff -u -3 -r1.151 -r1.152
--- dialog.c    26 Apr 2006 23:43:07 -0000      1.151
+++ dialog.c    27 Apr 2006 16:25:19 -0000      1.152
@@ -121,6 +121,7 @@
 struct _ditem
 {
    int                 type;
+   Dialog             *dlg;
    DialogCallbackFunc *func;
    int                 val;
    void               *data;
@@ -206,6 +207,7 @@
 static int          FindADialog(void);
 
 static void         DialogHandleEvents(XEvent * ev, void *prm);
+static void         DItemHandleEvents(XEvent * ev, void *prm);
 static void         DButtonHandleEvents(XEvent * ev, void *prm);
 
 static void         MoveTableBy(Dialog * d, DItem * di, int dx, int dy);
@@ -726,6 +728,7 @@
    if (!di)
       return di;
 
+   di->dlg = d;
    di->item.table.num_columns = 1;
 
    return di;
@@ -833,6 +836,7 @@
           Erealloc(dii->item.table.items,
                    sizeof(DItem *) * dii->item.table.num_items);
        dii->item.table.items[dii->item.table.num_items - 1] = di;
+       di->dlg = dii->dlg;
      }
 
    return di;
@@ -1031,12 +1035,12 @@
        ESelectInput(di->item.slider.base_win,
                     EnterWindowMask | LeaveWindowMask | ButtonPressMask |
                     ButtonReleaseMask);
-       EventCallbackRegister(di->item.slider.base_win, 0, DialogHandleEvents,
-                             d);
+       EventCallbackRegister(di->item.slider.base_win, 0, DItemHandleEvents,
+                             di);
        ESelectInput(di->item.slider.knob_win,
                     ButtonPressMask | ButtonReleaseMask | PointerMotionMask);
-       EventCallbackRegister(di->item.slider.knob_win, 0, DialogHandleEvents,
-                             d);
+       EventCallbackRegister(di->item.slider.knob_win, 0, DItemHandleEvents,
+                             di);
        if (!di->item.slider.ic_base)
          {
             if (di->item.slider.horizontal)
@@ -1152,7 +1156,7 @@
        ESelectInput(di->item.area.area_win,
                     EnterWindowMask | LeaveWindowMask | ButtonPressMask |
                     ButtonReleaseMask | PointerMotionMask);
-       EventCallbackRegister(di->item.area.area_win, 0, DialogHandleEvents, d);
+       EventCallbackRegister(di->item.area.area_win, 0, DItemHandleEvents, di);
        di->w = iw;
        di->h = ih;
        break;
@@ -1480,7 +1484,7 @@
      }
 
    if (di->win && register_win_callback)
-      EventCallbackRegister(di->win, 0, DialogHandleEvents, d);
+      EventCallbackRegister(di->win, 0, DItemHandleEvents, di);
 }
 
 static void
@@ -2025,33 +2029,6 @@
    Efree(di);
 }
 
-static DItem       *
-DialogItemFindWindow(DItem * di, Window win)
-{
-   DItem              *dii = NULL;
-
-   if (di->type == DITEM_TABLE)
-     {
-       int                 i;
-
-       for (i = 0; i < di->item.table.num_items; i++)
-         {
-            dii = DialogItemFindWindow(di->item.table.items[i], win);
-            if (dii)
-               return dii;
-         }
-     }
-   else if ((di->win == win)
-           || ((di->type == DITEM_SLIDER)
-               && ((di->item.slider.base_win == win)
-                   || (di->item.slider.knob_win == win)))
-           || ((di->type == DITEM_AREA) && (di->item.area.area_win == win)))
-     {
-       return di;
-     }
-   return NULL;
-}
-
 /* Convenience callback to close dialog */
 void
 DialogCallbackClose(Dialog * d, int val __UNUSED__, void *data __UNUSED__)
@@ -2133,23 +2110,24 @@
      }
 }
 
-static DItem       *
-DialogFindDItem(Dialog * d, Window win)
+static void
+DialogHandleEvents(XEvent * ev, void *prm)
 {
-   return (d->item) ? DialogItemFindWindow(d->item, win) : NULL;
+   Dialog             *d = (Dialog *) prm;
+
+   switch (ev->type)
+     {
+     case KeyPress:
+       DialogEventKeyPress(d, ev);
+       break;
+     }
 }
 
 static void
-DialogEventMotion(Dialog * d, XEvent * ev)
+DItemEventMotion(DItem * di, XEvent * ev)
 {
-   Window              win = ev->xmotion.window;
-   DItem              *di;
    int                 dx, dy;
 
-   di = DialogFindDItem(d, win);
-   if (!di)
-      return;
-
    switch (di->type)
      {
      case DITEM_AREA:
@@ -2197,25 +2175,20 @@
             if (di->item.slider.val_ptr)
                *di->item.slider.val_ptr = di->item.slider.val;
             if (di->func)
-               (di->func) (d, di->val, di->data);
+               (di->func) (di->dlg, di->val, di->data);
          }
 
-       DialogDrawItems(d, di, di->x, di->y, di->w, di->h);
+       DialogDrawItems(di->dlg, di, di->x, di->y, di->w, di->h);
        break;
      }
 }
 
 static void
-DialogEventMouseDown(Dialog * d, XEvent * ev)
+DItemEventMouseDown(DItem * di, XEvent * ev)
 {
    Window              win = ev->xbutton.window;
-   DItem              *di;
    int                 x, y, wheel_jump;
 
-   di = DialogFindDItem(d, win);
-   if (!di)
-      return;
-
    switch (di->type)
      {
      case DITEM_AREA:
@@ -2309,22 +2282,18 @@
 
    di->clicked = 1;
 
-   DialogDrawItems(d, di, di->x, di->y, di->w, di->h);
+   DialogDrawItems(di->dlg, di, di->x, di->y, di->w, di->h);
 }
 
 static void
-DialogEventMouseUp(Dialog * d, XEvent * ev)
+DItemEventMouseUp(DItem * di, XEvent * ev)
 {
    Window              win = ev->xbutton.window;
-   DItem              *di, *dii;
+   DItem              *dii;
 
    if (win != Mode.events.last_bpress)
       return;
 
-   di = DialogFindDItem(d, win);
-   if (!di)
-      return;
-
    di->clicked = 0;
 
    switch (di->type)
@@ -2345,7 +2314,7 @@
             if (dii->item.radio_button.onoff)
               {
                  dii->item.radio_button.onoff = 0;
-                 DialogDrawItems(d, dii, dii->x, dii->y, dii->w, dii->h);
+                 DialogDrawItems(di->dlg, dii, dii->x, dii->y, dii->w, dii->h);
               }
             dii = dii->item.radio_button.next;
          }
@@ -2360,22 +2329,15 @@
        break;
      }
 
-   DialogDrawItems(d, di, di->x, di->y, di->w, di->h);
+   DialogDrawItems(di->dlg, di, di->x, di->y, di->w, di->h);
 
    if (di->func)
-      di->func(d, di->val, di->data);
+      di->func(di->dlg, di->val, di->data);
 }
 
 static void
-DialogEventMouseIn(Dialog * d, XEvent * ev)
+DItemEventMouseIn(DItem * di, XEvent * ev)
 {
-   Window              win = ev->xcrossing.window;
-   DItem              *di;
-
-   di = DialogFindDItem(d, win);
-   if (!di)
-      return;
-
    switch (di->type)
      {
      case DITEM_AREA:
@@ -2391,19 +2353,12 @@
 
    di->hilited = 1;
 
-   DialogDrawItems(d, di, di->x, di->y, di->w, di->h);
+   DialogDrawItems(di->dlg, di, di->x, di->y, di->w, di->h);
 }
 
 static void
-DialogEventMouseOut(Dialog * d, XEvent * ev)
+DItemEventMouseOut(DItem * di, XEvent * ev)
 {
-   Window              win = ev->xcrossing.window;
-   DItem              *di;
-
-   di = DialogFindDItem(d, win);
-   if (!di)
-      return;
-
    switch (di->type)
      {
      case DITEM_AREA:
@@ -2419,57 +2374,33 @@
 
    di->hilited = 0;
 
-   DialogDrawItems(d, di, di->x, di->y, di->w, di->h);
+   DialogDrawItems(di->dlg, di, di->x, di->y, di->w, di->h);
 }
 
 static void
-DialogHandleEvents(XEvent * ev, void *prm)
+DItemHandleEvents(XEvent * ev, void *prm)
 {
-   Dialog             *d = (Dialog *) prm;
+   DItem              *di = (DItem *) prm;
 
    switch (ev->type)
      {
-     case KeyPress:
-       DialogEventKeyPress(d, ev);
-       break;
      case ButtonPress:
-       DialogEventMouseDown(d, ev);
+       DItemEventMouseDown(di, ev);
        break;
      case ButtonRelease:
-       DialogEventMouseUp(d, ev);
+       DItemEventMouseUp(di, ev);
        break;
      case MotionNotify:
-       DialogEventMotion(d, ev);
+       DItemEventMotion(di, ev);
        break;
      case EnterNotify:
-       DialogEventMouseIn(d, ev);
+       DItemEventMouseIn(di, ev);
        break;
      case LeaveNotify:
-       DialogEventMouseOut(d, ev);
+       DItemEventMouseOut(di, ev);
        break;
      }
 }
-
-#if 0                          /* TBD */
-static void
-DItemHandleEvents(XEvent * ev, void *prm)
-{
-   DItem              *di = (Dialog *) prm;
-   Window              win = ev->xany.window;
-
-   switch (ev->type)
-     {
-     case ButtonPress:
-       break;
-     case ButtonRelease:
-       break;
-     case EnterNotify:
-       break;
-     case LeaveNotify:
-       break;
-     }
-}
-#endif
 
 static void
 DButtonHandleEvents(XEvent * ev, void *prm)




-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to