Merge "[elc_naviframe]: As hide signal was sent twice, control bar was hidden as...
authorShilpa Singh <shilpa.singh@samsung.com>
Thu, 24 Nov 2011 11:09:21 +0000 (20:09 +0900)
committerGerrit Code Review <git@Maetan>
Thu, 24 Nov 2011 11:09:21 +0000 (20:09 +0900)
21 files changed:
configure.ac
src/bin/Makefile.am
src/bin/test.c
src/bin/test_multibuttonentry.c [new file with mode: 0644]
src/edje_externals/Makefile.am
src/edje_externals/elm_navigationbar.c [deleted file]
src/edje_externals/modules.inc
src/lib/Elementary.h.in
src/lib/Makefile.am
src/lib/elc_multibuttonentry.c [moved from src/lib/elm_multibuttonentry.c with 85% similarity]
src/lib/elc_navigationbar.c [deleted file]
src/lib/elm_button.c
src/lib/elm_colorselector.c
src/lib/elm_dialoguegroup.c
src/lib/elm_entry.c
src/lib/elm_gengrid.c
src/lib/elm_slidingdrawer.c [deleted file]
src/lib/elm_widget.c
src/lib/elm_widget.h
src/lib/elm_win.c
src/modules/ctxpopup_copypasteUI/copypaste.c

index 58f7237..e64f7da 100755 (executable)
@@ -220,11 +220,23 @@ PKG_CHECK_MODULES([ELEMENTARY],
     ecore-evas >= 1.0.999
     ecore-file >= 1.0.999
     ecore-imf >= 1.0.999
-    ecore-con >= 1.0.999
     edje >= 1.0.999
    ]
 )
 
+PKG_CHECK_MODULES([ELEMENTARY_ECORE_CON],
+   [ecore-con >= 1.0.999],
+   [
+    ELEMENTARY_ECORE_CON_INC="#include <Ecore_Con.h>"
+    AC_DEFINE(HAVE_ELEMENTARY_ECORE_CON, 1, [Have Ecore_Con support])
+    have_ecore_con="yes"
+    requirement_elm="ecore-con >= 1.0.999 ${requirement_elm}"
+   ],
+   [have_ecore_con="no"])
+AC_SUBST(ELEMENTARY_ECORE_CON_INC)
+
+AM_CONDITIONAL([HAVE_ECORE_CON], [test "x${have_ecore_con}" = "xyes"])
+
 PKG_CHECK_MODULES([EIO],
         [eio],
         [
@@ -735,6 +747,7 @@ echo "    Windows XP.............: ${have_elementary_win32}"
 echo "    Windows CE.............: ${have_elementary_wince}"
 echo
 echo "  Features:"
+echo "    Ecore_Con..............: ${have_ecore_con}"
 echo "    EDBus..................: ${have_elementary_edbus}"
 echo "    EFreet.................: ${have_elementary_efreet}"
 echo "    EWeather...............: ${have_elementary_eweather}"
index 7c65e75..db1d353 100644 (file)
@@ -81,6 +81,7 @@ test_list.c \
 test_map.c \
 test_menu.c \
 test_multi.c \
+test_multibuttonentry.c \
 test_naviframe.c \
 test_notify.c \
 test_pager.c \
index 6d06def..6f16372 100644 (file)
@@ -39,6 +39,7 @@ void test_entry3(void *data, Evas_Object *obj, void *event_info);
 void test_entry4(void *data, Evas_Object *obj, void *event_info);
 void test_entry5(void *data, Evas_Object *obj, void *event_info);
 void test_entry_notepad(void *data, Evas_Object *obj, void *event_info);
+void test_multibuttonentry(void *data, Evas_Object *obj, void *event_info);
 void test_anchorview(void *data, Evas_Object *obj, void *event_info);
 void test_anchorblock(void *data, Evas_Object *obj, void *event_info);
 void test_toolbar(void *data, Evas_Object *obj, void *event_info);
@@ -333,6 +334,7 @@ add_tests:
    ADD_TEST(NULL, "Entries", "Entry 4", test_entry4);
    ADD_TEST(NULL, "Entries", "Entry 5", test_entry5);
    ADD_TEST(NULL, "Entries", "Entry Notepad", test_entry_notepad);
+   ADD_TEST(NULL, "Entries", "Multibuttonentry", test_multibuttonentry);
    
    //------------------------------//
    ADD_TEST(NULL, "Buttons", "Buttons", test_button);
diff --git a/src/bin/test_multibuttonentry.c b/src/bin/test_multibuttonentry.c
new file mode 100644 (file)
index 0000000..b8d5604
--- /dev/null
@@ -0,0 +1,232 @@
+#include <Elementary.h>
+#ifdef HAVE_CONFIG_H
+# include "elementary_config.h"
+#endif
+#ifndef ELM_LIB_QUICKLAUNCH
+
+static void
+_item_selected_cb(void *data __UNUSED__,
+                  Evas_Object *obj __UNUSED__,
+                  void *event_info)
+{
+   Elm_Multibuttonentry_Item *item = (Elm_Multibuttonentry_Item *)event_info;
+   printf("selected item = %s\n", elm_multibuttonentry_item_label_get(item));
+}
+
+// "item,added" smart callback of multibuttonentry.
+static void
+_item_added_cb(void *data __UNUSED__,
+               Evas_Object *obj __UNUSED__,
+               void *event_info)
+{
+   Elm_Multibuttonentry_Item *item = (Elm_Multibuttonentry_Item *)event_info;
+   printf("\n added item = %s\n", elm_multibuttonentry_item_label_get(item));
+}
+
+// "item,deleted" smart callback
+static void
+_item_deleted_cb(void *data __UNUSED__,
+                 Evas_Object *obj __UNUSED__,
+                 void *event_info __UNUSED__)
+{
+   printf("deleted item\n");
+}
+
+// "item,clicked" smart callback
+static void
+_item_clicked_cb(void *data __UNUSED__,
+                 Evas_Object *obj __UNUSED__,
+                 void *event_info )
+{
+   Elm_Multibuttonentry_Item *item = (Elm_Multibuttonentry_Item *)event_info;
+   printf("clicked item = %s\n", elm_multibuttonentry_item_label_get(item));
+}
+
+static void
+_mbe_clicked_cb(void *data __UNUSED__,
+                Evas_Object *obj,
+                void *event_info __UNUSED__ )
+{
+   //Unset the multibuttonentry to contracted mode of single line
+   elm_multibuttonentry_contracted_state_set(obj, 0);
+   printf("A multibuttonentry is clicked!\n");
+   Evas_Object *entry;
+   entry = elm_multibuttonentry_entry_get(obj);
+   if (!entry)
+     {
+        printf("%s entry is NULL\n", __func__);
+     }
+
+   Evas_Coord x, y, w, h;
+   Evas_Coord mbe_x, mbe_y, mbe_w, mbe_h;
+   evas_object_geometry_get(obj, &mbe_x, &mbe_y, &mbe_w, &mbe_h);
+   evas_object_geometry_get(entry, &x, &y, &w, &h);
+   printf("%s mbe x :%d y:%d w :%d h:%d\n", __func__, mbe_x, mbe_y, mbe_w, mbe_h);
+   printf("%s wd->entry x :%d y:%d w :%d h:%d\n", __func__, x, y, w, h);
+}
+
+static void
+_mbe_unfocused_cb(void *data __UNUSED__,
+                  Evas_Object *obj,
+                  void *event_info __UNUSED__ )
+{
+   //Set the multibuttonentry to contracted mode of single line
+   elm_multibuttonentry_contracted_state_set(obj, 1);
+   printf("multibuttonentry unfocused!\n");
+}
+
+static void
+_mbe_focused_cb(void *data __UNUSED__,
+                Evas_Object *obj __UNUSED__,
+                void *event_info __UNUSED__ )
+{
+   printf("multibuttonentry focused!\n");
+}
+
+// "expanded" smart callback
+static void
+_expanded_cb(void *data __UNUSED__,
+             Evas_Object *obj __UNUSED__,
+             void *event_info __UNUSED__)
+{
+   printf("expanded!\n");
+}
+
+// "contracted" smart callback
+static void
+_shrank_cb(void *data __UNUSED__,
+           Evas_Object *obj __UNUSED__,
+           void *event_info __UNUSED__)
+{
+   printf("shrank!\n");
+}
+
+// "contracted,state,changed" smart callback
+static void
+_shrink_state_changed_cb(void *data __UNUSED__,
+                         Evas_Object *obj __UNUSED__,
+                         void *event_info __UNUSED__)
+{
+   printf("contracted state changed! \n");
+}
+
+// "item verified" confirm callback
+static Eina_Bool
+_item_filter_cb(Evas_Object *obj __UNUSED__,
+                const char* item_label,
+                void *item_data __UNUSED__,
+                void *data __UNUSED__)
+{
+   printf("%s, label: %s\n", __func__, item_label);
+
+   return EINA_TRUE;
+}
+
+static void
+_button_clicked_cb(void *data __UNUSED__,
+                   Evas_Object *obj __UNUSED__,
+                   void *event_info __UNUSED__)
+{
+   printf("%s button is clicked\n", __func__);
+}
+
+static Evas_Object*
+_add_multibuttonentry(Evas_Object *parent)
+{
+   Evas_Object *scr = NULL;
+   Evas_Object *mbe = NULL;
+   void *data = NULL;
+
+   scr = elm_scroller_add(parent);
+   elm_scroller_bounce_set(scr, EINA_FALSE, EINA_TRUE);
+   elm_scroller_policy_set(scr, ELM_SCROLLER_POLICY_OFF,ELM_SCROLLER_POLICY_AUTO);
+   evas_object_show(scr);
+
+   mbe = elm_multibuttonentry_add(parent);
+   elm_multibuttonentry_label_set(mbe, "To: ");
+   elm_multibuttonentry_guide_text_set(mbe, "Tap to add recipient");
+   evas_object_size_hint_weight_set(mbe, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   evas_object_size_hint_align_set(mbe, EVAS_HINT_FILL, EVAS_HINT_FILL);
+   elm_object_content_set(scr, mbe);
+
+   // Add item verify callback to Multibuttonentry
+   elm_multibuttonentry_item_verify_callback_set(mbe, _item_filter_cb, data);
+
+   // Add "item,selected","item,added", "item,deleted", "clicked", "unfocused",
+   // "expanded", "contracted" and "contracted,state,changed" smart callback
+   evas_object_smart_callback_add(mbe, "item,selected", _item_selected_cb, NULL);
+   evas_object_smart_callback_add(mbe, "item,added", _item_added_cb, NULL);
+   evas_object_smart_callback_add(mbe, "item,deleted", _item_deleted_cb, NULL);
+   evas_object_smart_callback_add(mbe, "item,clicked", _item_clicked_cb, NULL);
+
+   evas_object_smart_callback_add(mbe, "clicked", _mbe_clicked_cb, NULL);
+   evas_object_smart_callback_add(mbe, "focused", _mbe_focused_cb, NULL);
+   evas_object_smart_callback_add(mbe, "unfocused", _mbe_unfocused_cb, NULL);
+
+   evas_object_smart_callback_add(mbe, "expanded", _expanded_cb, NULL);
+   evas_object_smart_callback_add(mbe, "shrank", _shrank_cb, NULL);
+   evas_object_smart_callback_add(mbe, "shrink,state,changed", _shrink_state_changed_cb, NULL);
+
+   evas_object_resize(mbe, 220, 300);
+   elm_object_focus_set(mbe, EINA_TRUE);
+
+   return scr;
+}
+
+static Evas_Object*
+_add_buttons(Evas_Object *parent)
+{
+   Evas_Object *bx = NULL;
+   Evas_Object *btn;
+
+   bx = elm_box_add(parent);
+   elm_box_horizontal_set(bx, EINA_TRUE);
+   elm_box_homogeneous_set(bx, EINA_TRUE);
+
+   btn = elm_button_add(parent);
+   evas_object_smart_callback_add(btn, "clicked", _button_clicked_cb, NULL);
+   elm_object_text_set(btn, "click");
+   evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, 0.0);
+   evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
+   elm_box_pack_end(bx, btn);
+   evas_object_show(btn);
+
+   return bx;
+}
+
+void
+test_multibuttonentry(void *data __UNUSED__,
+                      Evas_Object *obj __UNUSED__,
+                      void *event_info __UNUSED__)
+{
+   Evas_Object *win, *bg, *sc, *bx;
+   Evas_Object *ly;
+   char buf[PATH_MAX];
+
+   win = elm_win_add(NULL, "Multibuttonentry", ELM_WIN_BASIC);
+   elm_win_title_set(win, "Multibuttonentry");
+   elm_win_autodel_set(win, EINA_TRUE);
+
+   bg = elm_bg_add(win);
+   elm_win_resize_object_add(win, bg);
+   evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   evas_object_show(bg);
+
+   ly = elm_layout_add(win);
+   snprintf(buf, sizeof(buf), "%s/objects/multibuttonentry.edj", elm_app_data_dir_get());
+   elm_layout_file_set(ly, buf, "multibuttonentry_test");
+   evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+   elm_win_resize_object_add(win, ly);
+   evas_object_show(ly);
+
+   sc = _add_multibuttonentry(ly);
+   elm_object_part_content_set(ly, "multibuttonentry", sc);
+
+   bx = _add_buttons(ly);
+   elm_object_part_content_set(ly, "box", bx);
+
+   evas_object_resize(win, 320, 480);
+   evas_object_show(win);
+   elm_object_focus_set(sc, EINA_TRUE);
+}
+#endif
index c69dfb9..eec2334 100644 (file)
@@ -53,7 +53,6 @@ elm_label.c \
 elm_list.c \
 elm_map.c \
 elm_multibuttonentry.c \
-elm_navigationbar.c \
 elm_navigationbar_ex.c \
 elm_nocontents.c \
 elm_notify.c \
diff --git a/src/edje_externals/elm_navigationbar.c b/src/edje_externals/elm_navigationbar.c
deleted file mode 100644 (file)
index 16105b3..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-#include <assert.h>
-
-#include "private.h"
-
-typedef struct _Elm_Params_Navigationbar
-{
-   Eina_Bool disable_animation_exists:1;
-   Eina_Bool disable_animation:1;
-   Eina_Bool hidden_exists:1;
-   Eina_Bool hidden:1;
-} Elm_Params_Navigationbar;
-
-
-static void
-external_navigationbar_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__)
-{
-   const Elm_Params_Navigationbar *p;
-
-   if (to_params) p = to_params;
-   else if (from_params) p = from_params;
-   else return;
-
-  if(p->disable_animation_exists) elm_navigationbar_animation_disabled_set(obj, p->disable_animation);
-  if(p->hidden_exists) elm_navigationbar_hidden_set(obj, p->hidden);
-}
-
-static Eina_Bool
-external_navigationbar_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_External_Param *param)
-{
-   if (!strcmp(param->name, "disable animation"))
-     {
-       if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
-         {
-            elm_navigationbar_animation_disabled_set(obj, param->i);
-            return EINA_TRUE;
-         }
-     }
-   else if (!strcmp(param->name, "hidden"))
-     {
-       if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
-         {
-            elm_navigationbar_hidden_set(obj, param->i);
-            return EINA_TRUE;
-         }
-     }
-   ERR("unknown parameter '%s' of type '%s'",
-       param->name, edje_external_param_type_str(param->type));
-
-   return EINA_FALSE;
-}
-
-static Eina_Bool
-external_navigationbar_param_get(void *data __UNUSED__, const Evas_Object *obj __UNUSED__, Edje_External_Param *param)
-{
-   ERR("unknown parameter '%s' of type '%s'",
-       param->name, edje_external_param_type_str(param->type));
-
-   return EINA_FALSE;
-}
-
-static void *
-external_navigationbar_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const Eina_List *params)
-{
-   Elm_Params_Navigationbar *mem;
-   Edje_External_Param *param;
-   const Eina_List *l;
-
-   mem = calloc(1, sizeof(Elm_Params_Navigationbar));
-   if (!mem)
-     return NULL;
-
-   EINA_LIST_FOREACH(params, l, param)
-     {
-       if (!strcmp(param->name, "disable animation"))
-               {
-            mem->disable_animation = !!param->i;
-                 mem->disable_animation_exists = EINA_TRUE;
-               }
-       else if (!strcmp(param->name, "hidden"))
-         {
-            mem->hidden = !!param->i;
-            mem->hidden_exists = EINA_TRUE;
-         }
-     }
-
-   return mem;
-}
-
-static Evas_Object *external_navigationbar_content_get(void *data __UNUSED__,
-               const Evas_Object *obj __UNUSED__, const char *content __UNUSED__)
-{
-       ERR("so content");
-       return NULL;
-}
-
-static void
-external_navigationbar_params_free(void *params)
-{
-   Elm_Params_Navigationbar* mem = params;
-   free(mem);
-}
-
-static Edje_External_Param_Info external_navigationbar_params[] = {
-   EDJE_EXTERNAL_PARAM_INFO_BOOL("disable animation"),
-   EDJE_EXTERNAL_PARAM_INFO_BOOL("hidden"),
-   EDJE_EXTERNAL_PARAM_INFO_SENTINEL
-};
-
-DEFINE_EXTERNAL_ICON_ADD(navigationbar, "navigationbar");
-DEFINE_EXTERNAL_TYPE_SIMPLE(navigationbar, "Navigationbar");
index d6590ec..6e7aa13 100644 (file)
@@ -1,3 +1,4 @@
+DEFINE_TYPE(actionslider)
 DEFINE_TYPE(anchorblock)
 DEFINE_TYPE(anchorview)
 DEFINE_TYPE(bubble)
