Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
        E.h actions.c borders.c buttons.c dialog.c evhandlers.c 
        globals.c menus.c setup.c 


Log Message:
Border event handling code shuffle.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v
retrieving revision 1.175
retrieving revision 1.176
diff -u -3 -r1.175 -r1.176
--- E.h 10 Jan 2004 13:40:59 -0000      1.175
+++ E.h 11 Jan 2004 13:20:16 -0000      1.176
@@ -1188,6 +1188,8 @@
    int                 start_x, start_y;
    char                noewin;
    char                have_place_grab;
+   char                action_inhibit;
+   char                justclicked;
    int                 focusmode;
    char                dockdirmode;
    char                primaryicondir;
@@ -1712,6 +1714,8 @@
 void                SetEInfoOnAll(void);
 EWin               *GetEwinPointerInClient(void);
 EWin               *GetFocusEwin(void);
+EWin               *GetContextEwin(void);
+void                SetContextEwin(EWin * ewin);
 void                SlideEwinTo(EWin * ewin, int fx, int fy, int tx, int ty,
                                int speed);
 void                SlideEwinsTo(EWin ** ewin, int *fx, int *fy, int *tx,
@@ -1734,6 +1738,10 @@
                                  void *ptr);
 EWin               *CreateEwin(void);
 void                FreeEwin(EWin * ewin);
+int                 BordersEventMouseDown(XEvent * ev);
+int                 BordersEventMouseUp(XEvent * ev);
+int                 BordersEventMouseIn(XEvent * ev);
+int                 BordersEventMouseOut(XEvent * ev);
 
 /* windowmatch.c functions */
 WindowMatch        *CreateWindowMatch(char *name);
@@ -2136,8 +2144,7 @@
                                           char dirtomove);
 int                 ButtonsEventExpose(XEvent * ev);
 int                 ButtonsEventMouseDown(XEvent * ev);
-int                 ButtonsEventMouseUp(XEvent * ev, int wasmovres,
-                                       int wasdrag);
+int                 ButtonsEventMouseUp(XEvent * ev);
 int                 ButtonsEventMouseIn(XEvent * ev);
 int                 ButtonsEventMouseOut(XEvent * ev);
 
@@ -2361,7 +2368,7 @@
 void                MenusDestroyLoaded(void);
 void                MenusHideByWindow(Window win);
 int                 MenusEventMouseDown(XEvent * ev);
-int                 MenusEventMouseUp(XEvent * ev, int justclicked);
+int                 MenusEventMouseUp(XEvent * ev);
 int                 MenusEventMouseIn(XEvent * ev);
 int                 MenusEventMouseOut(XEvent * ev);
 
@@ -2640,7 +2647,7 @@
 int                 DialogEventMotion(XEvent * ev);
 int                 DialogEventExpose(XEvent * ev);
 int                 DialogEventMouseDown(XEvent * ev);
-int                 DialogEventMouseUp(XEvent * ev, Window click_was_in);
+int                 DialogEventMouseUp(XEvent * ev);
 int                 DialogEventMouseIn(XEvent * ev);
 int                 DialogEventMouseOut(XEvent * ev);
 
@@ -2825,7 +2832,6 @@
 extern char         queue_up;
 extern char         no_overwrite;
 extern char         clickmenu;
-extern Window       last_bpress;
 extern int          child_count;
 extern pid_t       *e_children;
 extern int          numlock_mask;
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/actions.c,v
retrieving revision 1.126
retrieving revision 1.127
diff -u -3 -r1.126 -r1.127
--- actions.c   9 Jan 2004 09:11:33 -0000       1.126
+++ actions.c   11 Jan 2004 13:20:16 -0000      1.127
@@ -347,6 +347,10 @@
    char                reset_ewin;
 
    EDBUG(5, "EventAclass");
