Enlightenment CVS committal

Author  : urandom
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/bin


Modified Files:
        e_menu.c e_menu.h 


Log Message:
function for adding evas objects as icons in the menus

===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_menu.c,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -3 -r1.54 -r1.55
--- e_menu.c    28 Jul 2006 10:56:21 -0000      1.54
+++ e_menu.c    28 Jul 2006 23:22:57 -0000      1.55
@@ -584,6 +584,19 @@
    mi->menu->changed = 1;
 }
 
+EAPI void      
+e_menu_item_icon_object_set(E_Menu_Item *mi, Evas_Object *obj)
+{
+   E_OBJECT_CHECK(mi);
+   E_OBJECT_TYPE_CHECK(mi, E_MENU_ITEM_TYPE);
+   if (((mi->icon_object) && (obj) && (mi->icon_object == obj)) ||
+       ((!mi->icon_object) && (!obj)))
+     return;
+   mi->icon_object = obj;
+   mi->changed = 1;
+   mi->menu->changed = 1;
+}
+
 EAPI void
 e_menu_item_label_set(E_Menu_Item *mi, const char *label)
 {
@@ -1167,7 +1180,7 @@
             evas_object_pass_events_set(o, 1);
             e_box_pack_end(mi->container_object, o);
          }
-       if (mi->icon)
+       if (mi->icon || mi->icon_object)
          {
             int icon_w, icon_h;
             
@@ -1181,24 +1194,36 @@
             else
               evas_object_del(o);
             
-            if (!mi->icon_key)
+            if (mi->icon_object)
               {
                  o = e_icon_add(mi->menu->evas);
-                 mi->icon_object = o;
-                 e_icon_file_set(o, mi->icon);
+                 e_icon_object_set(o, mi->icon_object);
                  e_icon_fill_inside_set(o, 1);
-                 e_icon_size_get(mi->icon_object, &icon_w, &icon_h);
+                 e_icon_size_get(o, &icon_w, &icon_h);
+
+                 mi->icon_object = o;
               }
-            else
+            else if (mi->icon)
               {
-                 Evas_Coord iww, ihh;
-                 
-                 o = edje_object_add(mi->menu->evas);
-                 mi->icon_object = o;
-                 edje_object_file_set(o, mi->icon, mi->icon_key);
-                 edje_object_size_max_get(o, &iww, &ihh);
-                 icon_w = iww;
-                 icon_h = ihh;
+                 if (!mi->icon_key)
+                   {
+                      o = e_icon_add(mi->menu->evas);
+                      mi->icon_object = o;
+                      e_icon_file_set(o, mi->icon);
+                      e_icon_fill_inside_set(o, 1);
+                      e_icon_size_get(mi->icon_object, &icon_w, &icon_h);
+                   }
+                 else
+                   {
+                      Evas_Coord iww, ihh;
+
+                      o = edje_object_add(mi->menu->evas);
+                      mi->icon_object = o;
+                      edje_object_file_set(o, mi->icon, mi->icon_key);
+                      edje_object_size_max_get(o, &iww, &ihh);
+                      icon_w = iww;
+                      icon_h = ihh;
+                   }
               }
             evas_object_pass_events_set(o, 1);
             evas_object_show(o);
@@ -1220,6 +1245,9 @@
               }
             else
               {
+                 int icon_w, icon_h;
+            
+                 o = edje_object_add(mi->menu->evas);
                  e_icon_size_get(mi->icon_object, &icon_w, &icon_h);
                  mi->icon_w = icon_w;
                  mi->icon_h = icon_h;
@@ -1401,6 +1429,7 @@
        mi = l->data;
        
        if (mi->icon) icons_on = 1;
+       if (mi->icon_object) icons_on = 1;
        if (mi->label) labels_on = 1;
        if (mi->submenu) submenus_on = 1;
        if (mi->check) toggles_on = 1;
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_menu.h,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -3 -r1.18 -r1.19
--- e_menu.h    2 Jul 2006 16:19:51 -0000       1.18
+++ e_menu.h    28 Jul 2006 23:22:57 -0000      1.19
@@ -171,6 +171,7 @@
 EAPI int          e_menu_item_num_get(E_Menu_Item *mi);
 EAPI void         e_menu_item_icon_file_set(E_Menu_Item *mi, const char *icon);
 EAPI void         e_menu_item_icon_edje_set(E_Menu_Item *mi, const char *icon, 
const char *key);
+EAPI void         e_menu_item_icon_object_set(E_Menu_Item *mi, Evas_Object 
*obj);
 EAPI void         e_menu_item_label_set(E_Menu_Item *mi, const char *label);
 EAPI void         e_menu_item_submenu_set(E_Menu_Item *mi, E_Menu *sub);
 EAPI void         e_menu_item_separator_set(E_Menu_Item *mi, int sep);



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to