@@ -11,18 +12,18 @@ DEFINE_TYPE(entry)
 DEFINE_TYPE(fileselector)
 DEFINE_TYPE(fileselector_button)
 DEFINE_TYPE(fileselector_entry)
+DEFINE_TYPE(frame)
 DEFINE_TYPE(genlist)
 DEFINE_TYPE(gengrid)
 DEFINE_TYPE(hoversel)
-DEFINE_TYPE(index)
 DEFINE_TYPE(list)
 DEFINE_TYPE(map)
 DEFINE_TYPE(multibuttonentry)
-DEFINE_TYPE(navigationbar)
 DEFINE_TYPE(navigationbar_ex)
 DEFINE_TYPE(nocontents)
 DEFINE_TYPE(page_control)
 DEFINE_TYPE(pager)
+DEFINE_TYPE(panes)
 DEFINE_TYPE(photocam)
 DEFINE_TYPE(progressbar)
 DEFINE_TYPE(radio)
@@ -34,8 +35,10 @@ DEFINE_TYPE(thumb)
 DEFINE_TYPE(toggle)
 DEFINE_TYPE(toolbar)
 DEFINE_TYPE(notify)
-DEFINE_TYPE(panes)
 DEFINE_TYPE(label)
 DEFINE_TYPE(icon)
 DEFINE_TYPE(scroller)
 DEFINE_TYPE(segment_control)
+DEFINE_TYPE(index)
+DEFINE_TYPE(video)
+DEFINE_TYPE(web)
index 90c12bf..4c2fc63 100644 (file)
@@ -368,7 +368,7 @@ contact with the developers and maintainers.
 #include <Ecore_Evas.h>
 #include <Ecore_File.h>
 #include <Ecore_IMF.h>
-#include <Ecore_Con.h>
+@ELEMENTARY_ECORE_CON_INC@
 #include <Edje.h>
 
 #ifdef ELM_EDBUS
@@ -1255,6 +1255,7 @@ extern "C" {
     * @ingroup General
     */
    EAPI Evas_Object *elm_object_item_part_content_unset(Elm_Object_Item *it, const char *part);
+
 #define elm_object_item_content_unset(it) elm_object_item_part_content_unset((it), NULL)
 
    /**
@@ -11237,6 +11238,45 @@ extern "C" {
     */
    EAPI const char  *elm_entry_selection_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
+    * Returns the actual textblock object of the entry.
+    *
+    * This function exposes the internal textblock object that actually
+    * contains and draws the text. This should be used for low-level
+    * manipulations that are otherwise not possible.
+    *
+    * Changing the textblock directly from here will not notify edje/elm to
+    * recalculate the textblock size automatically, so any modifications
+    * done to the textblock returned by this function should be followed by
+    * a call to elm_entry_calc_force().
+    *
+    * The return value is marked as const as an additional warning.
+    * One should not use the returned object with any of the generic evas
+    * functions (geometry_get/resize/move and etc), but only with the textblock
+    * functions; The former will either not work at all, or break the correct
+    * functionality.
+    *
+    * IMPORTANT: Many functions may change (i.e delete and create a new one)
+    * the internal textblock object. Do NOT cache the returned object, and try
+    * not to mix calls on this object with regular elm_entry calls (which may
+    * change the internal textblock object). This applies to all cursors
+    * returned from textblock calls, and all the other derivative values.
+    *
+    * @param obj The entry object
+    * @return The textblock object.
+    */
+   EAPI const Evas_Object *elm_entry_textblock_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
+    * Forces calculation of the entry size and text layouting.
+    *
+    * This should be used after modifying the textblock object directly. See
+    * elm_entry_textblock_get() for more information.
+    *
+    * @param obj The entry object
+    *
+    * @see elm_entry_textblock_get()
+    */
+   EAPI void elm_entry_calc_force(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /**
     * Inserts the given text into the entry at the current cursor position.
     *
     * This inserts text at the cursor position as if it was typed
@@ -17071,7 +17111,6 @@ extern "C" {
     * @ingroup List
     */
    EAPI void             elm_list_item_end_set(Elm_List_Item *item, Evas_Object *end) EINA_ARG_NONNULL(1);
-   EAPI Evas_Object     *elm_list_item_base_get(const Elm_List_Item *item) EINA_ARG_NONNULL(1);
 
    /**
     * Gets the base object of the item.
@@ -17084,6 +17123,7 @@ extern "C" {
     * @ingroup List
     */
    EAPI Evas_Object     *elm_list_item_object_get(const Elm_List_Item *item) EINA_ARG_NONNULL(1);
+   EINA_DEPRECATED EAPI Evas_Object     *elm_list_item_base_get(const Elm_List_Item *item) EINA_ARG_NONNULL(1);
 
    /**
     * Get the label of item.
@@ -28743,41 +28783,6 @@ extern "C" {
    EAPI int          elm_popup_run(Evas_Object *obj);
 
    /* NavigationBar */
-   #define NAVIBAR_TITLEOBJ_INSTANT_HIDE "elm,state,hide,noanimate,title", "elm"
-   #define NAVIBAR_TITLEOBJ_INSTANT_SHOW "elm,state,show,noanimate,title", "elm"
-
-   typedef enum
-     {
-        ELM_NAVIGATIONBAR_FUNCTION_BUTTON1,
-        ELM_NAVIGATIONBAR_FUNCTION_BUTTON2,
-        ELM_NAVIGATIONBAR_FUNCTION_BUTTON3,
-        ELM_NAVIGATIONBAR_BACK_BUTTON
-     } Elm_Navi_Button_Type;
-
-   EINA_DEPRECATED EAPI Evas_Object *elm_navigationbar_add(Evas_Object *parent);
-   EINA_DEPRECATED    EAPI void         elm_navigationbar_push(Evas_Object *obj, const char *title, Evas_Object *fn_btn1, Evas_Object *fn_btn2, Evas_Object *fn_btn3, Evas_Object *content);
-   EINA_DEPRECATED    EAPI void         elm_navigationbar_pop(Evas_Object *obj);
-   EINA_DEPRECATED    EAPI void         elm_navigationbar_to_content_pop(Evas_Object *obj, Evas_Object *content);
-   EINA_DEPRECATED    EAPI void         elm_navigationbar_title_label_set(Evas_Object *obj, Evas_Object *content, const char *title);
-   EINA_DEPRECATED    EAPI const char  *elm_navigationbar_title_label_get(Evas_Object *obj, Evas_Object *content);
-   EINA_DEPRECATED    EAPI void         elm_navigationbar_title_object_add(Evas_Object *obj, Evas_Object *content, Evas_Object *title_obj);
-   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_title_object_get(Evas_Object *obj, Evas_Object *content);
-   EINA_DEPRECATED    EAPI Eina_List   *elm_navigationbar_title_object_list_get(Evas_Object *obj, Evas_Object *content);
-   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_content_top_get(Evas_Object *obj);
-   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_content_bottom_get(Evas_Object *obj);
-   EINA_DEPRECATED    EAPI void         elm_navigationbar_hidden_set(Evas_Object *obj, Eina_Bool hidden);
-   EINA_DEPRECATED    EAPI void         elm_navigationbar_title_button_set(Evas_Object *obj, Evas_Object *content, Evas_Object *button, Elm_Navi_Button_Type button_type);
-   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_title_button_get(Evas_Object *obj, Evas_Object *content, Elm_Navi_Button_Type button_type);
-   EINA_DEPRECATED    EAPI const char  *elm_navigationbar_subtitle_label_get(Evas_Object *obj, Evas_Object *content);
-   EINA_DEPRECATED    EAPI void         elm_navigationbar_subtitle_label_set(Evas_Object *obj, Evas_Object *content, const char *subtitle);
-   EINA_DEPRECATED    EAPI void         elm_navigationbar_title_object_list_unset(Evas_Object *obj, Evas_Object *content, Eina_List **list);
-   EINA_DEPRECATED    EAPI void         elm_navigationbar_animation_disabled_set(Evas_Object *obj, Eina_Bool disable);
-   EINA_DEPRECATED    EAPI void         elm_navigationbar_title_object_visible_set(Evas_Object *obj, Evas_Object *content, Eina_Bool visible);
-   EINA_DEPRECATED    Eina_Bool         elm_navigationbar_title_object_visible_get(Evas_Object *obj, Evas_Object *content);
-   EINA_DEPRECATED    EAPI void         elm_navigationbar_title_icon_set(Evas_Object *obj, Evas_Object *content, Evas_Object *icon);
-   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_title_icon_get(Evas_Object *obj, Evas_Object *content);
-
-   /* NavigationBar */
    #define NAVIBAR_EX_TITLEOBJ_INSTANT_HIDE "elm,state,hide,noanimate,title", "elm"
    #define NAVIBAR_EX_TITLEOBJ_INSTANT_SHOW "elm,state,show,noanimate,title", "elm"
 
@@ -29339,27 +29344,6 @@ extern "C" {
     */
 
 
-   /* Sliding Drawer */
-   typedef enum _Elm_SlidingDrawer_Pos
-     {
-        ELM_SLIDINGDRAWER_BOTTOM,
-        ELM_SLIDINGDRAWER_LEFT,
-        ELM_SLIDINGDRAWER_RIGHT,
-        ELM_SLIDINGDRAWER_TOP
-     } Elm_SlidingDrawer_Pos;
-
-   typedef struct _Elm_SlidingDrawer_Drag_Value
-     {
-        double x, y;
-     } Elm_SlidingDrawer_Drag_Value;
-
-   EINA_DEPRECATED EAPI Evas_Object *elm_slidingdrawer_add(Evas_Object *parent);
-   EINA_DEPRECATED EAPI void         elm_slidingdrawer_content_set (Evas_Object *obj, Evas_Object *content);
-   EINA_DEPRECATED EAPI Evas_Object *elm_slidingdrawer_content_unset(Evas_Object *obj);
-   EINA_DEPRECATED EAPI void         elm_slidingdrawer_pos_set(Evas_Object *obj, Elm_SlidingDrawer_Pos pos);
-   EINA_DEPRECATED EAPI void         elm_slidingdrawer_max_drag_value_set(Evas_Object *obj, double dw,  double dh);
-   EINA_DEPRECATED EAPI void         elm_slidingdrawer_drag_value_set(Evas_Object *obj, double dx, double dy);
-
    /* multibuttonentry */
    typedef struct _Multibuttonentry_Item Elm_Multibuttonentry_Item;
    typedef Eina_Bool (*Elm_Multibuttonentry_Item_Verify_Callback) (Evas_Object *obj, const char *item_label, void *item_data, void *data);
index 378ce41..e6ce618 100644 (file)
@@ -48,8 +48,8 @@ elc_fileselector_button.c \
 elc_fileselector.c \
 elc_fileselector_entry.c \
 elc_hoversel.c \
+elc_multibuttonentry.c \
 elc_naviframe.c \
-elc_navigationbar.c \
 elc_navigationbar_ex.c\
 elc_player.c \
 elc_scrolled_entry.c \
@@ -99,7 +99,6 @@ elm_mapbuf.c \
 elm_map.c \
 elm_menu.c \
 elm_module.c \
-elm_multibuttonentry.c \
 elm_nocontents.c \
 elm_notify.c \
 elm_pagecontrol.c \
@@ -117,7 +116,6 @@ elm_segment_control.c \
 elm_separator.c \
 elm_slider.c \
 elm_slideshow.c \
-elm_slidingdrawer.c \
 elm_spinner.c \
 elm_stackedicon.c \
 elm_store.c \
similarity index 85%
rename from src/lib/elm_multibuttonentry.c
rename to src/lib/elc_multibuttonentry.c
index b148899..61fcaf1 100644 (file)
@@ -1,77 +1,74 @@
 #include <Elementary.h>
 #include "elm_priv.h"
 
-/**
- * @defgroup Multibuttonentry Multibuttonentry
- * @ingroup Elementary
- *
- * This is a Multibuttonentry.
- */
-
 #define MAX_STR 256
 #define MIN_W_ENTRY 20
 
 typedef enum _Multibuttonentry_Pos
-{
-   MULTIBUTONENTRY_POS_START,
-   MULTIBUTONENTRY_POS_END,
-   MULTIBUTONENTRY_POS_BEFORE,
-   MULTIBUTONENTRY_POS_AFTER,
-   MULTIBUTONENTRY_POS_NUM
-} Multibuttonentry_Pos;
+  {
+     MULTIBUTTONENTRY_POS_START,
+     MULTIBUTTONENTRY_POS_END,
+     MULTIBUTTONENTRY_POS_BEFORE,
+     MULTIBUTTONENTRY_POS_AFTER,
+     MULTIBUTTONENTRY_POS_NUM
+  } Multibuttonentry_Pos;
 
 typedef enum _Multibuttonentry_Button_State
-{
-   MULTIBUTONENTRY_BUTTON_STATE_DEFAULT,
-   MULTIBUTONENTRY_BUTTON_STATE_SELECTED,
-   MULTIBUTONENTRY_BUTTON_STATE_NUM
-} Multibuttonentry_Button_State;
-
-typedef enum _MultiButtonEntry_Closed_Button_Type {
-   MULTIBUTTONENTRY_CLOSED_IMAGE,
-   MULTIBUTTONENTRY_CLOSED_LABEL
-} MultiButtonEntry_Closed_Button_Type;
+  {
+     MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT,
+     MULTIBUTTONENTRY_BUTTON_STATE_SELECTED,
+     MULTIBUTTONENTRY_BUTTON_STATE_NUM
+  } Multibuttonentry_Button_State;
+
+typedef enum _MultiButtonEntry_Closed_Button_Type
+  {
+     MULTIBUTTONENTRY_CLOSED_IMAGE,
+     MULTIBUTTONENTRY_CLOSED_LABEL
+  } MultiButtonEntry_Closed_Button_Type;
 
 typedef enum _Multibuttonentry_View_State
-{
-   MULTIBUTTONENTRY_VIEW_NONE,
-   MULTIBUTTONENTRY_VIEW_GUIDETEXT,
-   MULTIBUTTONENTRY_VIEW_ENTRY,
-   MULTIBUTTONENTRY_VIEW_CONTRACTED
-} Multibuttonentry_View_State;
-
-struct _Multibuttonentry_Item {
-   Evas_Object *multibuttonentry;
-   Evas_Object *button;
-   void *data;
-   Evas_Coord vw, rw; // vw: visual width, real width
-   Eina_Bool  visible: 1;
-};
+  {
+     MULTIBUTTONENTRY_VIEW_NONE,
+     MULTIBUTTONENTRY_VIEW_GUIDETEXT,
+     MULTIBUTTONENTRY_VIEW_ENTRY,
+     MULTIBUTTONENTRY_VIEW_CONTRACTED
+  } Multibuttonentry_View_State;
+
+struct _Multibuttonentry_Item
+  {
+     Evas_Object *multibuttonentry;
+     Evas_Object *button;
+     void *data;
+     Evas_Coord vw, rw; // vw: visual width, real width
+     Eina_Bool  visible: 1;
+  };
 
 typedef struct _Widget_Data Widget_Data;
-struct _Widget_Data {
-   Evas_Object *base;
-   Evas_Object *box;
-   Evas_Object *entry;
-   Evas_Object *label;
-   Evas_Object *guidetext;
-   Evas_Object *end;   // used to represent the total number of invisible buttons
-
-   Evas_Object *rectForEnd;
-   MultiButtonEntry_Closed_Button_Type end_type;
-
-   Eina_List *items;
-   Eina_List *current;
-   int n_str;
-   Multibuttonentry_View_State view_state;
-
-   Evas_Coord w_box, h_box;
-   int  contracted;
-   Eina_Bool focused: 1;
-   Eina_Bool last_btn_select: 1;
-   Elm_Multibuttonentry_Item_Verify_Callback add_callback;
-   void *add_callback_data;
-};
+struct _Widget_Data
+  {
+     Evas_Object *base;
+     Evas_Object *box;
+     Evas_Object *entry;
+     Evas_Object *label;
+     Evas_Object *guidetext;
+     Evas_Object *end;   // used to represent the total number of invisible buttons
+
+     Evas_Object *rect_for_end;
+     MultiButtonEntry_Closed_Button_Type end_type;
+
+     Eina_List *items;
+     Eina_List *current;
+
+     int n_str;
+     Multibuttonentry_View_State view_state;
+
+     Evas_Coord w_box, h_box;
+     int  contracted;
+     Eina_Bool focused: 1;
+     Eina_Bool last_btn_select: 1;
+     Elm_Multibuttonentry_Item_Verify_Callback add_callback;
+     void *add_callback_data;
+  };
 
 static const char *widtype = NULL;
 static void _del_hook(Evas_Object *obj);
@@ -84,23 +81,24 @@ static void _resize_cb(void *data, Evas *evas, Evas_Object *obj, void *event);
 static void _event_init(Evas_Object *obj);
 static void _contracted_state_set(Evas_Object *obj, int contracted);
 static void _view_update(Evas_Object *obj);
-static void _set_label(Evas_Object *obj, const charstr);
+static void _set_label(Evas_Object *obj, const char *str);
 static void _change_current_button_state(Evas_Object *obj, Multibuttonentry_Button_State state);
 static void _change_current_button(Evas_Object *obj, Evas_Object *btn);
 static void _button_clicked(void *data, Evas_Object *obj, const char *emission, const char *source);
 static void _del_button_obj(Evas_Object *obj, Evas_Object *btn);
 static void _del_button_item(Elm_Multibuttonentry_Item *item);
 static void _select_button(Evas_Object *obj, Evas_Object *btn);
-static Elm_Multibuttonentry_Item* _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, const Elm_Multibuttonentry_Item *reference, void *data);
+static Elm_Multibuttonentry_Item *_add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos,
+                                                   const Elm_Multibuttonentry_Item *reference, void *data);
 static void _add_button(Evas_Object *obj, char *str);
 static void _evas_mbe_key_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
 static void _entry_changed_cb(void *data, Evas_Object *obj, void *event_info);
 static void _entry_key_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
 static void _entry_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void _entry_resized_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info);
 static void _entry_focus_in_cb(void *data, Evas_Object *obj, void *event_info);
 static void _entry_focus_out_cb(void *data, Evas_Object *obj, void *event_info);
 static void _entry_clicked_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__);