+
+   if (mode.action_inhibit)
+      EDBUG_RETURN(0);
+
    reset_ewin = key = type = button = modifiers = mouse = 0;
    if (!mode.ewin)
      {
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/borders.c,v
retrieving revision 1.118
retrieving revision 1.119
diff -u -3 -r1.118 -r1.119
--- borders.c   9 Jan 2004 09:11:33 -0000       1.118
+++ borders.c   11 Jan 2004 13:20:16 -0000      1.119
@@ -201,6 +201,31 @@
    EDBUG_RETURN(mode.ewin);
 }
 
+#if 0
+EWin               *
+GetContextEwin(void)
+{
+   EDBUG(4, "GetContextEwin");
+
+   if (mode.context_ewin)
+      EDBUG_RETURN(mode.context_ewin);
+
+   if (mode.focuswin)
+      EDBUG_RETURN(mode.focuswin);
+
+   EDBUG_RETURN(mode.mouse_over_win);
+}
+#endif
+
+void
+SetContextEwin(EWin * ewin)
+{
+   EDBUG(4, "SetContextEwin");
+   if (!ewin->menu && !mode.cur_menu_mode)
+      mode.context_ewin = ewin;
+   EDBUG_RETURN_;
+}
+
 void
 SlideEwinTo(EWin * ewin, int fx, int fy, int tx, int ty, int speed)
 {
@@ -3089,4 +3114,133 @@
        ForceUpdatePagersForDesktop(ewin->desktop);
      }
    EDBUG_RETURN_;
+}
+
+/*
+ * Border event handlers
+ */
+typedef void        (border_event_func_t) (XEvent * ev, EWin * ewin, int part);
+
+static void
+BorderWinpartEventMouseDown(XEvent * ev, EWin * ewin, int j)
+{
+   GrabThePointer(ewin->bits[j].win);
+
+   ewin->bits[j].state = STATE_CLICKED;
+   ChangeEwinWinpart(ewin, j);
+
+   mode.ewin = ewin;
+   mode.borderpartpress = 1;
+   if (ewin->border->part[j].aclass)
+      EventAclass(ev, ewin->border->part[j].aclass);
+   mode.borderpartpress = 0;
+}
+
+static void
+BorderWinpartEventMouseUp(XEvent * ev, EWin * ewin, int j)
+{
+   Window              win2;
+
+   if ((ewin->bits[j].state == STATE_CLICKED) && (!ewin->bits[j].left))
+      ewin->bits[j].state = STATE_HILITED;
+   else
+      ewin->bits[j].state = STATE_NORMAL;
+   ewin->bits[j].left = 0;
+   ChangeEwinWinpart(ewin, j);
+
+   win2 = WindowAtXY(ev->xbutton.x_root, ev->xbutton.y_root);
+   mode.borderpartpress = 1;
+   if (win2 == mode.context_win && (ewin->border->part[j].aclass))
+      EventAclass(ev, ewin->border->part[j].aclass);
+   mode.borderpartpress = 0;
+}
+
+static void
+BorderWinpartEventEnter(XEvent * ev, EWin * ewin, int j)
+{
+   mode.noewin = 0;
+   mode.ewin = ewin;
+
+   if (ewin->bits[j].state == STATE_CLICKED)
+      ewin->bits[j].left = 0;
+   else
+     {
+       ewin->bits[j].state = STATE_HILITED;
+       ChangeEwinWinpart(ewin, j);
+       if (ewin->border->part[j].aclass)
+          EventAclass(ev, ewin->border->part[j].aclass);
+     }
+}
+
+static void
+BorderWinpartEventLeave(XEvent * ev, EWin * ewin, int j)
+{
+   if (mode.mode == MODE_NONE)
+      mode.ewin = NULL;
+   else
+      mode.noewin = 1;
+
+   if (ewin->bits[j].state == STATE_CLICKED)
+      ewin->bits[j].left = 1;
+   else
+     {
+       ewin->bits[j].state = STATE_NORMAL;
+       ChangeEwinWinpart(ewin, j);
+       if (ewin->border->part[j].aclass)
+          EventAclass(ev, ewin->border->part[j].aclass);
+     }
+}
+
+static int
+BordersEvent(XEvent * ev, border_event_func_t * func)
+{
+   Window              win = ev->xany.window;
+   EWin              **ewins;
+   int                 i, j, num, used = 0;
+
+   ewins = (EWin **) ListItemType(&num, LIST_TYPE_EWIN);
+   for (i = 0; i < num; i++)
+     {
+       for (j = 0; j < ewins[i]->border->num_winparts; j++)
+         {
+            if (win == ewins[i]->bits[j].win)
+              {
+                 SetContextEwin(ewins[i]);
+                 func(ev, ewins[i], j);
+
+                 used = 1;
+                 goto exit;
+              }
+         }
+     }
+
+ exit:
+   if (ewins)
+      Efree(ewins);
+
+   return used;
+}
+
+int
+BordersEventMouseDown(XEvent * ev)
+{
+   return BordersEvent(ev, BorderWinpartEventMouseDown);
+}
+
+int
+BordersEventMouseUp(XEvent * ev)
+{
+   return BordersEvent(ev, BorderWinpartEventMouseUp);
+}
+
+int
+BordersEventMouseIn(XEvent * ev)
+{
+   return BordersEvent(ev, BorderWinpartEventEnter);
+}
+
+int
+BordersEventMouseOut(XEvent * ev)
+{
+   return BordersEvent(ev, BorderWinpartEventLeave);
 }
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/buttons.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -3 -r1.25 -r1.26
--- buttons.c   3 Jan 2004 12:21:51 -0000       1.25
+++ buttons.c   11 Jan 2004 13:20:16 -0000      1.26
@@ -636,7 +636,7 @@
 }
 
 int
