Enlightenment CVS committal

Author  : kwo
Project : e16
Module  : e

Dir     : e16/e/src


Modified Files:
      Tag: branch-exp
        E.h actions.c borders.c buttons.c ecompmgr.c ecore-e16.c 
        ecore-e16.h events.c ewmh.c focus.c ipc.c menus.c mod-misc.c 
        warp.c 


Log Message:
Bits and pieces.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v
retrieving revision 1.314.2.57
retrieving revision 1.314.2.58
diff -u -3 -r1.314.2.57 -r1.314.2.58
--- E.h 23 Oct 2004 14:23:38 -0000      1.314.2.57
+++ E.h 27 Oct 2004 23:32:47 -0000      1.314.2.58
@@ -1072,7 +1072,6 @@
    int                 mode;
    char                place;
    char                flipp;
-   Button             *button;
    int                 resize_detail;
    int                 win_x, win_y, win_w, win_h;
    int                 start_x, start_y;
@@ -1098,9 +1097,10 @@
    char                keybinds_changed;
    Window              button_proxy_win;
    const XEvent       *current_event;
+   Time                last_time;
    Window              last_bpress;
    unsigned int        last_button;
-   Time                last_time;
+   unsigned int        last_keycode;
    char                double_click;
    char                queue_up;
 }
@@ -2218,6 +2218,9 @@
                                      int x, int y, const char *text, Efont * f,
                                      Visual * vis, Colormap cm);
 
+/* warp.c */
+void                WarpFocus(int delta);
+
 /* windowmatch.c */
 int                 WindowMatchConfigLoad(FILE * fs);
 Border             *MatchEwinBorder(EWin * ewin, WindowMatch * b);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/actions.c,v
retrieving revision 1.174.2.20
retrieving revision 1.174.2.21
diff -u -3 -r1.174.2.20 -r1.174.2.21
--- actions.c   20 Oct 2004 21:04:02 -0000      1.174.2.20
+++ actions.c   27 Oct 2004 23:32:49 -0000      1.174.2.21
@@ -155,8 +155,6 @@
 void
 ActionsHandleMotion(void)
 {
-   int                 dx, dy;
-
    switch (Mode.mode)
      {
      case MODE_MOVE_PENDING:
@@ -174,39 +172,6 @@
        DeskDragMotion();
        break;
 
-     case MODE_BUTTONDRAG:
-       dx = Mode.x - Mode.px;
-       dy = Mode.y - Mode.py;
-#if 0
-       if (Mode.button_move_pending)
-         {
-            int                 x, y;
-
-            x = Mode.x - Mode.start_x;
-            y = Mode.y - Mode.start_y;
-            if (x < 0)
-               x = -x;
-            if (y < 0)
-               y = -y;
-            if ((x > Conf.button_move_resistance)
-                || (y > Conf.button_move_resistance))
-               Mode.button_move_pending = 0;
-         }
-       if (!Mode.button_move_pending)
-         {
-            if (Mode.button)
-              {
-                 ButtonMoveRelative(Mode.button, dx, dy);
-                 if (Conf.deskmode == MODE_DESKRAY)
-                   {
-                      MoveDesktop(Mode.deskdrag, desks.desk[Mode.deskdrag].x,
-                                  desks.desk[Mode.deskdrag].y + dy);
-                   }
-              }
-         }
-#endif
-       break;
-
      default:
        break;
      }
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/borders.c,v
retrieving revision 1.221.2.15
retrieving revision 1.221.2.16
diff -u -3 -r1.221.2.15 -r1.221.2.16
--- borders.c   17 Oct 2004 08:47:24 -0000      1.221.2.15
+++ borders.c   27 Oct 2004 23:32:50 -0000      1.221.2.16
@@ -988,14 +988,16 @@
       wbit->state = STATE_HILITED;
    else
       wbit->state = STATE_NORMAL;
-   wbit->left = 0;
 #if DEBUG_BORDER_EVENTS
    Eprintf("BorderWinpartEventMouseUp %#lx %d\n", wbit->win, wbit->state);
 #endif
    BorderWinpartChange(ewin, part, 0);
 
-   if (wbit->win == Mode.last_bpress && ewin->border->part[part].aclass)
+   if (wbit->win == Mode.last_bpress && !wbit->left &&
+       ewin->border->part[part].aclass)
       EventAclass(ev, ewin, ewin->border->part[part].aclass);
+
+   wbit->left = 0;
 }
 
 static void
@@ -1027,9 +1029,9 @@
 #if DEBUG_BORDER_EVENTS
    Eprintf("BorderWinpartEventLeave %#lx %d\n", wbit->win, wbit->state);
 #endif
-#if 0
    if (wbit->state == STATE_CLICKED)
       wbit->left = 1;
+#if 0
    else
      {
        wbit->state = STATE_NORMAL;
@@ -1038,10 +1040,13 @@
           EventAclass(ev, ewin, ewin->border->part[part].aclass);
      }
 #else
-   wbit->left = 0;
+   else
+     {
+       if (ewin->border->part[part].aclass)
+          EventAclass(ev, ewin, ewin->border->part[part].aclass);
+     }
    wbit->state = STATE_NORMAL;
    BorderWinpartChange(ewin, part, 0);
-   ev = NULL;
 #endif
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/buttons.c,v
retrieving revision 1.36.2.13
retrieving revision 1.36.2.14
diff -u -3 -r1.36.2.13 -r1.36.2.14
--- buttons.c   20 Oct 2004 21:04:05 -0000      1.36.2.13
+++ buttons.c   27 Oct 2004 23:32:51 -0000      1.36.2.14
@@ -22,6 +22,11 @@
  */
 #include "E.h"
 
