Elementary migration revision 70375
[framework/uifw/elementary.git] / src / lib / elm_toolbar.c
index ed9dc86..7293bd1 100644 (file)
@@ -18,9 +18,8 @@ struct _Widget_Data
    int icon_size;
    unsigned int item_count;
    double align;
+   Elm_Object_Select_Mode select_mode;
    Eina_Bool homogeneous : 1;
-   Eina_Bool no_select : 1;
-   Eina_Bool always_select : 1;
    Eina_Bool vertical : 1;
    Eina_Bool long_press : 1;
    Ecore_Timer *long_timer;
@@ -34,12 +33,14 @@ struct _Elm_Toolbar_Item
    const char *label;
    const char *icon_str;
    Evas_Object *icon;
+   Evas_Object *object;
    Evas_Object *o_menu;
    Evas_Smart_Cb func;
-   struct {
-      int priority;
-      Eina_Bool visible : 1;
-   } prio;
+   struct
+     {
+        int priority;
+        Eina_Bool visible : 1;
+     } prio;
    Eina_Bool selected : 1;
    Eina_Bool separator : 1;
    Eina_Bool menu : 1;
@@ -73,8 +74,8 @@ static void _resize(void *data, Evas *e, Evas_Object *obj, void *event_info);
 static void _menu_move_resize(void *data, Evas *e, Evas_Object *obj, void *event_info);
 static void _menu_hide(void *data, Evas *e, Evas_Object *obj, void *event_info);
 static void _layout(Evas_Object *o, Evas_Object_Box_Data *priv, void *data);
-static void _elm_toolbar_item_icon_obj_set(Evas_Object *obj, Elm_Toolbar_Item *item, Evas_Object *icon_obj, const char *icon_str, double icon_size, const char *signal);
-static void _item_label_set(Elm_Toolbar_Item *item, const char *label, const char *signal);
+static void _elm_toolbar_item_icon_obj_set(Evas_Object *obj, Elm_Toolbar_Item *item, Evas_Object *icon_obj, const char *icon_str, double icon_size, const char *sig);
+static void _item_label_set(Elm_Toolbar_Item *item, const char *label, const char *sig);
 
 static const char SIG_CLICKED[] = "clicked";
 static const char SIG_LONGPRESSED[] = "longpressed";