-ButtonsEventMouseUp(XEvent * ev, int wasmovres, int wasdrag)
+ButtonsEventMouseUp(XEvent * ev)
 {
    int                 used = 0;
    int                 i, num;
@@ -652,7 +652,7 @@
        if ((win != buttons[i]->win) && (win != buttons[i]->event_win))
           continue;
 
-       if ((buttons[i]->inside_win) && (!wasmovres))
+       if (buttons[i]->inside_win && !mode.action_inhibit)
          {
             Window              id = ev->xany.window;  /* ??? */
 
@@ -668,9 +668,8 @@
           buttons[i]->state = STATE_NORMAL;
        buttons[i]->left = 0;
        ButtonDraw(buttons[i]);
-       if ((buttons[i]->aclass) && (!wasdrag) && (!wasmovres))
+       if (buttons[i]->aclass)
           EventAclass(ev, buttons[i]->aclass);
-       last_bpress = 0;
        used = 1;
        break;
      }
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/dialog.c,v
retrieving revision 1.72
retrieving revision 1.73
diff -u -3 -r1.72 -r1.73
--- dialog.c    3 Jan 2004 12:55:08 -0000       1.72
+++ dialog.c    11 Jan 2004 13:20:16 -0000      1.73
@@ -2375,21 +2375,21 @@
 }
 
 int
