Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        E.h dialog.c evhandlers.c pager.c 


Log Message:
Fix another pager mini-window tooltip bug.
Minor pager and dialog event handler changes.

===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v
retrieving revision 1.158
retrieving revision 1.159
diff -u -3 -r1.158 -r1.159
--- E.h 12 Dec 2003 18:42:15 -0000      1.158
+++ E.h 13 Dec 2003 14:07:14 -0000      1.159
@@ -2694,13 +2694,13 @@
 void                DialogItemAreaSetEventFunc(DItem * di,
                                               void (*func) (int val,
                                                             void *data));
-void                DialogEventKeyPress(XEvent * ev);
-void                DialogEventMotion(XEvent * ev);
-void                DialogEventExpose(XEvent * ev);
-void                DialogEventMouseDown(XEvent * ev);
-void                DialogEventMouseUp(XEvent * ev, Window click_was_in);
-void                DialogEventMouseIn(XEvent * ev);
-void                DialogEventMouseOut(XEvent * ev);
+int                 DialogEventKeyPress(XEvent * ev);
+int                 DialogEventMotion(XEvent * ev);
+int                 DialogEventExpose(XEvent * ev);
+int                 DialogEventMouseDown(XEvent * ev);
+int                 DialogEventMouseUp(XEvent * ev, Window click_was_in);
+int                 DialogEventMouseIn(XEvent * ev);
+int                 DialogEventMouseOut(XEvent * ev);
 
 /* fx.c exportable functions */
 #define FX_OP_START  1
@@ -2763,9 +2763,9 @@
 void                DisablePagersForDesktop(int desk);
 Window              PagerGetWin(Pager * p);
 Window              PagerGetHiWin(Pager * p);
-void                PagersEventMotion(XEvent * ev);
-void                PagersEventMouseDown(XEvent * ev);
-void                PagersEventMouseUp(XEvent * ev);
+int                 PagersEventMotion(XEvent * ev);
+int                 PagersEventMouseDown(XEvent * ev);
+int                 PagersEventMouseUp(XEvent * ev);
 int                 PagersEventMouseIn(XEvent * ev);
 int                 PagersEventMouseOut(XEvent * ev);
 
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/dialog.c,v
retrieving revision 1.68
retrieving revision 1.69
diff -u -3 -r1.68 -r1.69
--- dialog.c    30 Nov 2003 15:35:43 -0000      1.68
+++ dialog.c    13 Dec 2003 14:07:14 -0000      1.69
@@ -2153,26 +2153,27 @@
  * Dialog event handlers
  */
 
