Enlightenment CVS committal

Author  : raster
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_int_menus.c e_menu.c e_remote_main.c 


Log Message:


fix remote type
start module actualyl has a semblance of working well... :)

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_int_menus.c,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -3 -r1.59 -r1.60
--- e_int_menus.c       13 May 2005 04:05:42 -0000      1.59
+++ e_int_menus.c       18 May 2005 10:18:02 -0000      1.60
@@ -493,6 +493,9 @@
        if (a) e_menu_item_icon_edje_set(mi, a->path, "icon");
      }
    mi = e_menu_item_new(m);
+   e_menu_item_separator_set(mi, 1);
+
+   mi = e_menu_item_new(m);
    e_menu_item_label_set(mi, _("Cleanup Windows"));
    e_menu_item_icon_edje_set(mi,
                             e_path_find(path_icons, "default.edj"),
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_menu.c,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -3 -r1.29 -r1.30
--- e_menu.c    12 May 2005 09:28:58 -0000      1.29
+++ e_menu.c    18 May 2005 10:18:02 -0000      1.30
@@ -43,6 +43,7 @@
 static void _e_menu_activate_next                 (void);
 static void _e_menu_activate_previous             (void);
 static void _e_menu_activate_first                (void);
+static void _e_menu_activate_last                 (void);
 static void _e_menu_activate_nth                  (int n);
 static E_Menu *_e_menu_active_get                 (void);
 static E_Menu_Item *_e_menu_item_active_get       (void);
@@ -50,6 +51,7 @@
 static void _e_menu_scroll_by                     (int dx, int dy);
 static void _e_menu_mouse_autoscroll_check        (void);
 static void _e_menu_item_ensure_onscreen          (E_Menu_Item *mi);
+static int  _e_menu_auto_place                    (E_Menu *m, int x, int y, 
int w, int h);
 static void _e_menu_cb_intercept_item_move        (void *data, Evas_Object *o, 
Evas_Coord x, Evas_Coord y);
 static void _e_menu_cb_intercept_item_resize      (void *data, Evas_Object *o, 
Evas_Coord w, Evas_Coord h);
 static void _e_menu_cb_intercept_container_move   (void *data, Evas_Object *o, 
Evas_Coord x, Evas_Coord y);
@@ -149,9 +151,47 @@
    E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
    _e_menu_activate_time = 0.0;
    _e_menu_activate_internal(m, zone);
-   m->cur.x = x + w;
-   m->cur.y = y + h;
-   _e_menu_activate_first();
+   switch (dir)
+     {
+      case E_MENU_POP_DIRECTION_LEFT:
+       _e_menu_realize(m);
+       m->cur.x = x - m->cur.w;
+       m->cur.y = y ;
+       _e_menu_activate_first();
+       break;
+      case E_MENU_POP_DIRECTION_RIGHT:
+       m->cur.x = x + w;
+       m->cur.y = y ;
+       _e_menu_activate_first();
+       break;
+      case E_MENU_POP_DIRECTION_UP:
+       _e_menu_realize(m);
+       m->cur.x = x + w;
+       m->cur.y = y - m->cur.h;
+       _e_menu_activate_last();
+       break;
+      case E_MENU_POP_DIRECTION_DOWN:
+       m->cur.x = x + w;
+       m->cur.y = y + h;
+       _e_menu_activate_first();
+       break;
+      case E_MENU_POP_DIRECTION_AUTO:
+         {
+            int pos;
+            
+            pos = _e_menu_auto_place(m, x, y, w, h);
+            if (pos == 4)
+              _e_menu_activate_last();
+            else
+              _e_menu_activate_first();
+         }
+       break;
+      default:
+       m->cur.x = x + w;
+       m->cur.y = y + h;
+       _e_menu_activate_first();
+       break;
+     }
 }
 
 void
@@ -165,9 +205,34 @@
    E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
    _e_menu_activate_time = ecore_time_get();
    _e_menu_activate_internal(m, zone);