-DialogEventMouseUp(XEvent * ev, Window click_was_in)
+DialogEventMouseUp(XEvent * ev)
 {
-   Window              win = ev->xbutton.window;
+   Window              win = mode.context_win;
    Dialog             *d;
    int                 bnum;
    DItem              *di;
 
-   d = FindDialogButton(click_was_in, &bnum);
+   d = FindDialogButton(win, &bnum);
    if (d)
      {
-       DialogActivateButton(click_was_in, 3);
+       DialogActivateButton(win, 3);
        goto exit;
      }
 
-   di = FindDialogItem(click_was_in, &d);
+   di = FindDialogItem(win, &d);
    if (d == NULL)
       return 0;
 
@@ -2397,7 +2397,7 @@
       goto exit;
 
    di->clicked = 0;
-   if (click_was_in)
+   if (win)
      {
        if (di->type == DITEM_AREA)
          {
@@ -2438,7 +2438,7 @@
          }
      }
    DialogDrawItems(d, di, 0, 0, 99999, 99999);
-   if (click_was_in)
+   if (win)
      {
        if (di->func)
           (di->func) (di->val, di->data);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/evhandlers.c,v
retrieving revision 1.136
retrieving revision 1.137
diff -u -3 -r1.136 -r1.137
--- evhandlers.c        10 Jan 2004 13:40:59 -0000      1.136
+++ evhandlers.c        11 Jan 2004 13:20:17 -0000      1.137
@@ -27,7 +27,7 @@
 static void         ToolTipTimeout(int val, void *data);
 
 static char         sentpress = 0;
-static Window       click_was_in = 0;
+static Window       last_bpress = 0;
 static Time         last_time = 0;
 static int          last_button = 0;
 
@@ -1269,10 +1269,9 @@
 void
 HandleMouseDown(XEvent * ev)
 {
-   Window              win;
+   Window              win = ev->xbutton.window;
    EWin               *ewin;
-   EWin              **ewins;
-   int                 i, j, num;
+   int                 i;
    int                 desk_click;
    char                double_click = 0;
    float               mode_double_click_time = 0.25;
@@ -1314,10 +1313,10 @@
        mode_double_click_time)
        && ((int)(ev->xbutton.button) == (int)(last_button)))
       double_click = 1;
+
    last_time = ev->xbutton.time;
    last_button = ev->xbutton.button;
-
-   last_bpress = click_was_in = win = ev->xbutton.window;
+   last_bpress = win;
 
    mode.x = ev->xbutton.x_root;
    mode.y = ev->xbutton.y_root;
@@ -1373,36 +1372,8 @@
    if (double_click)
       ev->xbutton.time = 0;
 
-   ewins = (EWin **) ListItemType(&num, LIST_TYPE_EWIN);
-   if (ewins)
-     {
-       for (i = 0; i < num; i++)
-         {
-            for (j = 0; j < ewins[i]->border->num_winparts; j++)
-              {
-                 if (win == ewins[i]->bits[j].win)
-                   {
-                      if (!clickmenu)
-                        {
-                           GrabThePointer(win);
-                           mode.ewin = ewins[i];
-                           ewins[i]->bits[j].state = STATE_CLICKED;
-                           ChangeEwinWinpart(ewins[i], j);
-                           if ((!ewins[i]->menu) && (!mode.cur_menu_mode))
-                              mode.context_ewin = ewins[i];
-                           mode.borderpartpress = 1;
-                           if (ewins[i]->border->part[j].aclass)
-                              EventAclass(ev,
-                                          ewins[i]->border->part[j].aclass);
-                           mode.borderpartpress = 0;
-                        }
-                      Efree(ewins);
-                      EDBUG_RETURN_;
-                   }
-              }
-         }
-       Efree(ewins);
-     }
+   if (!clickmenu && BordersEventMouseDown(ev))
+      goto exit;
 
    if (ButtonsEventMouseDown(ev))
       goto exit;
@@ -1410,7 +1381,7 @@
    if (DialogEventMouseDown(ev))
       goto exit;
 
-   ewin = FindEwinByBase(ev->xbutton.window);
+   ewin = FindEwinByBase(win);
    if (ewin)
      {
        ActionClass        *ac;
@@ -1425,7 +1396,7 @@
             if (EventAclass(ev, ac))
               {
                  mode.borderpartpress = 0;
-                 EDBUG_RETURN_;
+                 goto exit;
               }
             mode.borderpartpress = 0;
          }
@@ -1441,13 +1412,9 @@
 void
 HandleMouseUp(XEvent * ev)
 {
-   Window              win, win2;
+   Window              win = ev->xbutton.window;
    EWin               *ewin;
-   EWin              **ewins;
-   int                 i, j, num;
-   char                wasdrag;
-   char                wasmovres;
-   char                justclicked = 0;
+   int                 i, num;
    Slideout           *pslideout;
    EWin              **gwins;
 
@@ -1464,35 +1431,12 @@
    TooltipsHandleEvent();
    UnGrabTheButtons();
 
-   win2 = WindowAtXY(ev->xbutton.x_root, ev->xbutton.y_root);
-   win = ev->xbutton.window;
-
    mode.x = ev->xbutton.x_root;
    mode.y = ev->xbutton.y_root;
 
-   if ((mode.place) && (mode.mode == MODE_MOVE))
-     {
-       ewin = mode.ewin;
-       if (ewin)
-         {
-            gwins =
-               ListWinGroupMembersForEwin(ewin, ACTION_MOVE, mode.nogroup,
-                                          &num);
-            if ((mode.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.place = 0;
-       EDBUG_RETURN_;
-     }
+   pslideout = mode.slideout;
 
+#if 0                          /* Do we need this? */
    if ((last_bpress) && (last_bpress != win))
      {
        ewin = FindEwinByChildren(last_bpress);
@@ -1513,18 +1457,16 @@
                    }
               }
          }
-       last_bpress = 0;
      }
+#endif
 
-   wasdrag = 0;
-   wasmovres = 0;
    switch (mode.mode)
      {
      case MODE_RESIZE:
      case MODE_RESIZE_H:
      case MODE_RESIZE_V:
        doResizeEnd(NULL);
-       wasmovres = 1;
+       mode.action_inhibit = 1;
        break;
      case MODE_MOVE:
        ewin = mode.ewin;
@@ -1544,9 +1486,21 @@
             mode.have_place_grab = 0;
             XUngrabPointer(disp, CurrentTime);
          }
-       mode.place = 0;
-       wasmovres = 1;
        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;
@@ -1557,89 +1511,32 @@
        sentpress = 0;
        XSendEvent(disp, bpress_win, False, SubstructureNotifyMask, ev);
      }
-   mode.context_win = click_was_in;
+   mode.context_win = last_bpress;
 
-   pslideout = mode.slideout;
    ewin = SlideoutsGetContextEwin();
    if (ewin)
       mode.ewin = ewin;
 
-   if (mode.mode == MODE_DESKDRAG)
-      mode.mode = MODE_NONE;
-   if (mode.mode == MODE_BUTTONDRAG)
-     {
-       if (!mode.button_move_pending)
-          wasdrag = 1;
-       doDragButtonEnd(NULL);
-     }
-
    if ((((float)(ev->xbutton.time - last_time) / 1000) < 0.5)
        && (mode.cur_menu_depth > 0) && (!clickmenu))
      {
        clickmenu = 1;
-       justclicked = 1;
+       mode.justclicked = 1;
      }
 
-   if (MenusEventMouseUp(ev, justclicked))
+   if (MenusEventMouseUp(ev))
       goto exit;
 
-   ewins = (EWin **) ListItemType(&num, LIST_TYPE_EWIN);
-   for (i = 0; i < num; i++)
-     {
-       for (j = 0; j < ewins[i]->border->num_winparts; j++)
-         {
-            if (click_was_in == ewins[i]->bits[j].win)
-              {
-                 if (!clickmenu)
-                   {
-                      if (ewins[i] == mode.ewin)
-                        {
-                           switch (mode.mode)
-                             {
-                             case MODE_RESIZE:
-                             case MODE_RESIZE_H:
-                             case MODE_RESIZE_V:
-                                doResizeEnd(NULL);
-                                break;
-                             case MODE_MOVE:
-                                doMoveEnd(NULL);
-                                break;
-                             default:
-                                break;
-                             }
-                        }
-                      if ((ewins[i]->bits[j].state == STATE_CLICKED)
-                          && (!ewins[i]->bits[j].left))
-                         ewins[i]->bits[j].state = STATE_HILITED;
-                      else
-                         ewins[i]->bits[j].state = STATE_NORMAL;
-                      ewins[i]->bits[j].left = 0;
-                      ChangeEwinWinpart(ewins[i], j);
-                      if ((!ewins[i]->menu) && (!mode.cur_menu_mode))
-                         mode.context_ewin = ewins[i];
-                      mode.borderpartpress = 1;
-                      if ((click_was_in == win2)
-                          && (ewins[i]->border->part[j].aclass)
-                          && (!wasmovres))
-                         EventAclass(ev, ewins[i]->border->part[j].aclass);
-                      mode.borderpartpress = 0;
-                   }
-                 Efree(ewins);
-                 last_bpress = 0;
-                 goto exit;
-              }
-         }
-     }
-   if (ewins)
-      Efree(ewins);
+   if (!clickmenu && BordersEventMouseUp(ev))
+      goto exit;
 
-   if (ButtonsEventMouseUp(ev, wasmovres, wasdrag))
+   if (ButtonsEventMouseUp(ev))
       goto exit;
 
-   if (DialogEventMouseUp(ev, click_was_in))
+   if (DialogEventMouseUp(ev))
       goto exit;
 
-   ewin = FindEwinByBase(ev->xbutton.window);
+   ewin = FindEwinByBase(win);
    if (ewin)
      {
        ActionClass        *ac;
@@ -1658,14 +1555,16 @@
          }
      }
 