+#define BUTTON_EVENT_MASK \
+  (ExposureMask | KeyPressMask | KeyReleaseMask | \
+   ButtonPressMask | ButtonReleaseMask | EnterWindowMask | LeaveWindowMask)
+/* PointerMotionMask */
+
 typedef struct _bgeometry
 {
    Constraints         width, height;
@@ -59,6 +64,11 @@
    unsigned int        ref_count;
 };
 
+static struct
+{
+   Button             *button;
+} Mode_button;
+
 static void         ButtonHandleEvents(XEvent * ev, void *btn);
 
 Button             *
@@ -126,10 +136,7 @@
    b->used = 0;
    b->left = 0;
    EoSetWin(b, ECreateWindow(DeskGetWin(desk), -100, -100, 50, 50, 0));
-   XSelectInput(disp, EoGetWin(b),
-               ExposureMask | KeyPressMask | KeyReleaseMask | ButtonPressMask |
-               ButtonReleaseMask | EnterWindowMask | LeaveWindowMask |
-               PointerMotionMask);
+   XSelectInput(disp, EoGetWin(b), BUTTON_EVENT_MASK);
    EventCallbackRegister(EoGetWin(b), 0, ButtonHandleEvents, b);
    EoSetX(b, -1);
    EoSetY(b, -1);
@@ -571,43 +578,25 @@
    EDBUG_RETURN(0);
 }
 
-#if 0                          /* FIXME - Fix */
-
-static int
-doDragButtonStart(EWin * edummy __UNUSED__, const char *params __UNUSED__)
+static void
+ButtonDragStart(Button * b)
 {
-   Button             *b;
-
-   b = Mode.button;
-   if (!b)
-      return 0;
-
    if (ButtonIsFixed(b))
-     {
-       Mode.button = NULL;
-       return 0;
-     }
+      return;
 
-   GrabPointerSet(VRoot.win, ECSR_GRAB, 0);
+   GrabPointerSet(EoGetWin(b), ECSR_GRAB, 0);
    Mode.mode = MODE_BUTTONDRAG;
    Mode.button_move_pending = 1;
    Mode.start_x = Mode.x;
    Mode.start_y = Mode.y;
    ButtonGetGeometry(b, &Mode.win_x, &Mode.win_y, NULL, NULL);
-
-   return 0;
 }
 
-int
-doDragButtonEnd(const char *params __UNUSED__)
+static void
+ButtonDragEnd(Button * b)
 {
-   Button             *b;
    int                 d;
 
-   b = Mode.button;
-   if (!b)
-      return 0;
-
    Mode.mode = MODE_NONE;
    GrabPointerRelease();
    if (!Mode.button_move_pending)
@@ -615,16 +604,13 @@
        d = DesktopAt(Mode.x, Mode.y);
        ButtonMoveToDesktop(b, d);
        d = ButtonGetDesktop(b);
-       ButtonMoveRelative(b, -desks.desk[d].x, -desks.desk[d].y);
+       ButtonMoveRelative(b, -DeskGetX(d), -DeskGetY(d));
      }
    else
       Mode.button_move_pending = 0;
 
    autosave();
-
-   return 0;
 }
-#endif
 
 /*
  * Functions operating on all buttons
@@ -675,6 +661,8 @@
    Window              win = ev->xbutton.window;
    ActionClass        *ac;
 
+   Mode_button.button = b;
+
    GrabPointerSet(win, ECSR_GRAB, 0);
 
    if (b->inside_win)
@@ -684,7 +672,6 @@
        ev->xbutton.window = win;
      }
 
-   Mode.button = b;
    b->state = STATE_CLICKED;
    ButtonDraw(b);
 
@@ -707,22 +694,64 @@
        ev->xbutton.window = win;
      }
 
-   Mode.button = b;
    if ((b->state == STATE_CLICKED) && (!b->left))
       b->state = STATE_HILITED;
    else
       b->state = STATE_NORMAL;
-   b->left = 0;
    ButtonDraw(b);
 
-   if (b->aclass)
+   if (b->aclass && !b->left)
       EventAclass(ev, NULL, b->aclass);
+
+   b->left = 0;
+
+   if (Mode.mode == MODE_BUTTONDRAG)
+      ButtonDragEnd(Mode_button.button);
+   Mode_button.button = NULL;
+}
+
+static void
+ButtonEventMotion(Button * b, XEvent * ev __UNUSED__)
+{
+   int                 dx, dy;
+
+   if (Mode.mode != MODE_BUTTONDRAG)
+      return;
+
+   dx = Mode.x - Mode.px;
+   dy = Mode.y - Mode.py;
+
+   if (Mode.button_move_pending)
+     {
+       int                 x, y;
+
+       x = Mode.x - Mode.start_x;
+       y = Mode.y - Mode.start_y;
+       if (x < 0)
+          x = -x;
+       if (y < 0)
+          y = -y;
+       if ((x > Conf.button_move_resistance) ||
+           (y > Conf.button_move_resistance))
+          Mode.button_move_pending = 0;
+     }
+   if (!Mode.button_move_pending)
+     {
+       if (b)
+         {
+            ButtonMoveRelative(b, dx, dy);
+            if (Conf.deskmode == MODE_DESKRAY)
+              {
+                 MoveDesktop(Mode.deskdrag, DeskGetX(Mode.deskdrag),
+                             DeskGetY(Mode.deskdrag) + dy);
+              }
+         }
+     }
 }
 
 static void
 ButtonEventMouseIn(Button * b, XEvent * ev)
 {
-   Mode.button = b;
    if (b->state == STATE_CLICKED)
       b->left = 0;
    else
@@ -737,7 +766,6 @@
 static void
 ButtonEventMouseOut(Button * b, XEvent * ev)
 {
-   Mode.button = NULL;
    if (b->state == STATE_CLICKED)
       b->left = 1;
    else
@@ -762,6 +790,9 @@
      case ButtonRelease:
        ButtonEventMouseUp(b, ev);
        break;
+     case MotionNotify:
+       ButtonEventMotion(b, ev);
+       break;
      case EnterNotify:
        ButtonEventMouseIn(b, ev);
        break;
@@ -1201,6 +1232,11 @@
           Efree(lst);
 
      }
+   else if (!strncmp(cmd, "move", 2))
+     {
+       if (Mode_button.button)
+          ButtonDragStart(Mode_button.button);
+     }
 }
 
 static void
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/Attic/ecompmgr.c,v
retrieving revision 1.1.2.4
retrieving revision 1.1.2.5
diff -u -3 -r1.1.2.4 -r1.1.2.5
--- ecompmgr.c  25 Oct 2004 22:14:21 -0000      1.1.2.4
+++ ecompmgr.c  27 Oct 2004 23:32:52 -0000      1.1.2.5
@@ -348,6 +348,8 @@
    ECompMgrDamageMerge(ERegionCreate(0, 0, VRoot.w, VRoot.h), 1);
 
    desks[desk].bgpict = pict;
+
+   return pict;
 }
 
 static void
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/Attic/ecore-e16.c,v
retrieving revision 1.1.2.3
retrieving revision 1.1.2.4
diff -u -3 -r1.1.2.3 -r1.1.2.4
--- ecore-e16.c 23 Oct 2004 15:36:27 -0000      1.1.2.3
+++ ecore-e16.c 27 Oct 2004 23:32:52 -0000      1.1.2.4
@@ -25,6 +25,9 @@
  */
 #include "E.h"
 