@@ -91,7 +92,7 @@ static void
 _item_disable_hook(Elm_Object_Item *it)
 {
    Widget_Data *wd;
-   Elm_Toolbar_Item *toolbar_it = (Elm_Toolbar_Item *) it;
+   Elm_Toolbar_Item *toolbar_it = (Elm_Toolbar_Item *)it;
 
    wd = elm_widget_data_get(WIDGET(toolbar_it));
    if (!wd) return;
@@ -170,14 +171,14 @@ _item_select(Elm_Toolbar_Item *it)
    Eina_Bool sel;
 
    if (!wd) return;
-   if (elm_widget_item_disabled_get(it) || (it->separator)) return;
+   if (elm_widget_item_disabled_get(it) || (it->separator) || (it->object)) return;
    sel = it->selected;
 
-   if (!wd->no_select)
+   if (wd->select_mode != ELM_OBJECT_SELECT_MODE_NONE)
      {
         if (sel)
           {
-             if (wd->always_select) return;
+             if (wd->select_mode == ELM_OBJECT_SELECT_MODE_ALWAYS) return;
              _item_unselect(it);
           }
         else
@@ -254,6 +255,7 @@ _item_del(Elm_Toolbar_Item *it)
    eina_stringshare_del(it->label);
    eina_stringshare_del(it->icon_str);
    if (it->icon) evas_object_del(it->icon);
+   if (it->object) evas_object_del(it->object);
    //TODO: See if checking for wd->menu_parent is necessary before deleting menu
    if (it->o_menu) evas_object_del(it->o_menu);
 }
@@ -266,7 +268,7 @@ _del_pre_hook(Evas_Object *obj)
 
    if (!wd) return;
    it = ELM_TOOLBAR_ITEM_FROM_INLIST(wd->items);
-   while(it)
+   while (it)
      {
         next = ELM_TOOLBAR_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->next);
         _item_del(it);
@@ -312,7 +314,7 @@ _theme_hook_item(Evas_Object *obj, Elm_Toolbar_Item *it, double scale, int icon_
 
    _mirrored_set_item(obj, it, elm_widget_mirrored_get(obj));
    edje_object_scale_set(view, scale);
-   if (!it->separator)
+   if (!it->separator && !it->object)
      {
         _elm_theme_object_set(obj, view, "toolbar", "item", style);
         if (it->selected)
@@ -334,28 +336,36 @@ _theme_hook_item(Evas_Object *obj, Elm_Toolbar_Item *it, double scale, int icon_
              evas_object_size_hint_max_set(it->icon, ms, ms);
              edje_object_part_swallow(view, "elm.swallow.icon", it->icon);
           }
-        edje_object_part_text_set(view, "elm.text", it->label);
+        edje_object_part_text_escaped_set(view, "elm.text", it->label);
      }
    else
      {
-        _elm_theme_object_set(obj, view, "toolbar", "separator", style);
-        if (wd->vertical)
+        if (!it->object)
           {
-             evas_object_size_hint_weight_set(view, EVAS_HINT_EXPAND, -1.0);
-             evas_object_size_hint_align_set(view, EVAS_HINT_FILL, 0.5);
+             _elm_theme_object_set(obj, view, "toolbar", "separator", style);
+             if (wd->vertical)
+               {
+                  evas_object_size_hint_weight_set(view, EVAS_HINT_EXPAND, -1.0);
+                  evas_object_size_hint_align_set(view, EVAS_HINT_FILL, 0.5);
+               }
+             else
+               {
+                  evas_object_size_hint_weight_set(view, -1.0, EVAS_HINT_EXPAND);
+                  evas_object_size_hint_align_set(view, 0.5, EVAS_HINT_FILL);
+               }
           }
         else
           {
-             evas_object_size_hint_weight_set(view, -1.0, EVAS_HINT_EXPAND);
-             evas_object_size_hint_align_set(view, 0.5, EVAS_HINT_FILL);
+             _elm_theme_object_set(obj, view, "toolbar", "object", style);
+             edje_object_part_swallow(view, "elm.swallow.object", it->object);
           }
      }
 
    mw = mh = -1;
-   if (!it->separator)
+   if (!it->separator && !it->object)
      elm_coords_finger_size_adjust(1, &mw, 1, &mh);
    edje_object_size_min_restricted_calc(view, &mw, &mh, mw, mh);
-   if (!it->separator)
+   if (!it->separator && !it->object)
      elm_coords_finger_size_adjust(1, &mw, 1, &mh);
    evas_object_size_hint_min_set(view, mw, mh);
 }
@@ -399,14 +409,67 @@ _item_text_set_hook(Elm_Object_Item *it,
                     const char *label)
 {
    if (part && strcmp(part, "default")) return;
-   _item_label_set(((Elm_Toolbar_Item *) it), label, "elm,state,label_set");
+   _item_label_set(((Elm_Toolbar_Item *)it), label, "elm,state,label_set");
 }
 
 static const char *
 _item_text_get_hook(const Elm_Object_Item *it, const char *part)
 {
    if (part && strcmp(part, "default")) return NULL;
-   return ((Elm_Toolbar_Item *) it)->label;
+   return ((Elm_Toolbar_Item *)it)->label;
+}
+
+static void
+_item_content_set_hook(Elm_Object_Item *it,
+                       const char *part,
+                       Evas_Object *content)
+{
+   double scale;
+
+   ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+   if (part && strcmp(part, "object")) return;
+   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
+   Evas_Object *obj = WIDGET(item);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd || !obj) return;
+   if (item->object == content) return;
+
+   if (item->object) evas_object_del(item->object);
+
+   item->object = content;
+   if (item->object)
+     elm_widget_sub_object_add(obj, item->object);
+   scale = (elm_widget_scale_get(obj) * _elm_config->scale);
+   _theme_hook_item(obj, item, scale, wd->icon_size);
+}
+
+static Evas_Object *
+_item_content_get_hook(const Elm_Object_Item *it, const char *part)
+{
+   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+   if (part && strcmp(part, "object")) return NULL;
+   return ((Elm_Toolbar_Item *) it)->object;
+}
+
+static Evas_Object *
+_item_content_unset_hook(Elm_Object_Item *it, const char *part)
+{
+   Evas_Object *o;
+   double scale;
+
+   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+   if (part && strcmp(part, "object")) return NULL;
+   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
+   Evas_Object *obj = WIDGET(item);
+   Widget_Data *wd = elm_widget_data_get(obj);
+
+   edje_object_part_unswallow(VIEW(it), item->object);
+   elm_widget_sub_object_del(obj, item->object);
+   o = item->object;
+   item->object = NULL;
+   scale = (elm_widget_scale_get(obj) * _elm_config->scale);
+   _theme_hook_item(obj, item, scale, wd->icon_size);
+   return o;
 }
 
 static void