-   if (!wasmovres)
-      PagersEventMouseUp(ev);
+   if (PagersEventMouseUp(ev))
+      goto exit;
 
  exit:
    if ((mode.slideout) && (pslideout))
       SlideoutHide(mode.slideout);
 
-   click_was_in = 0;
+   mode.action_inhibit = 0;
+   mode.justclicked = 0;
+   last_bpress = 0;
 
    EDBUG_RETURN_;
 }
@@ -1673,16 +1572,20 @@
 void
 HandleMouseIn(XEvent * ev)
 {
-   Window              win;
-   EWin              **ewins;
-   int                 i, j, num;
+   Window              win = ev->xcrossing.window;
 
    EDBUG(5, "HandleMouseIn");
 
+   if (mode.mode != MODE_NONE)
+      EDBUG_RETURN_;
+
+   if (win == root.win)
+      goto exit;
+
+   mode.context_win = win;
+
    TooltipsHandleEvent();
    EdgeHandleEnter(ev);
-   win = ev->xcrossing.window;
-   mode.context_win = win;
 
    if (PagersEventMouseIn(ev))
       goto exit;
@@ -1690,37 +1593,8 @@
    if (MenusEventMouseIn(ev))
       goto exit;
 
-   ewins = (EWin **) ListItemType(&num, LIST_TYPE_EWIN);
-   for (i = 0; i < num; i++)
-     {
-       for (j = 0; j < ewins[i]->border->num_winparts; j++)
-         {
-            if (win == ewins[i]->bits[j].win)
-              {
-                 if (!clickmenu)
-                   {
-                      mode.noewin = 0;
-                      mode.ewin = ewins[i];
-                      if (ewins[i]->bits[j].state == STATE_CLICKED)
-                         ewins[i]->bits[j].left = 0;
-                      else
-                        {
-                           ewins[i]->bits[j].state = STATE_HILITED;
-                           ChangeEwinWinpart(ewins[i], j);
-                           if ((!ewins[i]->menu) && (!mode.cur_menu_mode))
-                              mode.context_ewin = ewins[i];
-                           if (ewins[i]->border->part[j].aclass)
-                              EventAclass(ev,
-                                          ewins[i]->border->part[j].aclass);
-                        }
-                   }
-                 Efree(ewins);
-                 EDBUG_RETURN_;
-              }
-         }
-     }
-   if (ewins)
-      Efree(ewins);
+   if (!clickmenu && BordersEventMouseIn(ev))
+      goto exit;
 
    if (ButtonsEventMouseIn(ev))
       goto exit;
@@ -1735,17 +1609,16 @@
 void
 HandleMouseOut(XEvent * ev)
 {
-   Window              win;
-   EWin              **ewins;
-   int                 i, j, num;
+   Window              win = ev->xcrossing.window;
 
    EDBUG(5, "HandleMouseOut");
 
-   TooltipsHandleEvent();
+   if (mode.mode != MODE_NONE)
+      EDBUG_RETURN_;
 
+   TooltipsHandleEvent();
    EdgeHandleLeave(ev);
 
-   win = ev->xcrossing.window;
    mode.context_win = win;
 
    if (PagersEventMouseOut(ev))
@@ -1756,39 +1629,8 @@
 
    ICCCM_Cmap(NULL);
 
-   ewins = (EWin **) ListItemType(&num, LIST_TYPE_EWIN);
-   for (i = 0; i < num; i++)
-     {
-       for (j = 0; j < ewins[i]->border->num_winparts; j++)
-         {
-            if (win == ewins[i]->bits[j].win)
-              {
-                 if (!clickmenu)
-                   {
-                      if (mode.mode == MODE_NONE)
-                         mode.ewin = NULL;
-                      else
-                         mode.noewin = 1;
-                      if (ewins[i]->bits[j].state == STATE_CLICKED)
-                         ewins[i]->bits[j].left = 1;
-                      else
-                        {
-                           ewins[i]->bits[j].state = STATE_NORMAL;
-                           ChangeEwinWinpart(ewins[i], j);
-                           if ((!ewins[i]->menu) && (!mode.cur_menu_mode))
-                              mode.context_ewin = ewins[i];
-                           if (ewins[i]->border->part[j].aclass)
-                              EventAclass(ev,
-                                          ewins[i]->border->part[j].aclass);
-                        }
-                   }
-                 Efree(ewins);
-                 EDBUG_RETURN_;
-              }
-         }
-     }
-   if (ewins)
-      Efree(ewins);
+   if (!clickmenu && BordersEventMouseOut(ev))
+      goto exit;
 
    if (ButtonsEventMouseOut(ev))
       goto exit;
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/globals.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -3 -r1.22 -r1.23
--- globals.c   4 Jan 2004 18:07:18 -0000       1.22
+++ globals.c   11 Jan 2004 13:20:17 -0000      1.23
@@ -65,7 +65,6 @@
 char                queue_up;
 char                no_overwrite = 0;
 char                clickmenu = 0;
-Window              last_bpress = 0;
 int                 child_count = 0;
 pid_t              *e_children = NULL;
 int                 numlock_mask = 0;
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/menus.c,v
retrieving revision 1.93
retrieving revision 1.94
diff -u -3 -r1.93 -r1.94
--- menus.c     28 Dec 2003 17:57:30 -0000      1.93
+++ menus.c     11 Jan 2004 13:20:17 -0000      1.94
@@ -2235,7 +2235,6 @@
    MenuHideMasker();
    mode.cur_menu_depth = 0;
    mode.cur_menu_mode = 0;
-   last_bpress = 0;
    clickmenu = 0;
 }
 
@@ -2310,7 +2309,7 @@
 }
 
 int