-void
+int
 DialogEventKeyPress(XEvent * ev)
 {
    Dialog             *d;
+   int                 i;
 
    d = FindDialog(ev->xkey.window);
-   if (d)
-     {
-       int                 i;
+   if (d == NULL)
+      return 0;
 
-       for (i = 0; i < d->num_bindings; i++)
-         {
-            if (ev->xkey.keycode == d->keybindings[i].key)
-               (d->keybindings[i].func) (d->keybindings[i].val,
-                                         d->keybindings[i].data);
-         }
+   for (i = 0; i < d->num_bindings; i++)
+     {
+       if (ev->xkey.keycode == d->keybindings[i].key)
+          (d->keybindings[i].func) (d->keybindings[i].val,
+                                    d->keybindings[i].data);
      }
+
+   return 1;
 }
 
-void
+int
 DialogEventMotion(XEvent * ev)
 {
    Dialog             *d;
@@ -2180,307 +2181,331 @@
    int                 dx, dy;
 
    di = FindDialogItem(ev->xmotion.window, &d);
-   if (di)
+   if (d == NULL)
+      return 0;
+
+   if (di == NULL)
+      goto exit;
+
+   if (di->type == DITEM_AREA)
      {
-       if (di->type == DITEM_AREA)
-         {
-            if (di->item.area.event_func)
-               (di->item.area.event_func) (0, ev);
-         }
-       else if ((di->type == DITEM_SLIDER) && (di->item.slider.in_drag))
+       if (di->item.area.event_func)
+          (di->item.area.event_func) (0, ev);
+     }
+   else if ((di->type == DITEM_SLIDER) && (di->item.slider.in_drag))
+     {
+       if (ev->xmotion.window == di->item.slider.knob_win)
          {
-            if (ev->xmotion.window == di->item.slider.knob_win)
+            dx = mode.x - mode.px;
+            dy = mode.y - mode.py;
+            if (di->item.slider.horizontal)
               {
-                 dx = mode.x - mode.px;
-                 dy = mode.y - mode.py;
-                 if (di->item.slider.horizontal)
-                   {
-                      di->item.slider.wanted_val += dx;
-                      di->item.slider.val =
-                         di->item.slider.lower +
-                         (((di->item.slider.wanted_val *
-                            (di->item.slider.upper -
-                             di->item.slider.lower)) /
-                           (di->item.slider.base_w -
-                            di->item.slider.knob_w)) /
-                          di->item.slider.unit) * di->item.slider.unit;
-                   }
-                 else
-                   {
-                      di->item.slider.wanted_val += dy;
-                      di->item.slider.val =
-                         di->item.slider.lower +
-                         ((((di->item.
-                             slider.base_h - di->item.slider.knob_h -
-                             di->item.slider.wanted_val) *
-                            (di->item.slider.upper -
-                             di->item.slider.lower)) /
-                           (di->item.slider.base_h -
-                            di->item.slider.knob_h)) /
-                          di->item.slider.unit) * di->item.slider.unit;
-                   }
-                 if (di->item.slider.val < di->item.slider.lower)
-                    di->item.slider.val = di->item.slider.lower;
-                 if (di->item.slider.val > di->item.slider.upper)
-                    di->item.slider.val = di->item.slider.upper;
-                 if (di->item.slider.val_ptr)
-                    *di->item.slider.val_ptr = di->item.slider.val;
-                 if (di->func)
-                    (di->func) (di->val, di->data);
+                 di->item.slider.wanted_val += dx;
+                 di->item.slider.val =
+                    di->item.slider.lower +
+                    (((di->item.slider.wanted_val *
+                       (di->item.slider.upper -
+                        di->item.slider.lower)) /
+                      (di->item.slider.base_w -
+                       di->item.slider.knob_w)) /
+                     di->item.slider.unit) * di->item.slider.unit;
+              }
+            else
+              {
+                 di->item.slider.wanted_val += dy;
+                 di->item.slider.val =
+                    di->item.slider.lower +
+                    ((((di->item.
+                        slider.base_h - di->item.slider.knob_h -
+                        di->item.slider.wanted_val) *
+                       (di->item.slider.upper -
+                        di->item.slider.lower)) /
+                      (di->item.slider.base_h -
+                       di->item.slider.knob_h)) /
+                     di->item.slider.unit) * di->item.slider.unit;
               }
-            DialogDrawItems(d, di, 0, 0, 99999, 99999);
+            if (di->item.slider.val < di->item.slider.lower)
+               di->item.slider.val = di->item.slider.lower;
+            if (di->item.slider.val > di->item.slider.upper)
+               di->item.slider.val = di->item.slider.upper;
+            if (di->item.slider.val_ptr)
+               *di->item.slider.val_ptr = di->item.slider.val;
+            if (di->func)
+               (di->func) (di->val, di->data);
          }
+       DialogDrawItems(d, di, 0, 0, 99999, 99999);
      }
+
+ exit:
+   return 1;
 }
 
-void
+int
 DialogEventExpose(XEvent * ev)
 {
    Window              win = ev->xexpose.window;
    Dialog             *d;
    int                 bnum;
+   DItem              *di;
+   int                 x, y, w, h;
 
    d = FindDialogButton(win, &bnum);
    if (d)
-      DialogDrawButton(d, bnum);
-   else
      {
-       d = FindDialog(win);
-       if (d)
-         {
-            DialogDrawArea(d, ev->xexpose.x, ev->xexpose.y,
-                           ev->xexpose.width, ev->xexpose.height);
-         }
-       else
-         {
-            DItem              *di;
-            int                 x, y, w, h;
+       DialogDrawButton(d, bnum);
+       goto exit;
+     }
 
-            di = FindDialogItem(win, &d);
-            GetWinXY(win, &x, &y);
-            GetWinWH(win, (unsigned int *)&w, (unsigned int *)&h);
-            if (d)
-               DialogDrawArea(d, x, y, w, h);
-            if (di)
-              {
-                 if (di->type == DITEM_AREA)
-                   {
-                      if (di->func)
-                         (di->func) (di->val, di->data);
-                   }
-              }
-         }
+   d = FindDialog(win);
+   if (d)
+     {
+       DialogDrawArea(d, ev->xexpose.x, ev->xexpose.y,
+                      ev->xexpose.width, ev->xexpose.height);
+       goto exit;
      }
+
+   di = FindDialogItem(win, &d);
+   if (d == NULL)
+      return 0;
+
+   GetWinXY(win, &x, &y);
+   GetWinWH(win, (unsigned int *)&w, (unsigned int *)&h);
+   DialogDrawArea(d, x, y, w, h);
+   if (di == NULL)
+      goto exit;
+
+   if (di->type == DITEM_AREA)
+     {
+       if (di->func)
+          (di->func) (di->val, di->data);
+     }
+
+ exit:
+   return 1;
 }
 
-void
+int
 DialogEventMouseDown(XEvent * ev)
 {
    Window              win = ev->xbutton.window;
    Dialog             *d;
    int                 bnum;
+   DItem              *di;
 
    d = FindDialogButton(win, &bnum);
    if (d)
-      DialogActivateButton(win, 2);
-   else
      {
-       DItem              *di;
+       DialogActivateButton(win, 2);
+       goto exit;
+     }
 
-       di = FindDialogItem(win, &d);
-       if (di)
+   di = FindDialogItem(win, &d);
+   if (d == NULL)
+      return 0;
+
+   if (di == NULL)
+      goto exit;
+
+   if (di->type == DITEM_AREA)
+     {
+       if (di->item.area.event_func)
+          (di->item.area.event_func) (0, ev);
+     }
+   else if (di->type == DITEM_SLIDER)
+     {
+       if (win == di->item.slider.base_win)
          {
-            if (di->type == DITEM_AREA)
+            if (di->item.slider.horizontal)
               {
-                 if (di->item.area.event_func)
-                    (di->item.area.event_func) (0, ev);
+                 if (ev->xbutton.x >
+                     (di->item.slider.knob_x + (di->item.slider.knob_w / 2)))
+                    di->item.slider.val += di->item.slider.jump;
+                 else
+                    di->item.slider.val -= di->item.slider.jump;
               }
-            else if (di->type == DITEM_SLIDER)
+            else
               {
-                 if (win == di->item.slider.base_win)
-                   {
-                      if (di->item.slider.horizontal)
-                        {
-                           if (ev->xbutton.x >
-                               (di->item.slider.knob_x +
-                                (di->item.slider.knob_w / 2)))
-                              di->item.slider.val += di->item.slider.jump;
-                           else
-                              di->item.slider.val -= di->item.slider.jump;
-                        }
-                      else
-                        {
-                           if (ev->xbutton.y >
-                               (di->item.slider.knob_y +
-                                (di->item.slider.knob_h / 2)))
-                              di->item.slider.val -= di->item.slider.jump;
-                           else
-                              di->item.slider.val += di->item.slider.jump;
-                        }
-                      if (di->item.slider.val < di->item.slider.lower)
-                         di->item.slider.val = di->item.slider.lower;
-                      if (di->item.slider.val > di->item.slider.upper)
-                         di->item.slider.val = di->item.slider.upper;
-                      if (di->item.slider.val_ptr)
-                         *di->item.slider.val_ptr = di->item.slider.val;
-                      if (di->func)
-                         (di->func) (di->val, di->data);
-                   }
-                 else if (win == di->item.slider.knob_win)
-                   {
-                      di->item.slider.in_drag = 1;
-                      if (di->item.slider.horizontal)
-                         di->item.slider.wanted_val = di->item.slider.knob_x;
-                      else
-                         di->item.slider.wanted_val = di->item.slider.knob_y;
-                   }
+                 if (ev->xbutton.y >
+                     (di->item.slider.knob_y + (di->item.slider.knob_h / 2)))
+                    di->item.slider.val -= di->item.slider.jump;
+                 else
+                    di->item.slider.val += di->item.slider.jump;
               }
-            di->clicked = 1;
-            DialogDrawItems(d, di, 0, 0, 99999, 99999);
+            if (di->item.slider.val < di->item.slider.lower)
+               di->item.slider.val = di->item.slider.lower;
+            if (di->item.slider.val > di->item.slider.upper)
+               di->item.slider.val = di->item.slider.upper;
+            if (di->item.slider.val_ptr)
+               *di->item.slider.val_ptr = di->item.slider.val;
+            if (di->func)
+               (di->func) (di->val, di->data);
+         }
+       else if (win == di->item.slider.knob_win)
+         {
+            di->item.slider.in_drag = 1;
+            if (di->item.slider.horizontal)
+               di->item.slider.wanted_val = di->item.slider.knob_x;
+            else
+               di->item.slider.wanted_val = di->item.slider.knob_y;
          }
      }
+   di->clicked = 1;
+   DialogDrawItems(d, di, 0, 0, 99999, 99999);
+
+ exit:
+   return 1;
 }
 
-void
+int
 DialogEventMouseUp(XEvent * ev, Window click_was_in)
 {
    Window              win = ev->xbutton.window;
    Dialog             *d;
    int                 bnum;
+   DItem              *di;
 
    d = FindDialogButton(click_was_in, &bnum);
    if (d)
-      DialogActivateButton(click_was_in, 3);
-   else
      {
-       DItem              *di;
+       DialogActivateButton(click_was_in, 3);
+       goto exit;
+     }
+
+   di = FindDialogItem(click_was_in, &d);
+   if (d == NULL)
+      return 0;
+
+   if (di == NULL)
+      goto exit;
 
-       di = FindDialogItem(click_was_in, &d);
-       if (di)
+   di->clicked = 0;
+   if (click_was_in)
+     {
+       if (di->type == DITEM_AREA)
          {
-            di->clicked = 0;
-            if (click_was_in)
-              {
-                 if (di->type == DITEM_AREA)
-                   {
-                      if (di->item.area.event_func)
-                         (di->item.area.event_func) (0, ev);
-                   }
-                 else if (di->type == DITEM_CHECKBUTTON)
-                   {
-                      if (di->item.check_button.onoff)
-                         di->item.check_button.onoff = 0;
-                      else
-                         di->item.check_button.onoff = 1;
-                      if (di->item.check_button.onoff_ptr)
-                         *di->item.check_button.onoff_ptr =
-                            di->item.check_button.onoff;
-                   }
-                 else if (di->type == DITEM_RADIOBUTTON)
-                   {
-                      DItem              *dii;
+            if (di->item.area.event_func)
+               (di->item.area.event_func) (0, ev);
+         }
+       else if (di->type == DITEM_CHECKBUTTON)
+         {
+            if (di->item.check_button.onoff)
+               di->item.check_button.onoff = 0;
+            else
+               di->item.check_button.onoff = 1;
+            if (di->item.check_button.onoff_ptr)
+               *di->item.check_button.onoff_ptr = di->item.check_button.onoff;
+         }
+       else if (di->type == DITEM_RADIOBUTTON)
+         {
+            DItem              *dii;
 
-                      dii = di->item.radio_button.first;
-                      while (dii)
-                        {
-                           if (dii->item.radio_button.onoff)
-                             {
-                                dii->item.radio_button.onoff = 0;
-                                DialogDrawItems(d, dii, 0, 0, 99999, 99999);
-                             }
-                           dii = dii->item.radio_button.next;
-                        }
-                      di->item.radio_button.onoff = 1;
-                      if (di->item.radio_button.val_ptr)
-                         *di->item.radio_button.val_ptr =
-                            di->item.radio_button.val;
-                   }
-                 else if (di->type == DITEM_SLIDER)
+            dii = di->item.radio_button.first;
+            while (dii)
+              {
+                 if (dii->item.radio_button.onoff)
                    {
-                      if (win == di->item.slider.knob_win)
-                         di->item.slider.in_drag = 0;
+                      dii->item.radio_button.onoff = 0;
+                      DialogDrawItems(d, dii, 0, 0, 99999, 99999);
                    }
+                 dii = dii->item.radio_button.next;
               }
-            DialogDrawItems(d, di, 0, 0, 99999, 99999);
-            if (click_was_in)
-              {
-                 if (di->func)
-                    (di->func) (di->val, di->data);
-              }
+            di->item.radio_button.onoff = 1;
+            if (di->item.radio_button.val_ptr)
+               *di->item.radio_button.val_ptr = di->item.radio_button.val;
+         }
+       else if (di->type == DITEM_SLIDER)
+         {
+            if (win == di->item.slider.knob_win)
+               di->item.slider.in_drag = 0;
          }
      }
+   DialogDrawItems(d, di, 0, 0, 99999, 99999);
+   if (click_was_in)
+     {
+       if (di->func)
+          (di->func) (di->val, di->data);
+     }
+
+ exit:
+   return 1;
 }
 
-void
+int
 DialogEventMouseIn(XEvent * ev)
 {
    Window              win = ev->xcrossing.window;
    Dialog             *d;
    int                 bnum;
+   DItem              *di;
 
    d = FindDialogButton(win, &bnum);
-
    if (d)
      {
        DialogActivateButton(win, 0);
+       goto exit;
      }
-   else
-     {
-       DItem              *di;
 
-       di = FindDialogItem(win, &d);
-       if (di)
-         {
-            if (di->type == DITEM_AREA)
-              {
-                 if (di->item.area.event_func)
-                    (di->item.area.event_func) (0, ev);
-              }
-            else if (di->type == DITEM_RADIOBUTTON)
-              {
-                 if (di->item.radio_button.event_func)
-                    (di->item.radio_button.event_func) (di->item.
-                                                        radio_button.val, ev);
-              }
-            di->hilited = 1;
-            DialogDrawItems(d, di, 0, 0, 99999, 99999);
-         }
+   di = FindDialogItem(win, &d);
+   if (d == NULL)
+      return 0;
+
+   if (di == NULL)
+      goto exit;
+
+   if (di->type == DITEM_AREA)
+     {
+       if (di->item.area.event_func)
+          (di->item.area.event_func) (0, ev);
      }
+   else if (di->type == DITEM_RADIOBUTTON)
+     {
+       if (di->item.radio_button.event_func)
+          (di->item.radio_button.event_func) (di->item.radio_button.val, ev);
+     }
+   di->hilited = 1;
+   DialogDrawItems(d, di, 0, 0, 99999, 99999);
+
+ exit:
+   return 1;
 }
 
-void
+int
 DialogEventMouseOut(XEvent * ev)
 {
    Window              win = ev->xcrossing.window;
    Dialog             *d;
    int                 bnum;
+   DItem              *di;
 
    d = FindDialogButton(win, &bnum);
    if (d)
-      DialogActivateButton(win, 1);
-   else
      {
-       DItem              *di;
+       DialogActivateButton(win, 1);
+       goto exit;
+     }
 
-       di = FindDialogItem(win, &d);
-       if (di)
-         {
-            if (di->type == DITEM_AREA)
-              {
-                 if (di->item.area.event_func)
-                    (di->item.area.event_func) (0, ev);
-              }
-            else if (di->type == DITEM_RADIOBUTTON)
-              {
-                 if (di->item.radio_button.event_func)
-                    (di->item.radio_button.event_func) (di->item.
-                                                        radio_button.val,
-                                                        NULL);
-              }
-            di->hilited = 0;
-            DialogDrawItems(d, di, 0, 0, 99999, 99999);
-         }
+   di = FindDialogItem(win, &d);
+   if (d == NULL)
+      return 0;
+
+   if (di == NULL)
+      goto exit;
+
+   if (di->type == DITEM_AREA)
+     {
+       if (di->item.area.event_func)
+          (di->item.area.event_func) (0, ev);
      }
+   else if (di->type == DITEM_RADIOBUTTON)
+     {
+       if (di->item.radio_button.event_func)
+          (di->item.radio_button.event_func) (di->item.radio_button.val, NULL);
+     }
+   di->hilited = 0;
+   DialogDrawItems(d, di, 0, 0, 99999, 99999);
+
+ exit:
+   return 1;
 }
 
 /*
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/evhandlers.c,v
retrieving revision 1.127
retrieving revision 1.128
diff -u -3 -r1.127 -r1.128
--- evhandlers.c        7 Dec 2003 09:18:55 -0000       1.127
+++ evhandlers.c        13 Dec 2003 14:07:14 -0000      1.128
@@ -1348,7 +1348,8 @@
    if (ButtonsEventExpose(ev))
       EDBUG_RETURN_;
 
-   DialogEventExpose(ev);
+   if (DialogEventExpose(ev))
+      EDBUG_RETURN_;
 
    EDBUG_RETURN_;
 }
@@ -1536,7 +1537,8 @@
    if (ButtonsEventMouseDown(ev))
       goto exit;
 
-   DialogEventMouseDown(ev);
+   if (DialogEventMouseDown(ev))
+      goto exit;
 
    ewin = FindEwinByBase(ev->xbutton.window);
    if (ewin)
@@ -1559,7 +1561,8 @@
          }
      }
 
-   PagersEventMouseDown(ev);
+   if (PagersEventMouseDown(ev))
+      goto exit;
 
  exit:
    EDBUG_RETURN_;
@@ -1844,7 +1847,8 @@
    if (ButtonsEventMouseUp(ev, wasmovres, wasdrag))
       goto exit;
 
-   DialogEventMouseUp(ev, click_was_in);
+   if (DialogEventMouseUp(ev, click_was_in))
+      goto exit;
 
    ewin = FindEwinByBase(ev->xbutton.window);
    if (ewin)
@@ -1977,7 +1981,7 @@
    mode.context_win = win;
 
    if (PagersEventMouseIn(ev))
-      EDBUG_RETURN_;
+      goto exit;
 
    {
       Menu               *m;
@@ -2063,7 +2067,8 @@
    if (ButtonsEventMouseIn(ev))
       goto exit;
 
-   DialogEventMouseIn(ev);
+   if (DialogEventMouseIn(ev))
+      goto exit;
 
  exit:
    EDBUG_RETURN_;
@@ -2090,7 +2095,7 @@
    mode.context_win = win;
 
    if (PagersEventMouseOut(ev))
-      EDBUG_RETURN_;
+      goto exit;
 
    {
       Menu               *m;
@@ -2148,7 +2153,8 @@
    if (ButtonsEventMouseOut(ev))
       goto exit;
 
-   DialogEventMouseOut(ev);
+   if (DialogEventMouseOut(ev))
+      goto exit;
 
  exit:
    EDBUG_RETURN_;
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/pager.c,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -3 -r1.49 -r1.50
--- pager.c     9 Dec 2003 20:25:17 -0000       1.49
+++ pager.c     13 Dec 2003 14:07:14 -0000      1.50
@@ -1281,16 +1281,13 @@
 PagerHandleMotion(Pager * p, Window win, int x, int y, int in)
 {
    int                 hx, hy;
-   int                 px, py;
    Window              rw, cw;
    EWin               *ewin = NULL;
 
    if (!mode.show_pagers)
       return;
 
-   XTranslateCoordinates(disp, p->win, root.win, 0, 0, &px, &py, &cw);
-   if (win == p->hi_win)
-      XQueryPointer(disp, p->win, &rw, &cw, &hx, &hy, &x, &y, &hx);
+   XQueryPointer(disp, p->win, &rw, &cw, &hx, &hy, &x, &y, &hx);
 
    if (x >= 0 && x < p->w && y >= 0 && y < p->h)
       ewin = EwinInPagerAt(p, x, y);
@@ -1301,7 +1298,8 @@
      {
        if (in == PAGER_EVENT_MOUSE_OUT)
           PagerShowTt(NULL);
-       PagerShowTt(ewin);
+       else
+          PagerShowTt(ewin);
        return;
      }
 
@@ -1313,13 +1311,11 @@
 
    if (in == PAGER_EVENT_MOUSE_OUT)
      {
-       if (win == p->hi_win)
-          PagerShowTt(NULL);
+       PagerShowTt(NULL);
      }
-
-   if ((in == PAGER_EVENT_MOTION) && ewin != p->hi_ewin)
+   else if ((in == PAGER_EVENT_MOTION) && ewin != p->hi_ewin)
      {
-       int                 wx, wy, ww, wh, ax, ay, cx, cy;
+       int                 wx, wy, ww, wh, ax, ay, cx, cy, px, py;
 
        PagerHideHi(p);
        GetAreaSize(&ax, &ay);
@@ -1329,10 +1325,15 @@
        wy = ((ewin->y + (cy * root.h)) * (p->h / ay)) / root.h;
        ww = ((ewin->w) * (p->w / ax)) / root.w;
        wh = ((ewin->h) * (p->h / ay)) / root.h;
+       XTranslateCoordinates(disp, p->win, root.win, 0, 0, &px, &py, &cw);
        PagerShowHi(p, ewin, px + wx, py + wy, ww, wh);
+       PagerShowTt(ewin);
+     }
+   else if (in == PAGER_EVENT_MOTION)
+     {
+       PagerShowTt(ewin);
      }
 
-   PagerShowTt(ewin);
 }
 
 void
@@ -1541,77 +1542,83 @@
 
 static int         *gwin_px, *gwin_py;
 
-void
+int
 PagersEventMotion(XEvent * ev)
 {
+   int                 used = 0;
    Pager              *p;
 
-   if (mode.mode == MODE_NONE)
+   int                 x, y, dx, dy;
+   int                 ax, ay, cx, cy, i, num;
+   EWin              **gwins;
+
+   switch (mode.mode)
      {
+     case MODE_NONE:
        p = FindPager(ev->xmotion.window);
-       if (p)
-          PagerHandleMotion(p, ev->xmotion.window, ev->xmotion.x,
-                            ev->xmotion.y, PAGER_EVENT_MOTION);
-     }
+       if (p == NULL)
+          break;
+       used = 1;
+       PagerHandleMotion(p, ev->xmotion.window, ev->xmotion.x,
+                         ev->xmotion.y, PAGER_EVENT_MOTION);
+       break;
 
-   if ((mode.mode == MODE_PAGER_DRAG_PENDING) || (mode.mode == MODE_PAGER_DRAG))
-     {
+     case MODE_PAGER_DRAG_PENDING:
+     case MODE_PAGER_DRAG:
        mode.mode = MODE_PAGER_DRAG;
        p = mode.context_pager;
-       if (p)
-         {
-            int                 x, y, dx, dy;
-            int                 ax, ay, cx, cy, i, num;
-            EWin              **gwins;
+       if (p == NULL)
+          break;
 
-            cx = desks.desk[p->desktop].current_area_x;
-            cy = desks.desk[p->desktop].current_area_y;
-            GetAreaSize(&ax, &ay);
-            dx = mode.x - mode.px;
-            dy = mode.y - mode.py;
-            if (!FindItem
-                ((char *)p->hi_ewin, 0, LIST_FINDBY_POINTER, LIST_TYPE_EWIN))
-               p->hi_ewin = NULL;
-            if ((p->hi_ewin) && (!p->hi_ewin->pager)
-                && (!p->hi_ewin->fixedpos))
-              {
-                 Window              dw;
-                 int                 px, py;
+       used = 1;
+       cx = desks.desk[p->desktop].current_area_x;
+       cy = desks.desk[p->desktop].current_area_y;
+       GetAreaSize(&ax, &ay);
+       dx = mode.x - mode.px;
+       dy = mode.y - mode.py;
+       if (!FindItem
+           ((char *)p->hi_ewin, 0, LIST_FINDBY_POINTER, LIST_TYPE_EWIN))
+          p->hi_ewin = NULL;
+       if ((p->hi_ewin) && (!p->hi_ewin->pager) && (!p->hi_ewin->fixedpos))
+         {
+            Window              dw;
+            int                 px, py;
 
-                 GetWinXY(p->hi_win, &x, &y);
-                 XRaiseWindow(disp, p->hi_win);
-                 x += dx;
-                 y += dy;
-                 EMoveWindow(disp, p->hi_win, x, y);
-                 XTranslateCoordinates(disp, p->win, root.win, 0, 0, &px, &py,
-                                       &dw);
-                 x -= px + (cx * (p->w / ax));
-                 y -= py + (cy * (p->h / ay));
-                 MoveEwin(p->hi_ewin, (x * root.w * ax) / p->w,
-                          (y * root.h * ay) / p->h);
-              }
+            GetWinXY(p->hi_win, &x, &y);
+            XRaiseWindow(disp, p->hi_win);
+            x += dx;
+            y += dy;
+            EMoveWindow(disp, p->hi_win, x, y);
+            XTranslateCoordinates(disp, p->win, root.win, 0, 0, &px, &py, &dw);
+            x -= px + (cx * (p->w / ax));
+            y -= py + (cy * (p->h / ay));
+            MoveEwin(p->hi_ewin, (x * root.w * ax) / p->w,
+                     (y * root.h * ay) / p->h);
+         }
 
-            gwins =
-               ListWinGroupMembersForEwin(p->hi_ewin, ACTION_MOVE,
-                                          mode.nogroup, &num);
-            for (i = 0; i < num; i++)
+       gwins =
+          ListWinGroupMembersForEwin(p->hi_ewin, ACTION_MOVE,
+                                     mode.nogroup, &num);
+       for (i = 0; i < num; i++)
+         {
+            if ((gwins[i] != p->hi_ewin) && (!gwins[i]->pager)
+                && (!gwins[i]->fixedpos))
               {
-                 if ((gwins[i] != p->hi_ewin) && (!gwins[i]->pager)
-                     && (!gwins[i]->fixedpos))
-                   {
-                      GetWinXY(gwins[i]->win, &x, &y);
-                      x += (dx * root.w * ax) / p->w;
-                      y += (dy * root.h * ay) / p->h;
-                      MoveEwin(gwins[i], x, y);
-                   }
+                 GetWinXY(gwins[i]->win, &x, &y);
+                 x += (dx * root.w * ax) / p->w;
+                 y += (dy * root.h * ay) / p->h;
+                 MoveEwin(gwins[i], x, y);
               }
-            if (gwins)
-               Efree(gwins);
          }
+       if (gwins)
+          Efree(gwins);
+       break;
      }
+
+   return used;
 }
 
-void
+int
 PagersEventMouseDown(XEvent * ev)
 {
    int                 i, num;
@@ -1620,7 +1627,7 @@
 
    p = FindPager(ev->xbutton.window);
    if (!p)
-      return;
+      return 0;
 
    gwins =
       ListWinGroupMembersForEwin(p->hi_ewin, ACTION_MOVE, mode.nogroup, &num);
@@ -1684,18 +1691,24 @@
             mode.context_pager = p;
          }
      }
+
+   return 1;
 }
 
-void
+int
 PagersEventMouseUp(XEvent * ev)
 {
+   int                 used = 0;
    int                 i, num;
    Pager              *p;
    EWin               *ewin, **gwins;
    int                 pax, pay;
 
    p = FindPager(ev->xbutton.window);
-   if ((p) && ((int)ev->xbutton.button == mode.pager_sel_button))
+   if (p == NULL)
+      goto exit;
+
+   if (((int)ev->xbutton.button == mode.pager_sel_button))
      {
        PagerAreaAt(p, ev->xbutton.x, ev->xbutton.y, &pax, &pay);
        GotoDesktop(p->desktop);
@@ -1705,7 +1718,7 @@
          }
        SetCurrentArea(pax, pay);
      }
-   else if ((p) && ((int)ev->xbutton.button == mode.pager_win_button))
+   else if (((int)ev->xbutton.button == mode.pager_win_button))
      {
        if (ev->xbutton.window == p->hi_win)
          {
@@ -1893,6 +1906,7 @@
        mode.context_pager = NULL;
      }
 
+ exit:
    /* unallocate the space that was holding the old positions of the */
    /* windows */
    if (gwin_px)
@@ -1902,6 +1916,8 @@
        Efree(gwin_py);
        gwin_py = NULL;
      }
+
+   return used;
 }
 
 int




-------------------------------------------------------
This SF.net email is sponsored by: IBM Linux Tutorials.
Become an expert in LINUX or just sharpen your skills.  Sign up for IBM's
Free Linux Tutorials.  Learn everything from the bash shell to sys admin.
Click now! http://ads.osdn.com/?ad_id=1278&alloc_id=3371&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to