+#define _ATOM_GET(name) \
+   XInternAtom(_ecore_x_disp, name, False)
+
 #define _ATOM_SET_UTF8_STRING(atom, win, string) \
    XChangeProperty(_ecore_x_disp, win, atom, _ecore_x_atom_utf8_string, 8, 
PropModeReplace, \
                    (unsigned char *)string, strlen(string))
@@ -177,6 +180,9 @@
 #ifndef USE_ECORE_X
 Atom                _ecore_x_atom_utf8_string;
 
+Atom                _ecore_x_atom_net_supported;
+Atom                _ecore_x_atom_net_supporting_wm_check;
+
 Atom                _ecore_x_atom_net_number_of_desktops;
 Atom                _ecore_x_atom_net_virtual_roots;
 Atom                _ecore_x_atom_net_desktop_names;
@@ -190,38 +196,106 @@
 Atom                _ecore_x_atom_net_client_list_stacking;
 Atom                _ecore_x_atom_net_active_window;
 
+Atom                _ecore_x_atom_net_wm_name;
+
 void
 ecore_x_netwm_init(void)
 {
    _ecore_x_atom_utf8_string = XInternAtom(_ecore_x_disp, "UTF8_STRING", False);
 
-   _ecore_x_atom_net_number_of_desktops =
-      XInternAtom(_ecore_x_disp, "_NET_NUMBER_OF_DESKTOPS", False);
-   _ecore_x_atom_net_virtual_roots =
-      XInternAtom(_ecore_x_disp, "_NET_VIRTUAL_ROOTS", False);
-   _ecore_x_atom_net_desktop_names =
-      XInternAtom(_ecore_x_disp, "_NET_DESKTOP_NAMES", False);
-   _ecore_x_atom_net_desktop_geometry =
-      XInternAtom(_ecore_x_disp, "_NET_DESKTOP_GEOMETRY", False);
-   _ecore_x_atom_net_workarea =
-      XInternAtom(_ecore_x_disp, "_NET_WORKAREA", False);
-   _ecore_x_atom_net_current_desktop =
-      XInternAtom(_ecore_x_disp, "_NET_CURRENT_DESKTOP", False);
-   _ecore_x_atom_net_desktop_viewport =
-      XInternAtom(_ecore_x_disp, "_NET_DESKTOP_VIEWPORT", False);
-   _ecore_x_atom_net_showing_desktop =
-      XInternAtom(_ecore_x_disp, "_NET_SHOWING_DESKTOP", False);
+   _ecore_x_atom_net_supported = _ATOM_GET("_NET_SUPPORTED");
+   _ecore_x_atom_net_supporting_wm_check =
+      _ATOM_GET("_NET_SUPPORTING_WM_CHECK");
+
+   _ecore_x_atom_net_number_of_desktops = _ATOM_GET("_NET_NUMBER_OF_DESKTOPS");
+   _ecore_x_atom_net_virtual_roots = _ATOM_GET("_NET_VIRTUAL_ROOTS");
+   _ecore_x_atom_net_desktop_geometry = _ATOM_GET("_NET_DESKTOP_GEOMETRY");
+   _ecore_x_atom_net_desktop_names = _ATOM_GET("_NET_DESKTOP_NAMES");
+   _ecore_x_atom_net_current_desktop = _ATOM_GET("_NET_CURRENT_DESKTOP");
+   _ecore_x_atom_net_desktop_viewport = _ATOM_GET("_NET_DESKTOP_VIEWPORT");
+   _ecore_x_atom_net_workarea = _ATOM_GET("_NET_WORKAREA");
 
-   _ecore_x_atom_net_client_list =
-      XInternAtom(_ecore_x_disp, "_NET_CLIENT_LIST", False);
+   _ecore_x_atom_net_client_list = _ATOM_GET("_NET_CLIENT_LIST");
    _ecore_x_atom_net_client_list_stacking =
-      XInternAtom(_ecore_x_disp, "_NET_CLIENT_LIST_STACKING", False);
-   _ecore_x_atom_net_active_window =
-      XInternAtom(_ecore_x_disp, "_NET_ACTIVE_WINDOW", False);
+      _ATOM_GET("_NET_CLIENT_LIST_STACKING");
+   _ecore_x_atom_net_active_window = _ATOM_GET("_NET_ACTIVE_WINDOW");
+
+#if 0
+   _ecore_x_atom_net_close_window = _ATOM_GET("_NET_CLOSE_WINDOW");
+   _ecore_x_atom_net_wm_moveresize = _ATOM_GET("_NET_WM_MOVERESIZE");
+#endif
+
+   _ecore_x_atom_net_wm_name = _ATOM_GET("_NET_WM_NAME");
+#if 0
+   _ecore_x_atom_net_wm_visible_name = _ATOM_GET("_NET_WM_VISIBLE_NAME");
+   _ecore_x_atom_net_wm_icon_name = _ATOM_GET("_NET_WM_ICON_NAME");
+   _ecore_x_atom_net_wm_visible_icon_name =
+      _ATOM_GET("_NET_WM_VISIBLE_ICON_NAME");
+   _ecore_x_atom_net_wm_desktop = _ATOM_GET("_NET_WM_DESKTOP");
+   _ecore_x_atom_net_wm_window_type = _ATOM_GET("_NET_WM_WINDOW_TYPE");
+   _ecore_x_atom_net_wm_state = _ATOM_GET("_NET_WM_STATE");
+   _ecore_x_atom_net_wm_allowed_actions = _ATOM_GET("_NET_WM_ALLOWED_ACTIONS");
+   _ecore_x_atom_net_wm_strut = _ATOM_GET("_NET_WM_STRUT");
+   _ecore_x_atom_net_wm_strut_partial = _ATOM_GET("_NET_WM_STRUT_PARTIAL");
+   _ecore_x_atom_net_wm_icon_geometry = _ATOM_GET("_NET_WM_ICON_GEOMETRY");
+   _ecore_x_atom_net_wm_icon = _ATOM_GET("_NET_WM_ICON");
+   _ecore_x_atom_net_wm_pid = _ATOM_GET("_NET_WM_PID");
+   _ecore_x_atom_net_wm_user_time = _ATOM_GET("_NET_WM_USER_TIME");
+
+   _ecore_x_atom_net_wm_window_type_desktop =
+      _ATOM_GET("_NET_WM_WINDOW_TYPE_DESKTOP");
+   _ecore_x_atom_net_wm_window_type_dock =
+      _ATOM_GET("_NET_WM_WINDOW_TYPE_DOCK");
+   _ecore_x_atom_net_wm_window_type_toolbar =
+      _ATOM_GET("_NET_WM_WINDOW_TYPE_TOOLBAR");
+   _ecore_x_atom_net_wm_window_type_menu =
+      _ATOM_GET("_NET_WM_WINDOW_TYPE_MENU");
+   _ecore_x_atom_net_wm_window_type_utility =
+      _ATOM_GET("_NET_WM_WINDOW_TYPE_UTILITY");
+   _ecore_x_atom_net_wm_window_type_splash =
+      _ATOM_GET("_NET_WM_WINDOW_TYPE_SPLASH");
+   _ecore_x_atom_net_wm_window_type_dialog =
+      _ATOM_GET("_NET_WM_WINDOW_TYPE_DIALOG");
+   _ecore_x_atom_net_wm_window_type_normal =
+      _ATOM_GET("_NET_WM_WINDOW_TYPE_NORMAL");
+
+   _ecore_x_atom_net_wm_state_modal = _ATOM_GET("_NET_WM_STATE_MODAL");
+   _ecore_x_atom_net_wm_state_sticky = _ATOM_GET("_NET_WM_STATE_STICKY");
+   _ecore_x_atom_net_wm_state_maximized_vert =
+      _ATOM_GET("_NET_WM_STATE_MAXIMIZED_VERT");
+   _ecore_x_atom_net_wm_state_maximized_horz =
+      _ATOM_GET("_NET_WM_STATE_MAXIMIZED_HORZ");
+   _ecore_x_atom_net_wm_state_shaded = _ATOM_GET("_NET_WM_STATE_SHADED");
+   _ecore_x_atom_net_wm_state_skip_taskbar =
+      _ATOM_GET("_NET_WM_STATE_SKIP_TASKBAR");
+   _ecore_x_atom_net_wm_state_skip_pager =
+      _ATOM_GET("_NET_WM_STATE_SKIP_PAGER");
+   _ecore_x_atom_net_wm_state_hidden = _ATOM_GET("_NET_WM_STATE_HIDDEN");
+   _ecore_x_atom_net_wm_state_fullscreen =
+      _ATOM_GET("_NET_WM_STATE_FULLSCREEN");
+   _ecore_x_atom_net_wm_state_above = _ATOM_GET("_NET_WM_STATE_ABOVE");
+   _ecore_x_atom_net_wm_state_below = _ATOM_GET("_NET_WM_STATE_BELOW");
+
+   _ecore_x_atom_net_wm_window_opacity = _ATOM_GET("_NET_WM_WINDOW_OPACITY");
+#endif
 }
 #endif
 
 /*
+ * WM identification
+ */
+void
+ecore_x_netwm_wm_identify(Ecore_X_Window root, Ecore_X_Window check,
+                         const char *wm_name)
+{
+   _ATOM_SET_WINDOW(_ecore_x_atom_net_supporting_wm_check, root, &check, 1);
+   _ATOM_SET_WINDOW(_ecore_x_atom_net_supporting_wm_check, check, &check, 1);
+   _ATOM_SET_UTF8_STRING(_ecore_x_atom_net_wm_name, check, wm_name);
+   /* This one isn't mandatory */
+   _ATOM_SET_UTF8_STRING(_ecore_x_atom_net_wm_name, root, wm_name);
+}
+
+/*
  * Desktop configuration and status
  */
 
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/Attic/ecore-e16.h,v
retrieving revision 1.1.2.7
retrieving revision 1.1.2.8
diff -u -3 -r1.1.2.7 -r1.1.2.8
--- ecore-e16.h 23 Oct 2004 15:36:27 -0000      1.1.2.7
+++ ecore-e16.h 27 Oct 2004 23:32:52 -0000      1.1.2.8
@@ -68,6 +68,9 @@
 void                ecore_x_icccm_init(void);
 
 /* NETWM (EWMH) */