-static void _entry_resized_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__);
 static void _view_init(Evas_Object *obj);
 static void _set_vis_guidetext(Evas_Object *obj);
 static void _calculate_box_min_size(Evas_Object *box, Evas_Object_Box_Data *priv);
@@ -129,7 +127,7 @@ _del_hook(Evas_Object *obj)
    if (wd->label) evas_object_del (wd->label);
    if (wd->guidetext) evas_object_del (wd->guidetext);
    if (wd->end) evas_object_del (wd->end);
-   if (wd->rectForEnd) evas_object_del(wd->rectForEnd);
+   if (wd->rect_for_end) evas_object_del(wd->rect_for_end);
 }
 
 static void
@@ -337,7 +335,7 @@ _contracted_state_set(Evas_Object *obj, int contracted)
      evas_object_hide(wd->guidetext);
    else if (wd->view_state == MULTIBUTTONENTRY_VIEW_CONTRACTED)
      {
-        evas_object_hide(wd->rectForEnd);
+        evas_object_hide(wd->rect_for_end);
         evas_object_hide(wd->end);
         wd->view_state = MULTIBUTTONENTRY_VIEW_NONE;
      }
@@ -442,15 +440,15 @@ _contracted_state_set(Evas_Object *obj, int contracted)
 
                             w += item->vw;
                             rectSize = w - button_min_width;
-                            if (!wd->rectForEnd)
+                            if (!wd->rect_for_end)
                               {
                                  Evas *e = evas_object_evas_get(obj);
-                                 wd->rectForEnd = evas_object_rectangle_add(e);
-                                 evas_object_color_set(wd->rectForEnd, 0, 0, 0, 0);
+                                 wd->rect_for_end = evas_object_rectangle_add(e);
+                                 evas_object_color_set(wd->rect_for_end, 0, 0, 0, 0);
                               }
-                            evas_object_size_hint_min_set(wd->rectForEnd, rectSize, closed_height * elm_scale_get());
-                            elm_box_pack_end(wd->box, wd->rectForEnd);
-                            evas_object_show(wd->rectForEnd);
+                            evas_object_size_hint_min_set(wd->rect_for_end, rectSize, closed_height * elm_scale_get());
+                            elm_box_pack_end(wd->box, wd->rect_for_end);
+                            evas_object_show(wd->rect_for_end);
 
                             elm_box_pack_end(wd->box, wd->end);
                             evas_object_show(wd->end);
@@ -477,7 +475,7 @@ _contracted_state_set(Evas_Object *obj, int contracted)
           }
         evas_object_hide(wd->end);
 
-        if (wd->rectForEnd) evas_object_hide(wd->rectForEnd);
+        if (wd->rect_for_end) evas_object_hide(wd->rect_for_end);
 
         // pack buttons only 1line
 
@@ -604,11 +602,11 @@ _change_current_button_state(Evas_Object *obj, Multibuttonentry_Button_State sta
      {
         switch(state)
           {
-             case MULTIBUTONENTRY_BUTTON_STATE_DEFAULT:
+             case MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT:
                 edje_object_signal_emit(item->button, "default", "");
                 wd->current = NULL;
                 break;
-             case MULTIBUTONENTRY_BUTTON_STATE_SELECTED:
+             case MULTIBUTTONENTRY_BUTTON_STATE_SELECTED:
                 edje_object_signal_emit(item->button, "focused", "");
                 evas_object_smart_callback_call(obj, "item,selected", item);
                 break;
@@ -629,7 +627,7 @@ _change_current_button(Evas_Object *obj, Evas_Object *btn)
    if (!wd) return;
 
    // change the state of previous button to "default"
-   _change_current_button_state(obj, MULTIBUTONENTRY_BUTTON_STATE_DEFAULT);
+   _change_current_button_state(obj, MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT);
 
    // change the current
    EINA_LIST_FOREACH(wd->items, l, item)
@@ -642,7 +640,7 @@ _change_current_button(Evas_Object *obj, Evas_Object *btn)
      }
 
    // chagne the state of current button to "focused"
-   _change_current_button_state(obj, MULTIBUTONENTRY_BUTTON_STATE_SELECTED);
+   _change_current_button_state(obj, MULTIBUTTONENTRY_BUTTON_STATE_SELECTED);
 
 }
 
@@ -727,7 +725,7 @@ _select_button(Evas_Object *obj, Evas_Object *btn)
      }
    else
      {
-        _change_current_button_state(obj, MULTIBUTONENTRY_BUTTON_STATE_DEFAULT);
+        _change_current_button_state(obj, MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT);
         if (elm_widget_focus_get(obj))
           elm_object_focus(wd->entry);
      }
@@ -820,7 +818,7 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co
 
         switch(pos)
           {
-             case MULTIBUTONENTRY_POS_START:
+             case MULTIBUTTONENTRY_POS_START:
                 wd->items = eina_list_prepend(wd->items, item);
                 if (wd->view_state == MULTIBUTTONENTRY_VIEW_CONTRACTED)
                   {
@@ -837,7 +835,7 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co
                        _set_vis_guidetext(obj);
                   }
                 break;
-             case MULTIBUTONENTRY_POS_END:
+             case MULTIBUTTONENTRY_POS_END:
                 wd->items = eina_list_append(wd->items, item);
                 if (wd->view_state == MULTIBUTTONENTRY_VIEW_CONTRACTED)
                   {
@@ -854,7 +852,7 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co
                        elm_box_pack_end(wd->box, btn);
                   }
                 break;
-             case MULTIBUTONENTRY_POS_BEFORE:
+             case MULTIBUTTONENTRY_POS_BEFORE:
                 if (reference)
                      wd->items = eina_list_prepend_relative(wd->items, item, reference);
                 else
@@ -880,7 +878,7 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co
                        }
                   }
                 break;
-             case MULTIBUTONENTRY_POS_AFTER:
+             case MULTIBUTTONENTRY_POS_AFTER:
                 if (reference)
                      wd->items = eina_list_append_relative(wd->items, item, reference);
                 else
@@ -922,7 +920,7 @@ _add_button(Evas_Object *obj, char *str)
    if (!wd) return;
 
    // add button
-   _add_button_item(obj, str, MULTIBUTONENTRY_POS_END, NULL, NULL);
+   _add_button_item(obj, str, MULTIBUTTONENTRY_POS_END, NULL, NULL);
 }
 
 static void
@@ -1001,7 +999,7 @@ _entry_clicked_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UN
    Widget_Data *wd = elm_widget_data_get(data);
    if (!wd) return;
 
-   _change_current_button_state(data, MULTIBUTONENTRY_BUTTON_STATE_DEFAULT);
+   _change_current_button_state(data, MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT);
    elm_object_focus(wd->entry);
 }
 
@@ -1315,14 +1313,6 @@ _box_layout_cb(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__
      }
 }
 
-/**
- * Add a new multibuttonentry to the parent
- *
- * @param parent The parent object
- * @return The new object or NULL if it cannot be created
- *
- * @ingroup Multibuttonentry
- */
 EAPI Evas_Object *
 elm_multibuttonentry_add(Evas_Object *parent)
 {
@@ -1352,7 +1342,7 @@ elm_multibuttonentry_add(Evas_Object *parent)
    wd->focused = EINA_FALSE;
    wd->last_btn_select = EINA_TRUE;
    wd->n_str = 0;
-   wd->rectForEnd = NULL;
+   wd->rect_for_end = NULL;
    wd->add_callback = NULL;
    wd->add_callback_data = NULL;
 
@@ -1362,14 +1352,6 @@ elm_multibuttonentry_add(Evas_Object *parent)
    return obj;
 }
 
-/**
- * Get the entry of the multibuttonentry object
- *
- * @param obj The multibuttonentry object
- * @return The entry object, or NULL if none
- *
- * @ingroup Multibuttonentry
- */
 EAPI Evas_Object *
 elm_multibuttonentry_entry_get(const Evas_Object *obj)
 {
@@ -1380,14 +1362,6 @@ elm_multibuttonentry_entry_get(const Evas_Object *obj)
    return wd->entry;
 }
 
-/**
- * Get the label
- *
- * @param obj The multibuttonentry object
- * @return The label, or NULL if none
- *
- * @ingroup Multibuttonentry
- */
 EAPI const char *
 elm_multibuttonentry_label_get(const Evas_Object *obj)
 {
@@ -1398,14 +1372,6 @@ elm_multibuttonentry_label_get(const Evas_Object *obj)
    return NULL;
 }
 
-/**
- * Set the label
- *
- * @param obj The multibuttonentry object
- * @param label The text label string
- *
- * @ingroup Multibuttonentry
- */
 EAPI void
 elm_multibuttonentry_label_set(Evas_Object *obj, const char *label)
 {
@@ -1418,14 +1384,6 @@ elm_multibuttonentry_label_set(Evas_Object *obj, const char *label)
      _set_label(obj, "");
 }
 
-/**
- * Get the guide text
- *
- * @param obj The multibuttonentry object
- * @return The guide text, or NULL if none
- *
- * @ingroup Multibuttonentry
- */
 EAPI const char *
 elm_multibuttonentry_guide_text_get(const Evas_Object *obj)
 {
@@ -1436,14 +1394,6 @@ elm_multibuttonentry_guide_text_get(const Evas_Object *obj)
    return NULL;
 }
 
-/**
- * Set the guide text
- *
- * @param obj The multibuttonentry object
- * @param label The guide text string
- *
- * @ingroup Multibuttonentry
- */
 EAPI void
 elm_multibuttonentry_guide_text_set(Evas_Object *obj, const char *guidetext)
 {
@@ -1457,14 +1407,6 @@ elm_multibuttonentry_guide_text_set(Evas_Object *obj, const char *guidetext)
 
 }
 
-/**
- * Get the value of contracted state.
- *
- * @param obj The multibuttonentry object
- * @param the value of contracted state.
- *
- * @ingroup Multibuttonentry
- */
 EAPI int
 elm_multibuttonentry_contracted_state_get(const Evas_Object *obj)
 {
@@ -1474,14 +1416,6 @@ elm_multibuttonentry_contracted_state_get(const Evas_Object *obj)
    return wd->view_state == MULTIBUTTONENTRY_VIEW_CONTRACTED ? 1 : 0;
 }
 
-/**
- * Set/Unset the multibuttonentry to contracted state of single line
- *
- * @param obj The multibuttonentry object
- * @param the value of contracted state. set this to 1 to set the multibuttonentry to contracted state of single line. set this to 0 to unset the contracted state.
- *
- * @ingroup Multibuttonentry
- */
 EAPI void
 elm_multibuttonentry_contracted_state_set(Evas_Object *obj, int contracted)
 {
@@ -1492,16 +1426,6 @@ elm_multibuttonentry_contracted_state_set(Evas_Object *obj, int contracted)
    _contracted_state_set(obj, contracted);
 }
 
