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