-   m->cur.x = x + w;
-   m->cur.y = y + h;
-       
+   switch (dir)
+     {
+      case E_MENU_POP_DIRECTION_LEFT:
+       _e_menu_realize(m);
+       m->cur.x = x - m->cur.w;
+       m->cur.y = y ;
+       break;
+      case E_MENU_POP_DIRECTION_RIGHT:
+       m->cur.x = x + w;
+       m->cur.y = y ;
+       break;
+      case E_MENU_POP_DIRECTION_UP:
+       _e_menu_realize(m);
+       m->cur.x = x + w;
+       m->cur.y = y - m->cur.h;
+       break;
+      case E_MENU_POP_DIRECTION_DOWN:
+       m->cur.x = x + w;
+       m->cur.y = y + h;
+       break;
+      case E_MENU_POP_DIRECTION_AUTO:
+       _e_menu_auto_place(m, x, y, w, h);
+       break;
+      default:
+       m->cur.x = x + w;
+       m->cur.y = y + h;
+       break;
+     }
    pmi = _e_menu_item_active_get();
    if (pmi) e_menu_item_active_set(pmi, 0);
 }
@@ -183,8 +248,34 @@
    E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
    _e_menu_activate_time = 0.0;
    _e_menu_activate_internal(m, zone);
-   m->cur.x = x;
-   m->cur.y = y;
+   switch (dir)
+     {
+      case E_MENU_POP_DIRECTION_LEFT:
+       _e_menu_realize(m);
+       m->cur.x = x - m->cur.w;
+       m->cur.y = y ;
+       break;
+      case E_MENU_POP_DIRECTION_RIGHT:
+       m->cur.x = x + w;
+       m->cur.y = y ;
+       break;
+      case E_MENU_POP_DIRECTION_UP:
+       _e_menu_realize(m);
+       m->cur.x = x + w;
+       m->cur.y = y - m->cur.h;
+       break;
+      case E_MENU_POP_DIRECTION_DOWN:
+       m->cur.x = x + w;
+       m->cur.y = y + h;
+       break;
+      case E_MENU_POP_DIRECTION_AUTO:
+       _e_menu_auto_place(m, x, y, w, h);
+       break;
+      default:
+       m->cur.x = x + w;
+       m->cur.y = y + h;
+       break;
+     }
    pmi = _e_menu_item_active_get();
    if (pmi) e_menu_item_active_set(pmi, 0);
 }
@@ -1695,7 +1786,7 @@
          }
        return;
      }
-   _e_menu_activate_first();
+   _e_menu_activate_last();
 }
 
 static void
@@ -1721,6 +1812,28 @@
 }
 
 static void
+_e_menu_activate_last(void)
+{
+   E_Menu *m;
+   E_Menu_Item *mi;
+   Evas_List *ll;
+   
+   if (!_e_active_menus) return;
+   m = _e_active_menus->data;
+   if (!m->items) return;
+   ll = evas_list_last(m->items);
+   mi = ll->data;
+   while ((mi->separator) && (ll->prev))
+     {
+       ll = ll->prev;
+       mi = ll->data;
+     }
+   if (mi->separator) return;
+   e_menu_item_active_set(mi, 1);   
+   _e_menu_item_ensure_onscreen(mi);
+}
+
+static void
 _e_menu_activate_nth(int n)
 {
    E_Menu *m;
@@ -1927,6 +2040,89 @@
      _e_menu_scroll_by(dx, dy);
 }
 