-/**
- * Prepend a new item to the multibuttonentry
- *
- * @param obj The multibuttonentry object
- * @param label The label of new item
- * @param data The ponter to the data to be attached
- * @return A handle to the item added or NULL if not possible
- *
- * @ingroup Multibuttonentry
- */
 EAPI Elm_Multibuttonentry_Item *
 elm_multibuttonentry_item_add_start(Evas_Object *obj, const char *label, void *data)
 {
@@ -1509,20 +1433,10 @@ elm_multibuttonentry_item_add_start(Evas_Object *obj, const char *label, void *d
    Widget_Data *wd = elm_widget_data_get(obj);
    Elm_Multibuttonentry_Item *item;
    if (!wd || !label) return NULL;
-   item = _add_button_item(obj, label, MULTIBUTONENTRY_POS_START, NULL, data);
+   item = _add_button_item(obj, label, MULTIBUTTONENTRY_POS_START, NULL, data);
    return item;
 }
 
-/**
- * Append a new item to the multibuttonentry
- *
- * @param obj The multibuttonentry object
- * @param label The label of new item
- * @param data The ponter to the data to be attached
- * @return A handle to the item added or NULL if not possible
- *
- * @ingroup Multibuttonentry
- */
 EAPI Elm_Multibuttonentry_Item *
 elm_multibuttonentry_item_add_end(Evas_Object *obj, const char *label, void *data)
 {
@@ -1530,22 +1444,10 @@ elm_multibuttonentry_item_add_end(Evas_Object *obj, const char *label, void *dat
    Widget_Data *wd = elm_widget_data_get(obj);
    Elm_Multibuttonentry_Item *item;
    if (!wd || !label) return NULL;
-   item = _add_button_item(obj, label, MULTIBUTONENTRY_POS_END, NULL, data);
+   item = _add_button_item(obj, label, MULTIBUTTONENTRY_POS_END, NULL, data);
    return item;
 }
 
-/**
- * Add a new item to the multibuttonentry before the indicated object
- *
- * reference.
- * @param obj The multibuttonentry object
- * @param label The label of new item
- * @param before The item before which to add it
- * @param data The ponter to the data to be attached
- * @return A handle to the item added or NULL if not possible
- *
- * @ingroup Multibuttonentry
- */
 EAPI Elm_Multibuttonentry_Item *
 elm_multibuttonentry_item_add_before(Evas_Object *obj, const char *label, Elm_Multibuttonentry_Item *before, void *data)
 {
@@ -1553,21 +1455,10 @@ elm_multibuttonentry_item_add_before(Evas_Object *obj, const char *label, Elm_Mu
    Widget_Data *wd = elm_widget_data_get(obj);
    Elm_Multibuttonentry_Item *item;
    if (!wd || !label) return NULL;
-   item = _add_button_item(obj, label, MULTIBUTONENTRY_POS_BEFORE, before, data);
+   item = _add_button_item(obj, label, MULTIBUTTONENTRY_POS_BEFORE, before, data);
    return item;
 }
 
-/**
- * Add a new item to the multibuttonentry after the indicated object
- *
- * @param obj The multibuttonentry object
- * @param label The label of new item
- * @param after The item after which to add it
- * @param data The ponter to the data to be attached
- * @return A handle to the item added or NULL if not possible
- *
- * @ingroup Multibuttonentry
- */
 EAPI Elm_Multibuttonentry_Item *
 elm_multibuttonentry_item_add_after(Evas_Object *obj, const char *label, Elm_Multibuttonentry_Item *after, void *data)
 {
@@ -1575,18 +1466,10 @@ elm_multibuttonentry_item_add_after(Evas_Object *obj, const char *label, Elm_Mul
    Widget_Data *wd = elm_widget_data_get(obj);
    Elm_Multibuttonentry_Item *item;
    if (!wd || !label) return NULL;
-   item = _add_button_item(obj, label, MULTIBUTONENTRY_POS_AFTER, after, data);
+   item = _add_button_item(obj, label, MULTIBUTTONENTRY_POS_AFTER, after, data);
    return item;
 }
 
-/**
- * Get a list of items in the multibuttonentry
- *
- * @param obj The multibuttonentry object
- * @return The list of items, or NULL if none
- *
- * @ingroup Multibuttonentry
- */
 EAPI const Eina_List *
 elm_multibuttonentry_items_get(const Evas_Object *obj)
 {
@@ -1596,14 +1479,6 @@ elm_multibuttonentry_items_get(const Evas_Object *obj)
    return wd->items;
 }
 
-/**
- * Get the first item in the multibuttonentry
- *
- * @param obj The multibuttonentry object
- * @return The first item, or NULL if none
- *
- * @ingroup Multibuttonentry
- */
 EAPI Elm_Multibuttonentry_Item *
 elm_multibuttonentry_item_first_get(const Evas_Object *obj)
 {
@@ -1613,14 +1488,6 @@ elm_multibuttonentry_item_first_get(const Evas_Object *obj)
    return eina_list_data_get(wd->items);
 }
 
-/**
- * Get the last item in the multibuttonentry
- *
- * @param obj The multibuttonentry object
- * @return The last item, or NULL if none
- *
- * @ingroup Multibuttonentry
- */
 EAPI Elm_Multibuttonentry_Item *
 elm_multibuttonentry_item_last_get(const Evas_Object *obj)
 {
@@ -1630,14 +1497,6 @@ elm_multibuttonentry_item_last_get(const Evas_Object *obj)
    return eina_list_data_get(eina_list_last(wd->items));
 }
 
-/**
- * Get the selected item in the multibuttonentry
- *
- * @param obj The multibuttonentry object
- * @return The selected item, or NULL if none
- *
- * @ingroup Multibuttonentry
- */
 EAPI Elm_Multibuttonentry_Item *
 elm_multibuttonentry_item_selected_get(const Evas_Object *obj)
 {
@@ -1647,13 +1506,6 @@ elm_multibuttonentry_item_selected_get(const Evas_Object *obj)
    return eina_list_data_get(wd->current);
 }
 
-/**
- * Set the selected state of an item
- *
- * @param item The item
- *
- * @ingroup Multibuttonentry
- */
 EAPI void
 elm_multibuttonentry_item_selected_set(Elm_Multibuttonentry_Item *item)
 {
@@ -1673,13 +1525,6 @@ elm_multibuttonentry_item_selected_set(Elm_Multibuttonentry_Item *item)
      }
 }
 
-/**
- * unselect all of items.
- *
- * @param obj The multibuttonentry object
- *
- * @ingroup Multibuttonentry
- */
 EAPI void
 elm_multibuttonentry_item_unselect_all(Evas_Object *obj)
 {
@@ -1690,13 +1535,6 @@ elm_multibuttonentry_item_unselect_all(Evas_Object *obj)
    _select_button(obj, NULL);
 }
 
-/**
- * Remove all items in the multibuttonentry.
- *
- * @param obj The multibuttonentry object
- *
- * @ingroup Multibuttonentry
- */
 EAPI void
 elm_multibuttonentry_items_del(Evas_Object *obj)
 {
@@ -1719,13 +1557,6 @@ elm_multibuttonentry_items_del(Evas_Object *obj)
    _view_update(obj);
 }
 
-/**
- * Delete a given item
- *
- * @param item The item
- *
- * @ingroup Multibuttonentry
- */
 EAPI void
 elm_multibuttonentry_item_del(Elm_Multibuttonentry_Item *item)
 {
@@ -1733,14 +1564,6 @@ elm_multibuttonentry_item_del(Elm_Multibuttonentry_Item *item)
    _del_button_item(item);
 }
 
-/**
- * Get the label of a given item
- *
- * @param item The item
- * @return The label of a given item, or NULL if none
- *
- * @ingroup Multibuttonentry
- */
 EAPI const char *
 elm_multibuttonentry_item_label_get(const Elm_Multibuttonentry_Item *item)
 {
@@ -1761,14 +1584,6 @@ elm_multibuttonentry_item_label_get(const Elm_Multibuttonentry_Item *item)
    return NULL;
 }
 
-/**
- * Set the label of a given item
- *
- * @param item The item
- * @param label The text label string
- *
- * @ingroup Multibuttonentry
- */
 EAPI void
 elm_multibuttonentry_item_label_set(Elm_Multibuttonentry_Item *item, const char *str)
 {
@@ -1789,14 +1604,6 @@ elm_multibuttonentry_item_label_set(Elm_Multibuttonentry_Item *item, const char
         }
 }
 
-/**
- * Get the previous item in the multibuttonentry
- *
- * @param item The item
- * @return The item before the item @p item
- *
- * @ingroup Multibuttonentry
- */
 EAPI Elm_Multibuttonentry_Item *
 elm_multibuttonentry_item_prev(Elm_Multibuttonentry_Item *item)
 {
@@ -1818,14 +1625,6 @@ elm_multibuttonentry_item_prev(Elm_Multibuttonentry_Item *item)
    return NULL;
 }
 
-/**
- * Get the next item in the multibuttonentry
- *
- * @param item The item
- * @return The item after the item @p item
- *
- * @ingroup Multibuttonentry
- */
 EAPI Elm_Multibuttonentry_Item *
 elm_multibuttonentry_item_next(Elm_Multibuttonentry_Item *item)
 {
@@ -1847,14 +1646,6 @@ elm_multibuttonentry_item_next(Elm_Multibuttonentry_Item *item)
    return NULL;
 }
 
-/**
- * Get private data of item
- *
- * @param item The item
- * @return The data pointer stored, or NULL if none was stored
- *
- * @ingroup Multibuttonentry
- */
 EAPI void *
 elm_multibuttonentry_item_data_get(const Elm_Multibuttonentry_Item *item)
 {
@@ -1862,14 +1653,6 @@ elm_multibuttonentry_item_data_get(const Elm_Multibuttonentry_Item *item)
    return item->data;
 }
 
-/**
- * Set private data of item
- *
- * @param item The item
- * @param data The ponter to the data to be attached
- *
- * @ingroup Multibuttonentry
- */
 EAPI void
 elm_multibuttonentry_item_data_set(Elm_Multibuttonentry_Item *item, void *data)
 {
@@ -1877,15 +1660,6 @@ elm_multibuttonentry_item_data_set(Elm_Multibuttonentry_Item *item, void *data)
    item->data = data;
 }
 
-/**
- * Set the multibuttonentry item_verify_callback function
- *
- * @param obj The multibuttonentry object
- * @param func The function pointer to be called, it it's NULL, callback function will be deleted.
- * @param data user data to be passed to the callback function
- *
- * @ingroup Multibuttonentry
- */
 EAPI void
 elm_multibuttonentry_item_verify_callback_set(Evas_Object *obj, Elm_Multibuttonentry_Item_Verify_Callback func, void *data)
 {
diff --git a/src/lib/elc_navigationbar.c b/src/lib/elc_navigationbar.c
deleted file mode 100644 (file)
index 8a33a0f..0000000
+++ /dev/null
@@ -1,1491 +0,0 @@
-#include <Elementary.h>
-#include "elm_priv.h"
-
-/**
- * @defgroup NavigationBar NavigationBar
- * @ingroup Elementary
- *
- * The Navigationbar is an object that allows flipping (with animation) between 1 or
- * more of objects, much like a stack of windows within the window. It also displays title
- * area above all the pages consisting of title,function buttons.
- *
- * Objects can be pushed or popped from the stack.
- * Pushes and pops will animate (and a pop will delete the object once the
- * animation is finished). Objects are pushed to the top with
- * elm_navigationbar_push() and when the top item is no longer
- * wanted, simply pop it with elm_navigationbar_pop() and it will also be
- * deleted. You can query which objects are the top and bottom with
- * elm_navigationbar_content_bottom_get() and elm_navigationbar_content_top_get().
- */
-
-#define _ELM_NAVIBAR_PREV_BTN_DEFAULT_LABEL "Previous"
-
-typedef struct _Widget_Data Widget_Data;
-typedef struct _Elm_Navigationbar_Item Elm_Navigationbar_Item;
-typedef struct _Transit_Cb_Data Transit_Cb_Data;
-
-static const char _navigationbar_key[] = "_elm_navigationbar";
-
-//TODO: Remove!
-typedef enum
-  {
-     ELM_NAVIGATIONBAR_PREV_BUTTON = ELM_NAVIGATIONBAR_FUNCTION_BUTTON1,
-     ELM_NAVIGATIONBAR_NEXT_BUTTON = ELM_NAVIGATIONBAR_FUNCTION_BUTTON2,
-     ELM_NAVIGATIONBAR_TITLE_BTN_CNT = 2
-  } Elm_Navigationbar_Button_Type;
-
-struct _Widget_Data
-{
-   Eina_List *stack;
-   Evas_Object *rect;
-   Evas_Object *base;
-   Evas_Object *pager;
-   Eina_Bool title_visible : 1;
-   Eina_Bool popping: 1;
- };
-
-struct _Elm_Navigationbar_Item
-{
-   Elm_Widget_Item base;
-   const char *title;
-   const char *subtitle;
-   Eina_List *title_obj_list;   //TODO: Remove!
-   Evas_Object *title_obj;
-   Evas_Object *title_btns[ELM_NAVIGATIONBAR_TITLE_BTN_CNT];
-   Evas_Object *content;
-   Evas_Object *icon;
-   Eina_Bool titleobj_visible :1;
-   Eina_Bool back_btn :1;
-};
-
-//TODO: Remove!
-struct _Transit_Cb_Data
-{
-   Elm_Navigationbar_Item* prev_it;
-   Elm_Navigationbar_Item* it;
-   Evas_Object *navibar;
-   Eina_Bool pop : 1;
-   Eina_Bool first_page : 1;
-};
-
-static const char *widtype = NULL;
-
-static void _del_hook(Evas_Object *obj);
-static void _theme_hook(Evas_Object *obj);
-static void _sizing_eval(Evas_Object *obj);
-static void _resize(void *data, Evas *e, Evas_Object *obj, void *event_info);
-static void _item_sizing_eval(Elm_Navigationbar_Item *it);
-static void _item_del(Elm_Navigationbar_Item *it);
-static void _back_button_clicked(void *data, Evas_Object *obj, void *event_info);
-static void _button_size_set(Evas_Object *obj);
-static Eina_Bool _button_set(Evas_Object *obj, Evas_Object *prev_btn, Evas_Object *new_btn, Eina_Bool back_btn);
-static void _transition_complete_cb(void *data);
-static void _elm_navigationbar_prev_btn_set(Evas_Object *obj,
-                                            Evas_Object *content,
-                                            Evas_Object *new_btn,
-                                            Elm_Navigationbar_Item *it);
-static void _elm_navigationbar_next_btn_set(Evas_Object *obj,
-                                            Evas_Object *content,
-                                            Evas_Object *new_btn,
-                                            Elm_Navigationbar_Item *it);
-static void _title_clicked(void *data, Evas_Object *obj, const char *emission, const char *source);
-static void _titleobj_switching(Evas_Object *obj, Elm_Navigationbar_Item *it);
-static void _emit_hook(Evas_Object *obj, const char *emission, const char *source);
-
-static const char SIG_HIDE_FINISHED[] = "hide,finished";
-static const char SIG_TITLE_OBJ_VISIBLE_CHANGED[] = "titleobj,visible,changed";
-static const char SIG_TITLE_CLICKED[] = "title,clicked";
-
-static const Evas_Smart_Cb_Description _signals[] = {
-       {SIG_HIDE_FINISHED, ""},
-       {SIG_TITLE_OBJ_VISIBLE_CHANGED, ""},
-       {SIG_TITLE_CLICKED, ""},
-       {NULL, NULL}
-};
-
-static void
-_content_del(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
-{
-   Elm_Navigationbar_Item *it = data;
-   evas_object_data_del(obj, _navigationbar_key);
-   it->content = NULL;
-   //TODO: it will be better remove this page?
-}
-
-static void
-_title_obj_del(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
-{
-   Elm_Navigationbar_Item *it = data;
-   Eina_List *l = NULL;
-   elm_navigationbar_title_object_list_unset(it->base.widget, it->content, &l);
-   if (!l) return;
-   evas_object_del(eina_list_data_get(l));
-   eina_list_free(l);
-}
-
-static void
-_title_icon_del(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
-{
-   Elm_Navigationbar_Item *it = data;
-   it->icon = NULL;
-}
-
-static void
-_title_btn_del(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
-{
-   Elm_Navigationbar_Item *it = data;
-
-   if (it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON] == obj)
-     it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON] = NULL;
-   else if (it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON] == obj)
-     it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON] = NULL;
-}
-
-static Eina_Bool
-_title_btn_set(Elm_Navigationbar_Item *it, Evas_Object *btn, int title_btn_idx, Eina_Bool back_btn)
-{
-   Eina_Bool changed;
-
-   if(it->title_btns[title_btn_idx] == btn) return EINA_FALSE;
-
-   changed = _button_set(it->base.widget, it->title_btns[title_btn_idx], btn, back_btn);
-   it->title_btns[title_btn_idx] = btn;
-
-   if ((!changed) || (!btn)) return EINA_FALSE;
-
-   it->back_btn = back_btn;
-
-   evas_object_event_callback_add(btn, EVAS_CALLBACK_DEL, _title_btn_del, it);
-
-   return EINA_TRUE;
-}
-
-static Evas_Object *
-_create_back_btn(Evas_Object *parent, const char *title, void *data)
-{
-   Evas_Object *btn = elm_button_add(parent);
-   if (!btn) return NULL;
-   elm_object_text_set(btn, title);
-   evas_object_smart_callback_priority_add(btn, "clicked", EVAS_CALLBACK_PRIORITY_AFTER, _back_button_clicked, data);
-   return btn;
-}
-
-static void
-_del_hook(Evas_Object *obj)
-{
-   Widget_Data *wd = elm_widget_data_get(obj);
-   Eina_List *list;
-   Elm_Navigationbar_Item *it;
-
-   EINA_LIST_FOREACH(wd->stack, list, it)
-     _item_del(it);
-   eina_list_free(wd->stack);
-   free(wd);
-}
-
-void
-_emit_hook(Evas_Object *obj, const char *emission, const char *source)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype);
-
-   Widget_Data *wd;
-   Eina_List *last;
-   Elm_Navigationbar_Item *it;
-
-   wd = elm_widget_data_get(obj);
-   if (!wd) return;
-
-   last = eina_list_last(wd->stack);
-   if (!last) return;
-
-   it = eina_list_data_get(last);
-   if ((!it) || (!it->title_obj)) return;
-
-   //FIXME: I know this is really bullshit.
-   //We don't need to keep the titleobj_visible but return the status in edc.
-   if (!strcmp(source, "elm"))
-     {
-        if (!strcmp(emission, "elm,state,hide,noanimate,title"))
-          it->titleobj_visible = EINA_FALSE;
-        else if (!strcmp(emission, "elm,state,show,noanimate,title"))
-          it->titleobj_visible = EINA_TRUE;
-     }
-
-   edje_object_signal_emit(wd->base, emission, source);
-}
-
-static void
-_theme_hook(Evas_Object *obj)
-{
-   Widget_Data *wd = elm_widget_data_get(obj);
-   Eina_List *list = NULL;
-   Elm_Navigationbar_Item *it = NULL;
-
-   if (!wd) return;
-   _elm_theme_object_set(obj, wd->base, "navigationbar", "base", elm_widget_style_get(obj));
-
-   list = eina_list_last(wd->stack);
-   if (list)
-     {
-        it = eina_list_data_get(list);
-        if (it)
-          {
-             //buttons
-             if (it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON])
-               edje_object_part_swallow(wd->base, "elm.swallow.prev_btn", it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON]);
-             if (it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON])
-               edje_object_part_swallow(wd->base, "elm.swallow.next_btn", it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON]);
-
-             //icon
-             if (it->icon)
-               {
-                  edje_object_part_swallow(wd->base, "elm.swallow.icon", it->icon);
-                  edje_object_signal_emit(wd->base, "elm,state,icon,visible", "elm");
-               }
-
-             //title text
-             if (it->title)
-               edje_object_part_text_set(wd->base, "elm.text", it->title);
-
-             //title object
-             if (it->title_obj)
-               {
-                  edje_object_part_swallow(wd->base, "elm.swallow.title", it->title_obj);
-
-                  if (it->titleobj_visible)
-                    edje_object_signal_emit(wd->base, "elm,state,show,noanimate,title", "elm");
-                  else
-                    edje_object_signal_emit(wd->base, "elm,state,hide,noanimate,title", "elm"); //elm,state,title,hide
-
-                  if (it->title)
-                    edje_object_signal_emit(wd->base, "elm,state,show,extended", "elm");
-               }
-            }
-     }
-
-   if (!wd->title_visible)
-     edje_object_signal_emit(wd->base, "elm,state,item,moveup", "elm");
-
-   edje_object_message_signal_process(wd->base);
-   _sizing_eval(obj);
-}
-
-static void
-_item_del(Elm_Navigationbar_Item *it)
-{
-   //TODO: So hard to manage.
-   //TODO: Just prepare one layout for title objects.
-   //TODO: then remove the layout only.
-   Widget_Data *wd;
-   int idx;
-
-   if (!it) return;
-
-   wd = elm_widget_data_get(it->base.widget);
-   if (!wd) return;
-
-   //Remove Function Buttons
-   for (idx = 0; idx < ELM_NAVIGATIONBAR_TITLE_BTN_CNT; idx++)
-     {
-        if (!it->title_btns[idx]) continue;
-        if (!it->back_btn) elm_object_unfocus(it->title_btns[idx]);
-        evas_object_event_callback_del(it->title_btns[idx], EVAS_CALLBACK_DEL, _title_btn_del);
-        evas_object_del(it->title_btns[idx]);
-     }
-   if (it->icon)
-     {
-        evas_object_event_callback_del(it->icon, EVAS_CALLBACK_DEL, _title_icon_del);
-        evas_object_del(it->icon);
-     }
-   if (it->title_obj)
-     {
-        evas_object_event_callback_del(it->title_obj, EVAS_CALLBACK_DEL, _title_obj_del);
-        evas_object_del(it->title_obj);
-        eina_list_free(it->title_obj_list);
-     }
-   if (it->title) eina_stringshare_del(it->title);
-   if (it->subtitle) eina_stringshare_del(it->subtitle);
-
-   if (it->content)
-     {
-        evas_object_data_del(it->content, _navigationbar_key);
-        evas_object_event_callback_del(it->content, EVAS_CALLBACK_DEL, _content_del);
-     }
-
-   free(it);
-}
-
-static void
-_sizing_eval(Evas_Object *obj)
-{
-   Widget_Data *wd;
-   Eina_List *list;
-
-   wd  = elm_widget_data_get(obj);
-   if (!wd) return;
-
-   list = eina_list_last(wd->stack);
-   if (!list) return;
-
-   _item_sizing_eval(list->data);
-}
-
-static void
-_item_sizing_eval(Elm_Navigationbar_Item *it)
-{
-   if (!it) return;
-   Widget_Data *wd = elm_widget_data_get(it->base.widget);
-   Evas_Coord minw;
-
-   if (!wd) return;
-
-   edje_object_size_min_calc(wd->base, &minw, NULL);
-
-   //TODO: Even the below code for size calculation is redundant and should be removed.
-   //TODO: Item_sizing_eval function has to be totally refactored/removed.
-   _button_size_set(it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON]);
-   _button_size_set(it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON]);
-}
-
-static void
-_resize(void *data __UNUSED__, Evas *e  __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
-{
-   Widget_Data *wd = elm_widget_data_get(obj);
-   if (!wd) return;
-
-   Evas_Coord w, h;
-   evas_object_geometry_get(obj, NULL, NULL, &w, &h);
-   evas_object_resize(wd->rect, w, h);
-
-   _sizing_eval(obj);
-}
-
-static void
-_hide(void *data __UNUSED__, Evas *e  __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
-{
-   Widget_Data *wd = elm_widget_data_get(obj);
-   if (!wd) return;
-
-   evas_object_hide(wd->rect);
-}
-
-static void
-_move(void *data __UNUSED__, Evas *e  __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
-{
-   Widget_Data *wd = elm_widget_data_get(obj);
-   if (!wd) return;
-
-   Evas_Coord x, y;
-   evas_object_geometry_get(obj, &x, &y, NULL, NULL);
-   evas_object_move(wd->rect, x, y);
-}
-
-static void
-_titleobj_switching(Evas_Object *obj, Elm_Navigationbar_Item *it)
-{
-   Widget_Data *wd = elm_widget_data_get(obj);
-   if (!wd) return;
-
-   if (!it->title_obj) return;
-
-   if (elm_navigationbar_content_top_get(it->base.widget) != it->content)
-     return;
-
-   if (it->titleobj_visible)
-     edje_object_signal_emit(wd->base, "elm,state,show,title", "elm"); //elm,state,title,show
-   else
-     edje_object_signal_emit(wd->base, "elm,state,hide,title", "elm"); //elm,state,title,hide
-
-   _item_sizing_eval(it);
-}
-
-static void
-_title_clicked(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
-{
-   Evas_Object *navibar = data;
-   Widget_Data *wd;
-   Eina_List *last;
-   Elm_Navigationbar_Item *it;
-
-   wd = elm_widget_data_get(navibar);
-   if (!wd) return;
-
-   last = eina_list_last(wd->stack);
-   if (!last) return;
-
-   it = eina_list_data_get(last);
-   if ((!it) || (!it->title_obj)) return;
-
-   if (!it->titleobj_visible)
-     {
-        it->titleobj_visible = EINA_TRUE;
-        evas_object_smart_callback_call(it->base.widget, SIG_TITLE_OBJ_VISIBLE_CHANGED, (void *) EINA_TRUE);
-     }
-   else
-     {
-        it->titleobj_visible = EINA_FALSE;
-        evas_object_smart_callback_call(it->base.widget, SIG_TITLE_OBJ_VISIBLE_CHANGED, (void *) EINA_FALSE);
-     }
-
-   evas_object_smart_callback_call(navibar, SIG_TITLE_CLICKED, NULL);
-
-   _titleobj_switching(navibar, it);
-}
-
-//TODO: should be renamed.
-static void
-_transition_complete_cb(void *data)
-{
-   Evas_Object *navi_bar;
-   Widget_Data *wd;
-   Elm_Navigationbar_Item *prev_it;
-   Elm_Navigationbar_Item *it;
-   Eina_List *ll;
-
-   Transit_Cb_Data *cb = data;
-   if (!cb) return;
-
-   navi_bar = cb->navibar;
-   if (!navi_bar) return;
-
-   wd = elm_widget_data_get(navi_bar);
-   if (!wd) return;
-
-   prev_it = cb->prev_it;
-   it = cb->it;
-
-   if (cb->pop && prev_it)
-     {
-        ll = eina_list_last(wd->stack);
-        if (ll->data == prev_it)
-          {
-             _item_del(prev_it);
-             wd->stack = eina_list_remove_list(wd->stack, ll);
-          }
-     }
-   else if (prev_it)
-     {
-        if (prev_it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON])
-           evas_object_hide(prev_it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON]);
-        if (prev_it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON])
-          evas_object_hide(prev_it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON]);
-        if (prev_it->title_obj)
-          evas_object_hide(prev_it->title_obj);
-        if (prev_it->icon)
-          evas_object_hide(prev_it->icon);
-     }
-   if ((it) && (wd->title_visible))
-     {
-        edje_object_part_text_set(wd->base, "elm.text", it->title);
-
-        if (!cb->first_page)
-          {
-             if (cb->pop)
-               edje_object_signal_emit(wd->base, "elm,action,pop", "elm");
-             else
-               edje_object_signal_emit(wd->base, "elm,action,push", "elm");
-             evas_object_pass_events_set(wd->base, EINA_TRUE);
-             evas_object_show(wd->rect);
-          }
-        if (it->title_obj)
-          {
-             edje_object_part_swallow(wd->base, "elm.swallow.title", it->title_obj);
-          }
-        if (it->subtitle)
-          edje_object_part_text_set(wd->base, "elm.text.sub", it->subtitle);
-        else
-          edje_object_part_text_set(wd->base, "elm.text.sub", NULL);
-
-        if (it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON])
-          edje_object_part_swallow(wd->base, "elm.swallow.prev_btn", it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON]);
-        if (it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON])
-          edje_object_part_swallow(wd->base, "elm.swallow.next_btn", it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON]);
-
-        if(it->icon)
-          {
-             edje_object_part_swallow(wd->base, "elm.swallow.icon", it->icon);
-             edje_object_signal_emit(wd->base, "elm,state,icon,visible", "elm");
-          }
-        else
-          edje_object_signal_emit(wd->base, "elm,state,icon,hidden", "elm");
-
-        if ((it->title_obj) && (it->title))
-          {
-             edje_object_signal_emit(wd->base, "elm,state,show,extended", "elm");
-             if(it->titleobj_visible)
-               {
-                 //TODO: remove the dependency on these signals as related to nbeat, try to make it totally theme dependent
-                 edje_object_signal_emit(wd->base, "elm,state,show,noanimate,title", "elm");
-               }
-             else
-               //TODO: remove the dependency on these signals as related to nbeat, try to make it totally theme dependent
-               edje_object_signal_emit(wd->base, "elm,state,hide,noanimate,title", "elm");
-          }
-        else
-          {
-             edje_object_signal_emit(wd->base, "elm,state,hide,extended", "elm");
-             //TODO: remove the dependency on these signals as related to nbeat, try to make it totally theme dependent
-             edje_object_signal_emit(wd->base, "elm,state,hide,noanimate,title", "elm");
-             it->titleobj_visible = EINA_FALSE;
-          }
-     }
-}
-
-static void
-_back_button_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
-{
-   Elm_Navigationbar_Item *it = data;
-   elm_navigationbar_pop(it->base.widget);
-}
-
-static void
-_hide_finished(void *data, Evas_Object *obj __UNUSED__, void *event_info)
-{
-   Evas_Object *navi_bar = data;
-   Widget_Data *wd =  elm_widget_data_get(navi_bar);
-   wd->popping = EINA_FALSE;
-   evas_object_smart_callback_call(navi_bar, SIG_HIDE_FINISHED, event_info);
-   evas_object_pass_events_set(wd->base, EINA_FALSE);
-   evas_object_hide(wd->rect);
-}
-
-static void
-_button_size_set(Evas_Object *obj)
-{
-   if (!obj) return;
-   Evas_Coord minw = -1, minh = -1, maxw= -1, maxh = -1;
-   Evas_Coord w = 0, h = 0;
-
-   evas_object_size_hint_min_get(obj, &minw, &minh);
-   evas_object_size_hint_max_get(obj, &maxw, &maxh);
-   evas_object_geometry_get(obj, NULL, NULL, &w, &h);
-   if (w < minw) w = minw;
-   if (h < minh) h = minh;
-   if ((maxw >= 0) && (w > maxw)) w = maxw;
-   if ((maxh >= 0) && (h > maxh)) h = maxh;
-   evas_object_resize(obj, w, h);
-}
-
-static void
-_elm_navigationbar_prev_btn_set(Evas_Object *obj, Evas_Object *content, Evas_Object *new_btn, Elm_Navigationbar_Item *it)
-{
-   Widget_Data *wd;
-   Evas_Object *prev_btn;
-
-   wd = elm_widget_data_get(obj);
-   if (!wd) return;
-
-   if (!_title_btn_set(it, new_btn, ELM_NAVIGATIONBAR_PREV_BUTTON, EINA_FALSE))
-     return;
-
-   //update if the content is the top item
-   if (elm_navigationbar_content_top_get(obj) != content)
-     return;
-
-   prev_btn = edje_object_part_swallow_get(wd->base, "elm.swallow.prev_btn");
-   if (prev_btn) evas_object_del(prev_btn);
-   edje_object_part_swallow(wd->base, "elm.swallow.prev_btn", new_btn);
-}
-
-//TODO: looks make this  _elm_navigationbar_function_button1_set  same.
-static void
-_elm_navigationbar_next_btn_set(Evas_Object *obj, Evas_Object *content, Evas_Object *new_btn, Elm_Navigationbar_Item *it)
-{
-   Widget_Data *wd;
-   Evas_Object *prev_btn;
-
-   wd = elm_widget_data_get(obj);
-   if (!wd) return;
-
-   if (!_title_btn_set(it, new_btn, ELM_NAVIGATIONBAR_NEXT_BUTTON, EINA_FALSE))
-     return;
-
-   //update if the content is the top item
-   if (elm_navigationbar_content_top_get(obj) != content)
-     return;
-
-   prev_btn = edje_object_part_swallow_get(wd->base, "elm.swallow.next_btn");
-   if (prev_btn) evas_object_del(prev_btn);
-   edje_object_part_swallow(wd->base, "elm.swallow.next_btn", new_btn);
-}
-
-static Eina_Bool
-_button_set(Evas_Object *obj, Evas_Object *prev_btn, Evas_Object *new_btn, Eina_Bool back_btn)
-{
-   char buf[4096];   //TODO: How to guarantee this buffer size?
-   Eina_Bool changed = EINA_FALSE;
-
-   if (prev_btn)
-     {
-        changed = EINA_TRUE;
-        evas_object_del(prev_btn);
-     }
-   if (!new_btn) return changed;
-
-   if (back_btn)
-     {
-        snprintf(buf, sizeof(buf), "navigationbar_prev_btn/%s", elm_widget_style_get(obj));
-        elm_object_style_set(new_btn, buf);
-     }
-   else
-     {
-        if (!strcmp("default", elm_object_style_get(new_btn)))
-          {
-             snprintf(buf, sizeof(buf), "navigationbar_next_btn/%s", elm_widget_style_get(obj));
-             elm_object_style_set(new_btn, buf);
-          }
-     }
-
-   elm_widget_sub_object_add(obj, new_btn);
-   changed = EINA_TRUE;
-
-   return changed;
-}
-
-/**
- * Add a new navigationbar to the parent
- *
- * @param[in] parent The parent object
- * @return The new object or NULL if it cannot be created
- *
- * @ingroup NavigationBar
- */
-EAPI Evas_Object *
-elm_navigationbar_add(Evas_Object *parent)
-{
-   Evas_Object *obj;
-   Evas *e;
-   Widget_Data *wd;
-
-   EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
-
-   wd = ELM_NEW(Widget_Data);
-   e = evas_object_evas_get(parent);
-   obj = elm_widget_add(e);
-   ELM_SET_WIDTYPE(widtype, "navigationbar");
-   elm_widget_type_set(obj, "navigationbar");
-   elm_widget_sub_object_add(parent, obj);
-   elm_widget_data_set(obj, wd);
-   elm_widget_del_hook_set(obj, _del_hook);
-   elm_widget_theme_hook_set(obj, _theme_hook);
-   elm_widget_signal_emit_hook_set(obj, _emit_hook);
-
-   wd->base = edje_object_add(e);
-   _elm_theme_object_set(obj, wd->base, "navigationbar", "base", "default");
-   elm_widget_resize_object_set(obj, wd->base);
-   //TODO: elm,action,title,clicked
-   edje_object_signal_callback_add(wd->base, "elm,action,clicked", "elm",
-                                            _title_clicked, obj);
-
-   //TODO: How about making the pager as a base?
-   //TODO: Swallow title and content as one content into the pager.
-   wd->pager = elm_pager_add(obj);
-   elm_object_style_set(wd->pager, "navigationbar");
-   elm_widget_sub_object_add(obj, wd->pager);
-   edje_object_part_swallow(wd->base, "elm.swallow.content", wd->pager);
-   evas_object_smart_callback_add(wd->pager, "hide,finished", _hide_finished, obj);
-   evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _resize, NULL);
-   evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, _move, NULL);
-   evas_object_event_callback_add(obj, EVAS_CALLBACK_HIDE, _hide, NULL);
-
-   wd->title_visible = EINA_TRUE;
-
-   evas_object_smart_callbacks_descriptions_set(obj, _signals);
-
-   //Rect
-   wd->rect = evas_object_rectangle_add(e);
-   evas_object_color_set(wd->rect, 0, 0, 0, 0);
-   elm_widget_sub_object_add(obj, wd->rect);
-
-   //TODO: apply elm_object_disabled_set
-
-   return obj;
-}
-
-/**
- * Push an object to the top of the NavigationBar stack (and show it)
- * The object pushed becomes a child of the navigationbar and will be controlled
- * it is deleted when the navigationbar is deleted or when the content is popped.
- *
- * @param[in] obj The NavigationBar object
- * @param[in] title The title string
- * @param[in] prev_btn The previous button
- * @param[in] next_btn The next button
- * @param[in] unused Unused.
- * @param[in] content The object to push
- *
- * @ingroup NavigationBar
- */
-EAPI void
-elm_navigationbar_push(Evas_Object *obj, const char *title, Evas_Object *prev_btn, Evas_Object *next_btn, Evas_Object *unused __UNUSED__, Evas_Object *content)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype);
-
-   Widget_Data *wd;
-   Elm_Navigationbar_Item *it;
-   Elm_Navigationbar_Item *top_it;
-
-   if (!content) return;
-
-   wd = elm_widget_data_get(obj);
-   if (!wd) return;
-
-   if (evas_object_data_get(content, _navigationbar_key)) return;
-
-   it = elm_widget_item_new(obj, Elm_Navigationbar_Item);
-   if (!it) return;
-
-   top_it = eina_list_data_get(eina_list_last(wd->stack));
-
-   _title_btn_set(it, prev_btn, ELM_NAVIGATIONBAR_PREV_BUTTON, EINA_FALSE);
-   _title_btn_set(it, next_btn, ELM_NAVIGATIONBAR_NEXT_BUTTON, EINA_FALSE);
-
-   it->content = content;
-   evas_object_event_callback_add(content, EVAS_CALLBACK_DEL, _content_del, it);
-   evas_object_data_set(content, _navigationbar_key, it);
-
-   //Add a prev-button automatically.
-   if ((!prev_btn) && (top_it))
-   {
-      if (top_it->title)
-        _title_btn_set(it, _create_back_btn(obj, top_it->title, it), ELM_NAVIGATIONBAR_PREV_BUTTON, EINA_TRUE);
-      else
-        _title_btn_set(it, _create_back_btn(obj, _ELM_NAVIBAR_PREV_BTN_DEFAULT_LABEL, it), ELM_NAVIGATIONBAR_PREV_BUTTON, EINA_TRUE);
-   }
-
-   eina_stringshare_replace(&it->title, title);
-   edje_object_part_text_set(wd->base, "elm.text", title);
-   _item_sizing_eval(it);
-
-   Transit_Cb_Data *cb = ELM_NEW(Transit_Cb_Data);
-   // unswallow items and start transition
-   // TODO: For what? why does it need to unswallow?
-   if (top_it)
-     {
-        cb->prev_it = top_it;
-        cb->first_page = EINA_FALSE;
-        if (top_it->title_obj) edje_object_part_unswallow(wd->base, top_it->title_obj);
-        if (top_it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON])
-          edje_object_part_unswallow(wd->base, top_it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON]);
-        if (top_it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON])
-          edje_object_part_unswallow(wd->base, top_it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON]);
-        if (top_it->icon)
-          edje_object_part_unswallow(wd->base, top_it->icon);
-     }
-   //If page is the first, then do not run the transition... but if user want.. ?
-   else
-     {
-        cb->prev_it = NULL;
-        cb->first_page = EINA_TRUE;
-     }
-   cb->navibar = obj;
-   cb->it = it;
-   cb->pop = EINA_FALSE;
-
-   _transition_complete_cb(cb);
-   free(cb);
-   elm_pager_content_push(wd->pager, it->content);
-
-   wd->stack = eina_list_append(wd->stack, it);
-   _sizing_eval(obj);
-}
-
-/**
- * This pops the object that is on top (visible) in the navigationbar, makes it disappear, then deletes the object.
- * The object that was underneath it, on the stack will become visible.
- *
- * @param[in] obj The NavigationBar object
- *
- * @ingroup NavigationBar
- */
-EAPI void
-elm_navigationbar_pop(Evas_Object *obj)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype);
-   Widget_Data *wd = elm_widget_data_get(obj);
-   Eina_List *ll;
-   Transit_Cb_Data *cb;
-   Elm_Navigationbar_Item *it = NULL;
-   Elm_Navigationbar_Item *prev_it = NULL;
-
-   //TODO: It's impossible to pop while popping?
-   if (wd->popping) return;
-   if (!wd->stack) return;
-
-   //find item to be popped and to be shown
-   //TODO: hmm.. i think it's hard to manager separated list from elm_pager internal list. but how about use evas_object_data_set to each content??
-   ll = eina_list_last(wd->stack);
-   if (ll)
-     {
-        prev_it = ll->data;
-        ll = ll->prev;
-        if (ll)
-          it = ll->data;
-     }
-   //unswallow items and start trasition
-   cb = ELM_NEW(Transit_Cb_Data);
-
-   //Previous page is exist.
-   if (prev_it)
-     {
-        if (it)
-          {
-             cb->prev_it = prev_it;
-             cb->it = it;
-             cb->pop = EINA_TRUE;
-             if (prev_it->title_obj)
-               edje_object_part_unswallow(wd->base, prev_it->title_obj);
-             if (prev_it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON])
-               edje_object_part_unswallow(wd->base, prev_it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON]);
-             if (prev_it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON])
-               edje_object_part_unswallow(wd->base, prev_it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON]);
-             if (prev_it->icon)
-               edje_object_part_unswallow(wd->base, prev_it->icon);
-             _item_sizing_eval(it);
-          }
-        else
-          {
-             cb->prev_it = prev_it;
-             cb->it = NULL;
-             cb->pop = EINA_TRUE;
-             //TODO: seems that flag is inverted.
-             cb->first_page = EINA_FALSE;
-          }
-
-        if (prev_it->content)
-          elm_object_tree_unfocusable_set(prev_it->content, EINA_TRUE);
-     }
-
-   cb->navibar = obj;
-   _transition_complete_cb(cb);
-   wd->popping = EINA_TRUE;
-
-   elm_pager_content_pop(wd->pager);
-
-   if ((prev_it) && (!it))
-     edje_object_part_text_set(wd->base, "elm.text", NULL);
-
-   free(cb);
-}
-
-/**
- * This Pops to the given content object (and update it) by deleting rest of the objects in between.
- *
- * @param[in] obj The NavigationBar object
- * @param[in] content the object to show
- *
- * @ingroup NavigationBar
- */
-EAPI void
-elm_navigationbar_to_content_pop(Evas_Object *obj, Evas_Object *content)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype);
-
-   Widget_Data *wd;
-   Eina_List *ll;
-   Elm_Navigationbar_Item *it;
-   Elm_Navigationbar_Item *prev_it;
-   Transit_Cb_Data *cb;
-
-   wd = elm_widget_data_get(obj);
-   if ((!wd) || (!content) || (!wd->stack)) return;
-
-   //find item to be popped and to be shown
-   it = prev_it = NULL;
-   ll = eina_list_last(wd->stack);
-
-   if (elm_navigationbar_content_top_get(obj) == content) return;
-
-   if (ll)
-     {
-        prev_it = ll->data;
-        ll =  ll->prev;
-     }
-   while (ll)
-     {
-        it = ll->data;
-        if ((it->base.widget) && (it->content != content))
-          {
-             _item_del(ll->data);
-             wd->stack = eina_list_remove_list(wd->stack, ll);
-             it = NULL;
-           }
-         else
-           break;
-         ll =  ll->prev;
-      }
-   if (prev_it && it)
-     {
-        //unswallow items and start trasition
-        cb = ELM_NEW(Transit_Cb_Data);
-        cb->prev_it = prev_it;
-        cb->it = it;
-        cb->pop = EINA_TRUE;
-        cb->first_page = EINA_FALSE;
-        cb->navibar = obj;
-
-        //TODO: make one call.
-        if (prev_it->title_obj)
-          edje_object_part_unswallow(wd->base, prev_it->title_obj);
-        if (prev_it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON])
-          edje_object_part_unswallow(wd->base, prev_it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON]);
-        if (prev_it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON])
-          edje_object_part_unswallow(wd->base, prev_it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON]);
-
-        _item_sizing_eval(it);
-        _transition_complete_cb(cb);
-
-        elm_pager_to_content_pop(wd->pager, content);
-
-        free(cb);
-     }
-}
-
-/**
- * Set the title string for the pushed content
- *
- * @param[in] obj The NavigationBar object
- * @param[in] content The object to push or pushed
- * @param[in] title The title string
- *
- * @ingroup NavigationBar
- */
-EAPI void
-elm_navigationbar_title_label_set(Evas_Object *obj, Evas_Object *content, const char *title)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype);
-   Widget_Data *wd;
-   Elm_Navigationbar_Item *it;
-
-   if (!content) return;
-
-   wd = elm_widget_data_get(obj);
-   if (!wd) return;
-
-   it = evas_object_data_get(content, _navigationbar_key);
-   if (!it) return;
-
-   eina_stringshare_replace(&it->title, title);
-   edje_object_part_text_set(wd->base, "elm.text", title);
-   _item_sizing_eval(it);
-}
-
-/**
- * Return the title string of the pushed content
- *
- * @param[in] obj The NavigationBar object
- * @param[in] content The object to push or pushed
- * @return The title string or NULL if none
- *
- * @ingroup NavigationBar
- */
-EAPI const char *
-elm_navigationbar_title_label_get(Evas_Object *obj, Evas_Object *content)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype) NULL;
-   Widget_Data *wd;
-   Elm_Navigationbar_Item *it;
-
-   if (!content) return NULL;
-
-   wd = elm_widget_data_get(obj);
-   if (!wd) return NULL;
-
-   it = evas_object_data_get(content, _navigationbar_key);
-   if (!it) return NULL;
-   return it->title;
-}
-
-/**
- * Set the title icon for the pushed content
- *
- * @param[in] obj The NavigationBar object
- * @param[in] content The object to push or pushed
- * @param[in] icon The icon object
- *
- * @ingroup NavigationBar
- */
-EAPI void
-elm_navigationbar_title_icon_set(Evas_Object *obj, Evas_Object *content, Evas_Object *icon)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype);
-   Widget_Data *wd;
-   Elm_Navigationbar_Item *it;
-   Evas_Object *swallow;
-
-   if (!content) return;
-
-    wd = elm_widget_data_get(obj);
-    if (!wd) return;
-
-   it = evas_object_data_get(content, _navigationbar_key);
-   if (!it) return;
-
-   if (it->icon == icon) return;
-   if (it->icon) evas_object_del(it->icon);
-   it->icon = icon;
-
-   if (!icon) return;
-
-   elm_widget_sub_object_add(obj, icon);
-   evas_object_event_callback_add(icon, EVAS_CALLBACK_DEL, _title_icon_del, it);
-   _item_sizing_eval(it);
-   //update if the content is the top item
-   if (elm_navigationbar_content_top_get(obj) != content)
-     return;
-
-   swallow = edje_object_part_swallow_get(wd->base, "elm.swallow.icon");
-   if (swallow)
-     {
-        edje_object_signal_emit(wd->base, "elm,state,icon,hidden", "elm");
-        edje_object_part_unswallow(wd->base, swallow);
-        evas_object_hide(swallow);
-     }
-   if (wd->title_visible)
-     {
-        edje_object_part_swallow(wd->base, "elm.swallow.icon", icon);
-        edje_object_signal_emit(wd->base, "elm,state,icon,visible", "elm");
-        edje_object_message_signal_process(wd->base);
-     }
-   else
-      edje_object_signal_emit(wd->base, "elm,state,icon,hidden", "elm");
-}
-
-/**
- * Get the title icon for the pushed content
- *
- * @param[in] obj The NavigationBar object
- * @param[in] content The object to push or pushed
- * @return The icon object or NULL if none
- *
- * @ingroup NavigationBar
- */
-EAPI Evas_Object *
-elm_navigationbar_title_icon_get(Evas_Object *obj, Evas_Object *content)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype)NULL;
-   Widget_Data *wd;
-   Elm_Navigationbar_Item *it;
-
-   if (!content) return NULL;
-
-   wd = elm_widget_data_get(obj);
-   if (!wd) return NULL;
-
-   it = evas_object_data_get(content, _navigationbar_key);
-   if (!it) return NULL;
-
-   return it->icon;
-}
-
-/**
- * Add a title object for the content.
- *
- * @param[in] obj The NavigationBar object
- * @param[in] content The object pushed
- * @param[in] title_obj a title object (normally button or segment_control)
- *
- * @ingroup NavigationBar
- */
-//TODO: elm_navigationbar_title_object_set ( .... )
-EAPI void
-elm_navigationbar_title_object_add(Evas_Object *obj, Evas_Object *content, Evas_Object *title_obj)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype);
-   Widget_Data *wd;
-   Elm_Navigationbar_Item *it;
-
-   if ((!title_obj) || (!content)) return;
-
-   wd = elm_widget_data_get(obj);
-   if (!wd) return;
-
-   it = evas_object_data_get(content, _navigationbar_key);
-   if (!it) return;
-
-   if (it->title_obj)
-     {
-       evas_object_event_callback_del(it->title_obj, EVAS_CALLBACK_DEL, _title_obj_del);
-       evas_object_del(it->title_obj);
-     }
-
-   it->title_obj = title_obj;
-   elm_widget_sub_object_add(obj, title_obj);
-   evas_object_event_callback_add(title_obj, EVAS_CALLBACK_DEL, _title_obj_del, it);
-
-   //TODO: Conserve this line for a while the object list get API is alive.
-   eina_list_free(it->title_obj_list);
-   it->title_obj_list = eina_list_append(NULL, title_obj);
-
-   if (elm_navigationbar_content_top_get(obj) != content)
-     return;
-
-   edje_object_part_swallow(wd->base, "elm.swallow.title", title_obj);
-
-   //TODO: Looks something incorrect.
-   if (wd->title_visible)
-     {
-       if (it->title)
-         {
-            edje_object_signal_emit(wd->base, "elm,state,show,extended", "elm");
-            //TODO: for before nbeat?
-            edje_object_signal_emit(wd->base, "elm,state,show,noanimate,title", "elm");
-            it->titleobj_visible = EINA_TRUE;
-         }
-     }
-   _item_sizing_eval(it);
-}
-
-/**
- * Unset the list of title objects corresponding to given content and returns it to
- * the application.
- * @param[in] obj The NavigationBar object
- * @param[in] content The content object pushed
- * @param[out] list updates the list with title objects list, this list has to be freed and the
- * objects have to be deleted by application.
- * @ingroup NavigationBar
- */
-//TODO: remove!
-EAPI void
-elm_navigationbar_title_object_list_unset(Evas_Object *obj, Evas_Object *content, Eina_List **list)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype);
-   Widget_Data *wd;
-   Elm_Navigationbar_Item *it;
-   Evas_Object *swallow;
-
-   if ((!list) || (!content)) return;
-
-   wd = elm_widget_data_get(obj);
-   if (!wd) return;
-
-   it = evas_object_data_get(content, _navigationbar_key);
-   if (!it) return;
-
-   *list = eina_list_append(*list, it->title_obj);
-   it->title_obj = NULL;
-
-   if (elm_navigationbar_content_top_get(obj) != content)
-     return;
-
-   //In this case, the content is in the last of the stack
-   swallow = edje_object_part_swallow_get(wd->base, "elm.swallow.title");
-   if (!swallow) return;
-
-   if (wd->title_visible)
-    {
-      if(it->titleobj_visible)
-        {
-          //TODO: remove the dependency on these signals as related to nbeat?
-          edje_object_signal_emit(wd->base, "elm,state,hide,noanimate,title", "elm");
-          it->titleobj_visible = EINA_FALSE;
-        }
-       edje_object_signal_emit(wd->base, "elm,state,hide,extended", "elm");
-   }
-   _item_sizing_eval(it);
-}
-
-EAPI Evas_Object *
-elm_navigationbar_title_object_get(Evas_Object *obj, Evas_Object *content)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype) NULL;
-   Widget_Data *wd;
-   Elm_Navigationbar_Item *it;
-
-   if (!content) return NULL;
-
-   wd = elm_widget_data_get(obj);
-   if (!wd) return NULL;
-
-   it = evas_object_data_get(content, _navigationbar_key);
-   if (!it) return NULL;
-
-   return it->title_obj;
-}
-
-/**
- * Return the list of title objects of the pushed content.
- *
- * @param[in] obj The NavigationBar object
- * @param[in] content The object to push or pushed
- * @return The list of title objects
- *
- * @ingroup NavigationBar
- */
-//TODO: Remove!!
-EAPI Eina_List *
-elm_navigationbar_title_object_list_get(Evas_Object *obj, Evas_Object *content)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype) NULL;
-   Widget_Data *wd;
-   Elm_Navigationbar_Item *it;
-
-   if (!content) return NULL;
-
-   wd = elm_widget_data_get(obj);
-   if (!wd) return NULL;
-
-   it = evas_object_data_get(content, _navigationbar_key);
-   if (!it) return NULL;
-
-   return it->title_obj_list;
-}
-
-/**
- * Return the content object at the top of the NavigationBar stack
- *
- * @param[in] obj The NavigationBar object
- * @return The top content object or NULL if none
- *
- * @ingroup NavigationBar
- */
-EAPI Evas_Object *
-elm_navigationbar_content_top_get(Evas_Object *obj)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype) NULL;
-   Widget_Data *wd = elm_widget_data_get(obj);
-   if (!wd) return NULL;
-   return elm_pager_content_top_get(wd->pager);
-}
-
-/**
- * Return the content object at the bottom of the NavigationBar stack
- *
- * @param[in] obj The NavigationBar object
- * @return The bottom content object or NULL if none
- *
- * @ingroup NavigationBar
- */
-EAPI Evas_Object *
-elm_navigationbar_content_bottom_get(Evas_Object *obj)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype)NULL;
-   Widget_Data *wd = elm_widget_data_get(obj);
-   if (!wd) return NULL;
-   return elm_pager_content_bottom_get(wd->pager);
-}
-
-/**
- * This hides the title area of navigationbar.
- *
- * @param[in] obj The NavigationBar object
- * @param[in] hidden if EINA_TRUE the title area is hidden.
- *
- * @ingroup NavigationBar
- */
-//TODO: does not provide hidden get ?
-EAPI void
-elm_navigationbar_hidden_set(Evas_Object *obj,
-                        Eina_Bool hidden)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype);
-   Widget_Data *wd = elm_widget_data_get(obj);
-   if (!wd) return;
-
-   if (hidden)
-     edje_object_signal_emit(wd->base, "elm,state,item,moveup", "elm");
-   else
-     edje_object_signal_emit(wd->base, "elm,state,item,movedown", "elm");
-
-   wd->title_visible = !hidden;
-}
-
-/**
- * Set the button object of the pushed content.
- *
- * @param[in] obj The NavigationBar object
- * @param[in] content The object to push or pushed
- * @param[in] button The button
- * @param[in] button_type Indicates the position
- *
- * @ingroup NavigationBar
- */
-EAPI void
-elm_navigationbar_title_button_set(Evas_Object *obj, Evas_Object *content, Evas_Object *button, Elm_Navi_Button_Type button_type)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype);
-
-   Widget_Data *wd;
-   Elm_Navigationbar_Item *it;
-
-   if (!content) return;
-
-   wd = elm_widget_data_get(obj);
-   if (!wd) return;
-
-   it = evas_object_data_get(content, _navigationbar_key);
-   if (!it) return;
-
-   switch(button_type)
-     {
-      case ELM_NAVIGATIONBAR_PREV_BUTTON:
-        _elm_navigationbar_prev_btn_set(obj, content, button, it);
-        break;
-      case ELM_NAVIGATIONBAR_NEXT_BUTTON:
-        _elm_navigationbar_next_btn_set(obj, content, button, it);
-        break;
-      default:
-        _elm_navigationbar_prev_btn_set(obj, content, button, it);
-        break;
-     }
-   _sizing_eval(obj);
-}
-
-/**
- * Return the button object of the pushed content
- *
- * @param[in] obj The NavigationBar object
- * @param[in] content The object to push or pushed
- * @param[in] button_type Indicates the position
- * @return The button object or NULL if none
- *
- * @ingroup NavigationBar
- */
-EAPI Evas_Object *
-elm_navigationbar_title_button_get(Evas_Object *obj, Evas_Object *content, Elm_Navi_Button_Type button_type)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype) NULL;
-   Widget_Data *wd;
-   Elm_Navigationbar_Item *it;
-
-   if (!content) return NULL;
-
-   wd = elm_widget_data_get(obj);
-   if (!wd) return NULL;
-
-   it = evas_object_data_get(content, _navigationbar_key);
-   if (!it) return NULL;
-
-   switch(button_type)
-     {
-        case ELM_NAVIGATIONBAR_PREV_BUTTON:
-           return it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON];
-        case ELM_NAVIGATIONBAR_NEXT_BUTTON:
-           return it->title_btns[ELM_NAVIGATIONBAR_NEXT_BUTTON];
-        default:
-           return it->title_btns[ELM_NAVIGATIONBAR_PREV_BUTTON];
-     }
-   return NULL;
-}
-
-/**
- * Set the sub title string for the pushed content.
- *
- * @param[in] obj The NavigationBar object
- * @param[in] content The object to push or pushed
- * @param[in] subtitle The subtitle string
- *
- * @ingroup NavigationBar
- */
-EAPI void
-elm_navigationbar_subtitle_label_set(Evas_Object *obj, Evas_Object *content, const char *subtitle)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype);
-   Widget_Data *wd;
-   Elm_Navigationbar_Item *it;
-
-   wd = elm_widget_data_get(obj);
-   if (!wd) return;
-
-   it = evas_object_data_get(content, _navigationbar_key);
-   if (!it) return;
-
-   eina_stringshare_replace(&it->subtitle, subtitle);
-   edje_object_part_text_set(wd->base, "elm.text.sub", subtitle);
-   _item_sizing_eval(it);
-}
-
-/**
- * Return the subtitle string of the pushed content.
- *
- * @param[in] obj The NavigationBar object
- * @param[in] content The object to push or pushed
- * @return The subtitle string or NULL if none
- *
- * @ingroup NavigationBar
- */
-EAPI const char *
-elm_navigationbar_subtitle_label_get(Evas_Object *obj, Evas_Object *content)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype) NULL;
-   Widget_Data *wd;
-   Elm_Navigationbar_Item *it;
-
-   wd = elm_widget_data_get(obj);
-   if (!wd) return NULL;
-
-   it = evas_object_data_get(content, _navigationbar_key);
-   if (!it) return NULL;
-   return it->subtitle;
-}
-
-/**
- * This disables content area animation on push/pop.
- *
- * @param[in] obj The NavigationBar object
- * @param[in] disable  if EINA_TRUE animation is disabled.
- *
- * @ingroup NavigationBar
- */
-//TODO: Let's check to remove this API.
-EAPI void
-elm_navigationbar_animation_disabled_set(Evas_Object *obj, Eina_Bool disable)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype);
-   Widget_Data *wd = elm_widget_data_get(obj);
-   if (!wd) return;
-   elm_pager_animation_disabled_set(wd->pager, disable);
-}
-
-/**
- * This shows/hides title object area.
- *
- * @param[in] obj The NavigationBar object
- * @param[in] show  if EINA_TRUE title object is shown else its hidden.
- * @param[in] content  The content object packed in navigationbar.
- * @ingroup NavigationBar
- */
-EAPI void
-elm_navigationbar_title_object_visible_set(Evas_Object *obj, Evas_Object *content, Eina_Bool visible)
-{
-    ELM_CHECK_WIDTYPE(obj, widtype);
-    Elm_Navigationbar_Item *it;
-    Widget_Data *wd;
-
-    if (!content) return;
-
-    wd = elm_widget_data_get(obj);
-    if (!wd) return;
-
-    it = evas_object_data_get(content, _navigationbar_key);
-    if (!it) return;
-    if (it->titleobj_visible == visible) return;
-    it->titleobj_visible = visible;
-    _titleobj_switching(obj, it);
-}
-
-/**
- * This gets the status whether title object is shown/hidden.
- *
- * @param[in] obj The NavigationBar object
- * @param[in] content  The content object packed in navigationbar.
- * @return The status whether title object is shown/hidden.
- * @ingroup NavigationBar
- */
-Eina_Bool
-elm_navigationbar_title_object_visible_get(Evas_Object *obj, Evas_Object *content)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
-   Elm_Navigationbar_Item *it;
-   Widget_Data *wd;
-
-   if (!content) return EINA_FALSE;
-
-   wd = elm_widget_data_get(obj);
-   if (!wd) return EINA_FALSE;
-
-   it = evas_object_data_get(content, _navigationbar_key);
-   if (!it) return EINA_FALSE;
-
-   return it->titleobj_visible;
-}
index b846eb8..395159f 100644 (file)
@@ -518,6 +518,8 @@ elm_button_add(Evas_Object *parent)
                         ELM_ACCESS_TYPE, E_("Button"));
    _elm_access_callback_set(_elm_access_object_get(obj),
                             ELM_ACCESS_INFO, _access_info_cb, obj);