-MenusEventMouseUp(XEvent * ev, int justclicked)
+MenusEventMouseUp(XEvent * ev)
 {
    Menu               *m;
    MenuItem           *mi;
@@ -2320,7 +2319,7 @@
      {
        mi->state = STATE_HILITED;
        MenuDrawItem(m, mi, 1);
-       if ((mi->act_id) && (!justclicked))
+       if ((mi->act_id) && (!mode.justclicked))
          {
             (*(ActionFunctions[mi->act_id])) (mi->params);
             if (clickmenu)
@@ -2363,7 +2362,7 @@
        return 1;
      }
 
-   if ((mode.cur_menu_mode) && (!justclicked))
+   if ((mode.cur_menu_mode) && (!mode.justclicked))
      {
        MenusHide();
        return 1;
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/setup.c,v
retrieving revision 1.100
retrieving revision 1.101
diff -u -3 -r1.100 -r1.101
--- setup.c     3 Jan 2004 23:59:06 -0000       1.100
+++ setup.c     11 Jan 2004 13:20:17 -0000      1.101
@@ -382,11 +382,13 @@
       if (mod)
         XFreeModifiermap(mod);
    }
+
    /* Now we're going to set a bunch of default settings in E - in case we
     * don't ever get to load a config file for some odd reason.
     * Also, we'll take this opportunity to initialize all of our
     * important state variables.
     */
+   memset(&mode, 0, sizeof(mode));
 
    mode.next_move_x_plus = 0;
    mode.next_move_y_plus = 0;




-------------------------------------------------------
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

Reply via email to