+static int
+_e_menu_auto_place(E_Menu *m, int x, int y, int w, int h)
+{
+   double xr, yr;
+   
+   _e_menu_realize(m);
+   /* +-----+
+    * |\ T /|
+    * | \ / |
+    * |L X R|
+    * | / \ |
+    * |/ B \|
+    * +-----+
+    * 
+    * quadrants... which one
+    */
+   if (w != m->zone->container->w)
+     xr = (double)(x - m->zone->container->x) /
+     (double)(m->zone->container->w - w);
+   else
+     xr = 0.0;
+   if (h != m->zone->container->h)
+     yr = (double)(y - m->zone->container->y) /
+     (double)(m->zone->container->h - h);
+   else
+     yr = 0.0;
+   if ((xr + yr) < 0.99) /* top or left */
+     {
+       if (((1.0 - yr) + xr) <= 1.0)
+         /* L */
+         {
+            m->cur.x = x + w;
+            if (y < (m->zone->container->y + ((m->zone->container->h * 1) / 
3)))
+              m->cur.y = y;
+            else if (y < (m->zone->container->y + ((m->zone->container->h * 2) 
/ 3)))
+              m->cur.y = y + ((h - m->cur.h) / 2);
+            else
+              m->cur.y = y + h - m->cur.h;
+            return 1;
+         }
+       else
+         /* T */
+         {
+            m->cur.y = y + h;
+            if (x < (m->zone->container->x + ((m->zone->container->w * 1) / 
3)))
+              m->cur.x = x;
+            else if (x < (m->zone->container->x + ((m->zone->container->w * 2) 
/ 3)))
+              m->cur.x = x + ((w - m->cur.w) / 2);
+            else
+              m->cur.x = x + w - m->cur.w;
+            return 3;
+         }
+     }
+   else /* bottom or right */
+     {
+       if (((1.0 - yr) + xr) <= 1.01)
+         /* B */
+         {
+            m->cur.y = y - m->cur.h;
+            if (x < (m->zone->container->x + ((m->zone->container->w * 1) / 
3)))
+              m->cur.x = x;
+            else if (x < (m->zone->container->x + ((m->zone->container->w * 2) 
/ 3)))
+              m->cur.x = x + ((w - m->cur.w) / 2);
+            else
+              m->cur.x = x + w - m->cur.w;
+            return 4;
+         }
+       else
+         /* R */
+         {
+            m->cur.x = x - m->cur.w;
+            if (y < (m->zone->container->y + ((m->zone->container->h * 1) / 
3)))
+              m->cur.y = y;
+            else if (y < (m->zone->container->y + ((m->zone->container->h * 2) 
/ 3)))
+              m->cur.y = y + ((h - m->cur.h) / 2);
+            else
+              m->cur.y = y + h - m->cur.h;
+            return 2;
+         }
+     }
+   return 0;
+}
+
 static void
 _e_menu_cb_ecore_evas_resize(Ecore_Evas *ee)
 {
@@ -2006,7 +2202,6 @@
      _e_menu_activate_nth(8);
    else if (!strcmp(ev->keysymbol, "0"))
      _e_menu_activate_nth(9);
-   printf("kdn \"%s\" \"%s\"\n", ev->keyname, ev->keysymbol);
    return 1;
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_remote_main.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -3 -r1.24 -r1.25
--- e_remote_main.c     18 May 2005 05:06:04 -0000      1.24
+++ e_remote_main.c     18 May 2005 10:18:02 -0000      1.25
@@ -310,8 +310,8 @@
    OREQ("-edge-flip-get", "Get the edge flip flag", 
E_IPC_OP_USE_EDGE_FLIP_GET, 1),
    ODBL("-edge-flip_timeout-set", "Set the edge flip timeout (sec)", 
E_IPC_OP_EDGE_FLIP_TIMEOUT_SET, 0),
    OREQ("-edge-flip_timeout-get", "Get the edge flip timeout", 
E_IPC_OP_EDGE_FLIP_TIMEOUT_GET, 1),
-   O2INT("-desks-set", "Get the number of virtual desktops (X x Y. OPT1 = X, 
OPT2 = Y)", E_IPC_OP_DESKS_SET, 0),
-   OREQ("-desks-get", "Set the number of virtual desktops", 
E_IPC_OP_DESKS_GET, 1)
+   O2INT("-desks-set", "Set the number of virtual desktops (X x Y. OPT1 = X, 
OPT2 = Y)", E_IPC_OP_DESKS_SET, 0),
+   OREQ("-desks-get", "Get the number of virtual desktops", 
E_IPC_OP_DESKS_GET, 1)
 };
 
 /* externally accessible functions */




-------------------------------------------------------
This SF.Net email is sponsored by Oracle Space Sweepstakes
Want to be the first software developer in space?
Enter now for the Oracle Space Sweepstakes!
http://ads.osdn.com/?ad_id=7412&alloc_id=16344&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to