+   _elm_access_callback_set(_elm_access_object_get(obj),
+                            ELM_ACCESS_STATE, _access_state_cb, obj);
    return obj;
 }
 
index ca7ec0a..ebbfb64 100644 (file)
@@ -406,7 +406,11 @@ _draw_rects(void *data, double x)
          break;
       case ALPHA:
          wd->a = 255.0 * x;
-         evas_object_color_set(wd->cp[3]->arrow, wd->er, wd->eg, wd->eb, wd->a);
+         evas_object_color_set(wd->cp[3]->arrow,
+                               (wd->er * wd->a) / 255,
+                               (wd->eg * wd->a) / 255,
+                               (wd->eb * wd->a) / 255,
+                               wd->a);
          break;
       default:
          break;
index dd00c7e..66960c8 100644 (file)
@@ -176,7 +176,7 @@ _change_item_bg(Dialogue_Item *item, const char *location)
 
    eina_stringshare_replace(&item->location, location);
    _set_item_theme(item, location);
-   elm_object_content_part_set(item->bg_layout, "swallow", item->content);
+   elm_object_part_content_set(item->bg_layout, "swallow", item->content);
    if ((item->press == EINA_TRUE) && (item->disabled == EINA_FALSE))
      edje_object_signal_emit(elm_layout_edje_get(item->bg_layout), "elm,state,press,on", "elm");
    else