+extern Atom         _ecore_x_atom_net_supported;
+extern Atom         _ecore_x_atom_net_supporting_wm_check;
+
 extern Atom         _ecore_x_atom_net_number_of_desktops;
 extern Atom         _ecore_x_atom_net_virtual_roots;
 extern Atom         _ecore_x_atom_net_desktop_names;
@@ -79,8 +82,14 @@
 
 extern Atom         _ecore_x_atom_net_showing_desktop;
 
+extern Atom         _ecore_x_atom_net_wm_name;
+
 void                ecore_x_netwm_init(void);
 
+void                ecore_x_netwm_wm_identify(Ecore_X_Window root,
+                                             Ecore_X_Window check,
+                                             const char *wm_name);
+
 void                ecore_x_netwm_desk_count_set(Ecore_X_Window root,
                                                 int n_desks);
 void                ecore_x_netwm_desk_roots_set(Ecore_X_Window root,
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/events.c,v
retrieving revision 1.69.2.15
retrieving revision 1.69.2.16
diff -u -3 -r1.69.2.15 -r1.69.2.16
--- events.c    25 Oct 2004 22:14:21 -0000      1.69.2.15
+++ events.c    27 Oct 2004 23:32:52 -0000      1.69.2.16
@@ -163,6 +163,7 @@
 {
    void              **lst;
    int                 i, num;
+   Slideout           *pslideout = NULL;
 
    EDBUG(7, "HandleEvent");
 
@@ -175,6 +176,7 @@
    switch (ev->type)
      {
      case KeyPress:
+       Mode.last_keycode = ev->xkey.keycode;
      case KeyRelease:
      case ButtonPress:
      case ButtonRelease:
@@ -212,8 +214,6 @@
 
    switch (ev->type)
      {
-       Slideout           *pslideout;
-
      case KeyPress:            /*  2 */
      case KeyRelease:          /*  3 */
        break;
@@ -249,9 +249,6 @@
 
        ActionsEnd(NULL);
 
-       if ((Mode.slideout) && (pslideout))
-          SlideoutHide(Mode.slideout);
-
        Mode.action_inhibit = 0;
        break;
      case MotionNotify:        /*  6 */
@@ -323,6 +320,10 @@
 
        if (MenusActive() && (!Mode.justclicked))
           MenusHide();
+
+       if ((Mode.slideout) && (pslideout))
+          SlideoutHide(Mode.slideout);
+
        Mode.justclicked = 0;
        Mode.last_bpress = 0;
        break;
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ewmh.c,v
retrieving revision 1.55.2.13
retrieving revision 1.55.2.14
diff -u -3 -r1.55.2.13 -r1.55.2.14
--- ewmh.c      23 Oct 2004 15:36:27 -0000      1.55.2.13
+++ ewmh.c      27 Oct 2004 23:32:52 -0000      1.55.2.14
@@ -202,6 +202,11 @@
 
    E_XA_UTF8_STRING = XInternAtom(disp, "UTF8_STRING", False);
 
+#ifndef USE_ECORE_X
+   /* FIXME - TBD */
+   ecore_x_netwm_init();
+#endif
+
    atom_count = 0;
 
    _ATOM_INIT(_NET_SUPPORTED);
@@ -257,16 +262,7 @@
    _ATOM_SET_ATOM(_NET_SUPPORTED, VRoot.win, atom_list, atom_count);
 
    /* Set WM info properties */
-   _ATOM_SET_UTF8_STRING(_NET_WM_NAME, VRoot.win, e_wm_name);
-
-   _ATOM_SET_WINDOW(_NET_SUPPORTING_WM_CHECK, VRoot.win, &win_wm_check, 1);
-   _ATOM_SET_WINDOW(_NET_SUPPORTING_WM_CHECK, win_wm_check, &win_wm_check, 1);
-   _ATOM_SET_UTF8_STRING(_NET_WM_NAME, win_wm_check, e_wm_name);
-
-#ifndef USE_ECORE_X
-   /* FIXME - TBD */
-   ecore_x_netwm_init();
-#endif
+   ecore_x_netwm_wm_identify(VRoot.win, win_wm_check, e_wm_name);
 
    EWMH_SetDesktopCount();
    EWMH_SetDesktopRoots();
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/focus.c,v
retrieving revision 1.81.2.7
retrieving revision 1.81.2.8
diff -u -3 -r1.81.2.7 -r1.81.2.8
--- focus.c     17 Oct 2004 08:47:25 -0000      1.81.2.7
+++ focus.c     27 Oct 2004 23:32:52 -0000      1.81.2.8
@@ -482,3 +482,158 @@
        FocusToEWin(ewin, FOCUS_CLICK);
      }
 }
+
+#if 0                          /* FIXME - Move elsewhere */
+/* Focus actions */
+
+static int
+doFocusSet(EWin * ewin, const char *params __UNUSED__)
+{
+   GotoDesktopByEwin(ewin);
+
+   if (ewin->iconified)
+      EwinDeIconify(ewin);
+   if (ewin->shaded)
+      EwinUnShade(ewin);
+   RaiseEwin(ewin);
+   FocusToEWin(ewin, FOCUS_SET);
+
+   return 0;
+}
+#endif
+
+static void
+FocusIpc(const char *params, Client * c __UNUSED__)
+{
+   const char         *p;
+   char                cmd[128], prm[4096];
+   int                 len;
+
+   cmd[0] = prm[0] = '\0';
+   p = params;
+   if (p)
+     {
+       len = 0;
+       sscanf(p, "%100s %4000s %n", cmd, prm, &len);
+       p += len;
+     }
+
+   if (!p || cmd[0] == '?')
+     {
+       EWin               *ewin;
+
+       ewin = GetFocusEwin();
+       if (ewin)
+          IpcPrintf("Focused: %#lx\n", ewin->client.win);
+       else
+          IpcPrintf("Focused: none\n");
+     }
+   else if (!strcmp(prm, "cfg"))
+     {
+       SettingsFocus();
+     }
+   else if (!strncmp(cmd, "mode", 2))
+     {
+       int                 mode = Conf.focus.mode;
+
+       if (!strcmp(prm, "click"))
+         {
+            mode = MODE_FOCUS_CLICK;
+            Mode.grabs.pointer_grab_active = 1;
+         }
+       else if (!strcmp(prm, "clicknograb"))
+         {
+            mode = MODE_FOCUS_CLICK;
+            Mode.grabs.pointer_grab_active = 0;
+         }
+       else if (!strcmp(prm, "pointer"))
+         {
+            mode = MODE_FOCUS_POINTER;
+         }
+       else if (!strcmp(prm, "sloppy"))
+         {
+            mode = MODE_FOCUS_SLOPPY;
+         }
+       else if (!strcmp(prm, "?"))
+         {
+            if (Conf.focus.mode == MODE_FOCUS_CLICK)
+              {
+                 if (Mode.grabs.pointer_grab_active)
+                    p = "click";
+                 else
+                    p = "clicknograb";
+              }
+            else if (Conf.focus.mode == MODE_FOCUS_SLOPPY)
+               p = "sloppy";
+            else if (Conf.focus.mode == MODE_FOCUS_POINTER)
+               p = "pointer";
+            else
+               p = "unknown";
+            IpcPrintf("Focus Mode: %s\n", p);
+         }
+       else
+         {
+            IpcPrintf("Error: unknown focus type\n");
+         }
+       if (Conf.focus.mode != mode)
+         {
+            Conf.focus.mode = mode;
+            FocusFix();
+            autosave();
+         }
+     }
+   else if (!strncmp(cmd, "next", 2))
+     {
+       if (Conf.warplist.enable)
+          WarpFocus(1);
+       else
+          FocusGetNextEwin();
+     }
+   else if (!strncmp(cmd, "prev", 2))
+     {
+       FocusGetPrevEwin();
+     }
+}
+
+IpcItem             FocusIpcArray[] = {
+   {
+    FocusIpc,
+    "focus", "sf",
+    "Focus functions",
+    "  focus ?                     Show focus info\n"
+    "  focus mode                  Set focus mode. Modes:\n"
+    "    click:       The traditional click-to-focus mode.\n"
+    "    clicknograb: A similar focus mode, but without the grabbing of the click\n"
+    "      (you cannot click anywhere in a window to focus it)\n"
+    "    pointer:     The focus will follow the mouse pointer\n"
+    "    sloppy:      The focus follows the mouse, but when over the desktop 
background\n"
+    "                 the last window does not lose the focus\n"}
+   ,
+};
+#define N_IPC_FUNCS (sizeof(FocusIpcArray)/sizeof(IpcItem))
+
+static const CfgItem FocusCfgItems[] = {
+   CFG_ITEM_INT(Conf.focus, mode, MODE_FOCUS_SLOPPY),
+   CFG_ITEM_BOOL(Conf.focus, clickraises, 0),
+   CFG_ITEM_BOOL(Conf.focus, transientsfollowleader, 1),
+   CFG_ITEM_BOOL(Conf.focus, switchfortransientmap, 1),
+   CFG_ITEM_BOOL(Conf.focus, all_new_windows_get_focus, 0),
+   CFG_ITEM_BOOL(Conf.focus, new_transients_get_focus, 0),
+   CFG_ITEM_BOOL(Conf.focus, new_transients_get_focus_if_group_focused, 1),
+   CFG_ITEM_BOOL(Conf.focus, raise_on_next, 1),
+   CFG_ITEM_BOOL(Conf.focus, warp_on_next, 0),
+
+   CFG_ITEM_BOOL(Conf, autoraise.enable, 0),
+   CFG_ITEM_INT(Conf, autoraise.delay, 500),
+};
+#define N_CFG_ITEMS (sizeof(FocusCfgItems)/sizeof(CfgItem))
+
+/*
+ * Module descriptor
+ */
+EModule             ModFocus = {
+   "focus", NULL,
+   NULL,
+   {N_IPC_FUNCS, FocusIpcArray},
+   {N_CFG_ITEMS, FocusCfgItems}
+};
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ipc.c,v
retrieving revision 1.174.2.29
retrieving revision 1.174.2.30
diff -u -3 -r1.174.2.29 -r1.174.2.30
--- ipc.c       17 Oct 2004 08:47:26 -0000      1.174.2.29
+++ ipc.c       27 Oct 2004 23:32:52 -0000      1.174.2.30
@@ -371,94 +371,6 @@
 }
 
 static void
-IPC_SetFocus(const char *params, Client * c __UNUSED__)
-{
-   char                param1[FILEPATH_LEN_MAX];
-   EWin               *ewin;
-
-   if (params == NULL)
-      return;
-
-   sscanf(params, "%1000s", param1);
-
-   if (!strcmp(param1, "?"))
-     {
-       ewin = GetFocusEwin();
-       if (ewin)
-          IpcPrintf("focused: %#lx\n", ewin->client.win);
-       else
-          IpcPrintf("focused: none\n");
-     }
-   else
-     {
-       ewin = IpcFindEwin(param1);
-       if (ewin)
-          FocusToEWin(ewin, FOCUS_SET);
-       else
-          IpcPrintf("No matching EWin found\n");
-     }
-}
-
-#if 0                          /* FIXME - Move elsewhere */
-/* Focus actions */
-
-static int
-doFocusNext(EWin * edummy __UNUSED__, const char *params __UNUSED__)
-{
-   FocusGetNextEwin();
-   return 0;
-}
-
-static int
-doFocusPrev(EWin * edummy __UNUSED__, const char *params __UNUSED__)
-{
-   FocusGetPrevEwin();
-   return 0;
-}
-
-static int
-doFocusSet(EWin * ewin, const char *params __UNUSED__)
-{
-   GotoDesktopByEwin(ewin);
-
-   if (ewin->iconified)
-      EwinDeIconify(ewin);
-   if (ewin->shaded)
-      EwinUnShade(ewin);
-   RaiseEwin(ewin);
-   FocusToEWin(ewin, FOCUS_SET);
-
-   return 0;
-}
-
-static int
-doFocusModeSet(EWin * edummy __UNUSED__, const char *params)
-{
-   if (params)
-     {
-       if (!strcmp("pointer", params))
-          Conf.focus.mode = MODE_FOCUS_POINTER;
-       else if (!strcmp("sloppy", params))
-          Conf.focus.mode = MODE_FOCUS_SLOPPY;
-       else if (!strcmp("click", params))
-          Conf.focus.mode = MODE_FOCUS_CLICK;
-     }
-   else
-     {
-       if (Conf.focus.mode == MODE_FOCUS_POINTER)
-          Conf.focus.mode = MODE_FOCUS_SLOPPY;
-       else if (Conf.focus.mode == MODE_FOCUS_SLOPPY)
-          Conf.focus.mode = MODE_FOCUS_CLICK;
-       else if (Conf.focus.mode == MODE_FOCUS_CLICK)
-          Conf.focus.mode = MODE_FOCUS_POINTER;
-     }
-   FocusFix();
-   autosave();
-   return 0;
-}
-#endif
-
-static void
 IPC_MoveMode(const char *params, Client * c)
 {
    char                buf[FILEPATH_LEN_MAX];
@@ -1067,73 +979,6 @@
 }
 
 static void
-IPC_FocusMode(const char *params, Client * c)
-{
-   char                buf[FILEPATH_LEN_MAX];
-
-   buf[0] = 0;
-   if (params)
-     {
-       if (!strcmp(params, "click"))
-         {
-            Conf.focus.mode = MODE_FOCUS_CLICK;
-            Mode.grabs.pointer_grab_active = 1;
-         }
-       else if (!strcmp(params, "pointer"))
-         {
-            Conf.focus.mode = MODE_FOCUS_POINTER;
-         }
-       else if (!strcmp(params, "sloppy"))
-         {
-            Conf.focus.mode = MODE_FOCUS_SLOPPY;
-         }
-       else if (!strcmp(params, "clicknograb"))
-         {
-            Conf.focus.mode = MODE_FOCUS_CLICK;
-            Mode.grabs.pointer_grab_active = 0;
-         }
-       else if (!strcmp(params, "?"))
-         {
-            Esnprintf(buf, sizeof(buf), "Focus Mode: ");
-            if (Conf.focus.mode == MODE_FOCUS_CLICK)
-              {
-                 if (Mode.grabs.pointer_grab_active)
-                   {
-                      strcat(buf, "click");
-                   }
-                 else
-                   {
-                      strcat(buf, "clicknograb");
-                   }
-              }
-            else if (Conf.focus.mode == MODE_FOCUS_SLOPPY)
-              {
-                 strcat(buf, "sloppy");
-              }
-            else if (Conf.focus.mode == MODE_FOCUS_POINTER)
-              {
-                 strcat(buf, "pointer");
-              }
-            else
-              {
-                 strcat(buf, "unknown");
-              }
-         }
-       else
-         {
-            Esnprintf(buf, sizeof(buf), "Error: unknown focus type");
-         }
-     }
-   else
-     {
-       Esnprintf(buf, sizeof(buf), "Error: no focus type given");
-     }
-
-   if (buf[0])
-      CommsSend(c, buf);
-}
-
-static void
 IPC_ForceSave(const char *params __UNUSED__, Client * c __UNUSED__)
 {
    autosave();
@@ -1794,20 +1639,6 @@
     "Force Enlightenment to save settings now",
     NULL},
    {
-    IPC_FocusMode,
-    "focus_mode", "sf",
-    "Change the current focus mode setting",
-    "Use \"focus_mode <mode>\" to change the focus mode.\n"
-    "Use \"focus_mode ?\" to retrieve the current setting\n" "Focus Types:\n"
-    "click: This is the traditional click-to-focus mode.\n"
-    "clicknograb: This is a similar focus mode, but without the "
-    "grabbing of the click\n    "
-    "(you cannot click anywhere in a window to focus it)\n"
-    "pointer: The focus will follow the mouse pointer\n"
-    "sloppy: in sloppy-focus, the focus follows the mouse, "
-    "but when over\n    "
-    "the desktop background the last window does not lose the focus\n"},
-   {
     IPC_WinOps,
     "win_op", "wop",
     "Change a property of a specific window",
@@ -1890,12 +1721,6 @@
     "use \"geominfo_mode <center/corner/never>\" "
     "to set\nuse \"geominfo_mode ?\" to get the current mode\n"},
    {
-    IPC_SetFocus,
-    "set_focus", "wf",
-    "Set/Retrieve focused window",
-    "use \"set_focus <win_id>\" to focus a new window\n"
-    "use \"set_focus ?\" to retrieve the currently focused window\n"},
-   {
     IPC_DialogOK,
     "dialog_ok", "dok",
     "Pop up a dialog box with an OK button",
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/menus.c,v
retrieving revision 1.147.2.17
retrieving revision 1.147.2.18
diff -u -3 -r1.147.2.17 -r1.147.2.18
--- menus.c     17 Oct 2004 08:47:26 -0000      1.147.2.17
+++ menus.c     27 Oct 2004 23:32:54 -0000      1.147.2.18
@@ -250,12 +250,14 @@
    ewin = FindEwinByMenu(m);
    if (ewin)
      {
+#if 0                          /* FIXME - Why? */
        if ((Mode.button) &&
            FindItem((char *)Mode.button, 0, LIST_FINDBY_POINTER,
                     LIST_TYPE_BUTTON))
          {
             ButtonDrawWithState(Mode.button, STATE_NORMAL);
          }
+#endif
 #if 0                          /* ??? */
        RaiseEwin(ewin);
        ShowEwin(ewin);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/Attic/mod-misc.c,v
retrieving revision 1.1.2.21
retrieving revision 1.1.2.22
diff -u -3 -r1.1.2.21 -r1.1.2.22
--- mod-misc.c  10 Oct 2004 11:17:39 -0000      1.1.2.21
+++ mod-misc.c  27 Oct 2004 23:32:55 -0000      1.1.2.22
@@ -38,6 +38,7 @@
 extern EModule      ModDesktops;
 extern EModule      ModEffects;
 extern EModule      ModEwins;
+extern EModule      ModFocus;
 extern EModule      ModGroups;
 extern EModule      ModImageclass;
 extern EModule      ModIconboxes;
@@ -63,6 +64,7 @@
    &ModDesktops,
    &ModEwins,
    &ModEffects,
+   &ModFocus,
    &ModGroups,
    &ModIconboxes,
    &ModImageclass,
@@ -149,9 +151,6 @@
 static const CfgItem cfg_items[] = {
    CFG_ITEM_BOOL(Conf_misc, firsttime, 1),
 
-   CFG_ITEM_BOOL(Conf, autoraise.enable, 0),
-   CFG_ITEM_INT(Conf, autoraise.delay, 500),
-
    CFG_ITEM_INT(Conf, backgrounds.hiquality, 1),
    CFG_ITEM_INT(Conf, backgrounds.timeout, 240),
    CFG_ITEM_BOOL(Conf, backgrounds.user, 1),
@@ -163,16 +162,6 @@
    CFG_ITEM_INT(Conf, dock.startx, 0),
    CFG_ITEM_INT(Conf, dock.starty, 0),
 
-   CFG_ITEM_INT(Conf, focus.mode, MODE_FOCUS_SLOPPY),
-   CFG_ITEM_BOOL(Conf, focus.clickraises, 0),
-   CFG_ITEM_BOOL(Conf, focus.transientsfollowleader, 1),
-   CFG_ITEM_BOOL(Conf, focus.switchfortransientmap, 1),
-   CFG_ITEM_BOOL(Conf, focus.all_new_windows_get_focus, 0),
-   CFG_ITEM_BOOL(Conf, focus.new_transients_get_focus, 0),
-   CFG_ITEM_BOOL(Conf, focus.new_transients_get_focus_if_group_focused, 1),
-   CFG_ITEM_BOOL(Conf, focus.raise_on_next, 1),
-   CFG_ITEM_BOOL(Conf, focus.warp_on_next, 0),
-
    CFG_ITEM_BOOL(Conf, groups.dflt.iconify, 1),
    CFG_ITEM_BOOL(Conf, groups.dflt.kill, 0),
    CFG_ITEM_BOOL(Conf, groups.dflt.mirror, 1),
@@ -243,8 +232,6 @@
      {
        if (!strncmp(prm, "autoraise", 2))
           SettingsAutoRaise();
-       else if (!strncmp(prm, "focus", 2))
-          SettingsFocus();
        else if (!strncmp(prm, "fx", 2))
           SettingsSpecialFX();
        else if (!strncmp(prm, "misc", 2))
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/warp.c,v
retrieving revision 1.49.2.8
retrieving revision 1.49.2.9
diff -u -3 -r1.49.2.8 -r1.49.2.9
--- warp.c      17 Oct 2004 08:47:26 -0000      1.49.2.8
+++ warp.c      27 Oct 2004 23:32:55 -0000      1.49.2.9
@@ -192,7 +192,7 @@
    warpFocusTitleShowing = 0;
 }
 
-static void
+void
 WarpFocus(int delta)
 {
    EWin               *const *lst0;
@@ -201,6 +201,10 @@
 
    EDBUG(5, "WarpFocus");
 
+   /* Remember invoking keycode (ugly hack) */
+   if (!warpFocusTitleShowing)
+      warpFocusKey = Mode.last_keycode;
+
    lst = (EWin **) ListItemType(&num, LIST_TYPE_WARP_RING);
    if (!lst)
      {
@@ -295,11 +299,12 @@
 
    switch (ev->type)
      {
+#if 0                          /* Not necessary when sampling keycode in events.c */
      case KeyPress:
        if (warpFocusTitleShowing && ev->xany.window == VRoot.win)
           warpFocusKey = ev->xkey.keycode;
        break;
-
+#endif
      case KeyRelease:
        if (warpFocusTitleShowing && ev->xkey.keycode != warpFocusKey)
           WarpFocusFinish();
@@ -307,26 +312,13 @@
      }
 }
 
-static int
-WarplistAction(EWin * ewin __UNUSED__, const char *params __UNUSED__)
-{
-   if (!Conf.warplist.enable)
-      return 0;
-
-   WarpFocus(1);
-
-   return 1;
-}
-
 static void
 WarplistInit(void)
 {
-#if 1                          /* FIXME - Fix */
-#define ACTION_FOCUS_NEXT 0
-   if (Conf.warplist.enable == 5)
-      WarplistAction(NULL, NULL);
-#endif
+#if 0                          /* Not necessary when sampling keycode in events.c */
+   /* Ugly hack to get the invoking key press */
    EventCallbackRegister(VRoot.win, 0, WarpFocusHandleEvent, NULL);
+#endif
 }
 
 /*




-------------------------------------------------------
This SF.Net email is sponsored by:
Sybase ASE Linux Express Edition - download now for FREE
LinuxWorld Reader's Choice Award Winner for best database on Linux.
http://ads.osdn.com/?ad_id=5588&alloc_id=12065&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to