@@ -590,7 +653,7 @@ _resize_job(void *data)
         /* All items are removed from the box object, since removing individual
          * items won't trigger a resize. Items are be readded below. */
         evas_object_box_remove_all(wd->bx, EINA_FALSE);
-        if (((wd->vertical)  && (ih > vh)) || 
+        if (((wd->vertical)  && (ih > vh)) ||
             ((!wd->vertical) && (iw > vw)))
           {
              Evas_Object *menu;
@@ -653,7 +716,7 @@ _resize_job(void *data)
              _fix_items_visibility(wd, &iw, vw);
           }
         evas_object_box_remove_all(wd->bx, EINA_FALSE);
-        if (((wd->vertical)  && (ih > vh)) || 
+        if (((wd->vertical)  && (ih > vh)) ||
             ((!wd->vertical) && (iw > vw)))
           {
              EINA_INLIST_FOREACH(wd->items, it)
@@ -808,7 +871,7 @@ _layout(Evas_Object *o, Evas_Object_Box_Data *priv, void *data)
    Evas_Object *obj = (Evas_Object *) data;
    Widget_Data *wd = elm_widget_data_get(obj);
    if (!wd) return;
-   _els_box_layout(o, priv, !wd->vertical, wd->homogeneous, 
+   _els_box_layout(o, priv, !wd->vertical, wd->homogeneous,
                    elm_widget_mirrored_get(obj));
 }
 
@@ -843,7 +906,7 @@ _item_del_pre_hook(Elm_Object_Item *it)
    Widget_Data *wd;
    Evas_Object *obj2;
    Elm_Toolbar_Item *item, *next;
-   item = (Elm_Toolbar_Item *) it;
+   item = (Elm_Toolbar_Item *)it;
 
    wd = elm_widget_data_get(WIDGET(item));
    if (!wd) return EINA_FALSE;
@@ -853,7 +916,8 @@ _item_del_pre_hook(Elm_Object_Item *it)
    wd->items = eina_inlist_remove(wd->items, EINA_INLIST_GET(item));
    wd->item_count--;
    if (!next) next = ELM_TOOLBAR_ITEM_FROM_INLIST(wd->items);
-   if (wd->always_select && item->selected && next) _item_select(next);
+   if ((wd->select_mode == ELM_OBJECT_SELECT_MODE_ALWAYS) &&
+       item->selected && next) _item_select(next);
    _item_del(item);
    _theme_hook(obj2);
 
@@ -882,12 +946,16 @@ _item_new(Evas_Object *obj, const char *icon, const char *label, Evas_Smart_Cb f
    elm_widget_item_disable_hook_set(it, _item_disable_hook);
    elm_widget_item_text_set_hook_set(it, _item_text_set_hook);
    elm_widget_item_text_get_hook_set(it, _item_text_get_hook);
+   elm_widget_item_content_set_hook_set(it, _item_content_set_hook);
+   elm_widget_item_content_get_hook_set(it, _item_content_get_hook);
+   elm_widget_item_content_unset_hook_set(it, _item_content_unset_hook);
 
    it->label = eina_stringshare_add(label);
    it->prio.visible = 1;
    it->prio.priority = 0;
    it->func = func;
    it->separator = EINA_FALSE;
+   it->object = NULL;
    it->base.data = data;
    VIEW(it) = edje_object_add(evas_object_evas_get(obj));
    _elm_access_item_register(&it->base, VIEW(it));
@@ -933,15 +1001,20 @@ _item_new(Evas_Object *obj, const char *icon, const char *label, Evas_Smart_Cb f
         evas_object_size_hint_min_set(it->icon, ms, ms);
         evas_object_size_hint_max_set(it->icon, ms, ms);
         edje_object_part_swallow(VIEW(it), "elm.swallow.icon", it->icon);
+        edje_object_signal_emit(VIEW(it), "elm,state,icon,visible", "elm");
         evas_object_show(it->icon);
         elm_widget_sub_object_add(obj, it->icon);
      }
-   edje_object_part_text_set(VIEW(it), "elm.text", it->label);
+   if (it->label)
+     {
+        edje_object_part_text_escaped_set(VIEW(it), "elm.text", it->label);
+        edje_object_signal_emit(VIEW(it), "elm,state,text,visible", "elm");
+     }
    mw = mh = -1;
    elm_coords_finger_size_adjust(1, &mw, 1, &mh);
    edje_object_size_min_restricted_calc(VIEW(it), &mw, &mh, mw, mh);
    elm_coords_finger_size_adjust(1, &mw, 1, &mh);
-    if (wd->shrink_mode != ELM_TOOLBAR_SHRINK_EXPAND)
+   if (wd->shrink_mode != ELM_TOOLBAR_SHRINK_EXPAND)
      {
         if (wd->vertical)
           {
@@ -963,7 +1036,8 @@ _item_new(Evas_Object *obj, const char *icon, const char *label, Evas_Smart_Cb f
    evas_object_size_hint_max_set(VIEW(it), -1, -1);
    evas_object_event_callback_add(VIEW(it), EVAS_CALLBACK_RESIZE,
                                   _resize_item, obj);
-   if ((!wd->items) && wd->always_select) _item_select(it);
+   if ((!wd->items) && (wd->select_mode == ELM_OBJECT_SELECT_MODE_ALWAYS))
+     _item_select(it);
    wd->item_count++;
    return it;
 }
@@ -973,7 +1047,8 @@ _elm_toolbar_item_label_update(Elm_Toolbar_Item *item)
 {
    Evas_Coord mw = -1, mh = -1;
    Widget_Data *wd = elm_widget_data_get(WIDGET(item));
-   edje_object_part_text_set(VIEW(item), "elm.text", item->label);
+   edje_object_part_text_escaped_set(VIEW(item), "elm.text", item->label);
+   edje_object_signal_emit(VIEW(item), "elm,state,text,visible", "elm");
 
    elm_coords_finger_size_adjust(1, &mw, 1, &mh);
    edje_object_size_min_restricted_calc(VIEW(item), &mw, &mh, mw, mh);
@@ -1010,7 +1085,7 @@ _elm_toolbar_item_label_set_cb (void *data, Evas_Object *obj, const char *emissi
 }
 
 static void
-_item_label_set(Elm_Toolbar_Item *item, const char *label, const char *signal)
+_item_label_set(Elm_Toolbar_Item *item, const char *label, const char *sig)
 {
    const char *s;
 
@@ -1020,8 +1095,8 @@ _item_label_set(Elm_Toolbar_Item *item, const char *label, const char *signal)
    s = edje_object_data_get(VIEW(item), "transition_animation_on");
    if ((s) && (atoi(s)))
      {
-        edje_object_part_text_set(VIEW(item), "elm.text_new", item->label);
-        edje_object_signal_emit (VIEW(item), signal, "elm");
+        edje_object_part_text_escaped_set(VIEW(item), "elm.text_new", item->label);
+        edje_object_signal_emit (VIEW(item), sig, "elm");
         edje_object_signal_callback_add(VIEW(item),
                                         "elm,state,label_set,done", "elm",
                                         _elm_toolbar_item_label_set_cb, item);
@@ -1043,6 +1118,7 @@ _elm_toolbar_item_icon_update(Elm_Toolbar_Item *item)
    elm_widget_sub_object_del(VIEW(item), old_icon);
    evas_object_hide(old_icon);
    edje_object_part_swallow(VIEW(item), "elm.swallow.icon", item->icon);
+   edje_object_signal_emit(VIEW(item), "elm,state,icon,visible", "elm");
    elm_coords_finger_size_adjust(1, &mw, 1, &mh);
    edje_object_size_min_restricted_calc(VIEW(item), &mw, &mh, mw, mh);
    elm_coords_finger_size_adjust(1, &mw, 1, &mh);
@@ -1085,7 +1161,7 @@ _elm_toolbar_item_icon_set_cb (void *data, Evas_Object *obj, const char *emissio
 }
 
 static void
-_elm_toolbar_item_icon_obj_set(Evas_Object *obj, Elm_Toolbar_Item *item, Evas_Object *icon_obj, const char *icon_str, double icon_size, const char *signal)
+_elm_toolbar_item_icon_obj_set(Evas_Object *obj, Elm_Toolbar_Item *item, Evas_Object *icon_obj, const char *icon_str, double icon_size, const char *sig)
 {
    Evas_Object *old_icon;
    int ms = 0;
@@ -1119,7 +1195,7 @@ _elm_toolbar_item_icon_obj_set(Evas_Object *obj, Elm_Toolbar_Item *item, Evas_Ob
           }
         edje_object_part_swallow(VIEW(item), "elm.swallow.icon_new",
                                  item->icon);
-        edje_object_signal_emit (VIEW(item), signal, "elm");
+        edje_object_signal_emit (VIEW(item), sig, "elm");
         edje_object_signal_callback_add(VIEW(item),
                                         "elm,state,icon_set,done", "elm",
                                         _elm_toolbar_item_icon_set_cb, item);
@@ -1170,7 +1246,7 @@ elm_toolbar_add(Evas_Object *parent)
    elm_widget_del_hook_set(obj, _del_hook);
    elm_widget_theme_hook_set(obj, _theme_hook);
    elm_widget_translate_hook_set(obj, _translate_hook);
-   elm_widget_can_focus_set(obj, EINA_FALSE);
+   elm_widget_can_focus_set(obj, EINA_TRUE);
 
    wd->more_item = NULL;
    wd->selected_item = NULL;
@@ -1248,7 +1324,7 @@ elm_toolbar_item_append(Evas_Object *obj, const char *icon, const char *label, E
    _theme_hook_item(obj, it, scale, wd->icon_size);
    _sizing_eval(obj);
 
-   return (Elm_Object_Item *) it;
+   return (Elm_Object_Item *)it;
 }
 
 EAPI Elm_Object_Item *
@@ -1268,7 +1344,7 @@ elm_toolbar_item_prepend(Evas_Object *obj, const char *icon, const char *label,
    _theme_hook_item(obj, it, scale, wd->icon_size);
    _sizing_eval(obj);
 
-   return (Elm_Object_Item *) it;
+   return (Elm_Object_Item *)it;
 }
 
 EAPI Elm_Object_Item *
@@ -1293,7 +1369,7 @@ elm_toolbar_item_insert_before(Evas_Object *obj, Elm_Object_Item *before, const
    _theme_hook_item(obj, it, scale, wd->icon_size);
    _sizing_eval(obj);
 
-   return (Elm_Object_Item *) it;
+   return (Elm_Object_Item *)it;
 }
 
 EAPI Elm_Object_Item *
@@ -1318,7 +1394,7 @@ elm_toolbar_item_insert_after(Evas_Object *obj, Elm_Object_Item *after, const ch
    _theme_hook_item(obj, it, scale, wd->icon_size);
    _sizing_eval(obj);
 
-   return (Elm_Object_Item *) it;
+   return (Elm_Object_Item *)it;
 }
 
 EAPI Elm_Object_Item *
@@ -1344,7 +1420,7 @@ elm_toolbar_item_next_get(const Elm_Object_Item *it)
 {
    ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
    return (Elm_Object_Item *) ELM_TOOLBAR_ITEM_FROM_INLIST(
-      EINA_INLIST_GET(((Elm_Toolbar_Item *) it))->next);
+      EINA_INLIST_GET(((Elm_Toolbar_Item *)it))->next);
 }
 
 EAPI Elm_Object_Item *
@@ -1352,21 +1428,14 @@ elm_toolbar_item_prev_get(const Elm_Object_Item *it)
 {
    ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
    return (Elm_Object_Item *) ELM_TOOLBAR_ITEM_FROM_INLIST(
-      EINA_INLIST_GET(((Elm_Toolbar_Item *) it))->prev);
-}
-
-EAPI Evas_Object *
-elm_toolbar_item_toolbar_get(const Elm_Object_Item *it)
-{
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
-   return elm_object_item_widget_get(it);
+      EINA_INLIST_GET(((Elm_Toolbar_Item *)it))->prev);
 }
 
 EAPI void
 elm_toolbar_item_priority_set(Elm_Object_Item *it, int priority)
 {
    ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
-   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
+   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
    if (item->prio.priority == priority) return;
    item->prio.priority = priority;
    _resize(WIDGET(item), NULL, NULL, NULL);
@@ -1376,31 +1445,7 @@ EAPI int
 elm_toolbar_item_priority_get(const Elm_Object_Item *it)
 {
    ELM_OBJ_ITEM_CHECK_OR_RETURN(it, 0);
-   return ((Elm_Toolbar_Item *) it)->prio.priority;
-}
-
-EAPI const char *
-elm_toolbar_item_label_get(const Elm_Object_Item *it)
-{
-   return _item_text_get_hook(it, NULL);
-}
-
-EAPI void
-elm_toolbar_item_label_set(Elm_Object_Item *it, const char *label)
-{
-   _item_text_set_hook(it, NULL, label);
-}
-
-EAPI void *
-elm_toolbar_item_data_get(const Elm_Object_Item *it)
-{
-   return elm_object_item_data_get(it);
-}
-
-EAPI void
-elm_toolbar_item_data_set(Elm_Object_Item *it, const void *data)
-{
-   elm_object_item_data_set(it, (void *) data);
+   return ((Elm_Toolbar_Item *)it)->prio.priority;
 }
 
 EAPI Elm_Object_Item *
@@ -1414,7 +1459,7 @@ elm_toolbar_item_find_by_label(const Evas_Object *obj, const char *label)
    EINA_INLIST_FOREACH(wd->items, it)
      {
         if (!strcmp(it->label, label))
-          return (Elm_Object_Item *) it;
+          return (Elm_Object_Item *)it;
      }
    return NULL;
 }
@@ -1423,7 +1468,7 @@ EAPI void
 elm_toolbar_item_selected_set(Elm_Object_Item *it, Eina_Bool selected)
 {
    ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
-   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
+   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
    Widget_Data *wd = elm_widget_data_get(WIDGET(item));
    if (!wd) return;
 
@@ -1436,7 +1481,7 @@ EAPI Eina_Bool
 elm_toolbar_item_selected_get(const Elm_Object_Item *it)
 {
    ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
-   return ((Elm_Toolbar_Item *) it)->selected;
+   return ((Elm_Toolbar_Item *)it)->selected;
 }
 
 EAPI Elm_Object_Item *
@@ -1456,7 +1501,7 @@ elm_toolbar_item_icon_set(Elm_Object_Item *it, const char *icon)
    Evas_Object *icon_obj;
    Widget_Data *wd;
    Evas_Object *obj;
-   Elm_Toolbar_Item * item = (Elm_Toolbar_Item *) it;
+   Elm_Toolbar_Item * item = (Elm_Toolbar_Item *)it;
 
    obj = WIDGET(item);
    wd = elm_widget_data_get(obj);
@@ -1480,7 +1525,7 @@ EAPI const char *
 elm_toolbar_item_icon_get(const Elm_Object_Item *it)
 {
    ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
-   return ((Elm_Toolbar_Item *) it)->icon_str;
+   return ((Elm_Toolbar_Item *)it)->icon_str;
 }
 
 EAPI Evas_Object *
@@ -1490,7 +1535,7 @@ elm_toolbar_item_object_get(const Elm_Object_Item *it)
 
    Widget_Data *wd;
    Evas_Object *obj;
-   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
+   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
 
    obj = WIDGET(item);
    wd = elm_widget_data_get(obj);
@@ -1503,7 +1548,7 @@ EAPI Evas_Object *
 elm_toolbar_item_icon_object_get(Elm_Object_Item *it)
 {
    ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
-   return ((Elm_Toolbar_Item *) it)->icon;
+   return ((Elm_Toolbar_Item *)it)->icon;
 }
 
 EAPI Eina_Bool
@@ -1515,7 +1560,7 @@ elm_toolbar_item_icon_memfile_set(Elm_Object_Item *it, const void *img, size_t s
    Widget_Data *wd;
    Evas_Object *obj;
    Eina_Bool ret;
-   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
+   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
 
    obj = WIDGET(item);
    wd = elm_widget_data_get(obj);
@@ -1548,7 +1593,7 @@ elm_toolbar_item_icon_file_set(Elm_Object_Item *it, const char *file, const char
    Widget_Data *wd;
    Evas_Object *obj;
    Eina_Bool ret;
-   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
+   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
 
    obj = WIDGET(item);
    wd = elm_widget_data_get(obj);
@@ -1573,34 +1618,10 @@ elm_toolbar_item_icon_file_set(Elm_Object_Item *it, const char *file, const char
 }
 
 EAPI void
-elm_toolbar_item_del(Elm_Object_Item *it)
-{
-   elm_object_item_del(it);
-}
-
-EAPI void
-elm_toolbar_item_del_cb_set(Elm_Object_Item *it, Evas_Smart_Cb func)
-{
-   elm_object_item_del_cb_set(it, func);
-}
-
-EAPI Eina_Bool
-elm_toolbar_item_disabled_get(const Elm_Object_Item *it)
-{
-   return elm_object_item_disabled_get(it);
-}
-
-EAPI void
-elm_toolbar_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled)
-{
-   elm_object_item_disabled_set(it, disabled);
-}
-
-EAPI void
 elm_toolbar_item_separator_set(Elm_Object_Item *it, Eina_Bool separator)
 {
    ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
-   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
+   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
    Evas_Object *obj = WIDGET(item);
    Widget_Data *wd = elm_widget_data_get(obj);
    double scale;
@@ -1614,7 +1635,7 @@ EAPI Eina_Bool
 elm_toolbar_item_separator_get(const Elm_Object_Item *it)
 {
    ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
-   return ((Elm_Toolbar_Item *) it)->separator;
+   return ((Elm_Toolbar_Item *)it)->separator;
 }
 
 EAPI void
@@ -1639,7 +1660,7 @@ elm_toolbar_shrink_mode_set(Evas_Object *obj, Elm_Toolbar_Shrink_Mode shrink_mod
 
    if (shrink_mode == ELM_TOOLBAR_SHRINK_MENU)
      {
-        elm_smart_scroller_policy_set(wd->scr, ELM_SMART_SCROLLER_POLICY_OFF, 
+        elm_smart_scroller_policy_set(wd->scr, ELM_SMART_SCROLLER_POLICY_OFF,
                                       ELM_SMART_SCROLLER_POLICY_OFF);
         wd->more_item = _item_new(obj, "more_menu", "More", NULL, NULL);
      }
@@ -1746,7 +1767,7 @@ EAPI void
 elm_toolbar_item_menu_set(Elm_Object_Item *it, Eina_Bool menu)
 {
    ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
-   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
+   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
    Widget_Data *wd = elm_widget_data_get(WIDGET(item));
    if (!wd) return;
 
@@ -1759,7 +1780,7 @@ EAPI Evas_Object *
 elm_toolbar_item_menu_get(const Elm_Object_Item *it)
 {
    ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
-   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
+   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
    if (!item->menu) return NULL;
    Widget_Data *wd = elm_widget_data_get(WIDGET(item));
    if (!wd) return NULL;
@@ -1775,7 +1796,7 @@ elm_toolbar_item_state_add(Elm_Object_Item *it, const char *icon, const char *la
    Evas_Object *icon_obj;
    Evas_Object *obj;
    Widget_Data *wd;
-   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
+   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
    obj = WIDGET(item);
    wd = elm_widget_data_get(WIDGET(item));
    if (!wd) return NULL;
@@ -1829,7 +1850,7 @@ elm_toolbar_item_state_del(Elm_Object_Item *it, Elm_Toolbar_Item_State *state)
 
    if (!state) return EINA_FALSE;
 
-   item = (Elm_Toolbar_Item *) it;
+   item = (Elm_Toolbar_Item *)it;
    if (!item->states) return EINA_FALSE;
 
    del_state = eina_list_data_find_list(item->states, state);
@@ -1865,7 +1886,7 @@ elm_toolbar_item_state_set(Elm_Object_Item *it, Elm_Toolbar_Item_State *state)
    Eina_List *next_state;
    Elm_Toolbar_Item_State *it_state;
    Evas_Object *obj;
-   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
+   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
 
    obj = WIDGET(item);
    wd = elm_widget_data_get(obj);
@@ -1918,7 +1939,7 @@ EAPI Elm_Toolbar_Item_State *
 elm_toolbar_item_state_get(const Elm_Object_Item *it)
 {
    ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
-   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
+   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
 
    if ((!item->states) || (!item->current_state)) return NULL;
    if (item->current_state == item->states) return NULL;
@@ -1934,7 +1955,7 @@ elm_toolbar_item_state_next(Elm_Object_Item *it)
    Widget_Data *wd;
    Evas_Object *obj;
    Eina_List *next_state;
-   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
+   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
 
    obj = WIDGET(item);
    wd = elm_widget_data_get(obj);
@@ -1955,7 +1976,7 @@ elm_toolbar_item_state_prev(Elm_Object_Item *it)
    Widget_Data *wd;
    Evas_Object *obj;
    Eina_List *prev_state;
-   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *) it;
+   Elm_Toolbar_Item *item = (Elm_Toolbar_Item *)it;
 
    obj = WIDGET(item);
    wd = elm_widget_data_get(obj);
@@ -1969,116 +1990,6 @@ elm_toolbar_item_state_prev(Elm_Object_Item *it)
 }
 
 EAPI void
-elm_toolbar_item_tooltip_text_set(Elm_Object_Item *it, const char *text)
-{
-   elm_object_item_tooltip_text_set(it, text);
-}
-
-EAPI void
-elm_toolbar_item_tooltip_content_cb_set(Elm_Object_Item *it, Elm_Tooltip_Item_Content_Cb func, const void *data, Evas_Smart_Cb del_cb)
-{
-   elm_object_item_tooltip_content_cb_set(it, func, data, del_cb);
-}
-
-EAPI void
-elm_toolbar_item_tooltip_unset(Elm_Object_Item *it)
-{
-   elm_object_item_tooltip_unset(it);
-}
-
-EAPI void
-elm_toolbar_item_tooltip_style_set(Elm_Object_Item *it, const char *style)
-{
-   elm_object_item_tooltip_style_set(it, style);
-}
-
-EAPI const char *
-elm_toolbar_item_tooltip_style_get(const Elm_Object_Item *it)
-{
-   return elm_object_item_tooltip_style_get(it);
-}
-
-EAPI void
-elm_toolbar_item_cursor_set(Elm_Object_Item *it, const char *cursor)
-{
-   elm_object_item_cursor_set(it, cursor);
-}
-
-EAPI const char *
-elm_toolbar_item_cursor_get(const Elm_Object_Item *it)
-{
-   return elm_object_item_cursor_get(it);
-}
-
-EAPI void
-elm_toolbar_item_cursor_unset(Elm_Object_Item *it)
-{
-   elm_object_item_cursor_unset(it);
-}
-
-EAPI void
-elm_toolbar_item_cursor_style_set(Elm_Object_Item *it, const char *style)
-{
-   elm_object_item_cursor_style_set(it, style);
-}
-
-EAPI const char *
-elm_toolbar_item_cursor_style_get(const Elm_Object_Item *it)
-{
-   return elm_object_item_cursor_style_get(it);
-}
-
-EAPI void
-elm_toolbar_item_cursor_engine_only_set(Elm_Object_Item *it, Eina_Bool engine_only)
-{
-   elm_object_item_cursor_engine_only_set(it, engine_only);
-}
-
-EAPI Eina_Bool
-elm_toolbar_item_cursor_engine_only_get(const Elm_Object_Item *it)
-{
-   return elm_object_item_cursor_engine_only_get(it);
-}
-
-EAPI void
-elm_toolbar_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype);
-   Widget_Data *wd = elm_widget_data_get(obj);
-   if (!wd) return;
-   if (always_select && (!wd->always_select) && wd->items)
-     _item_select(ELM_TOOLBAR_ITEM_FROM_INLIST(wd->items));
-   wd->always_select = always_select;
-}
-
-EAPI Eina_Bool
-elm_toolbar_always_select_mode_get(const Evas_Object *obj)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
-   Widget_Data *wd = elm_widget_data_get(obj);
-   if (!wd) return EINA_FALSE;
-   return wd->always_select;
-}
-
-EAPI void
-elm_toolbar_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype);
-   Widget_Data *wd = elm_widget_data_get(obj);
-   if (!wd) return;
-   wd->no_select = no_select;
-}
-
-EAPI Eina_Bool
-elm_toolbar_no_select_mode_get(const Evas_Object *obj)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
-   Widget_Data *wd = elm_widget_data_get(obj);
-   if (!wd) return EINA_FALSE;
-   return wd->no_select;
-}
-
-EAPI void
 elm_toolbar_icon_order_lookup_set(Evas_Object *obj, Elm_Icon_Lookup_Order order)
 {
    ELM_CHECK_WIDTYPE(obj, widtype);
@@ -2102,18 +2013,6 @@ elm_toolbar_icon_order_lookup_get(const Evas_Object *obj)
    return wd->lookup_order;
 }
 
-EINA_DEPRECATED EAPI void
-elm_toolbar_orientation_set(Evas_Object *obj, Eina_Bool vertical)
-{
-   elm_toolbar_horizontal_set(obj, !vertical);
-}
-
-EINA_DEPRECATED EAPI Eina_Bool
-elm_toolbar_orientation_get(const Evas_Object *obj)
-{
-   return !elm_toolbar_horizontal_get(obj);
-}
-
 EAPI void
 elm_toolbar_horizontal_set(Evas_Object *obj, Eina_Bool horizontal)
 {
@@ -2146,14 +2045,28 @@ elm_toolbar_items_count(const Evas_Object *obj)
    return wd->item_count;
 }
 
-EINA_DEPRECATED EAPI void
-elm_toolbar_mode_shrink_set(Evas_Object *obj, Elm_Toolbar_Shrink_Mode shrink_mode)
+EAPI void
+elm_toolbar_select_mode_set(Evas_Object *obj, Elm_Object_Select_Mode mode)
 {
-   elm_toolbar_shrink_mode_set(obj, shrink_mode);
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   if (mode >= ELM_OBJECT_SELECT_MODE_MAX)
+     return;
+   if ((mode == ELM_OBJECT_SELECT_MODE_ALWAYS) &&
+       (wd->select_mode != ELM_OBJECT_SELECT_MODE_ALWAYS) &&
+       wd->items)
+     _item_select(ELM_TOOLBAR_ITEM_FROM_INLIST(wd->items));
+   if (wd->select_mode != mode)
+     wd->select_mode = mode;
 }
 
-EINA_DEPRECATED EAPI Elm_Toolbar_Shrink_Mode
-elm_toolbar_mode_shrink_get(const Evas_Object *obj)
+EAPI Elm_Object_Select_Mode
+elm_toolbar_select_mode_get(const Evas_Object *obj)
 {
-   return elm_toolbar_shrink_mode_get(obj);
+   ELM_CHECK_WIDTYPE(obj, widtype) ELM_OBJECT_SELECT_MODE_MAX;
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return ELM_OBJECT_SELECT_MODE_MAX;
+   return wd->select_mode;
 }
+