@@ -217,7 +217,7 @@ _create_item(Evas_Object *obj, Evas_Object *subobj, Elm_Dialoguegroup_Item_Style
    evas_object_size_hint_align_set(item->bg_layout, EVAS_HINT_FILL, 0.0);
    evas_object_show(item->bg_layout);
 
-   elm_object_content_part_set(item->bg_layout, "swallow", item->content);
+   elm_object_part_content_set(item->bg_layout, "swallow", item->content);
 
    return item;
 }
index 719fabb..d4de4a3 100644 (file)
@@ -3196,7 +3196,7 @@ elm_entry_is_empty(const Evas_Object *obj)
    Eina_Bool ret;
    if (!wd) return EINA_TRUE;
 
-if (0) {
+   if (0) {
    /* It's a hack until we get the support suggested above.
     * We just create a cursor, point it to the begining, and then
     * try to advance it, if it can advance, the tb is not empty,
@@ -3210,7 +3210,7 @@ if (0) {
    evas_textblock_cursor_free(cur);
 
    return !ret;
-}
+   }
 
    char *str = elm_entry_markup_to_utf8(elm_entry_entry_get(obj));
    if (!str) return EINA_TRUE;
@@ -3221,6 +3221,27 @@ if (0) {
    return ret;
 }
 
+EAPI const Evas_Object *
+elm_entry_textblock_get(const Evas_Object *obj)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return NULL;
+
+   return edje_object_part_object_get(wd->ent, "elm.text");
+}
+
+EAPI void
+elm_entry_calc_force(const Evas_Object *obj)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+
+   edje_object_calc_force(wd->ent);
+}
+
+
 EAPI const char *
 elm_entry_selection_get(const Evas_Object *obj)
 {
index 6aea4ef..af2f4be 100644 (file)
@@ -137,6 +137,10 @@ static const char SIG_SCROLL_ANIM_START[] = "scroll,anim,start";
 static const char SIG_SCROLL_ANIM_STOP[] = "scroll,anim,stop";
 static const char SIG_SCROLL_DRAG_START[] = "scroll,drag,start";
 static const char SIG_SCROLL_DRAG_STOP[] = "scroll,drag,stop";
+static const char SIG_EDGE_TOP[] = "edge,top";
+static const char SIG_EDGE_BOTTOM[] = "edge,bottom";
+static const char SIG_EDGE_LEFT[] = "edge,left";
+static const char SIG_EDGE_RIGHT[] = "edge,right";
 static const char SIG_MOVED[] = "moved";
 
 static const Evas_Smart_Cb_Description _signals[] = {
@@ -157,6 +161,10 @@ static const Evas_Smart_Cb_Description _signals[] = {
        {SIG_SCROLL_ANIM_STOP, ""},
        {SIG_SCROLL_DRAG_START, ""},
        {SIG_SCROLL_DRAG_STOP, ""},
+       {SIG_EDGE_TOP, ""},
+       {SIG_EDGE_BOTTOM, ""},
+       {SIG_EDGE_LEFT, ""},
+       {SIG_EDGE_RIGHT, ""},
        {SIG_MOVED, ""},
        {NULL, NULL}
 };
@@ -1612,6 +1620,39 @@ _scr_drag_stop(void            *data,
 }
 
 static void
+_edge_left(void        *data,
+           Evas_Object *scr __UNUSED__,
+           void        *event_info __UNUSED__)
+{
+   evas_object_smart_callback_call(data, SIG_EDGE_LEFT, NULL);
+}
+
+static void
+_edge_right(void        *data,
+            Evas_Object *scr __UNUSED__,
+            void        *event_info __UNUSED__)
+{
+   evas_object_smart_callback_call(data, SIG_EDGE_RIGHT, NULL);
+}
+
+static void
+_edge_top(void        *data,
+          Evas_Object *scr __UNUSED__,
+          void        *event_info __UNUSED__)
+{
+   evas_object_smart_callback_call(data, SIG_EDGE_TOP, NULL);
+}
+
+static void
+_edge_bottom(void        *data,
+             Evas_Object *scr __UNUSED__,
+             void        *event_info __UNUSED__)
+{
+   evas_object_smart_callback_call(data, SIG_EDGE_BOTTOM, NULL);
+}
+
+
+static void
 _scr_scroll(void            *data,
             Evas_Object *obj __UNUSED__,
             void *event_info __UNUSED__)
@@ -1670,6 +1711,10 @@ elm_gengrid_add(Evas_Object *parent)
    evas_object_smart_callback_add(wd->scr, "animate,stop", _scr_anim_stop, obj);
    evas_object_smart_callback_add(wd->scr, "drag,start", _scr_drag_start, obj);
    evas_object_smart_callback_add(wd->scr, "drag,stop", _scr_drag_stop, obj);
+   evas_object_smart_callback_add(wd->scr, "edge,left", _edge_left, obj);
+   evas_object_smart_callback_add(wd->scr, "edge,right", _edge_right, obj);
+   evas_object_smart_callback_add(wd->scr, "edge,top", _edge_top, obj);
+   evas_object_smart_callback_add(wd->scr, "edge,bottom", _edge_bottom, obj);
    evas_object_smart_callback_add(wd->scr, "scroll", _scr_scroll, obj);
 
    elm_smart_scroller_bounce_allow_set(wd->scr, bounce, bounce);
diff --git a/src/lib/elm_slidingdrawer.c b/src/lib/elm_slidingdrawer.c
deleted file mode 100644 (file)
index dd71d0d..0000000
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
- * @defgroup SlidingDrawer SlidingDrawer
- * @ingroup Elementary
- *
- * This is a slidingdrawer.
- */
-
-#include <Elementary.h>
-#include "elm_priv.h"
-
-typedef struct _Widget_Data Widget_Data;
-
-struct _Widget_Data
-{
-   Evas_Object *parent;
-   Evas_Object *base;
-   Evas_Object *handler;
-   Evas_Object *dragable_rect;
-   Elm_SlidingDrawer_Pos pos;
-   double max_drag_w;
-   double max_drag_h;
-   Elm_SlidingDrawer_Drag_Value value;
-};
-
-static const char *widtype = NULL;
-
-static void _del_hook(Evas_Object *obj);
-
-static void _theme_hook(Evas_Object *obj);
-
-static void _sizing_eval(Evas_Object *obj);
-
-static void _parent_resize(void *data, Evas * e, Evas_Object *obj, void *event_info);
-static void _drag_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
-static void _up_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
-static void _down_cb(void *data, Evas_Object *obj, const char *emission, const char *source);
-
-static void
-_del_hook(Evas_Object *obj)
-{
-   Widget_Data *wd = (Widget_Data *) elm_widget_data_get(obj);
-
-   evas_object_event_callback_del(wd->parent, EVAS_CALLBACK_RESIZE, _parent_resize);
-   free(wd);
-}
-
-static void \r
-_theme_hook(Evas_Object *obj)
-{
-   Widget_Data *wd = (Widget_Data *) elm_widget_data_get(obj);
-
-   elm_slidingdrawer_pos_set(obj, wd->pos);
-}
-
-static void
-_parent_resize(void *data, Evas * e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
-{
-   _sizing_eval(data);
-}
-
-static void
-_drag_cb(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
-{
-   Widget_Data *wd = elm_widget_data_get(data);
-
-   edje_object_part_drag_value_get(wd->base, "elm.dragable.handler", &wd->value.x, &wd->value.y);
-   evas_object_smart_callback_call(data, "mouse,move", (void *)&wd->value);
-}
-
-static void
-_up_cb(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
-{
-   Widget_Data *wd = elm_widget_data_get(data);
-
-   edje_object_part_drag_value_get(wd->base, "elm.dragable.handler", &wd->value.x, &wd->value.y);
-   evas_object_smart_callback_call(data, "mouse,up", (void *)&wd->value);
-}
-
-static void
-_down_cb(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
-{
-   Widget_Data *wd = elm_widget_data_get(data);
-
-   edje_object_part_drag_value_get(wd->base, "elm.dragable.handler", &wd->value.x, &wd->value.y);
-   evas_object_smart_callback_call(data, "mouse,down", (void *)&wd->value);
-}
-
-static void
-_sizing_eval(Evas_Object *obj)
-{
-   Widget_Data *wd;
-
-   Evas_Coord x, y, w, h;
-
-   const Evas_Object *part;
-
-   wd = elm_widget_data_get(obj);
-
-   evas_object_geometry_get(wd->parent, &x, &y, &w, &h);
-   evas_object_move(obj, x, y);
-   evas_object_resize(obj, w, h);
-
-   evas_object_size_hint_max_set(wd->dragable_rect, ((double)w) * wd->max_drag_w, ((double)h) * wd->max_drag_h);
-
-   part = edje_object_part_object_get(wd->base, "elm.dragable.handler");
-
-   if ((wd->pos == ELM_SLIDINGDRAWER_TOP)
-       || (wd->pos == ELM_SLIDINGDRAWER_BOTTOM))
-     edje_object_size_min_get(part, NULL, &h);
-   else
-     edje_object_size_min_get(part, &w, NULL);
-
-   evas_object_size_hint_min_set(wd->handler, w, h);
-}
-
-/**
- * Unswallow the user content
- *
- * @param[in] obj              SlidingDrawer object
- * @return             The unswallowed contents
- *
- * @ingroup SlidingDrawer
- */
-EAPI Evas_Object *
-elm_slidingdrawer_content_unset(Evas_Object *obj)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype) NULL;
-   Widget_Data *wd;
-   Evas_Object *content;
-   wd = elm_widget_data_get(obj);
-   content = edje_object_part_swallow_get(wd->base, "elm.swallow.content");
-   if (!content)
-      return NULL;
-   edje_object_part_unswallow(wd->base, content);
-   elm_widget_sub_object_del(obj, content);
-   return content;
-}
-
-/**
- * Swallow the user contents
- *
- * @param[in] obj               SlidingDrawer object
- * @param[in] content           Content to be swallowed.
- *
- * @ingroup SlidingDrawer
- */
-EAPI void
-elm_slidingdrawer_content_set(Evas_Object *obj, Evas_Object *content){
-   ELM_CHECK_WIDTYPE(obj, widtype);
-   Widget_Data *wd;
-   Evas_Object *prev_content;
-   if (!content) return;
-   wd = elm_widget_data_get(obj);
-   elm_widget_sub_object_add(obj, content);
-   prev_content = edje_object_part_swallow_get(wd->base, "elm.swallow.content");
-   if (prev_content)
-     {
-        edje_object_part_unswallow(wd->base, prev_content);
-        elm_widget_sub_object_del(obj, prev_content);
-        evas_object_del(prev_content);
-     }
-   edje_object_part_swallow(wd->base, "elm.swallow.content", content);
-}
-
-/**
- * Set the position of SlidingDrawer
- *
- * @param[in] obj               SlidingDrawer object
- * @param[in] pos               Position of drawer's handle
- *
- * @ingroup SlidingDrawer
- */
-EAPI void
-elm_slidingdrawer_pos_set(Evas_Object *obj, Elm_SlidingDrawer_Pos pos)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype);
-
-   Widget_Data *wd = elm_widget_data_get(obj);
-
-   switch (pos)
-     {
-      case ELM_SLIDINGDRAWER_BOTTOM:
-         _elm_theme_object_set(obj, wd->base, "slidingdrawer", "bottom", elm_widget_style_get(obj));
-         break;
-      case ELM_SLIDINGDRAWER_LEFT:
-         _elm_theme_object_set(obj, wd->base, "slidingdrawer", "left", elm_widget_style_get(obj));
-         break;
-      case ELM_SLIDINGDRAWER_RIGHT:
-         _elm_theme_object_set(obj, wd->base, "slidingdrawer", "right", elm_widget_style_get(obj));
-         break;
-      case ELM_SLIDINGDRAWER_TOP:
-         _elm_theme_object_set(obj, wd->base, "slidingdrawer", "top", elm_widget_style_get(obj));
-         break;
-     }
-
-   edje_object_part_drag_value_set(wd->base, "elm.dragable.handler", 0, 0);
-   wd->pos = pos;
-   _sizing_eval(obj);
-}
-
-/**
- * Set the current dragable value.
- *
- * @param[in] obj              SlidingDrawer object
- * @param[in] dx               The x value (range: 0 ~ 1)
- * @param[in] dy            The y value (range: 0 ~ 1)
- *
- * @ingroup SlidingDrawer
- */
-EAPI void
-elm_slidingdrawer_drag_value_set(Evas_Object *obj, double dx, double dy)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype);
-   Widget_Data *wd;
-
-   wd = elm_widget_data_get(obj);
-   edje_object_part_drag_value_set(wd->base, "elm.dragable.handler", dx, dy);
-}
-
-/**
- * Set the dragable max value.
- *
- * @param[in] obj              SlidingDrawer object
- * @param[in] dw               The maximum width value (range: 0 ~ 1)
- * @param[in] dh                The maximum height value (range: 0 ~ 1)
- *
- * @ingroup SlidingDrawer
- */
-EAPI void
-elm_slidingdrawer_max_drag_value_set(Evas_Object *obj, double dw, double dh)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype);
-   Widget_Data *wd;
-
-   wd = elm_widget_data_get(obj);
-   wd->max_drag_w = dw;
-   wd->max_drag_h = dh;
-   _sizing_eval(obj);
-
-}
-
-/**
- * Add a new slidingdrawer object to the parent.
- *
- * @param[in] parent   Parent object
- * @return             New object or NULL if it cannot be created
- *
- * @ingroup SlidingDrawer
- */
-EAPI Evas_Object *
-elm_slidingdrawer_add(Evas_Object *parent)
-{
-   Evas_Object *obj;
-   Evas *e;
-   Widget_Data *wd;
-
-   ELM_WIDGET_STANDARD_SETUP(wd, Widget_Data, parent, e, obj, NULL);
-
-   wd->parent = parent;
-   ELM_SET_WIDTYPE(widtype, "slidingdrawer");
-   elm_widget_type_set(obj, "slidingdrawer");
-   elm_widget_can_focus_set(obj, EINA_FALSE);
-   elm_widget_sub_object_add(parent, obj);
-   elm_widget_data_set(obj, wd);
-   elm_widget_del_hook_set(obj, _del_hook);
-   elm_widget_theme_hook_set(obj, _theme_hook);
-
-   //base
-   wd->base = edje_object_add(e);
-   _elm_theme_object_set(obj, wd->base, "slidingdrawer", "bottom", "default");
-   edje_object_signal_callback_add(wd->base, "drag", "*", _drag_cb, obj);
-   edje_object_signal_callback_add(wd->base, "mouse,up,*", "*", _up_cb, obj);
-   edje_object_signal_callback_add(wd->base, "mouse,down,*", "*", _down_cb, obj);
-   elm_widget_sub_object_add(obj, wd->base);
-   elm_widget_resize_object_set(obj, wd->base);
-
-   //dragable_rect
-   wd->dragable_rect = evas_object_rectangle_add(e);
-   elm_widget_sub_object_add(obj, wd->dragable_rect);
-   edje_object_part_swallow(wd->base, "elm.swallow.dragable_rect", wd->dragable_rect);
-   wd->max_drag_w = 1;
-   wd->max_drag_h = 1;
-
-   //handler
-   wd->handler = evas_object_rectangle_add(e);
-   elm_widget_sub_object_add(obj, wd->handler);
-   evas_object_color_set(wd->handler, 0, 0, 0, 0);
-   edje_object_part_swallow(wd->base, "elm.dragable.handler", wd->handler);
-
-   evas_object_event_callback_add(parent, EVAS_CALLBACK_RESIZE, _parent_resize, obj);
-
-   _sizing_eval(obj);
-
-   return obj;
-}
index a11644a..6e8b044 100644 (file)
@@ -26,6 +26,7 @@ struct _Smart_Data
    Evas_Object *obj;
    const char  *type;
    Evas_Object *parent_obj;
+   Evas_Object *parent2;
    Evas_Coord   x, y, w, h;
    Eina_List   *subobjs;
    Evas_Object *resize_obj;
@@ -1219,6 +1220,47 @@ elm_widget_tree_unfocusable_get(const Evas_Object *obj)
    return sd->tree_unfocusable;
 }
 
+/**
+ * @internal
+ *
+ * Get the list of focusable child objects.
+ *
+ * This function retruns list of child objects which can get focus.
+ *
+ * @param obj The parent widget
+ * @retrun list of focusable child objects.
+ *
+ * @ingroup Widget
+ */
+EAPI Eina_List *
+elm_widget_can_focus_child_list_get(const Evas_Object *obj)
+{
+   API_ENTRY return NULL;
+
+   const Eina_List *l;
+   Eina_List *child_list = NULL;
+   Evas_Object *child;
+
+   if (sd->subobjs)
+     {
+        EINA_LIST_FOREACH(sd->subobjs, l, child)
+          {
+             if ((elm_widget_can_focus_get(child)) &&
+                 (evas_object_visible_get(child)) &&
+                 (!elm_widget_disabled_get(child)))
+               child_list = eina_list_append(child_list, child);
+             else if (elm_widget_is(child))
+               {
+                  Eina_List *can_focus_list;
+                  can_focus_list = elm_widget_can_focus_child_list_get(child);
+                  if (can_focus_list)
+                    child_list = eina_list_merge(child_list, can_focus_list);
+               }
+          }
+     }
+   return child_list;
+}
+
 EAPI void
 elm_widget_highlight_ignore_set(Evas_Object *obj,
                                 Eina_Bool    ignore)
@@ -1315,6 +1357,24 @@ elm_widget_parent_widget_get(const Evas_Object *obj)
    return parent;
 }
 
+EAPI Evas_Object *
+elm_widget_parent2_get(const Evas_Object *obj)
+{
+   if (_elm_widget_is(obj))
+     {
+        Smart_Data *sd = evas_object_smart_data_get(obj);
+        if (sd) return sd->parent2;
+     }
+   return NULL;
+}
+
+EAPI void
+elm_widget_parent2_set(Evas_Object *obj, Evas_Object *parent)
+{
+   API_ENTRY return;
+   sd->parent2 = parent;
+}
+
 EAPI void
 elm_widget_event_callback_add(Evas_Object *obj,
                               Elm_Event_Cb func,
@@ -1906,7 +1966,7 @@ elm_widget_focused_object_clear(Evas_Object *obj)
 EAPI void
 elm_widget_focus_steal(Evas_Object *obj)
 {
-   Evas_Object *parent, *o;
+   Evas_Object *parent, *parent2, *o;
    API_ENTRY return;
 
    if (sd->focused) return;
@@ -1923,24 +1983,30 @@ elm_widget_focus_steal(Evas_Object *obj)
         if (sd->focused) break;
         parent = o;
      }
-   if (!elm_widget_parent_get(parent))
-     elm_widget_focused_object_clear(parent);
+   if ((!elm_widget_parent_get(parent)) &&
+       (!elm_widget_parent2_get(parent)))
+      elm_widget_focused_object_clear(parent);
    else
      {
-        parent = elm_widget_parent_get(parent);
+        parent2 = elm_widget_parent_get(parent);
+        if (!parent2) parent2 = elm_widget_parent2_get(parent);
+        parent = parent2;
         sd = evas_object_smart_data_get(parent);
-        if ((sd->resize_obj) && (elm_widget_focus_get(sd->resize_obj)))
-          elm_widget_focused_object_clear(sd->resize_obj);
-        else
+        if (sd)
           {
-             const Eina_List *l;
-             Evas_Object *child;
-             EINA_LIST_FOREACH(sd->subobjs, l, child)
+             if ((sd->resize_obj) && (elm_widget_focus_get(sd->resize_obj)))
+                elm_widget_focused_object_clear(sd->resize_obj);
+             else
                {
-                  if (elm_widget_focus_get(child))
+                  const Eina_List *l;
+                  Evas_Object *child;
+                  EINA_LIST_FOREACH(sd->subobjs, l, child)
                     {
-                       elm_widget_focused_object_clear(child);
-                       break;
+                       if (elm_widget_focus_get(child))
+                         {
+                            elm_widget_focused_object_clear(child);
+                            break;
+                         }
                     }
                }
           }
index 6cb400c..a52d44f 100644 (file)
@@ -326,6 +326,7 @@ EAPI void            *elm_widget_signal_callback_del(Evas_Object *obj, const cha
 EAPI void             elm_widget_can_focus_set(Evas_Object *obj, Eina_Bool can_focus);
 EAPI Eina_Bool        elm_widget_can_focus_get(const Evas_Object *obj);
 EAPI Eina_Bool        elm_widget_child_can_focus_get(const Evas_Object *obj);
+EAPI Eina_List       *elm_widget_can_focus_child_list_get(const Evas_Object *obj);
 EAPI void             elm_widget_tree_unfocusable_set(Evas_Object *obj, Eina_Bool tree_unfocusable);
 EAPI Eina_Bool        elm_widget_tree_unfocusable_get(const Evas_Object *obj);
 EAPI void             elm_widget_highlight_ignore_set(Evas_Object *obj, Eina_Bool ignore);
@@ -352,6 +353,8 @@ EAPI Eina_Bool        elm_widget_focus_list_next_get(const Evas_Object *obj, con
 EAPI void             elm_widget_focus_set(Evas_Object *obj, int first);
 EAPI void             elm_widget_focused_object_clear(Evas_Object *obj);
 EAPI Evas_Object     *elm_widget_parent_get(const Evas_Object *obj);
+EAPI Evas_Object     *elm_widget_parent2_get(const Evas_Object *obj);
+EAPI void             elm_widget_parent2_set(Evas_Object *obj, Evas_Object *parent);
 EAPI void             elm_widget_focus_steal(Evas_Object *obj);
 
 /**
index 4188a66..1a3cd34 100644 (file)
@@ -1554,6 +1554,8 @@ elm_win_add(Evas_Object *parent, const char *name, Elm_Win_Type type)
    evas_object_layer_set(win->win_obj, 50);
    evas_object_pass_events_set(win->win_obj, EINA_TRUE);
 
+   if (type == ELM_WIN_INLINED_IMAGE)
+      elm_widget_parent2_set(win->win_obj, parent);
    ecore_evas_object_associate(win->ee, win->win_obj,
                                ECORE_EVAS_OBJECT_ASSOCIATE_BASE |
                                ECORE_EVAS_OBJECT_ASSOCIATE_STACK |
index 6713104..e03d629 100644 (file)
@@ -208,6 +208,7 @@ obj_longpress(Evas_Object *obj)
    const char *context_menu_orientation;
    char buf[255];
    Evas_Object* icon;
+   Elm_Object_Item *added_item = NULL;
 
    /*update*/
    elm_entry_extension_module_data_get(obj,ext_mod);
@@ -242,14 +243,19 @@ obj_longpress(Evas_Object *obj)
                {
                   if (!elm_entry_is_empty(obj))
                     {
-                       elm_ctxpopup_item_append(ext_mod->popup, "Select", NULL, _select, obj );
-                       elm_ctxpopup_item_append(ext_mod->popup, "Select All", NULL, _select_all, obj );
+                       added_item = elm_ctxpopup_item_append(ext_mod->popup, "Select", NULL, _select, obj );
+                       added_item = elm_ctxpopup_item_append(ext_mod->popup, "Select All", NULL, _select_all, obj );
                     }
                }
+
+#ifdef HAVE_ELEMENTARY_X
+             if (cbhm_count)
+#else
              if (1) // need way to detect if someone has a selection
+#endif
                {
                   if (ext_mod->editable)
-                    elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj );
+                    added_item = elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj );
                }
              //elm_ctxpopup_item_append(wd->ctxpopup, NULL, "Selectall",_select_all, obj );
              // start for cbhm
@@ -262,7 +268,7 @@ obj_longpress(Evas_Object *obj)
                   icon = elm_icon_add(ext_mod->popup);
                   snprintf(buf, sizeof(buf), "%s/images/copypaste_icon_clipboard.png", PACKAGE_DATA_DIR);
                   elm_icon_file_set(icon, buf, NULL);
-                  elm_ctxpopup_item_append(ext_mod->popup, NULL, icon, _clipboard_menu, obj);
+                  added_item = elm_ctxpopup_item_append(ext_mod->popup, NULL, icon, _clipboard_menu, obj);
                   //elm_ctxpopup_item_append(ext_mod->popup, "More", NULL, _clipboard_menu, obj );
                }
              // end for cbhm
@@ -273,24 +279,32 @@ obj_longpress(Evas_Object *obj)
                {
                   if (ext_mod->have_selection)
                     {
-                       elm_ctxpopup_item_append(ext_mod->popup, "Copy", NULL, _copy, obj );
+                       added_item = elm_ctxpopup_item_append(ext_mod->popup, "Copy", NULL, _copy, obj );
                        if (ext_mod->editable)
-                         elm_ctxpopup_item_append(ext_mod->popup, "Cut", NULL, _cut, obj );
+                         added_item = elm_ctxpopup_item_append(ext_mod->popup, "Cut", NULL, _cut, obj );
+#ifdef HAVE_ELEMENTARY_X
+                       if (ext_mod->editable && cbhm_count)
+#else
                        if (ext_mod->editable)
-                         elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj );
+#endif
+                         added_item = elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj );
                     }
                   else
                     {
                        _cancel(obj,ext_mod->popup,NULL);
                        if (!elm_entry_is_empty(obj))
                          {
-                            elm_ctxpopup_item_append(ext_mod->popup, "Select", NULL, _select, obj );
-                            elm_ctxpopup_item_append(ext_mod->popup, "Select All", NULL, _select_all, obj );
+                            added_item = elm_ctxpopup_item_append(ext_mod->popup, "Select", NULL, _select, obj );
+                            added_item = elm_ctxpopup_item_append(ext_mod->popup, "Select All", NULL, _select_all, obj );
                          }
+#ifdef HAVE_ELEMENTARY_X
+                       if (cbhm_count)
+#else
                        if (1) // need way to detect if someone has a selection
+#endif
                          {
                             if (ext_mod->editable)
-                              elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj );
+                              added_item = elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj );
                          }
                     }
                   // start for cbhm
@@ -303,7 +317,7 @@ obj_longpress(Evas_Object *obj)
                        icon = elm_icon_add(ext_mod->popup);
                        snprintf(buf, sizeof(buf), "%s/images/copypaste_icon_clipboard.png", PACKAGE_DATA_DIR);
                        elm_icon_file_set(icon, buf, NULL);
-                       elm_ctxpopup_item_append(ext_mod->popup, NULL, icon, _clipboard_menu, obj);
+                       added_item = elm_ctxpopup_item_append(ext_mod->popup, NULL, icon, _clipboard_menu, obj);
                        //elm_ctxpopup_item_append(ext_mod->popup, "More", NULL, _clipboard_menu, obj );
                     }
                   // end for cbhm
@@ -311,9 +325,9 @@ obj_longpress(Evas_Object *obj)
           }
         EINA_LIST_FOREACH(ext_mod->items, l, it)
           {
-             elm_ctxpopup_item_append(ext_mod->popup, it->label, NULL, _item_clicked, it );
+             added_item = elm_ctxpopup_item_append(ext_mod->popup, it->label, NULL, _item_clicked, it );
           }
-        if (ext_mod->popup)
+        if (ext_mod->popup && added_item)
           {
              elm_object_scroll_freeze_push(ext_mod->popup);
              _ctxpopup_position(obj);