revert to the migration tempoary
authorShinwoo Kim <cinoo.kim@samsung.com>
Mon, 28 Nov 2011 08:16:47 +0000 (17:16 +0900)
committerShinwoo Kim <cinoo.kim@samsung.com>
Mon, 28 Nov 2011 08:16:47 +0000 (17:16 +0900)
103 files changed:
COPYING
configure.ac
data/images/Makefile.am
doc/widgets/widget_preview_ctxpopup.c
po/ar.po
po/az_IR.po
po/de.po
po/el.po
po/en_US.po
po/es_ES.po
po/fa.po
po/fr.po
po/he.po
po/it.po
po/ja_JP.po
po/ko_KR.po
po/nl.po
po/ps.po
po/pt.po
po/ru_RU.po
po/tr_TR.po
po/ur.po
po/yi.po
po/zh_CN.po
po/zh_HK.po
po/zh_TW.po
src/bin/Makefile.am
src/bin/test.c
src/bin/test_ctxpopup.c
src/bin/test_diskselector.c
src/bin/test_fileselector.c
src/bin/test_gengrid.c
src/bin/test_genlist.c
src/bin/test_index.c
src/bin/test_multibuttonentry.c [deleted file]
src/bin/test_naviframe.c
src/bin/test_panel.c
src/bin/test_segment_control.c
src/bin/test_tooltip.c
src/edje_externals/Makefile.am
src/edje_externals/elm.c
src/edje_externals/elm_bubble.c
src/edje_externals/elm_calendar.c
src/edje_externals/elm_colorpalette.c
src/edje_externals/elm_entry.c
src/edje_externals/elm_genlist.c
src/edje_externals/elm_navigationbar.c [new file with mode: 0644]
src/edje_externals/elm_navigationbar_ex.c [new file with mode: 0644]
src/edje_externals/elm_toggle.c
src/edje_externals/modules.inc
src/examples/animator_example_01.c [new file with mode: 0644]
src/examples/ctxpopup_example_01.c
src/examples/flipselector_example.c
src/lib/Elementary.h.in
src/lib/Makefile.am
src/lib/elc_ctxpopup.c
src/lib/elc_naviframe.c
src/lib/elc_navigationbar.c [new file with mode: 0644]
src/lib/elc_navigationbar_ex.c [new file with mode: 0644]
src/lib/elc_player.c
src/lib/elm_bg.c
src/lib/elm_button.c
src/lib/elm_check.c
src/lib/elm_cnp_helper.c
src/lib/elm_colorpalette.c
src/lib/elm_colorselector.c
src/lib/elm_controlbar.c
src/lib/elm_dialoguegroup.c
src/lib/elm_diskselector.c
src/lib/elm_entry.c
src/lib/elm_flipselector.c
src/lib/elm_gengrid.c
src/lib/elm_genlist.c
src/lib/elm_imageslider.c
src/lib/elm_main.c
src/lib/elm_map.c
src/lib/elm_module_priv.h
src/lib/elm_multibuttonentry.c [moved from src/lib/elc_multibuttonentry.c with 82% similarity]
src/lib/elm_popup.c
src/lib/elm_priv.h
src/lib/elm_progressbar.c
src/lib/elm_radio.c
src/lib/elm_scrolled_grid.c [new file with mode: 0644]
src/lib/elm_searchbar.c
src/lib/elm_slider.c
src/lib/elm_slidingdrawer.c [new file with mode: 0644]
src/lib/elm_stackedicon.c
src/lib/elm_store.c
src/lib/elm_theme.c
src/lib/elm_tickernoti.c
src/lib/elm_toggle.c
src/lib/elm_transit.c
src/lib/elm_video.c
src/lib/elm_widget.c
src/lib/elm_widget.h
src/lib/elm_win.c
src/lib/els_cursor.c
src/lib/els_icon.c
src/lib/els_tooltip.c
src/modules/access_output/mod.c
src/modules/ctxpopup_copypasteUI/copypaste.c
src/modules/ctxpopup_copypasteshareUI/copypaste.c
src/modules/popup_copypasteUI/copypaste.c

diff --git a/COPYING b/COPYING
index a3f518d..f9624d6 100644 (file)
--- a/COPYING
+++ b/COPYING
@@ -4,7 +4,7 @@ Copyright (C) 2008-2011 Carsten Haitzler and various contributors (see AUTHORS)
 
 This library is free software; you can redistribute it and/or modify it
 under the terms of the GNU Lesser General Public License as published by the
-Free Software Foundation; version 2.1 of the License.
+Free Software Foundation; either version 2.1 of the License.
 
 This library is distributed in the hope that it will be useful, but WITHOUT
 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
index e64f7da..58f7237 100755 (executable)
@@ -220,23 +220,11 @@ 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],
         [
@@ -747,7 +735,6 @@ 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 88a4f7e..cb0d5d2 100644 (file)
@@ -94,4 +94,4 @@ g_layer/long_tap_5.png \
 g_layer/tap_4.png
 
 
-EXTRA_DIST = $(files_DATA) $(files_glayer_DATA)
+EXTRA_DIST = $(files_DATA)
index c2819d6..5b71284 100644 (file)
@@ -20,7 +20,7 @@ ic = elm_icon_add(ctxpopup);
 elm_icon_standard_set(ic, "folder");
 elm_icon_scale_set(ic, EINA_FALSE, EINA_FALSE);
 Elm_Object_Item *it = elm_ctxpopup_item_append(ctxpopup, "Navigate to folder", ic, NULL, NULL);
-elm_object_item_disabled_set(it, EINA_TRUE);
+elm_ctxpopup_item_disabled_set(it, EINA_TRUE);
 
 evas_object_size_hint_weight_set(ctxpopup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
 evas_object_move(ctxpopup, 0, 0);
index 43c9289..baa7972 100644 (file)
--- a/po/ar.po
+++ b/po/ar.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: elementary\n"
 "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
 "PO-Revision-Date: 2011-09-26 21:20+0900\n"
 "Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
 "Language-Team: General\n"
@@ -25,8 +25,8 @@ msgstr ""
 msgid "Home"
 msgstr ""
 
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
 msgid "Cancel"
 msgstr ""
 
@@ -78,27 +78,27 @@ msgstr "AM"
 msgid "DateTimeFormat"
 msgstr "%b %d, %Y %I : %M %p"
 
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
 msgid "Select"
 msgstr ""
 
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
 msgid "Paste"
 msgstr ""
 
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
 msgid "More"
 msgstr ""
 
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
 msgid "Copy"
 msgstr ""
 
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
 msgid "Cut"
 msgstr ""
 
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
 msgid "Search"
 msgstr ""
 
index 3ca50c8..c37b897 100644 (file)
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: elementary\n"
 "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
 "PO-Revision-Date: 2011-09-26 21:20+0900\n"
 "Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
 "Language-Team: General\n"
@@ -24,8 +24,8 @@ msgstr ""
 msgid "Home"
 msgstr ""
 
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
 msgid "Cancel"
 msgstr ""
 
@@ -77,27 +77,27 @@ msgstr "AM"
 msgid "DateTimeFormat"
 msgstr "%b %d, %Y %I : %M %p"
 
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
 msgid "Select"
 msgstr ""
 
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
 msgid "Paste"
 msgstr ""
 
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
 msgid "More"
 msgstr ""
 
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
 msgid "Copy"
 msgstr ""
 
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
 msgid "Cut"
 msgstr ""
 
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
 msgid "Search"
 msgstr ""
 
index ff09b6b..53e5852 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: elementary 0.7.0.57309\n"
 "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
 "PO-Revision-Date: 2011-09-26 21:20+0900\n"
 "Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
 "Language-Team: General\n"
@@ -26,8 +26,8 @@ msgstr "Aufwärts"
 msgid "Home"
 msgstr "Persönlicher Ordner"
 
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
 msgid "Cancel"
 msgstr "Abbrechen"
 
@@ -79,27 +79,27 @@ msgstr "vorm."
 msgid "DateTimeFormat"
 msgstr "%d. %b %Y %H : %M"
 
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
 msgid "Select"
 msgstr "Auswählen"
 
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
 msgid "Paste"
 msgstr "Einfügen"
 
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
 msgid "More"
 msgstr ""
 
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
 msgid "Copy"
 msgstr "Kopieren"
 
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
 msgid "Cut"
 msgstr "Ausschneiden"
 
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
 msgid "Search"
 msgstr "Suche"
 
index 14186a0..08c4bc1 100644 (file)
--- a/po/el.po
+++ b/po/el.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: elementary\n"
 "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
 "PO-Revision-Date: 2011-09-26 21:20+0900\n"
 "Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
 "Language-Team: General\n"
@@ -25,8 +25,8 @@ msgstr ""
 msgid "Home"
 msgstr ""
 
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
 msgid "Cancel"
 msgstr ""
 
@@ -78,27 +78,27 @@ msgstr "AM"
 msgid "DateTimeFormat"
 msgstr "%d %b %Y %I : %M %p"
 
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
 msgid "Select"
 msgstr ""
 
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
 msgid "Paste"
 msgstr ""
 
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
 msgid "More"
 msgstr ""
 
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
 msgid "Copy"
 msgstr ""
 
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
 msgid "Cut"
 msgstr ""
 
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
 msgid "Search"
 msgstr ""
 
index aacbd61..0cc428c 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: elementary\n"
 "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
 "PO-Revision-Date: 2011-09-26 21:20+0900\n"
 "Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
 "Language-Team: General\n"
@@ -25,8 +25,8 @@ msgstr ""
 msgid "Home"
 msgstr ""
 
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
 msgid "Cancel"
 msgstr ""
 
@@ -78,27 +78,27 @@ msgstr "AM"
 msgid "DateTimeFormat"
 msgstr "%b %d, %Y %I : %M %p"
 
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
 msgid "Select"
 msgstr ""
 
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
 msgid "Paste"
 msgstr ""
 
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
 msgid "More"
 msgstr ""
 
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
 msgid "Copy"
 msgstr ""
 
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
 msgid "Cut"
 msgstr ""
 
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
 msgid "Search"
 msgstr ""
 
index d279a26..a994161 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: elementary\n"
 "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
 "PO-Revision-Date: 2011-09-26 21:20+0900\n"
 "Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
 "Language-Team: General\n"
@@ -25,8 +25,8 @@ msgstr ""
 msgid "Home"
 msgstr ""
 
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
 msgid "Cancel"
 msgstr ""
 
@@ -78,27 +78,27 @@ msgstr "a.m."
 msgid "DateTimeFormat"
 msgstr "%d de %b de %Y %H : %M"
 
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
 msgid "Select"
 msgstr ""
 
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
 msgid "Paste"
 msgstr ""
 
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
 msgid "More"
 msgstr ""
 
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
 msgid "Copy"
 msgstr ""
 
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
 msgid "Cut"
 msgstr ""
 
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
 msgid "Search"
 msgstr ""
 
index f3baae5..4cc4478 100644 (file)
--- a/po/fa.po
+++ b/po/fa.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: elementary\n"
 "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
 "PO-Revision-Date: 2011-09-26 21:20+0900\n"
 "Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
 "Language-Team: General\n"
@@ -24,8 +24,8 @@ msgstr ""
 msgid "Home"
 msgstr ""
 
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
 msgid "Cancel"
 msgstr ""
 
@@ -77,27 +77,27 @@ msgstr "AM"
 msgid "DateTimeFormat"
 msgstr "%b %d, %Y %I : %M %p"
 
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
 msgid "Select"
 msgstr ""
 
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
 msgid "Paste"
 msgstr ""
 
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
 msgid "More"
 msgstr ""
 
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
 msgid "Copy"
 msgstr ""
 
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
 msgid "Cut"
 msgstr ""
 
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
 msgid "Search"
 msgstr ""
 
index ac4b2ab..a534ad6 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -5,7 +5,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Elementary\n"
 "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
 "PO-Revision-Date: 2011-09-26 21:20+0900\n"
 "Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
 "Language-Team: General\n"
@@ -26,8 +26,8 @@ msgstr "Monter"
 msgid "Home"
 msgstr "Home"
 
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
 msgid "Cancel"
 msgstr "Annuler"
 
@@ -79,27 +79,27 @@ msgstr "AM"
 msgid "DateTimeFormat"
 msgstr "%d %b %Y %H : %M"
 
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
 msgid "Select"
 msgstr "Sélectionner"
 
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
 msgid "Paste"
 msgstr "Coller"
 
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
 msgid "More"
 msgstr ""
 
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
 msgid "Copy"
 msgstr "Copier"
 
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
 msgid "Cut"
 msgstr "Couper"
 
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
 msgid "Search"
 msgstr "Rechercher"
 
index 07e7a0a..44f1947 100644 (file)
--- a/po/he.po
+++ b/po/he.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: elementary\n"
 "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
 "PO-Revision-Date: 2011-09-26 21:20+0900\n"
 "Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
 "Language-Team: General\n"
@@ -24,8 +24,8 @@ msgstr ""
 msgid "Home"
 msgstr ""
 
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
 msgid "Cancel"
 msgstr "בטל"
 
@@ -77,27 +77,27 @@ msgstr "AM"
 msgid "DateTimeFormat"
 msgstr "%b %d, %Y %I : %M %p"
 
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
 msgid "Select"
 msgstr "התחל בחירה"
 
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
 msgid "Paste"
 msgstr "הדבק"
 
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
 msgid "More"
 msgstr ""
 
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
 msgid "Copy"
 msgstr "העתק"
 
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
 msgid "Cut"
 msgstr "גזור"
 
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
 msgid "Search"
 msgstr "לחפש"
 
index b4c3fdd..489865a 100644 (file)
--- a/po/it.po
+++ b/po/it.po
@@ -5,7 +5,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Elementary\n"
 "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
 "PO-Revision-Date: 2011-09-26 21:20+0900\n"
 "Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
 "Language-Team: General\n"
@@ -22,8 +22,8 @@ msgstr "Su"
 msgid "Home"
 msgstr "Home"
 
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
 msgid "Cancel"
 msgstr "Annulla"
 
@@ -75,27 +75,27 @@ msgstr "m."
 msgid "DateTimeFormat"
 msgstr "%d %b %Y %H : %M"
 
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
 msgid "Select"
 msgstr "Seleziona"
 
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
 msgid "Paste"
 msgstr "Incolla"
 
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
 msgid "More"
 msgstr ""
 
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
 msgid "Copy"
 msgstr "Copia"
 
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
 msgid "Cut"
 msgstr "Taglio"
 
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
 msgid "Search"
 msgstr "Ricerca"
 
index bec4a90..990914e 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: elementary\n"
 "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
 "PO-Revision-Date: 2011-09-26 21:20+0900\n"
 "Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
 "Language-Team: General\n"
@@ -26,8 +26,8 @@ msgstr ""
 msgid "Home"
 msgstr ""
 
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
 msgid "Cancel"
 msgstr ""
 
@@ -79,27 +79,27 @@ msgstr "午前"
 msgid "DateTimeFormat"
 msgstr "%Y年 %m月 %d日 %H : %M"
 
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
 msgid "Select"
 msgstr ""
 
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
 msgid "Paste"
 msgstr ""
 
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
 msgid "More"
 msgstr ""
 
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
 msgid "Copy"
 msgstr ""
 
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
 msgid "Cut"
 msgstr ""
 
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
 msgid "Search"
 msgstr ""
 
index 9c82409..d6d284f 100644 (file)
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: elementary\n"
 "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
 "PO-Revision-Date: 2011-09-26 21:20+0900\n"
 "Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
 "Language-Team: General\n"
@@ -24,8 +24,8 @@ msgstr "위로"
 msgid "Home"
 msgstr "홈"
 
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
 msgid "Cancel"
 msgstr "취소"
 
@@ -77,27 +77,27 @@ msgstr "오전"
 msgid "DateTimeFormat"
 msgstr "%Y년 %m월 %d일  %p %I : %M"
 
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
 msgid "Select"
 msgstr "선택"
 
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
 msgid "Paste"
 msgstr "붙여넣기"
 
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
 msgid "More"
 msgstr ""
 
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
 msgid "Copy"
 msgstr "복사"
 
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
 msgid "Cut"
 msgstr "잘라내기"
 
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
 msgid "Search"
 msgstr "검색"
 
index 235552d..48e5edb 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: elementary 0.7.0.57309\n"
 "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
 "PO-Revision-Date: 2011-09-26 21:20+0900\n"
 "Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
 "Language-Team: General\n"
@@ -28,8 +28,8 @@ msgstr "Omhoog"
 msgid "Home"
 msgstr "Persoonlijke map"
 
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
 msgid "Cancel"
 msgstr "Annuleren"
 
@@ -81,27 +81,27 @@ msgstr "AM"
 msgid "DateTimeFormat"
 msgstr "%d %b %Y %H : %M"
 
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
 msgid "Select"
 msgstr "Selecteren"
 
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
 msgid "Paste"
 msgstr "Plakken"
 
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
 msgid "More"
 msgstr ""
 
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
 msgid "Copy"
 msgstr "Kopiëren"
 
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
 msgid "Cut"
 msgstr "Knippen"
 
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
 msgid "Search"
 msgstr "Zoeken"
 
index 35beccb..936a790 100644 (file)
--- a/po/ps.po
+++ b/po/ps.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: elementary\n"
 "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
 "PO-Revision-Date: 2011-09-26 21:20+0900\n"
 "Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
 "Language-Team: General\n"
@@ -23,8 +23,8 @@ msgstr ""
 msgid "Home"
 msgstr ""
 
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
 msgid "Cancel"
 msgstr ""
 
@@ -76,27 +76,27 @@ msgstr "AM"
 msgid "DateTimeFormat"
 msgstr "%b %d, %Y %I : %M %p"
 
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
 msgid "Select"
 msgstr ""
 
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
 msgid "Paste"
 msgstr ""
 
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
 msgid "More"
 msgstr ""
 
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
 msgid "Copy"
 msgstr ""
 
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
 msgid "Cut"
 msgstr ""
 
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
 msgid "Search"
 msgstr ""
 
index f3d8bbf..b07f59c 100644 (file)
--- a/po/pt.po
+++ b/po/pt.po
@@ -5,7 +5,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Elementary\n"
 "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
 "PO-Revision-Date: 2011-09-26 21:20+0900\n"
 "Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
 "Language-Team: General\n"
@@ -24,8 +24,8 @@ msgstr ""
 msgid "Home"
 msgstr ""
 
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
 msgid "Cancel"
 msgstr "Cancelar"
 
@@ -77,27 +77,27 @@ msgstr "Antes"
 msgid "DateTimeFormat"
 msgstr "%d de %b de %Y %H : %M"
 
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
 msgid "Select"
 msgstr "Selecionar"
 
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
 msgid "Paste"
 msgstr "Colar"
 
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
 msgid "More"
 msgstr ""
 
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
 msgid "Copy"
 msgstr "Copiar"
 
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
 msgid "Cut"
 msgstr "Cortar"
 
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
 msgid "Search"
 msgstr "Búsqueda"
 
index 8f3f66b..d21a1d6 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: elementary\n"
 "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
 "PO-Revision-Date: 2011-09-26 21:20+0900\n"
 "Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
 "Language-Team: General\n"
@@ -25,8 +25,8 @@ msgstr ""
 msgid "Home"
 msgstr ""
 
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
 msgid "Cancel"
 msgstr ""
 
@@ -78,27 +78,27 @@ msgstr "AM"
 msgid "DateTimeFormat"
 msgstr "%d %b %Yг. %H : %M"
 
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
 msgid "Select"
 msgstr ""
 
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
 msgid "Paste"
 msgstr ""
 
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
 msgid "More"
 msgstr ""
 
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
 msgid "Copy"
 msgstr ""
 
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
 msgid "Cut"
 msgstr ""
 
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
 msgid "Search"
 msgstr ""
 
index b28df6b..efc8ff2 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: elementary\n"
 "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
 "PO-Revision-Date: 2011-09-26 21:20+0900\n"
 "Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
 "Language-Team: General\n"
@@ -25,8 +25,8 @@ msgstr ""
 msgid "Home"
 msgstr ""
 
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
 msgid "Cancel"
 msgstr ""
 
@@ -78,27 +78,27 @@ msgstr "AM"
 msgid "DateTimeFormat"
 msgstr "%d %b %Y %H : %M"
 
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
 msgid "Select"
 msgstr ""
 
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
 msgid "Paste"
 msgstr ""
 
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
 msgid "More"
 msgstr ""
 
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
 msgid "Copy"
 msgstr ""
 
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
 msgid "Cut"
 msgstr ""
 
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
 msgid "Search"
 msgstr ""
 
index b0c7365..de1747a 100644 (file)
--- a/po/ur.po
+++ b/po/ur.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: elementary\n"
 "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
 "PO-Revision-Date: 2011-09-26 21:20+0900\n"
 "Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
 "Language-Team: General\n"
@@ -23,8 +23,8 @@ msgstr ""
 msgid "Home"
 msgstr ""
 
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
 msgid "Cancel"
 msgstr ""
 
@@ -76,27 +76,27 @@ msgstr "AM"
 msgid "DateTimeFormat"
 msgstr "%b %d, %Y %I : %M %p"
 
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
 msgid "Select"
 msgstr ""
 
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
 msgid "Paste"
 msgstr ""
 
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
 msgid "More"
 msgstr ""
 
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
 msgid "Copy"
 msgstr ""
 
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
 msgid "Cut"
 msgstr ""
 
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
 msgid "Search"
 msgstr ""
 
index 25104d5..934bfc6 100644 (file)
--- a/po/yi.po
+++ b/po/yi.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: elementary\n"
 "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
 "PO-Revision-Date: 2011-09-26 21:20+0900\n"
 "Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
 "Language-Team: General\n"
@@ -23,8 +23,8 @@ msgstr ""
 msgid "Home"
 msgstr ""
 
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
 msgid "Cancel"
 msgstr ""
 
@@ -76,27 +76,27 @@ msgstr "AM"
 msgid "DateTimeFormat"
 msgstr "%b %d, %Y %I : %M %p"
 
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
 msgid "Select"
 msgstr ""
 
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
 msgid "Paste"
 msgstr ""
 
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
 msgid "More"
 msgstr ""
 
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
 msgid "Copy"
 msgstr ""
 
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
 msgid "Cut"
 msgstr ""
 
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
 msgid "Search"
 msgstr ""
 
index 76b1d62..2279dd3 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: elementary\n"
 "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
 "PO-Revision-Date: 2011-09-26 21:20+0900\n"
 "Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
 "Language-Team: General\n"
@@ -25,8 +25,8 @@ msgstr ""
 msgid "Home"
 msgstr ""
 
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
 msgid "Cancel"
 msgstr ""
 
@@ -78,27 +78,27 @@ msgstr "上午"
 msgid "DateTimeFormat"
 msgstr "%Y年 %m月 %d日 %p %I : %M"
 
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
 msgid "Select"
 msgstr ""
 
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
 msgid "Paste"
 msgstr ""
 
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
 msgid "More"
 msgstr ""
 
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
 msgid "Copy"
 msgstr ""
 
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
 msgid "Cut"
 msgstr ""
 
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
 msgid "Search"
 msgstr ""
 
index 76b1d62..2279dd3 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: elementary\n"
 "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
 "PO-Revision-Date: 2011-09-26 21:20+0900\n"
 "Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
 "Language-Team: General\n"
@@ -25,8 +25,8 @@ msgstr ""
 msgid "Home"
 msgstr ""
 
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
 msgid "Cancel"
 msgstr ""
 
@@ -78,27 +78,27 @@ msgstr "上午"
 msgid "DateTimeFormat"
 msgstr "%Y年 %m月 %d日 %p %I : %M"
 
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
 msgid "Select"
 msgstr ""
 
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
 msgid "Paste"
 msgstr ""
 
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
 msgid "More"
 msgstr ""
 
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
 msgid "Copy"
 msgstr ""
 
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
 msgid "Cut"
 msgstr ""
 
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
 msgid "Search"
 msgstr ""
 
index 76b1d62..2279dd3 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: elementary\n"
 "Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2011-11-25 15:46+0900\n"
+"POT-Creation-Date: 2011-11-21 18:14+0900\n"
 "PO-Revision-Date: 2011-09-26 21:20+0900\n"
 "Last-Translator: Sumanth Krishna Mannam <sumanth.m@samsung.com>\n"
 "Language-Team: General\n"
@@ -25,8 +25,8 @@ msgstr ""
 msgid "Home"
 msgstr ""
 
-#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1381
-#: src/lib/elm_searchbar.c:211
+#: src/lib/elc_fileselector.c:995 src/lib/elm_entry.c:1382
+#: src/lib/elm_searchbar.c:226
 msgid "Cancel"
 msgstr ""
 
@@ -78,27 +78,27 @@ msgstr "上午"
 msgid "DateTimeFormat"
 msgstr "%Y年 %m月 %d日 %p %I : %M"
 
-#: src/lib/elm_entry.c:1355
+#: src/lib/elm_entry.c:1356
 msgid "Select"
 msgstr ""
 
-#: src/lib/elm_entry.c:1360
+#: src/lib/elm_entry.c:1361
 msgid "Paste"
 msgstr ""
 
-#: src/lib/elm_entry.c:1365 src/lib/elm_entry.c:1385
+#: src/lib/elm_entry.c:1366 src/lib/elm_entry.c:1386
 msgid "More"
 msgstr ""
 
-#: src/lib/elm_entry.c:1375
+#: src/lib/elm_entry.c:1376
 msgid "Copy"
 msgstr ""
 
-#: src/lib/elm_entry.c:1378
+#: src/lib/elm_entry.c:1379
 msgid "Cut"
 msgstr ""
 
-#: src/lib/elm_searchbar.c:199
+#: src/lib/elm_searchbar.c:214
 msgid "Search"
 msgstr ""
 
index db1d353..7c65e75 100644 (file)
@@ -81,7 +81,6 @@ 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 6f16372..6d06def 100644 (file)
@@ -39,7 +39,6 @@ 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);
@@ -334,7 +333,6 @@ 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);
index 01189b5..c40b231 100644 (file)
@@ -4,44 +4,11 @@
 #endif
 #ifndef ELM_LIB_QUICKLAUNCH
 
-
-static void
-_dismissed(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
-{
-   evas_object_del(obj);
-}
-
-static void
-_print_current_dir(Evas_Object *obj)
-{
-   Elm_Ctxpopup_Direction dir;
-   dir = elm_ctxpopup_direction_get(obj);
-
-   switch(dir)
-     {
-      case ELM_CTXPOPUP_DIRECTION_LEFT:
-         printf("ctxpopup direction: left!\n");
-         break;
-      case ELM_CTXPOPUP_DIRECTION_RIGHT:
-         printf("ctxpopup direction: right!\n");
-         break;
-      case ELM_CTXPOPUP_DIRECTION_UP:
-         printf("ctxpopup direction: up!\n");
-         break;
-      case ELM_CTXPOPUP_DIRECTION_DOWN:
-         printf("ctxpopup direction: down!\n");
-         break;
-      case ELM_CTXPOPUP_DIRECTION_UNKNOWN:
-         printf("ctxpopup direction: unknow!\n");
-         break;
-     }
-}
-
 static void
 _ctxpopup_item_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
 {
    printf("ctxpopup item selected: %s\n",
-   elm_object_item_text_get(event_info));
+          elm_ctxpopup_item_label_get(event_info));
 }
 
 #define ITEM_NEW(_hov, _label, _icon)                                           \
@@ -59,99 +26,79 @@ static void
 _list_item_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
    Evas_Object *ctxpopup, *ic;
-   Elm_Object_Item *it;
+   Elm_Ctxpopup_Item *it;
    Evas_Coord x,y;
 
    ctxpopup = elm_ctxpopup_add(obj);
-   evas_object_smart_callback_add(ctxpopup,
-                                  "dismissed",
-                                  _dismissed,
-                                  NULL);
 
    ITEM_NEW(ctxpopup, "Go to home folder", "home");
    ITEM_NEW(ctxpopup, "Save file", "file");
    ITEM_NEW(ctxpopup, "Delete file", "delete");
    ITEM_NEW(ctxpopup, "Navigate to folder", "folder");
-   elm_object_item_disabled_set(it, EINA_TRUE);
+   elm_ctxpopup_item_disabled_set(it, EINA_TRUE);
    ITEM_NEW(ctxpopup, "Edit entry", "edit");
    ITEM_NEW(ctxpopup, "Set date and time", "clock");
-   elm_object_item_disabled_set(it, EINA_TRUE);
+   elm_ctxpopup_item_disabled_set(it, EINA_TRUE);
 
    evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
    evas_object_size_hint_max_set(ctxpopup, 240, 240);
    evas_object_move(ctxpopup, x, y);
    evas_object_show(ctxpopup);
-   _print_current_dir(ctxpopup);
 }
 
 static void
 _list_item_cb2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
    Evas_Object *ctxpopup, *ic;
-   Elm_Object_Item *it;
+   Elm_Ctxpopup_Item *it;
    Evas_Coord x,y;
 
    ctxpopup = elm_ctxpopup_add(obj);
-   evas_object_smart_callback_add(ctxpopup,
-                                  "dismissed",
-                                  _dismissed,
-                                  NULL);
 
    ITEM_NEW(ctxpopup, NULL, "home");
    ITEM_NEW(ctxpopup, NULL, "file");
    ITEM_NEW(ctxpopup, NULL, "delete");
    ITEM_NEW(ctxpopup, NULL, "folder");
    ITEM_NEW(ctxpopup, NULL, "edit");
-   elm_object_item_disabled_set(it, EINA_TRUE);
+   elm_ctxpopup_item_disabled_set(it, EINA_TRUE);
    ITEM_NEW(ctxpopup, NULL, "clock");
 
    evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
    evas_object_size_hint_max_set(ctxpopup, 240, 240);
    evas_object_move(ctxpopup, x, y);
    evas_object_show(ctxpopup);
-   _print_current_dir(ctxpopup);
 }
 
 static void
 _list_item_cb3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
    Evas_Object *ctxpopup, *ic;
-   Elm_Object_Item *it;
+   Elm_Ctxpopup_Item *it;
    Evas_Coord x,y;
 
    ctxpopup = elm_ctxpopup_add(obj);
-   evas_object_smart_callback_add(ctxpopup,
-                                  "dismissed",
-                                  _dismissed,
-                                  NULL);
 
    ITEM_NEW(ctxpopup, "Eina", NULL);
    ITEM_NEW(ctxpopup, "Eet", NULL);
    ITEM_NEW(ctxpopup, "Evas", NULL);
    ITEM_NEW(ctxpopup, "Ecore", NULL);
-   elm_object_item_disabled_set(it, EINA_TRUE);
+   elm_ctxpopup_item_disabled_set(it, EINA_TRUE);
    ITEM_NEW(ctxpopup, "Embryo", NULL);
    ITEM_NEW(ctxpopup, "Edje", NULL);
 
    evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
    evas_object_move(ctxpopup, x, y);
    evas_object_show(ctxpopup);
-   _print_current_dir(ctxpopup);
 }
 
 static void
 _list_item_cb4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
    Evas_Object *ctxpopup, *ic;
-   Elm_Object_Item *it;
+   Elm_Ctxpopup_Item *it;
    Evas_Coord x,y;
 
    ctxpopup = elm_ctxpopup_add(obj);
-   evas_object_smart_callback_add(ctxpopup,
-                                  "dismissed",
-                                  _dismissed,
-                                  NULL);
-
    elm_ctxpopup_horizontal_set(ctxpopup, EINA_TRUE);
 
    ITEM_NEW(ctxpopup, NULL, "home");
@@ -165,7 +112,6 @@ _list_item_cb4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i
    evas_object_size_hint_max_set(ctxpopup, 240, 240);
    evas_object_move(ctxpopup, x, y);
    evas_object_show(ctxpopup);
-   _print_current_dir(ctxpopup);
 }
 
 
@@ -193,17 +139,11 @@ _list_item_cb5(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i
    elm_box_pack_end(bx, sc);
 
    ctxpopup = elm_ctxpopup_add(obj);
-   evas_object_smart_callback_add(ctxpopup,
-                                  "dismissed",
-                                  _dismissed,
-                                  NULL);
-
    elm_object_content_set(ctxpopup, bx);
 
    evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
    evas_object_move(ctxpopup, x, y);
    evas_object_show(ctxpopup);
-   _print_current_dir(ctxpopup);
 }
 
 
@@ -228,7 +168,6 @@ test_ctxpopup(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in
 
    list = elm_list_add(win);
    elm_win_resize_object_add(win, list);
-   evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    elm_list_mode_set(list, ELM_LIST_COMPRESS);
    evas_object_smart_callback_add(list, "selected", _list_clicked, NULL);
 
index 266c103..927806d 100644 (file)
@@ -155,7 +155,6 @@ test_diskselector(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *even
    // displayed item number setting example
    disk = elm_diskselector_add(win);
    elm_diskselector_display_item_num_set(disk, 5);
-   printf("Number of Items in DiskSelector : %d\n", elm_diskselector_display_item_num_get(disk));
 
    for (idx = 0; idx < (int)(sizeof(month_list) / sizeof(month_list[0])); idx++)
      {
@@ -173,7 +172,6 @@ test_diskselector(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *even
    // displayed item number setting example
    disk = elm_diskselector_add(win);
    elm_diskselector_display_item_num_set(disk, 7);
-   printf("Number of Items in DiskSelector : %d\n", elm_diskselector_display_item_num_get(disk));
 
    for (idx = 1; idx < 31; idx++)
      {
index 5d3ac87..e9ae85e 100644 (file)
@@ -1,18 +1,7 @@
+#include <Elementary.h>
 #ifdef HAVE_CONFIG_H
 # include "elementary_config.h"
 #endif
-
-#include <Elementary.h>
-
-#ifndef ENABLE_NLS
-# ifndef setlocale
-#  define setlocale(c, l)
-# endif
-# ifndef libintl_setlocale
-#  define libintl_setlocale(c, l)
-# endif
-#endif
-
 #ifndef ELM_LIB_QUICKLAUNCH
 static void
 my_fileselector_done(void            *data,
@@ -119,6 +108,7 @@ test_fileselector(void *data       __UNUSED__,
                   void *event_info __UNUSED__)
 {
    Evas_Object *win, *fs, *bg, *vbox, *hbox, *bt, *sep;
+   const char *path = NULL;
 
    /* Set the locale according to the system pref.
     * If you dont do so the file selector will order the files list in
@@ -148,7 +138,9 @@ test_fileselector(void *data       __UNUSED__,
    /* make the file list a tree with dir expandable in place */
    elm_fileselector_expandable_set(fs, EINA_FALSE);
    /* start the fileselector in the home dir */
-   elm_fileselector_path_set(fs, getenv("HOME"));
+   path = getenv("HOME");
+   if (!path) path = "./";
+   elm_fileselector_path_set(fs, path);
    /* allow fs to expand in x & y */
    evas_object_size_hint_weight_set(fs, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    evas_object_size_hint_align_set(fs, EVAS_HINT_FILL, EVAS_HINT_FILL);
index 936be4b..1371631 100644 (file)
@@ -24,7 +24,7 @@ static const char *img[9] =
    "wood_01.jpg",
 };
 
-static Elm_Gengrid_Item_Class gic, ggic;
+static Elm_Gengrid_Item_Class gic;
 
 static void
 _horizontal_grid(void *data, Evas_Object *obj, void *event_info __UNUSED__)
@@ -244,19 +244,6 @@ _after_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UN
 }
 
 static void
-_delete_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
-{
-   Evas_Object *grid = data;
-   Eina_List *l, *l2, *l3;
-   Elm_Gengrid_Item *it;
-
-   l = (Eina_List*)elm_gengrid_selected_items_get(grid);
-   if (!l) return;
-   EINA_LIST_FOREACH_SAFE(l, l2, l3, it)
-     elm_gengrid_item_del(it);
-}
-
-static void
 _prepend_bt_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
    Testitem *ti;
@@ -351,12 +338,6 @@ test_gengrid2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in
    elm_box_pack_end(hbx, bt);
    evas_object_show(bt);
 
-   bt = elm_button_add(win);
-   elm_object_text_set(bt, "Delete");
-   evas_object_smart_callback_add(bt, "clicked", _delete_bt_clicked, grid);
-   elm_box_pack_end(hbx, bt);
-   evas_object_show(bt);
-
    bt = elm_spinner_add(win);
    elm_spinner_min_max_set(bt, 10, 1024);
    elm_spinner_value_set(bt, 150);
@@ -381,76 +362,4 @@ test_gengrid2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in
    evas_object_resize(win, 600, 600);
    evas_object_show(win);
 }
-
-void
-test_gengrid3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
-{
-   Evas_Object *win, *bg, *grid;
-   static Testitem ti[144];
-   int i, n;
-   char buf[PATH_MAX];
-
-   win = elm_win_add(NULL, "gengrid_group", ELM_WIN_BASIC);
-   elm_win_title_set(win, "GenGrid Group");
-   elm_win_autodel_set(win, EINA_TRUE);
-
-   bg = elm_bg_add(win);
-   evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-   elm_win_resize_object_add(win, bg);
-   evas_object_show(bg);
-
-   grid = elm_gengrid_add(win);
-   elm_gengrid_item_size_set(grid, 150, 150);
-   //elm_gengrid_group_item_size_set(grid, 31, 31);
-   //elm_gengrid_horizontal_set(grid, EINA_TRUE);
-   elm_gengrid_horizontal_set(grid, EINA_FALSE);
-   elm_gengrid_multi_select_set(grid, EINA_TRUE);
-   elm_gengrid_reorder_mode_set(grid, EINA_TRUE);
-   evas_object_smart_callback_add(grid, "selected", grid_selected, NULL);
-   evas_object_smart_callback_add(grid, "clicked,double", grid_double_clicked, NULL);
-   evas_object_smart_callback_add(grid, "longpressed", grid_longpress, NULL);
-   evas_object_smart_callback_add(grid, "moved", grid_moved, NULL);
-   evas_object_smart_callback_add(grid, "drag,start,up", grid_drag_up, NULL);
-   evas_object_smart_callback_add(grid, "drag,start,right", grid_drag_right, NULL);
-   evas_object_smart_callback_add(grid, "drag,start,down", grid_drag_down, NULL);
-   evas_object_smart_callback_add(grid, "drag,start,left", grid_drag_left, NULL);
-   evas_object_smart_callback_add(grid, "drag,stop", grid_drag_stop, NULL);
-   evas_object_size_hint_weight_set(grid, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
-   gic.item_style = "default";
-   gic.func.label_get = grid_label_get;
-   gic.func.content_get = grid_content_get;
-   gic.func.state_get = grid_state_get;
-   gic.func.del = grid_del;
-
-   ggic.item_style = "group_index";
-   ggic.func.label_get = grid_label_get;
-   ggic.func.content_get = NULL;
-   ggic.func.state_get = NULL;
-   ggic.func.del = NULL;
-
-
-   n = 0;
-   for (i = 0; i < 12 * 12; i++)
-     {
-       snprintf(buf, sizeof(buf), "%s/images/%s", elm_app_data_dir_get(), img[n]);
-       n = (n + 1) % 9;
-       ti[i].mode = i;
-       ti[i].path = eina_stringshare_add(buf);
-        if (i == 0 || i == 18 || i == 53 || i == 100)
-        //if (i == 0 || i == 18)
-          ti[i].item = elm_gengrid_item_append(grid, &ggic, &(ti[i]), grid_sel, NULL);
-        else
-          ti[i].item = elm_gengrid_item_append(grid, &gic, &(ti[i]), grid_sel, NULL);
-       if (!(i % 5))
-         elm_gengrid_item_selected_set(ti[i].item, EINA_TRUE);
-     }
-
-   evas_object_show(grid);
-   elm_win_resize_object_add(win, grid);
-
-   evas_object_resize(win, 600, 600);
-   evas_object_show(win);
-}
-
 #endif
index b2ece1b..8822b63 100644 (file)
@@ -1348,7 +1348,7 @@ test_genlist8(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in
 {
    Evas_Object *win, *bg, *gl, *bt[8], *bx, *bx2, *bx3;
    Elm_Genlist_Item *gli = NULL, *git = NULL;
-   int i, bt_num;
+   int i, bt_count, bt_num;
 
    win = elm_win_add(NULL, "genlist-group", ELM_WIN_BASIC);
    elm_win_title_set(win, "Genlist Group");
@@ -1460,6 +1460,7 @@ test_genlist8(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in
    elm_box_pack_end(bx, bx3);
    evas_object_show(bx3);
 
+   bt_count = 0;
    for (i = 0; i < 500; i++)
      {
         if (!(i % 10))
@@ -1888,6 +1889,7 @@ test_genlist12(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i
 {
    Evas_Object *win, *bg, *bx, *gl;
    int i;
+   Elm_Genlist_Item *gli;
 
    win = elm_win_add(NULL, "genlist-textblock", ELM_WIN_BASIC);
    elm_win_title_set(win, "Genlist Textblock");
@@ -1918,12 +1920,12 @@ test_genlist12(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i
 
    for (i = 0; i < 1000; i++)
      {
-        elm_genlist_item_append(gl, &itc1,
-                                (void *)(long)i/* item data */,
-                                NULL/* parent */,
-                                ELM_GENLIST_ITEM_NONE,
-                                gl_sel/* func */,
-                                (void *)(long)(i * 10)/* func data */);
+        gli = elm_genlist_item_append(gl, &itc1,
+                                      (void *)(long)i/* item data */,
+                                      NULL/* parent */,
+                                      ELM_GENLIST_ITEM_NONE,
+                                      gl_sel/* func */,
+                                      (void *)(long)(i * 10)/* func data */);
      }
 
    evas_object_resize(win, 400, 500);
index 2c72a97..a7a938b 100644 (file)
@@ -202,7 +202,7 @@ test_index2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
 
    win = elm_win_add(NULL, "sorted-index-list", ELM_WIN_BASIC);
    elm_win_title_set(win, "Sorted Index and List");
-   evas_object_smart_callback_add(win, "delete,request", test_index2_del, gui);
+   evas_object_smart_callback_add(win, "delete-request", test_index2_del, gui);
    elm_win_autodel_set(win, EINA_TRUE);
 
    bg = elm_bg_add(win);
diff --git a/src/bin/test_multibuttonentry.c b/src/bin/test_multibuttonentry.c
deleted file mode 100644 (file)
index b8d5604..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-#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 4d53810..57d4664 100644 (file)
@@ -46,32 +46,20 @@ _title_visible(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i
 }
 
 void
-_promote(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
-{
-   elm_naviframe_item_promote(data);
-}
-
-void
 _page5(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
-   Evas_Object *bt, *bt2, *content, *nf = data;
+   Evas_Object *bt, *content, *nf = data;
    Elm_Object_Item *it;
 
    bt = elm_button_add(nf);
    evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL);
    elm_object_text_set(bt, "Prev");
 
-   bt2 = elm_button_add(nf);
-   evas_object_size_hint_align_set(bt2, EVAS_HINT_FILL, EVAS_HINT_FILL);
-   elm_object_text_set(bt2, "Page 1");
-   evas_object_smart_callback_add(bt2, "clicked", _promote,
-                                  evas_object_data_get(nf, "page1"));
-
    content = _content_new(nf, img5);
    it = elm_naviframe_item_insert_after(elm_naviframe_top_item_get(nf),
                                         "Page 5",
                                         bt,
-                                        bt2,
+                                        NULL,
                                         content,
                                         NULL);
 
@@ -104,13 +92,12 @@ _page4(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
                                 bt,
                                 content,
                                 NULL);
-
    ic = elm_icon_add(nf);
    snprintf(buf, sizeof(buf), "%s/images/logo_small.png",
             elm_app_data_dir_get());
    elm_icon_file_set(ic, buf, NULL);
    evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
-   elm_object_item_part_content_set(it, "icon", ic);
+   elm_object_item_content_part_set(it, "icon", ic);
    elm_naviframe_item_title_visible_set(it, EINA_FALSE);
    evas_object_smart_callback_add(content, "clicked", _title_visible, it);
 }
@@ -145,7 +132,7 @@ _page3(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
    elm_icon_file_set(ic, buf, NULL);
    evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
 
-   elm_object_item_part_content_set(it, "icon", ic);
+   elm_object_item_content_part_set(it, "icon", ic);
 }
 
 void
@@ -169,14 +156,13 @@ _page2(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
    content = _content_new(nf, img2);
 
    it = elm_naviframe_item_push(nf, "Page 2", NULL, bt, content,  NULL);
-   elm_object_item_part_text_set(it, "subtitle", "Here is sub-title part!");
+   elm_object_item_text_part_set(it, "subtitle", "Here is sub-title part!");
 }
 
 void
 test_naviframe(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
    Evas_Object *win, *bg, *nf, *btn, *content;
-   Elm_Object_Item *it;
 
    win = elm_win_add(NULL, "naviframe", ELM_WIN_BASIC);
    elm_win_title_set(win, "Naviframe");
@@ -201,8 +187,7 @@ test_naviframe(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i
    evas_object_show(btn);
 
    content = _content_new(nf, img1);
-   it = elm_naviframe_item_push(nf, "Page 1", NULL, btn, content, NULL);
-   evas_object_data_set(nf, "page1", it);
+   elm_naviframe_item_push(nf, "Page 1", NULL, btn, content, NULL);
 
    evas_object_resize(win, 400, 600);
    evas_object_show(win);
index dcc7c58..dd42ff3 100644 (file)
@@ -9,7 +9,7 @@ static Elm_Genlist_Item_Class itc;
 static void _bstatus(void *data, Evas_Object *obj, void *event_info);
 static void _tstatus(void *data, Evas_Object *obj, void *event_info);
 static char *_label_get(void *data, Evas_Object *obj, const char *source);
-static Evas_Object *_content_get(void *data, Evas_Object *obj, const char *source);
+static Evas_Object *_icon_get(void *data, Evas_Object *obj, const char *source);
 static Eina_Bool _state_get(void *data, Evas_Object *obj, const char *source);
 static void _item_del(void *data, Evas_Object *obj);
 static void _fill_list(Evas_Object *obj);
@@ -52,7 +52,7 @@ _label_get(void *data, Evas_Object *obj __UNUSED__, const char *source __UNUSED_
 }
 
 static Evas_Object *
-_content_get(void *data, Evas_Object *obj, const char *source)
+_icon_get(void *data, Evas_Object *obj, const char *source)
 {
    if (!strcmp(source, "elm.swallow.icon"))
      {
@@ -89,14 +89,22 @@ _fill_list(Evas_Object *obj)
    struct dirent *de;
    Eina_List *dirs = NULL, *l;
    char *real;
+   const char *home;
 
-   if (!(d = opendir(getenv("HOME")))) return;
+#ifdef _WIN32
+   home = evil_homedir_get();
+#else
+   home = getenv("HOME");
+#endif
+   if (!home)
+     home = "./";
+   if (!(d = opendir(home))) return;
    while ((de = readdir(d)))
      {
         char buff[PATH_MAX];
 
         if (de->d_name[0] == '.') continue;
-        snprintf(buff, sizeof(buff), "%s/%s", getenv("HOME"), de->d_name);
+        snprintf(buff, sizeof(buff), "%s/%s", home, de->d_name);
         if (!ecore_file_is_dir(buff)) continue;
         real = ecore_file_realpath(buff);
         dirs = eina_list_append(dirs, real);
@@ -199,7 +207,7 @@ test_panel(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info
 
    itc.item_style = "default";
    itc.func.label_get = _label_get;
-   itc.func.icon_get = _content_get;
+   itc.func.icon_get = _icon_get;
    itc.func.state_get = _state_get;
    itc.func.del = _item_del;
 
index aadf070..32dfd47 100644 (file)
@@ -8,7 +8,7 @@ void
 test_segment_control(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
    Evas_Object *win, *bg, *ic, *ic1, *ic2, *ic3, *ic4, *ic5;
-   Elm_Segment_Item *it;
+   Elm_Segment_Item *it1, *it2, *it3, *it4, *it5;
 
    Evas_Object * in_layout;
    Evas_Object *segment1, *segment2, *segment3, *segment4;
@@ -46,19 +46,19 @@ test_segment_control(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *e
    evas_object_size_hint_aspect_set(ic1, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
 
    segment1 = elm_segment_control_add(win);
-   elm_segment_control_item_add(segment1, NULL, "Only Text");
-   it = elm_segment_control_item_add(segment1, ic, NULL);
-   elm_segment_control_item_selected_set(it, EINA_TRUE);
-   elm_segment_control_item_add(segment1, ic1, "Text_Icon_test");
-   elm_segment_control_item_add(segment1, NULL, "Seg4");
-   elm_segment_control_item_add(segment1, NULL, "Seg5");
+   it1 = elm_segment_control_item_add(segment1, NULL, "Only Text");
+   it2 = elm_segment_control_item_add(segment1, ic, NULL);
+   elm_segment_control_item_selected_set(it2, EINA_TRUE);
+   it3 = elm_segment_control_item_add(segment1, ic1, "Text_Icon_test");
+   it4 = elm_segment_control_item_add(segment1, NULL, "Seg4");
+   it5 = elm_segment_control_item_add(segment1, NULL, "Seg5");
 
    segment2 = elm_segment_control_add(win);
-   elm_segment_control_item_add(segment2, NULL, "SegmentItem");
-   it = elm_segment_control_item_add(segment2, NULL, "SegmentItem");
-   elm_segment_control_item_selected_set(it, EINA_TRUE);
-   elm_segment_control_item_add(segment2, NULL, "SegmentControlItem");
-   elm_segment_control_item_add(segment2, NULL, "SegmentItem");
+   it1 = elm_segment_control_item_add(segment2, NULL, "SegmentItem");
+   it2 = elm_segment_control_item_add(segment2, NULL, "SegmentItem");
+   elm_segment_control_item_selected_set(it2, EINA_TRUE);
+   it3 = elm_segment_control_item_add(segment2, NULL, "SegmentControlItem");
+   it4 = elm_segment_control_item_add(segment2, NULL, "SegmentItem");
 
    ic2 = elm_icon_add(in_layout);
    snprintf(buf3, sizeof(buf3), "%s/images/logo.png", elm_app_data_dir_get());
@@ -76,10 +76,10 @@ test_segment_control(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *e
    evas_object_size_hint_aspect_set(ic4, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
 
    segment3 = elm_segment_control_add(win);
-   elm_segment_control_item_add(segment3, ic2, NULL);
-   it = elm_segment_control_item_add(segment3, ic3, NULL);
-   elm_segment_control_item_selected_set(it, EINA_TRUE);
-   elm_segment_control_item_add(segment3, ic4, NULL);
+   it1 = elm_segment_control_item_add(segment3, ic2, NULL);
+   it2 = elm_segment_control_item_add(segment3, ic3, NULL);
+   elm_segment_control_item_selected_set(it2, EINA_TRUE);
+   it3 = elm_segment_control_item_add(segment3, ic4, NULL);
 
    ic5 = elm_icon_add(in_layout);
    snprintf(buf6, sizeof(buf6), "%s/images/logo.png", elm_app_data_dir_get());
@@ -87,10 +87,10 @@ test_segment_control(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *e
    evas_object_size_hint_aspect_set(ic5, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
 
    segment4 = elm_segment_control_add(win);
-   elm_segment_control_item_add(segment4, NULL, "Disabled");
-   it = elm_segment_control_item_add(segment4, ic5, "Disabled");
-   elm_segment_control_item_selected_set(it, EINA_TRUE);
-   elm_segment_control_item_add(segment4, NULL, "Disabled");
+   it1 = elm_segment_control_item_add(segment4, NULL, "Disabled");
+   it2 = elm_segment_control_item_add(segment4, ic5, "Disabled");
+   elm_segment_control_item_selected_set(it2, EINA_TRUE);
+   it3 = elm_segment_control_item_add(segment4, NULL, "Disabled");
    elm_object_disabled_set(segment4, EINA_TRUE);
 
    elm_object_part_content_set(in_layout, "segment1", segment1);
index e66743b..d5acd7d 100644 (file)
@@ -475,17 +475,11 @@ test_tooltip(void *data       __UNUSED__,
 
    lst = elm_list_add(win);
    li = elm_list_item_append(lst, "Hello", NULL, NULL, NULL, NULL);
-   elm_list_item_tooltip_content_cb_set(li, _tt_item_label, NULL, NULL);
-   elm_list_item_tooltip_size_restrict_disable(li, EINA_TRUE);
+   elm_list_item_tooltip_text_set(li, "Something useful here?");
    li = elm_list_item_append(lst, "Icon Tooltip", NULL, NULL, NULL, NULL);
    elm_list_item_tooltip_content_cb_set(li, _tt_item_icon, NULL, NULL);
    li = elm_list_item_append(lst, "Big Icon Tooltip", NULL, NULL, NULL, NULL);
    elm_list_item_tooltip_content_cb_set(li, _tt_item_icon2, NULL, NULL);
-   elm_list_item_tooltip_style_set(li, "transparent");
-   elm_list_item_tooltip_size_restrict_disable(li, EINA_TRUE);
-   li = elm_list_item_append(lst, "Insanely Big Icon Tooltip", NULL, NULL, NULL, NULL);
-   elm_list_item_tooltip_content_cb_set(li, _tt_item_icon3, NULL, NULL);
-   elm_list_item_tooltip_style_set(li, "transparent");
    elm_list_item_tooltip_size_restrict_disable(li, EINA_TRUE);
    evas_object_size_hint_weight_set(lst, EVAS_HINT_EXPAND,
                                     EVAS_HINT_EXPAND);
index 9520c2b..1eb490b 100644 (file)
@@ -29,21 +29,19 @@ pkg_LTLIBRARIES = module.la
 module_la_SOURCES = private.h \
 modules.inc \
 elm.c \
-elm_actionslider.c \
 elm_anchorblock.c \
 elm_anchorview.c \
 elm_bubble.c \
 elm_button.c \
-elm_calendar.c \
 elm_check.c \
 elm_clock.c \
-elm_colorpalette.c \
+elm_colorpalette.c\
+elm_calendar.c \
 elm_datefield.c \
 elm_entry.c \
 elm_fileselector.c \
 elm_fileselector_button.c \
 elm_fileselector_entry.c \
-elm_frame.c \
 elm_gengrid.c \
 elm_genlist.c \
 elm_hoversel.c \
@@ -53,6 +51,8 @@ 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 \
 elm_page_control.c \
@@ -69,9 +69,7 @@ elm_slideshow.c \
 elm_spinner.c \
 elm_thumb.c \
 elm_toggle.c \
-elm_toolbar.c \
-elm_video.c \
-elm_web.c
+elm_toolbar.c
 
 module_la_LIBADD = $(top_builddir)/src/lib/libelementary.la
 module_la_LDFLAGS = -no-undefined -module -avoid-version -shared -fPIC
index 185ec3b..7f5193a 100644 (file)
@@ -144,7 +144,7 @@ external_signals_proxy(Evas_Object *obj, Evas_Object *edje, const char *part_nam
    ctxt = malloc(sizeof(Elm_External_Signals_Proxy_Context) * total);
    if (!ctxt) return;
    evas_object_event_callback_add
-     (obj, EVAS_CALLBACK_FREE, _external_signal_proxy_free_cb, ctxt);
+     (obj, EVAS_CALLBACK_DEL, _external_signal_proxy_free_cb, ctxt);
 
    for (; cls_count > 0; cls_count--,  cls_descs++, ctxt++)
      {
index ee43e07..4868294 100644 (file)
@@ -61,7 +61,7 @@ external_bubble_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_Ex
             Evas_Object *content = \
                    external_common_param_edje_object_get(obj, param);
             if ((strcmp(param->s, "")) && (!content)) return EINA_FALSE;
-            elm_object_content_set(obj, content);
+            elm_bubble_content_set(obj, content);
             return EINA_TRUE;
          }
      }
@@ -137,10 +137,8 @@ external_bubble_params_parse(void *data __UNUSED__, Evas_Object *obj, const Eina
 static Evas_Object *external_bubble_content_get(void *data __UNUSED__,
                const Evas_Object *obj __UNUSED__, const char *content __UNUSED__)
 {
-   if (!strcmp(content, "content"))
-     return elm_object_content_get(obj);
-   ERR("unknown content '%s'", content);
-   return NULL;
+       ERR("No content.");
+       return NULL;
 }
 
 static void
index c741956..98da9ca 100644 (file)
@@ -13,9 +13,7 @@ typedef struct _Elm_Params_Calendar
 } Elm_Params_Calendar;
 
 static void
-external_calendar_state_set(void *data __UNUSED__, Evas_Object *obj,
-                            const void *from_params, const void *to_params,
-                            float pos __UNUSED__)
+external_calendar_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__)
 {
    const Elm_Params_Calendar *p;
    int min,max;
@@ -25,28 +23,27 @@ external_calendar_state_set(void *data __UNUSED__, Evas_Object *obj,
    else return;
 
    if (p->year_min)
-     {
-        elm_calendar_min_max_year_get(obj, NULL, &max);
-        elm_calendar_min_max_year_set(obj, p->year_min, max);
-     }
+    {
+      elm_calendar_min_max_year_get(obj, NULL, &max);
+      elm_calendar_min_max_year_set(obj, p->year_min, max);
+    }
    if (p->year_max)
-     {
-        elm_calendar_min_max_year_get(obj, &min, NULL);
-        elm_calendar_min_max_year_set(obj, min, p->year_max);
-     }
+    {
+      elm_calendar_min_max_year_get(obj, &min, NULL);
+      elm_calendar_min_max_year_set(obj, min, p->year_max);
+    }
    if (p->sel_exists)
-     elm_calendar_day_selection_enabled_set(obj, p->sel_enable);
+      elm_calendar_day_selection_enabled_set(obj, p->sel_enable);
    if (p->weekday_color)
-     elm_calendar_text_weekday_color_set(obj,p->weekday_color);
+      elm_calendar_text_weekday_color_set(obj,p->weekday_color);
    if (p->saturday_color)
-     elm_calendar_text_weekday_color_set(obj,p->saturday_color);
+      elm_calendar_text_weekday_color_set(obj,p->saturday_color);
    if (p->sunday_color)
-     elm_calendar_text_weekday_color_set(obj,p->sunday_color);
+      elm_calendar_text_weekday_color_set(obj,p->sunday_color);
 }
 
 static Eina_Bool
-external_calendar_param_set(void *data __UNUSED__, Evas_Object *obj,
-                            const Edje_External_Param *param)
+external_calendar_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_External_Param *param)
 {
    int min,max;
 
@@ -108,10 +105,9 @@ external_calendar_param_set(void *data __UNUSED__, Evas_Object *obj,
 }
 
 static Eina_Bool
-external_calendar_param_get(void *data __UNUSED__, const Evas_Object *obj,
-                            Edje_External_Param *param)
+external_calendar_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_External_Param *param)
 {
-   int min, max;
+   int min,max;
 
    if (!strcmp(param->name, "year_min"))
      {
@@ -169,9 +165,7 @@ external_calendar_param_get(void *data __UNUSED__, const Evas_Object *obj,
 }
 
 static void *
-external_calendar_params_parse(void *data __UNUSED__,
-                               Evas_Object *obj __UNUSED__,
-                               const Eina_List *params)
+external_calendar_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const Eina_List *params)
 {
    Elm_Params_Calendar *mem;
    Edje_External_Param *param;
@@ -183,38 +177,36 @@ external_calendar_params_parse(void *data __UNUSED__,
 
    EINA_LIST_FOREACH(params, l, param)
      {
-        if (!strcmp(param->name, "year_min"))
-         mem->year_min = param->i;
+       if (!strcmp(param->name, "year_min"))
+          mem->year_min = param->i;
 
        else if(!strcmp(param->name, "year_max"))
-          mem->year_max = param->i;
+           mem->year_max = param->i;
 
        else if (!strcmp(param->name, "sel_enable"))
           {
-            mem->sel_enable = param->i;
-            mem->sel_exists = EINA_TRUE;
+          mem->sel_enable = param->i;
+          mem->sel_exists = EINA_TRUE;
           }
 
-        else if (!strcmp(param->name, "weekday_color"))
-          mem->weekday_color = param->i;
+       else if (!strcmp(param->name, "weekday_color"))
+          mem->weekday_color = param->i;
 
-        else if (!strcmp(param->name, "saturday_color"))
-          mem->saturday_color = param->i;
+       else if (!strcmp(param->name, "saturday_color"))
+          mem->saturday_color = param->i;
 
        else if (!strcmp(param->name, "sunday_color"))
-          mem->sunday_color = param->i;
+          mem->sunday_color = param->i;
      }
 
    return mem;
 }
 
-static Evas_Object *
-external_calendar_content_get(void *data __UNUSED__,
-                              const Evas_Object *obj __UNUSED__,
-                              const char *content __UNUSED__)
+static Evas_Object *external_calendar_content_get(void *data __UNUSED__,
+               const Evas_Object *obj __UNUSED__, const char *content __UNUSED__)
 {
-   ERR("No content.");
-   return NULL;
+       ERR("No content.");
+       return NULL;
 }
 
 static void
index 1076b75..b1dabb5 100644 (file)
@@ -1,11 +1,14 @@
+
+
 #include "private.h"
 
 typedef struct _Elm_Params_colorpalette
 {
    unsigned int row, col;
    Elm_Colorpalette_Color *color;
-   char *color_set;
-   int color_num;
+   char *color_set ;
+   int color_num ;
+
 } Elm_Params_colorpalette;
 
 static void
@@ -15,10 +18,10 @@ external_colorpalette_state_set(void *data __UNUSED__, Evas_Object *obj, const v
    if (to_params) p = to_params;
    else if (from_params) p = from_params;
    else return;
-   if ((p->row > 0)&&( p->col > 0))
-     elm_colorpalette_row_column_set(obj, p->row, p->col);
-   if (p->color_num)
-     elm_colorpalette_color_set(obj, p->color_num, p->color);
+   if((p->row > 0)&&( p->col > 0))
+          elm_colorpalette_row_column_set(obj,p->row,p->col) ;
+   if(p->color_num)
+   elm_colorpalette_color_set(obj,p->color_num, p->color) ;
 }
 
 static Eina_Bool
@@ -27,27 +30,27 @@ external_colorpalette_param_set(void *data __UNUSED__, Evas_Object *obj __UNUSED
    if (!strcmp(param->name, "row"))
      {
        if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
-          {
-             //No EAPI for row set
-             return EINA_FALSE;
-          }
+         {
+               //No EAPI for row set
+            return EINA_FALSE;
+         }
      }
    else if (!strcmp(param->name, "col"))
      {
-        if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
-          {
-             //No EAPI for column set
-             return EINA_FALSE;
-          }
+       if (param->type == EDJE_EXTERNAL_PARAM_TYPE_INT)
+         {
+               //No EAPI for column set
+               return EINA_FALSE;
+         }
      }
    else if (!strcmp(param->name,"color_num"))
      {
-       if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
-         {
-            //No EAPI for colour_number set
-            return EINA_FALSE;
-         }
-     }
+       if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING)
+         {
+               //No EAPI for colour_number set
+               return EINA_FALSE;
+         }
+        }
    ERR("unknown parameter '%s' of type '%s'",
        param->name, edje_external_param_type_str(param->type));
 
@@ -57,8 +60,8 @@ external_colorpalette_param_set(void *data __UNUSED__, Evas_Object *obj __UNUSED
 static Eina_Bool
 external_colorpalette_param_get(void *data __UNUSED__, const Evas_Object *obj __UNUSED__, Edje_External_Param *param __UNUSED__)
 {
-   //FIXME:getter functions not provided
-   return EINA_FALSE;
+       return EINA_FALSE;
+   //FIX ME:getter functions not provided
 }
 
 static void *
@@ -67,79 +70,78 @@ external_colorpalette_params_parse(void *data __UNUSED__, Evas_Object *obj __UNU
    Elm_Params_colorpalette *mem;
    Edje_External_Param *param;
    const Eina_List *l;
-   int k,m,ll;
+   int k,m,ll ;
    k = m = ll = 0;
-   char test[5];
+   char test[5] ;
    int d = 0;
-   char *s = NULL;
+   char *s = NULL ;
    mem = calloc(1, sizeof(Elm_Params_colorpalette));
    if (!mem)
      return NULL;
 
    EINA_LIST_FOREACH(params, l, param)
      {
-       if (!strcmp(param->name, "row"))
-         {
-            mem->row = param->i;
-         }
+        if (!strcmp(param->name, "row"))
+          {
+             mem->row = param->i;
+          }
        else if (!strcmp(param->name, "col"))
+            {
+               mem->col = param->i;
+            }
+          else if (!strcmp(param->name, "color_num"))
+            {
+               mem->color_num = param->i ;
+            }
+
+          else if (!strcmp(param->name, "color_set"))
          {
-            mem->col = param->i;
-         }
-       else if (!strcmp(param->name, "color_num"))
-         {
-            mem->color_num = param->i;
-         }
-       else if (!strcmp(param->name, "color_set"))
-         {
-           mem->color = calloc(mem->color_num, sizeof(Elm_Colorpalette_Color));
+           mem->color = (Elm_Colorpalette_Color*) calloc (mem->color_num, sizeof(Elm_Colorpalette_Color));
            s = (char*)param->i;
-           while (k < (mem->color_num) && (ll <= (int)strlen(s)))
+           while(k <(mem->color_num) && (ll <= (int)strlen(s)))
              {
-                if (d == 0)
-                  {
-                     while(s[ll]!=':')
-                       test[m++] = s[ll++];
-                     test[m] = 0;
-                     ll++;
-                     m = 0;
-                     mem->color[k].r = atoi(test);
-                     d++;
-                  }
-                if (d == 1)
-                  {
-                     while(s[ll]!=':')
-                       test[m++] = s[ll++];
-                     test[m] = 0;
-                     ll++;
-                     m = 0;
-                     mem->color[k].g = atoi(test);
-                     d++;
-                  }
-                if (d == 2)
-                  {
-                     while(s[ll]!='/' &&  m<3)
-                       test[m++] = s[ll++];
-                     test[m] = 0;
-                    ll++;
-                     m = 0;
-                     mem->color[k].b = atoi(test);
-                     d = 0;
-                  }
-             }
+                  if(d == 0)
+                   {
+                     while(s[ll]!=':')
+                           test[m++] = s[ll++];
+                     test[m]= 0 ;
+                     ll++ ;
+                     m = 0 ;
+                     mem->color[k].r = atoi(test) ;
+                     d++ ;
+                   }
+                  if(d == 1)
+                   {
+                    while(s[ll]!=':')
+                          test[m++] = s[ll++];
+                    test[m]= 0 ;
+                    ll++ ;
+                     m = 0 ;
+                     mem->color[k].g = atoi(test) ;
+                     d++ ;
+                   }
+                  if(d == 2)
+                   {
+                     while(s[ll]!='/' &&  m<3)
+                           test[m++] = s[ll++];
+                     test[m]= 0 ;
+                     ll++ ;
+                      m = 0 ;
+                      mem->color[k].b = atoi(test) ;
+                      d = 0 ;
+                   }
+                }
            k++;
          }
-     }
-   return mem;
+       }
+    return mem;
 }
 
-static Evas_Object *
-external_colorpalette_content_get(void *data __UNUSED__,
-                                  const Evas_Object *obj __UNUSED__,
-                                  const char *content __UNUSED__)
+static Evas_Object *external_colorpalette_content_get(void *data __UNUSED__,
+               const Evas_Object *obj __UNUSED__, const char *content __UNUSED__)
 {
-   ERR("No content.");
-   return NULL;
+       ERR("No content.");
+       return NULL;
 }
 
 static void
@@ -149,7 +151,7 @@ external_colorpalette_params_free(void *params)
    if (mem->color)
      free(mem->color);
    if (mem->color_set)
-     free(mem->color_set);
+     free(mem->color_set) ;
    free(params);
 }
 
index 7998f81..05fcea1 100644 (file)
@@ -25,8 +25,8 @@ typedef struct _Elm_Params_Entry
 
 #define CHOICE_GET(CHOICES, STR)                \
   unsigned int i;                               \
-  for (i = 0; i < sizeof(CHOICES)/sizeof (CHOICES)[0]; i++)         \
-    if (strcmp((STR), (CHOICES)[i]) == 0)           \
+  for (i = 0; i < sizeof(CHOICES)/sizeof(CHOICES[0]); i++)         \
+    if (strcmp(STR, CHOICES[i]) == 0)           \
       return i
 
 
index 3bd7eb5..e93e121 100644 (file)
@@ -5,7 +5,7 @@
 typedef struct _Elm_Params_Genlist
 {
    Elm_Params base;
-   const char *horizontal;
+   const char *horizontal_mode;
    Eina_Bool multi:1;
    Eina_Bool multi_exists:1;
    Eina_Bool always_select:1;
@@ -22,18 +22,18 @@ typedef struct _Elm_Params_Genlist
    Eina_Bool v_bounce_exists:1;
 } Elm_Params_Genlist;
 
-static const char* list_horizontal_choices[] = {"compress", "scroll", "limit", "expand", NULL};
+static const char* list_horizontal_mode_choices[] = {"compress", "scroll", "limit", "expand", NULL};
 
 static Elm_List_Mode
-_list_horizontal_setting_get(const char *horizontal_str)
+_list_horizontal_mode_setting_get(const char *horizontal_mode_str)
 {
    unsigned int i;
 
-   assert(sizeof(list_horizontal_choices)/sizeof(list_horizontal_choices[0]) == ELM_LIST_LAST + 1);
+   assert(sizeof(list_horizontal_mode_choices)/sizeof(list_horizontal_mode_choices[0]) == ELM_LIST_LAST + 1);
 
    for (i = 0; i < ELM_LIST_LAST; i++)
      {
-       if (!strcmp(horizontal_str, list_horizontal_choices[i]))
+       if (!strcmp(horizontal_mode_str, list_horizontal_mode_choices[i]))
          return i;
      }
    return ELM_LIST_LAST;
@@ -48,9 +48,9 @@ external_genlist_state_set(void *data __UNUSED__, Evas_Object *obj, const void *
    else if (from_params) p = from_params;
    else return;
 
-   if (p->horizontal)
+   if (p->horizontal_mode)
      {
-       Elm_List_Mode set = _list_horizontal_setting_get(p->horizontal);
+       Elm_List_Mode set = _list_horizontal_mode_setting_get(p->horizontal_mode);
 
        if (set != ELM_LIST_LAST)
           elm_genlist_horizontal_mode_set(obj, set);
@@ -86,7 +86,7 @@ external_genlist_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_E
      {
        if (param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE)
          {
-            Elm_List_Mode set = _list_horizontal_setting_get(param->s);
+            Elm_List_Mode set = _list_horizontal_mode_setting_get(param->s);
 
             if (set == ELM_LIST_LAST) return EINA_FALSE;
             elm_genlist_horizontal_mode_set(obj, set);
@@ -172,7 +172,7 @@ external_genlist_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_E
             if (list_horizontal_mode_set == ELM_LIST_LAST)
               return EINA_FALSE;
 
-            param->s = list_horizontal_choices[list_horizontal_mode_set];
+            param->s = list_horizontal_mode_choices[list_horizontal_mode_set];
             return EINA_TRUE;
          }
      }
@@ -257,7 +257,7 @@ external_genlist_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__
    EINA_LIST_FOREACH(params, l, param)
      {
        if (!strcmp(param->name, "horizontal mode"))
-            mem->horizontal = eina_stringshare_add(param->s);
+            mem->horizontal_mode = eina_stringshare_add(param->s);
        else if (!strcmp(param->name, "multi select"))
          {
             mem->multi = !!param->i;
@@ -310,15 +310,15 @@ external_genlist_params_free(void *params)
 {
    Elm_Params_Genlist *mem = params;
 
-   if (mem->horizontal)
-     eina_stringshare_del(mem->horizontal);
+   if (mem->horizontal_mode)
+     eina_stringshare_del(mem->horizontal_mode);
 
    free(mem);
 }
 
 static Edje_External_Param_Info external_genlist_params[] = {
    DEFINE_EXTERNAL_COMMON_PARAMS,
-   EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL("horizontal mode", "scroll", list_horizontal_choices),
+   EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL("horizontal mode", "scroll", list_horizontal_mode_choices),
    EDJE_EXTERNAL_PARAM_INFO_BOOL("multi select"),
    EDJE_EXTERNAL_PARAM_INFO_BOOL("always select"),
    EDJE_EXTERNAL_PARAM_INFO_BOOL("no select"),
diff --git a/src/edje_externals/elm_navigationbar.c b/src/edje_externals/elm_navigationbar.c
new file mode 100644 (file)
index 0000000..16105b3
--- /dev/null
@@ -0,0 +1,110 @@
+#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");
diff --git a/src/edje_externals/elm_navigationbar_ex.c b/src/edje_externals/elm_navigationbar_ex.c
new file mode 100644 (file)
index 0000000..8aca09a
--- /dev/null
@@ -0,0 +1,93 @@
+#include <assert.h>
+
+#include "private.h"
+
+typedef struct _Elm_Params_Navigationbar_ex
+{
+   Eina_Bool del_on_pop_exists:1;
+   Eina_Bool del_on_pop:1;
+} Elm_Params_Navigationbar_ex;
+
+
+static void
+external_navigationbar_ex_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__)
+{
+   const Elm_Params_Navigationbar_ex *p;
+
+   if (to_params) p = to_params;
+   else if (from_params) p = from_params;
+   else return;
+
+  if(p->del_on_pop_exists) elm_navigationbar_ex_delete_on_pop_set(obj, p->del_on_pop);
+}
+
+static Eina_Bool
+external_navigationbar_ex_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_External_Param *param)
+{
+   if (!strcmp(param->name, "delete on pop"))
+     {
+       if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
+         {
+            elm_navigationbar_ex_delete_on_pop_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_ex_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_ex_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const Eina_List *params)
+{
+   Elm_Params_Navigationbar_ex *mem;
+   Edje_External_Param *param;
+   const Eina_List *l;
+
+   mem = calloc(1, sizeof(Elm_Params_Navigationbar_ex));
+   if (!mem)
+     return NULL;
+
+   EINA_LIST_FOREACH(params, l, param)
+     {
+       if (!strcmp(param->name, "delete on pop"))
+               {
+            mem->del_on_pop = !!param->i;
+                 mem->del_on_pop_exists = EINA_TRUE;
+               }
+     }
+
+   return mem;
+}
+
+static Evas_Object *external_navigationbar_ex_content_get(void *data __UNUSED__,
+               const Evas_Object *obj __UNUSED__, const char *content __UNUSED__)
+{
+       ERR("so content");
+       return NULL;
+}
+
+static void
+external_navigationbar_ex_params_free(void *params)
+{
+   Elm_Params_Navigationbar_ex* mem = params;
+   free(mem);
+}
+
+static Edje_External_Param_Info external_navigationbar_ex_params[] = {
+   EDJE_EXTERNAL_PARAM_INFO_BOOL("delete on pop"),
+   EDJE_EXTERNAL_PARAM_INFO_SENTINEL
+};
+
+DEFINE_EXTERNAL_ICON_ADD(navigationbar_ex, "navigationbar_ex");
+DEFINE_EXTERNAL_TYPE_SIMPLE(navigationbar_ex, "Navigationbar_ex");
index bfcab50..2efffa5 100644 (file)
@@ -32,7 +32,7 @@ external_toggle_state_set(void *data __UNUSED__, Evas_Object *obj, const void *f
      elm_object_part_text_set(obj, "off", p->off);
 
    if (p->state_exists)
-     elm_check_state_set(obj, p->state);
+     elm_toggle_state_set(obj, p->state);
 }
 
 static Eina_Bool
@@ -76,7 +76,7 @@ external_toggle_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_Ex
      {
        if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
          {
-            elm_check_state_set(obj, param->i);
+            elm_toggle_state_set(obj, param->i);
             return EINA_TRUE;
          }
      }
@@ -123,7 +123,7 @@ external_toggle_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_Ex
      {
        if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL)
          {
-            param->i = elm_check_state_get(obj);
+            param->i = elm_toggle_state_get(obj);
             return EINA_TRUE;
          }
      }
@@ -194,21 +194,4 @@ static Edje_External_Param_Info external_toggle_params[] = {
 };
 
 DEFINE_EXTERNAL_ICON_ADD(toggle, "toggle")
-#undef DEFINE_EXTERNAL_TYPE_SIMPLE
-#define DEFINE_EXTERNAL_TYPE_SIMPLE(type_name, name)    \
-static Evas_Object *                                \
-external_##type_name##_add(void *data __UNUSED__, Evas *evas __UNUSED__, Evas_Object *edje, const Eina_List *params __UNUSED__, const char *part_name) \
-{                                                                      \
-   Evas_Object *parent, *obj;                                          \
-   external_elm_init();                                                 \
-   parent = elm_widget_parent_widget_get(edje);                        \
-   if (!parent) parent = edje;                                         \
-   obj = elm_check_add(parent);                                \
-   elm_object_style_set(obj, "toggle"); \
-   external_signals_proxy(obj, edje, part_name);                       \
-   return obj;                                                         \
-}                                                                      \
-                                                                       \
-DEFINE_EXTERNAL_TYPE(type_name, name)
-
 DEFINE_EXTERNAL_TYPE_SIMPLE(toggle, "Toggle")
index bf9c7c4..d6590ec 100644 (file)
@@ -1,4 +1,3 @@
-DEFINE_TYPE(actionslider)
 DEFINE_TYPE(anchorblock)
 DEFINE_TYPE(anchorview)
 DEFINE_TYPE(bubble)
@@ -12,17 +11,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,10 +34,8 @@ 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)
diff --git a/src/examples/animator_example_01.c b/src/examples/animator_example_01.c
new file mode 100644 (file)
index 0000000..04272ed
--- /dev/null
@@ -0,0 +1,108 @@
+//Compile with:
+//gcc -g `pkg-config --cflags --libs elementary` animator_example_01.c -o animator_example_01
+
+#include <Elementary.h>
+#include <limits.h>
+#ifdef HAVE_CONFIG_H
+# include "elementary_config.h"
+#else
+# define __UNUSED__
+#endif
+
+static void
+on_done(void *data, Evas_Object *obj, void *event_info)
+{
+   elm_exit();
+}
+
+static void
+_op_cb(void *data, Elm_Animator *animator, double frame)
+{
+   evas_object_resize(data, 100 * frame, 100 * frame);
+   evas_object_move(data, 50 * frame, 50 * frame);
+   evas_object_color_set(data, 255 * frame, 0, 255 * (1 - frame), 255);
+}
+
+static void
+_end_cb(void *data)
+{
+   printf("Wow, you're very patient!\n");
+}
+
+static void
+_pause_resume(void *data, Evas_Object *obj, void *event_info)
+{
+   static Eina_Bool paused = EINA_FALSE;
+   if (!paused)
+     {
+        elm_animator_pause(data);
+        elm_button_label_set(obj, "Resume");
+        paused = EINA_TRUE;
+     }
+   else
+     {
+        elm_animator_resume(data);
+        elm_button_label_set(obj, "Pause");
+        paused = EINA_FALSE;
+     }
+}
+
+static void
+_stop(void *data, Evas_Object *obj, void *event_info)
+{
+   elm_animator_stop(data);
+}
+
+EAPI int
+elm_main(int argc, char **argv)
+{
+   Evas_Object *win, *bg, *button, *rectangle;
+   Elm_Animator *animator;
+
+   win = elm_win_add(NULL, "animator", ELM_WIN_BASIC);
+   elm_win_title_set(win, "Animator");
+   evas_object_smart_callback_add(win, "delete,request", on_done, NULL);
+
+   bg = elm_bg_add(win);
+   elm_win_resize_object_add(win, bg);
+   evas_object_resize(bg, 200, 200);
+   evas_object_show(bg);
+
+   rectangle = evas_object_rectangle_add(evas_object_evas_get(win));
+   evas_object_color_set(rectangle, 0, 0, 255, 255);
+   evas_object_show(rectangle);
+
+   animator = elm_animator_add(NULL);
+   elm_animator_duration_set(animator, 1);
+   elm_animator_auto_reverse_set(animator, EINA_TRUE);
+   elm_animator_repeat_set(animator, UINT_MAX);
+   elm_animator_curve_style_set(animator, ELM_ANIMATOR_CURVE_IN_OUT);
+   elm_animator_operation_callback_set(animator, _op_cb, rectangle);
+   elm_animator_completion_callback_set(animator, _end_cb, NULL);
+   elm_animator_animate(animator);
+
+   button = elm_button_add(win);
+   elm_button_label_set(button, "Pause");
+   evas_object_resize(button, 50, 30);
+   evas_object_move(button, 10, 210);
+   evas_object_smart_callback_add(button, "clicked", _pause_resume, animator);
+   evas_object_show(button);
+
+   button = elm_button_add(win);
+   elm_button_label_set(button, "Stop");
+   evas_object_resize(button, 50, 30);
+   evas_object_move(button, 70, 210);
+   evas_object_smart_callback_add(button, "clicked", _stop, animator);
+   evas_object_show(button);
+
+   evas_object_resize(win, 200, 250);
+   evas_object_show(win);
+
+   elm_run();
+
+   evas_object_del(rectangle);
+   elm_animator_del(animator);
+
+   return 0;
+}
+ELM_MAIN()
index 52c713c..b938634 100644 (file)
@@ -9,7 +9,7 @@
 static void
 _ctxpopup_item_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
 {
-   printf("ctxpopup item selected: %s\n", elm_object_item_text_get(event_info));
+   printf("ctxpopup item selected: %s\n", elm_ctxpopup_item_label_get(event_info));
 }
 
 Elm_Object_Item *item_new(Evas_Object *ctxpopup, const char * label, const char *icon)
@@ -33,10 +33,10 @@ _list_item_cb(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in
    item_new(ctxpopup, "Save file", "file");
    item_new(ctxpopup, "Delete file", "delete");
    it = item_new(ctxpopup, "Navigate to folder", "folder");
-   elm_object_item_disabled_set(it, EINA_TRUE);
+   elm_ctxpopup_item_disabled_set(it, EINA_TRUE);
    item_new(ctxpopup, "Edit entry", "edit");
    it = item_new(ctxpopup, "Set date and time", "clock");
-   elm_object_item_disabled_set(it, EINA_TRUE);
+   elm_ctxpopup_item_disabled_set(it, EINA_TRUE);
 
    evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
    evas_object_size_hint_max_set(ctxpopup, 240, 240);
@@ -61,7 +61,7 @@ _list_item_cb2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i
    item_new(ctxpopup, NULL, "delete");
    item_new(ctxpopup, NULL, "folder");
    it = item_new(ctxpopup, NULL, "edit");
-   elm_object_item_disabled_set(it, EINA_TRUE);
+   elm_ctxpopup_item_disabled_set(it, EINA_TRUE);
    item_new(ctxpopup, NULL, "clock");
 
    evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
index a6a8bc9..cdea766 100644 (file)
@@ -38,7 +38,7 @@ _unsel_cb(void        *data,
           Evas_Object *obj __UNUSED__,
           void        *event_info __UNUSED__)
 {
-   Elm_Object_Item *it;
+   Elm_Flipselector_Item *it;
    Evas_Object *fp = data;
 
    it = elm_flipselector_selected_item_get(fp);
@@ -50,7 +50,7 @@ _del_cb(void        *data,
           Evas_Object *obj __UNUSED__,
           void        *event_info __UNUSED__)
 {
-   Elm_Object_Item *it;
+   Elm_Flipselector_Item *it;
    Evas_Object *fp = data;
 
    it = elm_flipselector_selected_item_get(fp);
@@ -111,36 +111,36 @@ _on_keydown(void              *data,
 
    if (strcmp(ev->keyname, "f") == 0) /* print first item's label */
      {
-         Elm_Object_Item *it;
+         Elm_Flipselector_Item *it;
 
          it = elm_flipselector_first_item_get(fs);
 
          fprintf(stdout, "Flip selector's first item is: %s\n", it ?
-                 elm_object_item_text_get(it) : "none");
+                 elm_flipselector_item_label_get(it) : "none");
 
         return;
      }
 
    if (strcmp(ev->keyname, "l") == 0) /* print last item's label */
      {
-         Elm_Object_Item *it;
+         Elm_Flipselector_Item *it;
 
          it = elm_flipselector_last_item_get(fs);
 
          fprintf(stdout, "Flip selector's last item is: %s\n", it ?
-                 elm_object_item_text_get(it) : "none");
+                 elm_flipselector_item_label_get(it) : "none");
 
         return;
      }
 
    if (strcmp(ev->keyname, "s") == 0) /* print selected item's label */
      {
-         Elm_Object_Item *it;
+         Elm_Flipselector_Item *it;
 
          it = elm_flipselector_selected_item_get(fs);
 
          fprintf(stdout, "Flip selector's selected item is: %s\n", it ?
-                 elm_object_item_text_get(it) : "none");
+                 elm_flipselector_item_label_get(it) : "none");
 
         return;
      }
index a59ec0f..7d2f087 100644 (file)
@@ -254,7 +254,7 @@ ELM_MAIN()
 @author Michael Bouchaud <michael.bouchaud@@gmail.com>
 @author Jonathan Atton (Watchwolf) <jonathan.atton@@gmail.com>
 @author Brian Wang <brian.wang.0721@@gmail.com>
-@author Mike Blumenkrantz (discomfitor/zmike) <michael.blumenkrantz@@gmail.com>
+@author Mike Blumenkrantz (zmike) <mike@@zentific.com>
 @author Samsung Electronics <tbd>
 @author Samsung SAIT <tbd>
 @author Brett Nash <nash@@nash.id.au>
@@ -284,16 +284,13 @@ ELM_MAIN()
 @author Shinwoo Kim <kimcinoo@@gmail.com>
 @author Govindaraju SM <govi.sm@@samsung.com> <govism@@gmail.com>
 @author Prince Kumar Dubey <prince.dubey@@samsung.com> <prince.dubey@@gmail.com>
-@author Sung W. Park <sungwoo@@gmail.com>
-@author Thierry el Borgi <thierry@@substantiel.fr>
-@author Shilpa Singh <shilpa.singh@@samsung.com> <shilpasingh.o@@gmail.com>
-@author Chanwook Jung <joey.jung@@samsung.com>
-@author Hyoyoung Chang <hyoyoung.chang@@samsung.com>
-@author Guillaume "Kuri" Friloux <guillaume.friloux@@asp64.com>
-@author Kim Yunhan <spbear@@gmail.com>
-@author Bluezery <ohpowel@@gmail.com>
-@author Nicolas Aguirre <aguirre.nicolas@@gmail.com>
-@author Sanjeev BA <iamsanjeev@@gmail.com>
+@author Sung W. Park <sungwoo@gmail.com>
+@author Thierry el Borgi <thierry@substantiel.fr>
+@author Shilpa Singh <shilpa.singh@samsung.com> <shilpasingh.o@gmail.com>
+@author Chanwook Jung <joey.jung@samsung.com>
+@author Hyoyoung Chang <hyoyoung.chang@samsung.com>
+@author Guillaume "Kuri" Friloux <guillaume.friloux@asp64.com>
+@author Kim Yunhan <spbear@gmail.com>
 
 Please contact <enlightenment-devel@lists.sourceforge.net> to get in
 contact with the developers and maintainers.
@@ -371,7 +368,7 @@ contact with the developers and maintainers.
 #include <Ecore_Evas.h>
 #include <Ecore_File.h>
 #include <Ecore_IMF.h>
-@ELEMENTARY_ECORE_CON_INC@
+#include <Ecore_Con.h>
 #include <Edje.h>
 
 #ifdef ELM_EDBUS
@@ -424,8 +421,6 @@ contact with the developers and maintainers.
 # define EAPI_MAIN EAPI
 #endif
 
-#define WILL_DEPRECATE /* API is deprecated in upstream EFL, will be deprecated in SLP soon */
-
 /* allow usage from c++ */
 #ifdef __cplusplus
 extern "C" {
@@ -604,7 +599,7 @@ extern "C" {
     */
    typedef Evas_Object *(*Elm_Tooltip_Item_Content_Cb) (void *data, Evas_Object *obj, Evas_Object *tooltip, void *item);
 
-   typedef Eina_Bool (*Elm_Event_Cb) (void *data, Evas_Object *obj, Evas_Object *src, Evas_Callback_Type type, void *event_info); /**< Function prototype definition for callbacks on input events happening on Elementary widgets. @a data will receive the user data pointer passed to elm_object_event_callback_add(). @a src will be a pointer to the widget on which the input event took place. @a type will get the type of this event and @a event_info, the struct with details on this event. */
+   typedef Eina_Bool (*Elm_Event_Cb) (void *data, Evas_Object *obj, Evas_Object *src, Evas_Callback_Type type, void *event_info);
 
 #ifndef ELM_LIB_QUICKLAUNCH
 #define ELM_MAIN() int main(int argc, char **argv) {elm_init(argc, argv); return elm_main(argc, argv);} /**< macro to be used after the elm_main() function */
@@ -1158,16 +1153,6 @@ extern "C" {
 #define elm_object_content_unset(obj) elm_object_part_content_unset((obj), NULL)
 
    /**
-    * Set the text to read out when in accessibility mode
-    *
-    * @param obj The object which is to be described
-    * @param txt The text that describes the widget to people with poor or no vision
-    *
-    * @ingroup General
-    */
-   EAPI void elm_object_access_info_set(Evas_Object *obj, const char *txt);
-
-   /**
     * Get the widget object's handle which contains a given item
     *
     * @param item The Elementary object item
@@ -1187,38 +1172,12 @@ extern "C" {
     * @param content The new content of the object item
     *
     * @note Elementary object items may have many contents
-    * @deprecated Use elm_object_item_part_content_set instead.
-    * @ingroup General
-    */
-   EINA_DEPRECATED EAPI void elm_object_item_content_part_set(Elm_Object_Item *it, const char *part, Evas_Object *content);
-
-   /**
-    * Set a content of an object item
-    *
-    * @param it The Elementary object item
-    * @param part The content part name to set (NULL for the default content)
-    * @param content The new content of the object item
-    *
-    * @note Elementary object items may have many contents
     *
     * @ingroup General
     */
-   EAPI void elm_object_item_part_content_set(Elm_Object_Item *it, const char *part, Evas_Object *content);
+   EAPI void elm_object_item_content_part_set(Elm_Object_Item *it, const char *part, Evas_Object *content);
 
-#define elm_object_item_content_set(it, content) elm_object_item_part_content_set((it), NULL, (content))
-
-   /**
-    * Get a content of an object item
-    *
-    * @param it The Elementary object item
-    * @param part The content part name to unset (NULL for the default content)
-    * @return content of the object item or NULL for any error
-    *
-    * @note Elementary object items may have many contents
-    * @deprecated Use elm_object_item_part_content_get instead.
-    * @ingroup General
-    */
-   EAPI Evas_Object *elm_object_item_content_part_get(const Elm_Object_Item *it, const char *part);
+#define elm_object_item_content_set(it, content) elm_object_item_content_part_set((it), NULL, (content))
 
    /**
     * Get a content of an object item
@@ -1231,21 +1190,9 @@ extern "C" {
     *
     * @ingroup General
     */
-   EAPI Evas_Object *elm_object_item_part_content_get(const Elm_Object_Item *it, const char *part);
-
-#define elm_object_item_content_get(it) elm_object_item_part_content_get((it), NULL)
+   EAPI Evas_Object *elm_object_item_content_part_get(const Elm_Object_Item *it, const char *part);
 
-   /**
-    * Unset a content of an object item
-    *
-    * @param it The Elementary object item
-    * @param part The content part name to unset (NULL for the default content)
-    *
-    * @note Elementary object items may have many contents
-    * @deprecated Use elm_object_item_part_content_unset instead.
-    * @ingroup General
-    */
-   EINA_DEPRECATED EAPI Evas_Object *elm_object_item_content_part_unset(Elm_Object_Item *it, const char *part);
+#define elm_object_item_content_get(it) elm_object_item_content_part_get((it), NULL)
 
    /**
     * Unset a content of an object item
@@ -1257,22 +1204,9 @@ 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)
+   EAPI Evas_Object *elm_object_item_content_part_unset(Elm_Object_Item *it, const char *part);
 
-   /**
-    * Set a label of an object item
-    *
-    * @param it The Elementary object item
-    * @param part The text part name to set (NULL for the default label)
-    * @param label The new text of the label
-    *
-    * @note Elementary object items may have many labels
-    * @deprecated Use elm_object_item_part_text_set instead.
-    * @ingroup General
-    */
-   WILL_DEPRECATE  EAPI void elm_object_item_text_part_set(Elm_Object_Item *it, const char *part, const char *label);
+#define elm_object_item_content_unset(it, content) elm_object_item_content_part_unset((it), (content))
 
    /**
     * Set a label of an object item
@@ -1285,9 +1219,9 @@ extern "C" {
     *
     * @ingroup General
     */
-   EAPI void elm_object_item_part_text_set(Elm_Object_Item *it, const char *part, const char *label);
+   EAPI void elm_object_item_text_part_set(Elm_Object_Item *it, const char *part, const char *label);
 
-#define elm_object_item_text_set(it, label) elm_object_item_part_text_set((it), NULL, (label))
+#define elm_object_item_text_set(it, label) elm_object_item_text_part_set((it), NULL, (label))
 
    /**
     * Get a label of an object item
@@ -1297,22 +1231,10 @@ extern "C" {
     * @return text of the label or NULL for any error
     *
     * @note Elementary object items may have many labels
-    * @deprecated Use elm_object_item_part_text_get instead.
-    * @ingroup General
-    */
-   WILL_DEPRECATE  EAPI const char *elm_object_item_text_part_get(const Elm_Object_Item *it, const char *part);
-   /**
-    * Get a label of an object item
-    *
-    * @param it The Elementary object item
-    * @param part The text part name to get (NULL for the default label)
-    * @return text of the label or NULL for any error
-    *
-    * @note Elementary object items may have many labels
     *
     * @ingroup General
     */
-   EAPI const char *elm_object_item_part_text_get(const Elm_Object_Item *it, const char *part);
+   EAPI const char *elm_object_item_text_part_get(const Elm_Object_Item *it, const char *part);
 
    /**
     * Set the text to read out when in accessibility mode
@@ -1334,7 +1256,18 @@ extern "C" {
     */
    EAPI void elm_object_item_access_info_set(Elm_Object_Item *it, const char *txt);
 
-#define elm_object_item_text_get(it) elm_object_item_part_text_get((it), NULL)
+
+#define elm_object_item_text_get(it) elm_object_item_text_part_get((it), NULL)
+
+   /**
+    * Set the text to read out when in accessibility mode
+    *
+    * @param obj The object which is to be described
+    * @param txt The text that describes the widget to people with poor or no vision
+    *
+    * @ingroup General
+    */
+   EAPI void elm_object_access_info_set(Evas_Object *obj, const char *txt);
 
    /**
     * Set the text to read out when in accessibility mode
@@ -1376,40 +1309,7 @@ extern "C" {
     * @param source The signal's source.
     * @ingroup General
     */
-   EAPI void elm_object_item_signal_emit(Elm_Object_Item *it, const char *emission, const char *source) EINA_ARG_NONNULL(1);
-
-   /**
-    * Set the disabled state of an widget item.
-    *
-    * @param obj The Elementary object item
-    * @param disabled The state to put in in: @c EINA_TRUE for
-    *        disabled, @c EINA_FALSE for enabled
-    *
-    * Elementary object item can be @b disabled, in which state they won't
-    * receive input and, in general, will be themed differently from
-    * their normal state, usually greyed out. Useful for contexts
-    * where you don't want your users to interact with some of the
-    * parts of you interface.
-    *
-    * This sets the state for the widget item, either disabling it or
-    * enabling it back.
-    *
-    * @ingroup Styles
-    */
-   EAPI void elm_object_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled) EINA_ARG_NONNULL(1);
-
-   /**
-    * Get the disabled state of an widget item.
-    *
-    * @param obj The Elementary object
-    * @return @c EINA_TRUE, if the widget item is disabled, @c EINA_FALSE
-    *            if it's enabled (or on errors)
-    *
-    * This gets the state of the widget, which might be enabled or disabled.
-    *
-    * @ingroup Styles
-    */
-   EAPI Eina_Bool    elm_object_item_disabled_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+   EAPI void             elm_object_item_signal_emit(Elm_Object_Item *it, const char *emission, const char *source) EINA_ARG_NONNULL(1);
 
    /**
     * @}
@@ -2549,11 +2449,10 @@ extern "C" {
     * the one receiving input events.
     *
     * @see elm_object_focus_get()
-    * @deprecated use elm_object_focus_set() instead.
     *
     * @ingroup Focus
     */
-   WILL_DEPRECATE  EAPI void             elm_object_focus(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI void             elm_object_focus(Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Remove the focus from an Elementary object
@@ -2564,11 +2463,10 @@ extern "C" {
     * previous element in the focus chain list.
     *
     * @see elm_object_focus() and elm_object_focus_custom_chain_get()
-    * @deprecated use elm_object_focus_set() instead.
     *
     * @ingroup Focus
     */
-   WILL_DEPRECATE  EAPI void             elm_object_unfocus(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI void             elm_object_unfocus(Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Set the ability for an Element object to be focused
@@ -2716,7 +2614,7 @@ extern "C" {
     *
     * @ingroup Focus
     */
-   EAPI void             elm_object_tree_unfocusable_set(Evas_Object *obj, Eina_Bool tree_unfocusable) EINA_ARG_NONNULL(1);
+   EAPI void             elm_object_tree_unfocusable_set(Evas_Object *obj, Eina_Bool tree_unfocusable); EINA_ARG_NONNULL(1);
 
    /**
     * Get whether an Elementary object and its children are unfocusable or not.
@@ -2729,7 +2627,7 @@ extern "C" {
     *
     * @ingroup Focus
     */
-   EAPI Eina_Bool        elm_object_tree_unfocusable_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Eina_Bool        elm_object_tree_unfocusable_get(const Evas_Object *obj); EINA_ARG_NONNULL(1);
 
    /**
     * @defgroup Scrolling Scrolling
@@ -4471,12 +4369,6 @@ extern "C" {
     */
    EAPI Evas_Object *elm_win_inlined_image_object_get(Evas_Object *obj);
    /**
-    * Determine whether a window has focus
-    * @param obj The window to query
-    * @return EINA_TRUE if the window exists and has focus, else EINA_FALSE
-    */
-   EAPI Eina_Bool    elm_win_focus_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   /**
     * Get screen geometry details for the screen that a window is on
     * @param obj The window to query
     * @param x where to return the horizontal offset value. May be NULL.
@@ -4839,7 +4731,7 @@ extern "C" {
     * @ingroup Bg
     */
 
-   WILL_DEPRECATE  EAPI void          elm_bg_overlay_set(Evas_Object *obj, Evas_Object *overlay) EINA_ARG_NONNULL(1);
+   EAPI void          elm_bg_overlay_set(Evas_Object *obj, Evas_Object *overlay) EINA_ARG_NONNULL(1);
 
    /**
     * Get the overlay object used for the background object.
@@ -4867,7 +4759,7 @@ extern "C" {
     *
     * @ingroup Bg
     */
-   WILL_DEPRECATE  EAPI Evas_Object  *elm_bg_overlay_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object  *elm_bg_overlay_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Set the size of the pixmap representation of the image.
@@ -5033,7 +4925,7 @@ extern "C" {
     *
     * @ingroup Icon
     */
-   EAPI Eina_Bool             elm_icon_memfile_set(Evas_Object *obj, const void *img, size_t size, const char *format, const char *key) EINA_ARG_NONNULL(1, 2);
+   EAPI Eina_Bool             elm_icon_memfile_set(Evas_Object *obj, const void *img, size_t size, const char *format, const char *key) EINA_ARG_NONNULL(1, 2);
    /**
     * Get the file that will be used as icon.
     *
@@ -6504,7 +6396,7 @@ extern "C" {
     * @param icon The icon object for the button
     * @deprecated use elm_object_part_content_set() instead.
     */
-   WILL_DEPRECATE  EAPI void         elm_button_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
+   EAPI void         elm_button_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
    /**
     * Get the icon used for the button
     *
@@ -6517,7 +6409,7 @@ extern "C" {
     *
     * @deprecated use elm_object_part_content_get() instead
     */
-   WILL_DEPRECATE  EAPI Evas_Object *elm_button_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object *elm_button_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * Remove the icon set without deleting it and return the object
     *
@@ -6530,7 +6422,7 @@ extern "C" {
     * @return The icon object that was being used
     * @deprecated use elm_object_part_content_unset() instead.
     */
-   WILL_DEPRECATE  EAPI Evas_Object *elm_button_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object *elm_button_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * Turn on/off the autorepeat event generated when the button is kept pressed
     *
@@ -7345,7 +7237,7 @@ extern "C" {
     * elm_scroller_content_unset() function.
     * @deprecated use elm_object_content_set() instead
     */
-   WILL_DEPRECATE  EAPI void elm_scroller_content_set(Evas_Object *obj, Evas_Object *child) EINA_ARG_NONNULL(1);
+   EAPI void         elm_scroller_content_set(Evas_Object *obj, Evas_Object *child) EINA_ARG_NONNULL(1);
    /**
     * @brief Get the content of the scroller widget
     *
@@ -7357,7 +7249,7 @@ extern "C" {
     * @see elm_scroller_content_set()
     * @deprecated use elm_object_content_get() instead.
     */
-   WILL_DEPRECATE  EAPI Evas_Object *elm_scroller_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object *elm_scroller_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * @brief Unset the content of the scroller widget
     *
@@ -7369,7 +7261,7 @@ extern "C" {
     * @see elm_scroller_content_set()
     * @deprecated use elm_object_content_unset() instead.
     */
-   WILL_DEPRECATE  EAPI Evas_Object *elm_scroller_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object *elm_scroller_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * @brief Set custom theme elements for the scroller
     *
@@ -7678,7 +7570,7 @@ extern "C" {
     *
     * The Label widget @b doesn't allow text to overflow its boundaries, if the
     * text doesn't fit the geometry of the label it will be ellipsized or be
-    * cut. Elementary provides several styles for this widget:
+    * cut. Elementary provides several themes for this widget:
     * @li default - No animation
     * @li marker - Centers the text in the label and make it bold by default
     * @li slide_long - The entire text appears from the right of the screen and
@@ -7790,7 +7682,8 @@ extern "C" {
     * @param size font size
     *
     * @warning NEVER use this. It is for hyper-special cases only. use styles
-    * instead. e.g. "default", "marker", "slide_long" etc.
+    * instead. e.g. "big", "medium", "small" - or better name them by use:
+    * "title", "footnote", "quote" etc.
     */
    EAPI void         elm_label_fontsize_set(Evas_Object *obj, int fontsize) EINA_ARG_NONNULL(1);
    /**
@@ -7803,7 +7696,8 @@ extern "C" {
     * @param a Alpha property background color of The label object
     *
     * @warning NEVER use this. It is for hyper-special cases only. use styles
-    * instead. e.g. "default", "marker", "slide_long" etc.
+    * instead. e.g. "big", "medium", "small" - or better name them by use:
+    * "title", "footnote", "quote" etc.
     */
    EAPI void         elm_label_text_color_set(Evas_Object *obj, unsigned int r, unsigned int g, unsigned int b, unsigned int a) EINA_ARG_NONNULL(1);
    /**
@@ -7813,7 +7707,8 @@ extern "C" {
     * @param align align mode ("left", "center", "right")
     *
     * @warning NEVER use this. It is for hyper-special cases only. use styles
-    * instead. e.g. "default", "marker", "slide_long" etc.
+    * instead. e.g. "big", "medium", "small" - or better name them by use:
+    * "title", "footnote", "quote" etc.
     */
    EAPI void         elm_label_text_align_set(Evas_Object *obj, const char *alignmode) EINA_ARG_NONNULL(1);
    /**
@@ -7826,7 +7721,8 @@ extern "C" {
     * @param a Alpha property background alpha of The label object
     *
     * @warning NEVER use this. It is for hyper-special cases only. use styles
-    * instead. e.g. "default", "marker", "slide_long" etc.
+    * instead. e.g. "big", "medium", "small" - or better name them by use:
+    * "title", "footnote", "quote" etc.
     */
    EAPI void         elm_label_background_color_set(Evas_Object *obj, unsigned int r, unsigned int g, unsigned int b, unsigned int a) EINA_ARG_NONNULL(1);
    /**
@@ -7954,7 +7850,7 @@ extern "C" {
     *
     * @deprecated use elm_object_content_set() instead.
     */
-   WILL_DEPRECATE  EAPI void         elm_frame_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
+   EAPI void         elm_frame_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
    /**
     * @brief Get the content of the frame widget
     *
@@ -7965,7 +7861,7 @@ extern "C" {
     *
     * @deprecated use elm_object_content_get() instead.
     */
-   WILL_DEPRECATE  EAPI Evas_Object *elm_frame_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object *elm_frame_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * @brief Unset the content of the frame widget
     *
@@ -7976,7 +7872,7 @@ extern "C" {
     *
     * @deprecated use elm_object_content_unset() instead.
     */
-   WILL_DEPRECATE  EAPI Evas_Object *elm_frame_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object *elm_frame_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * @}
     */
@@ -8320,36 +8216,10 @@ extern "C" {
    typedef struct _Elm_Gengrid_Item_Class Elm_Gengrid_Item_Class; /**< Gengrid item class definition structs */
    typedef struct _Elm_Gengrid_Item Elm_Gengrid_Item; /**< Gengrid item handles */
    typedef struct _Elm_Gengrid_Item_Class_Func Elm_Gengrid_Item_Class_Func; /**< Class functions for gengrid item classes. */
-   /**
-    * Label fetching class function for Elm_Gen_Item_Class.
-    * @param data The data passed in the item creation function
-    * @param obj The base widget object
-    * @param part The part name of the swallow
-    * @return The allocated (NOT stringshared) string to set as the label
-    */
-   typedef char        *(*Elm_Gengrid_Item_Label_Get_Cb) (void *data, Evas_Object *obj, const char *part);
-   /**
-    * Content (swallowed object) fetching class function for Elm_Gen_Item_Class.
-    * @param data The data passed in the item creation function
-    * @param obj The base widget object
-    * @param part The part name of the swallow
-    * @return The content object to swallow
-    */
-   typedef Evas_Object *(*Elm_Gengrid_Item_Content_Get_Cb)  (void *data, Evas_Object *obj, const char *part);
-   /**
-    * State fetching class function for Elm_Gen_Item_Class.
-    * @param data The data passed in the item creation function
-    * @param obj The base widget object
-    * @param part The part name of the swallow
-    * @return The hell if I know
-    */
-   typedef Eina_Bool    (*Elm_Gengrid_Item_State_Get_Cb) (void *data, Evas_Object *obj, const char *part);
-   /**
-    * Deletion class function for Elm_Gen_Item_Class.
-    * @param data The data passed in the item creation function
-    * @param obj The base widget object
-    */
-   typedef void         (*Elm_Gengrid_Item_Del_Cb)      (void *data, Evas_Object *obj);
+   typedef char        *(*Elm_Gengrid_Item_Label_Get_Cb) (void *data, Evas_Object *obj, const char *part); /**< Label fetching class function for gengrid item classes. */
+   typedef Evas_Object *(*Elm_Gengrid_Item_Content_Get_Cb)  (void *data, Evas_Object *obj, const char *part); /**< Content (swallowed object) fetching class function for gengrid item classes. */
+   typedef Eina_Bool    (*Elm_Gengrid_Item_State_Get_Cb) (void *data, Evas_Object *obj, const char *part); /**< State fetching class function for gengrid item classes. */
+   typedef void         (*Elm_Gengrid_Item_Del_Cb)      (void *data, Evas_Object *obj); /**< Deletion class function for gengrid item classes. */
 
    /* temporary compatibility code */
    typedef Elm_Gengrid_Item_Label_Get_Cb GridItemLabelGetFunc EINA_DEPRECATED;
@@ -8669,7 +8539,7 @@ extern "C" {
     *
     * @ingroup Gengrid
     */
-   WILL_DEPRECATE  EAPI void               elm_gengrid_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select) EINA_ARG_NONNULL(1);
+   EAPI void               elm_gengrid_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select) EINA_ARG_NONNULL(1);
 
    /**
     * Get whether items on a given gengrid widget have their selection
@@ -8684,7 +8554,7 @@ extern "C" {
     *
     * @ingroup Gengrid
     */
-   WILL_DEPRECATE  EAPI Eina_Bool          elm_gengrid_always_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Eina_Bool          elm_gengrid_always_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Set whether items on a given gengrid widget can be selected or not.
@@ -8702,7 +8572,7 @@ extern "C" {
     *
     * @ingroup Gengrid
     */
-   WILL_DEPRECATE  EAPI void               elm_gengrid_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select) EINA_ARG_NONNULL(1);
+   EAPI void               elm_gengrid_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select) EINA_ARG_NONNULL(1);
 
    /**
     * Get whether items on a given gengrid widget can be selected or
@@ -8716,7 +8586,7 @@ extern "C" {
     *
     * @ingroup Gengrid
     */
-   WILL_DEPRECATE  EAPI Eina_Bool          elm_gengrid_no_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Eina_Bool          elm_gengrid_no_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Enable or disable multi-selection in a given gengrid widget
@@ -8774,7 +8644,7 @@ extern "C" {
     *
     * @ingroup Gengrid
     */
-   WILL_DEPRECATE  EAPI void               elm_gengrid_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
+   EAPI void               elm_gengrid_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
 
    /**
     * Get whether bouncing effects are enabled or disabled, for a
@@ -8790,7 +8660,7 @@ extern "C" {
     *
     * @ingroup Gengrid
     */
-   WILL_DEPRECATE  EAPI void               elm_gengrid_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
+   EAPI void               elm_gengrid_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
 
    /**
     * Set a given gengrid widget's scrolling page size, relative to
@@ -8824,7 +8694,7 @@ extern "C" {
     *
     * @ingroup Gengrid
     */
-   WILL_DEPRECATE  EAPI void               elm_gengrid_page_relative_set(Evas_Object *obj, double h_pagerel, double v_pagerel) EINA_ARG_NONNULL(1);
+   EAPI void               elm_gengrid_page_relative_set(Evas_Object *obj, double h_pagerel, double v_pagerel) EINA_ARG_NONNULL(1);
 
    /**
     * Get a given gengrid widget's scrolling page size, relative to
@@ -8840,7 +8710,7 @@ extern "C" {
     *
     * @ingroup Gengrid
     */
-   WILL_DEPRECATE  EAPI void               elm_gengrid_page_relative_get(const Evas_Object *obj, double *h_pagerel, double *v_pagerel) EINA_ARG_NONNULL(1);
+   EAPI void               elm_gengrid_page_relative_get(const Evas_Object *obj, double *h_pagerel, double *v_pagerel) EINA_ARG_NONNULL(1);
 
    /**
     * Set a given gengrid widget's scrolling page size
@@ -8920,7 +8790,7 @@ extern "C" {
     *
     * @ingroup Gengrid
     */
-   WILL_DEPRECATE EAPI Elm_Gengrid_Item  *elm_gengrid_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Elm_Gengrid_Item  *elm_gengrid_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Get the last item in a given gengrid widget
@@ -8936,7 +8806,7 @@ extern "C" {
     *
     * @ingroup Gengrid
     */
-   WILL_DEPRECATE EAPI Elm_Gengrid_Item  *elm_gengrid_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Elm_Gengrid_Item  *elm_gengrid_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Get the @b next item in a gengrid widget's internal list of items,
@@ -8953,7 +8823,7 @@ extern "C" {
     *
     * @ingroup Gengrid
     */
-   WILL_DEPRECATE EAPI Elm_Gengrid_Item  *elm_gengrid_item_next_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
+   EAPI Elm_Gengrid_Item  *elm_gengrid_item_next_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
 
    /**
     * Get the @b previous item in a gengrid widget's internal list of items,
@@ -8970,7 +8840,7 @@ extern "C" {
     *
     * @ingroup Gengrid
     */
-   WILL_DEPRECATE EAPI Elm_Gengrid_Item  *elm_gengrid_item_prev_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
+   EAPI Elm_Gengrid_Item  *elm_gengrid_item_prev_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
 
    /**
     * Get the gengrid object's handle which contains a given gengrid
@@ -8983,7 +8853,7 @@ extern "C" {
     *
     * @ingroup Gengrid
     */
-   WILL_DEPRECATE EAPI Evas_Object       *elm_gengrid_item_gengrid_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object       *elm_gengrid_item_gengrid_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
 
    /**
     * Remove a gengrid item from its parent, deleting it.
@@ -9104,7 +8974,7 @@ extern "C" {
     *
     * @ingroup Gengrid
     */
-   WILL_DEPRECATE EAPI void elm_gengrid_item_selected_set(Elm_Gengrid_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1);
+   EAPI void               elm_gengrid_item_selected_set(Elm_Gengrid_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1);
 
    /**
     * Get whether a given gengrid item is selected or not
@@ -9118,7 +8988,7 @@ extern "C" {
     *
     * @ingroup Gengrid
     */
-   WILL_DEPRECATE EAPI Eina_Bool elm_gengrid_item_selected_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
+   EAPI Eina_Bool          elm_gengrid_item_selected_get(const Elm_Gengrid_Item *item) EINA_ARG_NONNULL(1);
 
    /**
     * Get the real Evas object created to implement the view of a
@@ -9461,7 +9331,7 @@ extern "C" {
     *
     * @ingroup Gengrid
     */
-   WILL_DEPRECATE EAPI void elm_gengrid_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI void               elm_gengrid_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Get the selected item in a given gengrid widget
@@ -9843,7 +9713,7 @@ extern "C" {
     * elm_object_content_set/get/unset functions to set, retrieve and unset 
     * objects as content of the @c SWALLOW. After being set to this part, the 
     * object size, position, visibility, clipping and other description 
-    * properties will be totally controlled by the description of the given part
+    * properties will be totally controled by the description of the given part 
     * (inside the Edje theme file).
     *
     * One can use @c evas_object_size_hint_* functions on the child to have some
@@ -9871,12 +9741,12 @@ extern "C" {
     * itself).
     *
     * A similar effect for having a box with its position, size and other things
-    * controlled by the Layout theme would be to create an Elementary @ref Box
+    * controled by the Layout theme would be to create an Elementary @ref Box
     * widget and add it as a Content in the @c SWALLOW part.
     *
     * The main difference of using the Layout Box is that its behavior, the box
     * properties like layouting format, padding, align, etc. will be all
-    * controlled by the theme. This means, for example, that a signal could be
+    * controled by the theme. This means, for example, that a signal could be
     * sent to the Layout theme (with elm_object_signal_emit()) and the theme
     * handled the signal by changing the box padding, or align, or both. Using
     * the Elementary @ref Box widget is not necessarily harder or easier, it
@@ -10010,7 +9880,7 @@ extern "C" {
     *
     * @ingroup Layout
     */
-   WILL_DEPRECATE EAPI void               elm_layout_content_set(Evas_Object *obj, const char *swallow, Evas_Object *content) EINA_ARG_NONNULL(1);
+   EAPI void               elm_layout_content_set(Evas_Object *obj, const char *swallow, Evas_Object *content) EINA_ARG_NONNULL(1);
    /**
     * Get the child object in the given content part.
     *
@@ -10023,7 +9893,7 @@ extern "C" {
     *
     * @ingroup Layout
     */
-   WILL_DEPRECATE EAPI Evas_Object       *elm_layout_content_get(const Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object       *elm_layout_content_get(const Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1);
    /**
     * Unset the layout content.
     *
@@ -10037,7 +9907,7 @@ extern "C" {
     *
     * @ingroup Layout
     */
-   WILL_DEPRECATE EAPI Evas_Object       *elm_layout_content_unset(Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object       *elm_layout_content_unset(Evas_Object *obj, const char *swallow) EINA_ARG_NONNULL(1);
    /**
     * Set the text of the given part
     *
@@ -10162,7 +10032,7 @@ extern "C" {
     */
    EAPI Evas_Object       *elm_layout_box_remove(Evas_Object *obj, const char *part, Evas_Object *child) EINA_ARG_NONNULL(1, 2, 3);
    /**
-    * Remove all children of the given part box.
+    * Remove all child of the given part box.
     *
     * @param obj The layout object
     * @param part The box part name to remove child.
@@ -10233,7 +10103,7 @@ extern "C" {
     */
    EAPI Evas_Object       *elm_layout_table_unpack(Evas_Object *obj, const char *part, Evas_Object *child_obj) EINA_ARG_NONNULL(1, 2, 3);
    /**
-    * Remove all the child objects of the given part table.
+    * Remove all child of the given part table.
     *
     * @param obj The layout object
     * @param part The table part name to remove child.
@@ -10405,8 +10275,8 @@ extern "C" {
     *
     * @param obj The layout object.
     * @param part_name a part from loaded edje group.
-    * @param engine_only if cursors should be just provided by the engine (EINA_TRUE)
-    *        or should also search on widget's theme as well (EINA_FALSE)
+    * @param engine_only if cursors should be just provided by the engine
+    *        or should also search on widget's theme as well
     *
     * @return EINA_TRUE on success or EINA_FALSE on failure, that may be
     *         part not exists or it did not had a cursor set.
@@ -10429,7 +10299,7 @@ extern "C" {
 
 /**
  * @def elm_layout_icon_set
- * Convenience macro to set the icon object in a layout that follows the
+ * Convienience macro to set the icon object in a layout that follows the
  * Elementary naming convention for its parts.
  *
  * @ingroup Layout
@@ -10564,11 +10434,8 @@ extern "C" {
     * Once the content object is set, a previously set one will be deleted. If
     * you want to keep that old content object, use the
     * elm_notify_content_unset() function.
-    *
-    * @deprecated use elm_object_content_set() instead
-    *
     */
-   WILL_DEPRECATE  EAPI void              elm_notify_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
+   EAPI void              elm_notify_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
    /**
     * @brief Unset the content of the notify widget
     *
@@ -10578,10 +10445,8 @@ extern "C" {
     * Unparent and return the content object which was set for this widget
     *
     * @see elm_notify_content_set()
-    * @deprecated use elm_object_content_unset() instead
-    *
     */
-   WILL_DEPRECATE  EAPI Evas_Object      *elm_notify_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object      *elm_notify_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * @brief Return the content of the notify widget
     *
@@ -10589,10 +10454,8 @@ extern "C" {
     * @return The content that is being used
     *
     * @see elm_notify_content_set()
-    * @deprecated use elm_object_content_get() instead
-    *
     */
-   WILL_DEPRECATE  EAPI Evas_Object      *elm_notify_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object      *elm_notify_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * @brief Set the notify parent
     *
@@ -10746,7 +10609,7 @@ extern "C" {
     * @brief Sets the target object for the hover.
     *
     * @param obj The hover object
-    * @param target The object to center the hover onto.
+    * @param target The object to center the hover onto. The hover
     *
     * This function will cause the hover to be centered on the target object.
     */
@@ -10755,7 +10618,7 @@ extern "C" {
     * @brief Gets the target object for the hover.
     *
     * @param obj The hover object
-    * @return The target object for the hover.
+    * @param parent The object to locate the hover over.
     *
     * @see elm_hover_target_set()
     */
@@ -10799,9 +10662,9 @@ extern "C" {
     * "smart". This is a special placement hint and its use case
     * independs of the calculations coming from
     * elm_hover_best_content_location_get(). Its use is for cases when
-    * one desires only one hover content, but with a dynamic special
+    * one desires only one hover content, but with a dinamic special
     * placement within the hover area. The content's geometry, whenever
-    * it changes, will be used to decide on a best location, not
+    * it changes, will be used to decide on a best location not
     * extrapolating the hover's parent object view to show it in (still
     * being the hover's target determinant of its medium part -- move and
     * resize it to simulate finger sizes, for example). If one of the
@@ -10966,8 +10829,8 @@ extern "C" {
     * @li full: Items will be placed between the descent and ascent, or the
     * lowest point in the line and its highest.
     *
-    * The next image shows different configurations of items and how
-    * the previously mentioned options affect their sizes. In all cases,
+    * The next image shows different configurations of items and how they
+    * are the previously mentioned options affect their sizes. In all cases,
     * the green line indicates the ascent, blue for the baseline and red for
     * the descent.
     *
@@ -11241,45 +11104,6 @@ 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
@@ -11707,47 +11531,6 @@ extern "C" {
     * @see elm_entry_file_set()
     */
    EAPI Eina_Bool    elm_entry_autosave_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-
-   /**
-    * @enum _Elm_CNP_Mode
-    * @typedef Elm_CNP_Mode
-    * Enum of entry's copy & paste policy.
-    *
-    * @see elm_entry_cnp_mode_set()
-    * @see elm_entry_cnp_mode_get()
-    */
-   typedef enum _Elm_CNP_Mode {
-      ELM_CNP_MODE_MARKUP = 0,       /**< copy & paste text with markup tag */
-      ELM_CNP_MODE_NO_IMAGE = 1,     /**< copy & paste text without item(image) tag */
-      ELM_CNP_MODE_PLAINTEXT = 2     /**< copy & paste text without markup tag */
-   } Elm_CNP_Mode;
-
-   /**
-    * Control pasting of text and images for the widget.
-    *
-    * Normally the entry allows both text and images to be pasted.
-    * By setting textonly to be ELM_CNP_MODE_NO_IMAGE, this prevents images from being copy or past.
-    * By setting textonly to be ELM_CNP_MODE_PLAINTEXT, this remove all tags in text .
-    *
-    * @note this only changes the behaviour of text.
-    *
-    * @param obj The entry object
-    * @param mode One of #Elm_CNP_Mode: #ELM_CNP_MODE_MARKUP,
-    * #ELM_CNP_MODE_NO_IMAGE, #ELM_CNP_MODE_PLAINTEXT.
-    */
-   EAPI void         elm_entry_cnp_mode_set(Evas_Object *obj, Elm_CNP_Mode cnp_mode) EINA_ARG_NONNULL(1);
-   /**
-    * Getting elm_entry text paste/drop mode.
-    *
-    * Normally the entry allows both text and images to be pasted.
-    * This gets the copy & paste mode of the entry.
-    *
-    * @param obj The entry object
-    * @return mode One of #Elm_CNP_Mode: #ELM_CNP_MODE_MARKUP,
-    * #ELM_CNP_MODE_NO_IMAGE, #ELM_CNP_MODE_PLAINTEXT.
-    */
-   EAPI Elm_CNP_Mode elm_entry_cnp_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-
    /**
     * Control pasting of text and images for the widget.
     *
@@ -12615,11 +12398,8 @@ extern "C" {
     * @param content The given content of the bubble
     *
     * This function sets the content shown on the middle of the bubble.
-    * 
-    * @deprecated use elm_object_content_set() instead
-    *
     */
-   WILL_DEPRECATE  EAPI void         elm_bubble_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
+   EAPI void         elm_bubble_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
    /**
     * Get the content shown in the bubble
     *
@@ -12627,11 +12407,8 @@ extern "C" {
     *
     * @param obj The bubble object
     * @return The content that is being used
-    *
-    * @deprecated use elm_object_content_get() instead
-    *
     */
-   WILL_DEPRECATE  EAPI Evas_Object *elm_bubble_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object *elm_bubble_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * Unset the content shown in the bubble
     *
@@ -12639,11 +12416,8 @@ extern "C" {
     *
     * @param obj The bubble object
     * @return The content that was being used
-    *
-    * @deprecated use elm_object_content_unset() instead
-    *
     */
-   WILL_DEPRECATE  EAPI Evas_Object *elm_bubble_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object *elm_bubble_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * Set the icon of the bubble
     *
@@ -13576,7 +13350,7 @@ extern "C" {
     */
    typedef enum _Elm_Web_Zoom_Mode
      {
-        ELM_WEB_ZOOM_MODE_MANUAL = 0, /**< Zoom controlled normally by elm_web_zoom_set */
+        ELM_WEB_ZOOM_MODE_MANUAL = 0, /**< Zoom controled normally by elm_web_zoom_set */
         ELM_WEB_ZOOM_MODE_AUTO_FIT, /**< Zoom until content fits in web object */
         ELM_WEB_ZOOM_MODE_AUTO_FILL, /**< Zoom until content fills web object */
         ELM_WEB_ZOOM_MODE_LAST
@@ -17155,6 +16929,7 @@ 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.
@@ -17167,7 +16942,6 @@ 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.
@@ -17598,7 +17372,7 @@ extern "C" {
     * @ingroup Slider
     * @deprecated use elm_object_text_get() instead.
     */
-   WILL_DEPRECATE  EAPI const char        *elm_slider_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI const char        *elm_slider_label_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Set the icon object of the slider object.
@@ -17619,7 +17393,7 @@ extern "C" {
     * @ingroup Slider
     * @deprecated use elm_object_part_content_set() instead.
     */
-   WILL_DEPRECATE  EAPI void               elm_slider_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
+   EAPI void               elm_slider_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
 
    /**
     * Unset an icon set on a given slider widget.
@@ -17640,7 +17414,7 @@ extern "C" {
     *
     * @ingroup Slider
     */
-   WILL_DEPRECATE  EAPI Evas_Object       *elm_slider_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object       *elm_slider_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Retrieve the icon object set for a given slider widget.
@@ -17659,7 +17433,7 @@ extern "C" {
     *
     * @ingroup Slider
     */
-   WILL_DEPRECATE  EAPI Evas_Object       *elm_slider_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object       *elm_slider_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Set the end object of the slider object.
@@ -17681,7 +17455,7 @@ extern "C" {
     *
     * @ingroup Slider
     */
-   WILL_DEPRECATE  EAPI void               elm_slider_end_set(Evas_Object *obj, Evas_Object *end) EINA_ARG_NONNULL(1);
+   EAPI void               elm_slider_end_set(Evas_Object *obj, Evas_Object *end) EINA_ARG_NONNULL(1);
 
    /**
     * Unset an end object set on a given slider widget.
@@ -17704,7 +17478,7 @@ extern "C" {
     *
     * @ingroup Slider
     */
-   WILL_DEPRECATE  EAPI Evas_Object       *elm_slider_end_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object       *elm_slider_end_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Retrieve the end object set for a given slider widget.
@@ -17725,7 +17499,7 @@ extern "C" {
     *
     * @ingroup Slider
     */
-   WILL_DEPRECATE  EAPI Evas_Object       *elm_slider_end_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object       *elm_slider_end_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Set the (exact) length of the bar region of a given slider widget.
@@ -18278,7 +18052,7 @@ extern "C" {
     *   theme. It must return @c NULL, when no content is desired, or a valid
     *   object handle, otherwise.  The object will be deleted by the genlist on
     *   its deletion or when the item is "unrealized".  See
-    *   #Elm_Genlist_Item_Content_Get_Cb.
+    *   #Elm_Genlist_Item_Icon_Get_Cb.
     * - @c func.state_get - The @c part parameter is the name string of one of
     *   the state parts in the Edje group implementing the item's theme. Return
     *   @c EINA_FALSE for false/off or @c EINA_TRUE for true/on. Genlists will
@@ -18377,7 +18151,7 @@ extern "C" {
     * If the application wants multiple items to be able to be selected,
     * elm_genlist_multi_select_set() can enable this. If the list is
     * single-selection only (the default), then elm_genlist_selected_item_get()
-    * will return the selected item, if any, or NULL if none is selected. If the
+    * will return the selected item, if any, or NULL I none is selected. If the
     * list is multi-select then elm_genlist_selected_items_get() will return a
     * list (that is only valid as long as no items are modified (added, deleted,
     * selected or unselected)).
@@ -18634,13 +18408,11 @@ extern "C" {
     *
     * This removes (and deletes) all items in @p obj, leaving it empty.
     *
-    * This is deprecated. Please use elm_gen_clear() instead.
-    * 
     * @see elm_genlist_item_del(), to remove just one item.
     *
     * @ingroup Genlist
     */
-   WILL_DEPRECATE  EAPI void elm_genlist_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI void elm_genlist_clear(Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * Enable or disable multi-selection in the genlist
     *
@@ -18709,17 +18481,15 @@ extern "C" {
     *
     * Items will only call their selection func and callback when first
     * becoming selected. Any further clicks will do nothing, unless you
-    * enable always select with elm_gen_always_select_mode_set().
+    * enable always select with elm_genlist_always_select_mode_set().
     * This means that, even if selected, every click will make the selected
     * callbacks be called.
-    * 
-    * This function is deprecated. please see elm_gen_always_select_mode_set()
     *
     * @see elm_genlist_always_select_mode_get()
     *
     * @ingroup Genlist
     */
-   WILL_DEPRECATE  EAPI void              elm_genlist_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select) EINA_ARG_NONNULL(1);
+   EAPI void              elm_genlist_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select) EINA_ARG_NONNULL(1);
    /**
     * Get the always select mode.
     *
@@ -18731,7 +18501,7 @@ extern "C" {
     *
     * @ingroup Genlist
     */
-   WILL_DEPRECATE  EAPI Eina_Bool         elm_genlist_always_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Eina_Bool         elm_genlist_always_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * Enable/disable the no select mode.
     *
@@ -18746,7 +18516,7 @@ extern "C" {
     *
     * @ingroup Genlist
     */
-   WILL_DEPRECATE  EAPI void              elm_genlist_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select) EINA_ARG_NONNULL(1);
+   EAPI void              elm_genlist_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select) EINA_ARG_NONNULL(1);
    /**
     * Gets whether the no select mode is enabled.
     *
@@ -18758,7 +18528,7 @@ extern "C" {
     *
     * @ingroup Genlist
     */
-   WILL_DEPRECATE  EAPI Eina_Bool         elm_genlist_no_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Eina_Bool         elm_genlist_no_select_mode_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * Enable/disable compress mode.
     *
@@ -18840,7 +18610,7 @@ extern "C" {
     *
     * @ingroup Genlist
     */
-   WILL_DEPRECATE  EAPI void              elm_genlist_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
+   EAPI void              elm_genlist_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce) EINA_ARG_NONNULL(1);
    /**
     * Get whether the horizontal and vertical bouncing effect is enabled.
     *
@@ -18854,7 +18624,7 @@ extern "C" {
     *
     * @ingroup Genlist
     */
-   WILL_DEPRECATE  EAPI void              elm_genlist_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
+   EAPI void              elm_genlist_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) EINA_ARG_NONNULL(1);
    /**
     * Enable/disable homogenous mode.
     *
@@ -19172,7 +18942,7 @@ extern "C" {
     *
     * @ingroup Genlist
     */
-   WILL_DEPRECATE  EAPI Elm_Genlist_Item *elm_genlist_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Elm_Genlist_Item *elm_genlist_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * Get the last item in the genlist
     *
@@ -19182,7 +18952,7 @@ extern "C" {
     *
     * @ingroup Genlist
     */
-   WILL_DEPRECATE  EAPI Elm_Genlist_Item *elm_genlist_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Elm_Genlist_Item *elm_genlist_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * Set the scrollbar policy
     *
@@ -19230,7 +19000,7 @@ extern "C" {
     *
     * @ingroup Genlist
     */
-   WILL_DEPRECATE  EAPI Elm_Genlist_Item  *elm_genlist_item_next_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
+   EAPI Elm_Genlist_Item  *elm_genlist_item_next_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
    /**
     * Get the @b previous item in a genlist widget's internal list of items,
     * given a handle to one of those items.
@@ -19246,7 +19016,7 @@ extern "C" {
     *
     * @ingroup Genlist
     */
-   WILL_DEPRECATE  EAPI Elm_Genlist_Item  *elm_genlist_item_prev_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
+   EAPI Elm_Genlist_Item  *elm_genlist_item_prev_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
    /**
     * Get the genlist object's handle which contains a given genlist
     * item
@@ -19256,11 +19026,9 @@ extern "C" {
     *
     * This returns the genlist object itself that an item belongs to.
     *
-    * This function is deprecated. Please use elm_gen_item_widget_get()
-    * 
     * @ingroup Genlist
     */
-   WILL_DEPRECATE  EAPI Evas_Object       *elm_genlist_item_genlist_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object       *elm_genlist_item_genlist_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
    /**
     * Get the parent item of the given item
     *
@@ -19303,7 +19071,7 @@ extern "C" {
     *
     * @ingroup Genlist
     */
-   WILL_DEPRECATE  EAPI void elm_genlist_item_selected_set(Elm_Genlist_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1);
+   EAPI void elm_genlist_item_selected_set(Elm_Genlist_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1);
    /**
     * Get whether a given genlist item is selected or not
     *
@@ -19314,7 +19082,7 @@ extern "C" {
     *
     * @ingroup Genlist
     */
-   WILL_DEPRECATE  EAPI Eina_Bool elm_genlist_item_selected_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
+   EAPI Eina_Bool elm_genlist_item_selected_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
    /**
     * Sets the expanded state of an item.
     *
@@ -19577,7 +19345,7 @@ extern "C" {
     * @ingroup Genlist
     */
    EAPI void               elm_genlist_item_contents_orphan(Elm_Genlist_Item *it) EINA_ARG_NONNULL(1);
-   WILL_DEPRECATE  EAPI void               elm_genlist_item_icons_orphan(Elm_Genlist_Item *it) EINA_ARG_NONNULL(1);
+   EAPI void               elm_genlist_item_icons_orphan(Elm_Genlist_Item *it) EINA_ARG_NONNULL(1);
    /**
     * Get the real Evas object created to implement the view of a
     * given genlist item
@@ -19728,26 +19496,6 @@ extern "C" {
     */
    EAPI const char        *elm_genlist_item_tooltip_style_get(const Elm_Genlist_Item *item) EINA_ARG_NONNULL(1);
    /**
-    * @brief Disable size restrictions on an object's tooltip
-    * @param item The tooltip's anchor object
-    * @param disable If EINA_TRUE, size restrictions are disabled
-    * @return EINA_FALSE on failure, EINA_TRUE on success
-    *
-    * This function allows a tooltip to expand beyond its parant window's canvas.
-    * It will instead be limited only by the size of the display.
-    */
-   EAPI Eina_Bool          elm_genlist_item_tooltip_size_restrict_disable(Elm_Genlist_Item *item, Eina_Bool disable);
-   /**
-    * @brief Retrieve size restriction state of an object's tooltip
-    * @param item The tooltip's anchor object
-    * @return If EINA_TRUE, size restrictions are disabled
-    *
-    * This function returns whether a tooltip is allowed to expand beyond
-    * its parant window's canvas.
-    * It will instead be limited only by the size of the display.
-    */
-   EAPI Eina_Bool          elm_genlist_item_tooltip_size_restrict_disabled_get(const Elm_Genlist_Item *item);
-   /**
     * Set the type of mouse pointer/cursor decoration to be shown,
     * when the mouse pointer is over the given genlist widget item
     *
@@ -20267,7 +20015,7 @@ extern "C" {
     * @deprecated use elm_object_part_content_set() instead.
     *
     */
-   WILL_DEPRECATE  EAPI void         elm_radio_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
+   EAPI void         elm_radio_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
    /**
     * @brief Get the icon object of the radio object
     *
@@ -20279,7 +20027,7 @@ extern "C" {
     * @deprecated use elm_object_part_content_get() instead.
     *
     */
-   WILL_DEPRECATE  EAPI Evas_Object *elm_radio_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object *elm_radio_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * @brief Unset the icon used for the radio object
     *
@@ -20292,7 +20040,7 @@ extern "C" {
     * @deprecated use elm_object_part_content_unset() instead.
     *
     */
-   WILL_DEPRECATE  EAPI Evas_Object *elm_radio_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object *elm_radio_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * @brief Add this radio to a group of other radio objects
     *
@@ -20366,47 +20114,37 @@ extern "C" {
     * @image html img/widget/pager/preview-00.png
     * @image latex img/widget/pager/preview-00.eps
     *
-    * @brief Widget that allows flipping between one or more “pages”
-    * of objects.
-    *
-    * The flipping between pages of objects is animated. All content
-    * in the pager is kept in a stack, being the last content added
-    * (visible one) on the top of that stack.
-    *
-    * Objects can be pushed or popped from the stack or deleted as
-    * well. Pushes and pops will animate the widget accordingly to its
-    * style (a pop will also delete the child object once the
-    * animation is finished). Any object already in the pager can be
-    * promoted to the top (from its current stacking position) through
-    * the use of elm_pager_content_promote(). New objects are pushed
-    * to the top with elm_pager_content_push(). When the top item is
-    * no longer wanted, simply pop it with elm_pager_content_pop() and
-    * it will also be deleted. If an object is no longer needed and is
-    * not the top item, just delete it as normal. You can query which
-    * objects are the top and bottom with
+    * @brief Widget that allows flipping between 1 or more “pages” of objects.
+    *
+    * The flipping between “pages” of objects is animated. All content in pager
+    * is kept in a stack, the last content to be added will be on the top of the
+    * stack(be visible).
+    *
+    * Objects can be pushed or popped from the stack or deleted as normal.
+    * Pushes and pops will animate (and a pop will delete the object once the
+    * animation is finished). Any object already in the pager can be promoted to
+    * the top(from its current stacking position) through the use of
+    * elm_pager_content_promote(). Objects are pushed to the top with
+    * elm_pager_content_push() and when the top item is no longer wanted, simply
+    * pop it with elm_pager_content_pop() and it will also be deleted. If an
+    * object is no longer needed and is not the top item, just delete it as
+    * normal. You can query which objects are the top and bottom with
     * elm_pager_content_bottom_get() and elm_pager_content_top_get().
     *
     * Signals that you can add callbacks for are:
-    * - @c "show,finished" - when a new page is actually shown on the top
-    * - @c "hide,finished" - when a previous page is hidden
-    *
-    * Only after the first of that signals the child object is
-    * guaranteed to be visible, as in @c evas_object_visible_get().
+    * "hide,finished" - when the previous page is hided
     *
     * This widget has the following styles available:
-    * - @c "default"
-    * - @c "fade"
-    * - @c "fade_translucide"
-    * - @c "fade_invisible"
-    *
-    * @note These styles affect only the flipping animations on the
-    * default theme; the appearance when not animating is unaffected
-    * by them.
+    * @li default
+    * @li fade
+    * @li fade_translucide
+    * @li fade_invisible
+    * @note This styles affect only the flipping animations, the appearance when
+    * not animating is unaffected by styles.
     *
     * @ref tutorial_pager gives a good overview of the usage of the API.
     * @{
     */
-
    /**
     * Add a new pager to the parent
     *
@@ -20416,7 +20154,6 @@ extern "C" {
     * @ingroup Pager
     */
    EAPI Evas_Object *elm_pager_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
-
    /**
     * @brief Push an object to the top of the pager stack (and show it).
     *
@@ -20432,7 +20169,6 @@ extern "C" {
     * undefined behavior.
     */
    EAPI void         elm_pager_content_push(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
-
    /**
     * @brief Pop the object that is on top of the stack
     *
@@ -20443,7 +20179,6 @@ extern "C" {
     * the stack will become visible.
     */
    EAPI void         elm_pager_content_pop(Evas_Object *obj) EINA_ARG_NONNULL(1);
-
    /**
     * @brief Moves an object already in the pager stack to the top of the stack.
     *
@@ -20459,7 +20194,6 @@ extern "C" {
     * results in undefined behavior.
     */
    EAPI void         elm_pager_content_promote(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
-
    /**
     * @brief Return the object at the bottom of the pager stack
     *
@@ -20467,7 +20201,6 @@ extern "C" {
     * @return The bottom object or NULL if none
     */
    EAPI Evas_Object *elm_pager_content_bottom_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
-
    /**
     * @brief  Return the object at the top of the pager stack
     *
@@ -21534,7 +21267,7 @@ extern "C" {
     *
     * @ingroup Progressbar
     */
-   WILL_DEPRECATE  EAPI void         elm_progressbar_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
+   EAPI void         elm_progressbar_icon_set(Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
 
    /**
     * Retrieve the icon object set for a given progress bar widget
@@ -21548,7 +21281,7 @@ extern "C" {
     *
     * @ingroup Progressbar
     */
-   WILL_DEPRECATE  EAPI Evas_Object *elm_progressbar_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object *elm_progressbar_icon_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Unset an icon set on a given progress bar widget
@@ -21565,7 +21298,7 @@ extern "C" {
     *
     * @ingroup Progressbar
     */
-   WILL_DEPRECATE  EAPI Evas_Object *elm_progressbar_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object *elm_progressbar_icon_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Set the (exact) length of the bar region of a given progress bar
@@ -22989,6 +22722,28 @@ extern "C" {
     */
    EAPI void                  elm_map_geo_region_get(const Evas_Object *obj, double *lon, double *lat) EINA_ARG_NONNULL(1);
 
+
+   /**
+    * @brief Disable size restrictions on an object's tooltip
+    * @param item The tooltip's anchor object
+    * @param disable If EINA_TRUE, size restrictions are disabled
+    * @return EINA_FALSE on failure, EINA_TRUE on success
+    *
+    * This function allows a tooltip to expand beyond its parant window's canvas.
+    * It will instead be limited only by the size of the display.
+    */
+   EAPI Eina_Bool        elm_list_item_tooltip_size_restrict_disable(Elm_List_Item *item, Eina_Bool disable) EINA_ARG_NONNULL(1);
+   /**
+    * @brief Retrieve size restriction state of an object's tooltip
+    * @param obj The tooltip's anchor object
+    * @return If EINA_TRUE, size restrictions are disabled
+    *
+    * This function returns whether a tooltip is allowed to expand beyond
+    * its parant window's canvas.
+    * It will instead be limited only by the size of the display.
+    */
+   EAPI Eina_Bool        elm_list_item_tooltip_size_restrict_disabled_get(const Elm_List_Item *item) EINA_ARG_NONNULL(1);
+
    /**
     * Animatedly bring in given coordinates to the center of the map.
     *
@@ -24188,11 +23943,8 @@ extern "C" {
     * Once the content object is set, a previously set one will be deleted.
     * If you want to keep that old content object, use the
     * elm_panel_content_unset() function.
-    *
-    * @deprecated use elm_object_content_set() instead
-    *
     */
-   WILL_DEPRECATE  EAPI void                  elm_panel_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
+   EAPI void                  elm_panel_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
    /**
     * @brief Get the content of the panel.
     *
@@ -24202,11 +23954,8 @@ extern "C" {
     * Return the content object which is set for this widget.
     *
     * @see elm_panel_content_set()
-    * 
-    * @deprecated use elm_object_content_get() instead
-    *
     */
-   WILL_DEPRECATE  EAPI Evas_Object          *elm_panel_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object          *elm_panel_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * @brief Unset the content of the panel.
     *
@@ -24216,11 +23965,8 @@ extern "C" {
     * Unparent and return the content object which was set for this widget.
     *
     * @see elm_panel_content_set()
-    *
-    * @deprecated use elm_object_content_unset() instead
-    *
     */
-   WILL_DEPRECATE  EAPI Evas_Object          *elm_panel_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object          *elm_panel_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * @brief Set the state of the panel.
     *
@@ -24408,7 +24154,7 @@ extern "C" {
     *
     * @ingroup Panes
     */
-   WILL_DEPRECATE  EAPI Evas_Object          *elm_panes_content_right_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object          *elm_panes_content_right_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Get the size proportion of panes widget's left side.
@@ -24892,11 +24638,9 @@ extern "C" {
     * @see elm_object_content_unset()
     * @see elm_object_content_get()
     *
-    * @deprecated use elm_object_content_set() instead
-    *
     * @ingroup Conformant
     */
-   WILL_DEPRECATE  EAPI void         elm_conformant_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
+   EAPI void         elm_conformant_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
 
    /**
     * Get the content of the conformant widget.
@@ -24911,11 +24655,9 @@ extern "C" {
     * @see elm_object_content_set().
     * @see elm_object_content_unset()
     *
-    * @deprecated use elm_object_content_get() instead
-    *
     * @ingroup Conformant
     */
-   WILL_DEPRECATE  EAPI Evas_Object *elm_conformant_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object *elm_conformant_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Unset the content of the conformant widget.
@@ -24927,11 +24669,9 @@ extern "C" {
     *
     * @see elm_object_content_set().
     *
-    * @deprecated use elm_object_content_unset() instead
-    *
     * @ingroup Conformant
     */
-   EINA_DEPRECATED EAPI Evas_Object *elm_conformant_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object *elm_conformant_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Returns the Evas_Object that represents the content area.
@@ -25000,11 +24740,9 @@ extern "C" {
     *
     * To enable map, elm_mapbuf_enabled_set() should be used.
     *
-    * @deprecated use elm_object_content_set() instead
-    *
     * @ingroup Mapbuf
     */
-   WILL_DEPRECATE  EAPI void         elm_mapbuf_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
+   EAPI void         elm_mapbuf_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1);
 
    /**
     * Get the content of the mapbuf.
@@ -25016,11 +24754,9 @@ extern "C" {
     *
     * @see elm_mapbuf_content_set() for details.
     *
-    * @deprecated use elm_object_content_get() instead
-    *
     * @ingroup Mapbuf
     */
-   WILL_DEPRECATE  EAPI Evas_Object *elm_mapbuf_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object *elm_mapbuf_content_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Unset the content of the mapbuf.
@@ -25032,11 +24768,9 @@ extern "C" {
     *
     * @see elm_mapbuf_content_set() for details.
     *
-    * @deprecated use elm_object_content_unset() instead
-    *
     * @ingroup Mapbuf
     */
-   WILL_DEPRECATE  EAPI Evas_Object *elm_mapbuf_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object *elm_mapbuf_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Enable or disable the map.
@@ -25182,6 +24916,8 @@ extern "C" {
     * @{
     */
 
+   typedef struct _Elm_Flipselector_Item Elm_Flipselector_Item; /**< Item handle for a flip selector widget. */
+
    /**
     * Add a new flip selector widget to the given parent Elementary
     * (container) widget
@@ -25246,7 +24982,7 @@ extern "C" {
     *
     * @ingroup Flipselector
     */
-   EAPI Elm_Object_Item     *elm_flipselector_item_append(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data) EINA_ARG_NONNULL(1);
+   EAPI Elm_Flipselector_Item     *elm_flipselector_item_append(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data) EINA_ARG_NONNULL(1);
 
    /**
     * Prepend a (text) item to a flip selector widget
@@ -25272,19 +25008,19 @@ extern "C" {
     *
     * @ingroup Flipselector
     */
-   EAPI Elm_Object_Item     *elm_flipselector_item_prepend(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data) EINA_ARG_NONNULL(1);
+   EAPI Elm_Flipselector_Item     *elm_flipselector_item_prepend(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data) EINA_ARG_NONNULL(1);
 
    /**
     * Get the internal list of items in a given flip selector widget.
     *
     * @param obj The flipselector object
-    * @return The list of items (#Elm_Object_Item as data) or
+    * @return The list of items (#Elm_Flipselector_Item as data) or
     * @c NULL on errors.
     *
     * This list is @b not to be modified in any way and must not be
     * freed. Use the list members with functions like
-    * elm_object_item_text_set(),
-    * elm_object_item_text_get(),
+    * elm_flipselector_item_label_set(),
+    * elm_flipselector_item_label_get(),
     * elm_flipselector_item_del(),
     * elm_flipselector_item_selected_get(),
     * elm_flipselector_item_selected_set().
@@ -25310,7 +25046,7 @@ extern "C" {
     *
     * @ingroup Flipselector
     */
-   EAPI Elm_Object_Item     *elm_flipselector_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Elm_Flipselector_Item     *elm_flipselector_first_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Get the last item in the given flip selector widget's list of
@@ -25325,7 +25061,7 @@ extern "C" {
     *
     * @ingroup Flipselector
     */
-   EAPI Elm_Object_Item     *elm_flipselector_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Elm_Flipselector_Item     *elm_flipselector_last_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Get the currently selected item in a flip selector widget.
@@ -25336,13 +25072,13 @@ extern "C" {
     *
     * @ingroup Flipselector
     */
-   EAPI Elm_Object_Item     *elm_flipselector_selected_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Elm_Flipselector_Item     *elm_flipselector_selected_item_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
 
    /**
     * Set whether a given flip selector widget's item should be the
     * currently selected one.
     *
-    * @param it The flip selector item
+    * @param item The flip selector item
     * @param selected @c EINA_TRUE to select it, @c EINA_FALSE to unselect.
     *
     * This sets whether @p item is or not the selected (thus, under
@@ -25355,13 +25091,13 @@ extern "C" {
     *
     * @ingroup Flipselector
     */
-   EAPI void                       elm_flipselector_item_selected_set(Elm_Object_Item *it, Eina_Bool selected) EINA_ARG_NONNULL(1);
+   EAPI void                       elm_flipselector_item_selected_set(Elm_Flipselector_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1);
 
    /**
     * Get whether a given flip selector widget's item is the currently
     * selected one.
     *
-    * @param it The flip selector item
+    * @param item The flip selector item
     * @return @c EINA_TRUE, if it's selected, @c EINA_FALSE otherwise
     * (or on errors).
     *
@@ -25369,48 +25105,46 @@ extern "C" {
     *
     * @ingroup Flipselector
     */
-   EAPI Eina_Bool                  elm_flipselector_item_selected_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+   EAPI Eina_Bool                  elm_flipselector_item_selected_get(const Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1);
 
    /**
     * Delete a given item from a flip selector widget.
     *
-    * @param it The item to delete
+    * @param item The item to delete
     *
     * @ingroup Flipselector
     */
-   EAPI void                       elm_flipselector_item_del(Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+   EAPI void                       elm_flipselector_item_del(Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1);
 
    /**
     * Get the label of a given flip selector widget's item.
     *
-    * @param it The item to get label from
+    * @param item The item to get label from
     * @return The text label of @p item or @c NULL, on errors
     *
-    * @see elm_object_item_text_set()
+    * @see elm_flipselector_item_label_set()
     *
-    * @deprecated see elm_object_item_text_get() instead
     * @ingroup Flipselector
     */
-   EINA_DEPRECATED EAPI const char                *elm_flipselector_item_label_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+   EAPI const char                *elm_flipselector_item_label_get(const Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1);
 
    /**
     * Set the label of a given flip selector widget's item.
     *
-    * @param it The item to set label on
+    * @param item The item to set label on
     * @param label The text label string, in UTF-8 encoding
     *
-    * @see elm_object_item_text_get()
+    * @see elm_flipselector_item_label_get()
     *
-        * @deprecated see elm_object_item_text_set() instead
     * @ingroup Flipselector
     */
-   EINA_DEPRECATED EAPI void                       elm_flipselector_item_label_set(Elm_Object_Item *it, const char *label) EINA_ARG_NONNULL(1);
+   EAPI void                       elm_flipselector_item_label_set(Elm_Flipselector_Item *item, const char *label) EINA_ARG_NONNULL(1);
 
    /**
     * Gets the item before @p item in a flip selector widget's
     * internal list of items.
     *
-    * @param it The item to fetch previous from
+    * @param item The item to fetch previous from
     * @return The item before the @p item, in its parent's list. If
     *         there is no previous item for @p item or there's an
     *         error, @c NULL is returned.
@@ -25419,13 +25153,13 @@ extern "C" {
     *
     * @ingroup Flipselector
     */
-   EAPI Elm_Object_Item     *elm_flipselector_item_prev_get(Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+   EAPI Elm_Flipselector_Item     *elm_flipselector_item_prev_get(Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1);
 
    /**
     * Gets the item after @p item in a flip selector widget's
     * internal list of items.
     *
-    * @param it The item to fetch next from
+    * @param item The item to fetch next from
     * @return The item after the @p item, in its parent's list. If
     *         there is no next item for @p item or there's an
     *         error, @c NULL is returned.
@@ -25434,7 +25168,7 @@ extern "C" {
     *
     * @ingroup Flipselector
     */
-   EAPI Elm_Object_Item     *elm_flipselector_item_next_get(Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+   EAPI Elm_Flipselector_Item     *elm_flipselector_item_next_get(Elm_Flipselector_Item *item) EINA_ARG_NONNULL(1);
 
    /**
     * Set the interval on time updates for an user mouse button hold
@@ -26820,12 +26554,6 @@ extern "C" {
     * Default contents parts of the ctxpopup widget that you can use for are:
     * @li "default" - A content of the ctxpopup
     *
-    * Default contents parts of the naviframe items that you can use for are:
-    * @li "icon" - A icon in the title area
-    * 
-    * Default text parts of the naviframe items that you can use for are:
-    * @li "default" - Title label in the title area
-    *
     * @ref tutorial_ctxpopup shows the usage of a good deal of the API.
     * @{
     */
@@ -26926,9 +26654,8 @@ extern "C" {
     * @param disabled @c EINA_TRUE to disable it, @c EINA_FALSE to enable it
     *
     * When disabled the item is greyed out to indicate it's state.
-    * @deprecated use elm_object_item_disabled_set() instead
     */
-   WILL_DEPRECATE  EAPI void          elm_ctxpopup_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled) EINA_ARG_NONNULL(1);
+   EAPI void          elm_ctxpopup_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled) EINA_ARG_NONNULL(1);
    /**
     * @brief Get the ctxpopup item's disabled/enabled state.
     *
@@ -26948,10 +26675,8 @@ extern "C" {
     *
     * @see elm_ctxpopup_item_append()
     * @see elm_ctxpopup_item_icon_set()
-    *
-    * @deprecated use elm_object_item_part_content_get() instead
     */
-   WILL_DEPRECATE  EAPI Evas_Object  *elm_ctxpopup_item_icon_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object  *elm_ctxpopup_item_icon_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
    /**
     * @brief Sets the side icon associated with the ctxpopup item
     *
@@ -26963,11 +26688,8 @@ extern "C" {
     * dissapear from the first item.
     *
     * @see elm_ctxpopup_item_append()
-    *  
-    * @deprecated use elm_object_item_part_content_set() instead
-    *
     */
-   WILL_DEPRECATE  EAPI void          elm_ctxpopup_item_icon_set(Elm_Object_Item *it, Evas_Object *icon) EINA_ARG_NONNULL(1);
+   EAPI void          elm_ctxpopup_item_icon_set(Elm_Object_Item *it, Evas_Object *icon) EINA_ARG_NONNULL(1);
    /**
     * @brief Get the label for the given ctxpopup item.
     *
@@ -26977,19 +26699,15 @@ extern "C" {
     *
     * @see elm_ctxpopup_item_append()
     * @see elm_ctxpopup_item_label_set()
-    *
-    * @deprecated use elm_object_item_text_get() instead
     */
-   WILL_DEPRECATE  EAPI const char   *elm_ctxpopup_item_label_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
+   EAPI const char   *elm_ctxpopup_item_label_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
    /**
     * @brief (Re)set the label on the given ctxpopup item.
     *
     * @param it Ctxpopup item
     * @param label String to set as label
-    *
-    * @deprecated use elm_object_item_text_set() instead
     */
-   WILL_DEPRECATE  EAPI void          elm_ctxpopup_item_label_set(Elm_Object_Item *it, const char *label) EINA_ARG_NONNULL(1);
+   EAPI void          elm_ctxpopup_item_label_set(Elm_Object_Item *it, const char *label) EINA_ARG_NONNULL(1);
    /**
     * @brief Set an elm widget as the content of the ctxpopup.
     *
@@ -27000,13 +26718,12 @@ extern "C" {
     * you want to keep that old content object, use the
     * elm_ctxpopup_content_unset() function.
     *
+    * @deprecated use elm_object_content_set()
+    *
     * @warning Ctxpopup can't hold both a item list and a content at the same
     * time. When a content is set, any previous items will be removed.
-    * 
-    * @deprecated use elm_object_content_set() instead
-    *
     */
-   WILL_DEPRECATE  EAPI void          elm_ctxpopup_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1, 2);
+   EAPI void          elm_ctxpopup_content_set(Evas_Object *obj, Evas_Object *content) EINA_ARG_NONNULL(1, 2);
    /**
     * @brief Unset the ctxpopup content
     *
@@ -27018,11 +26735,8 @@ extern "C" {
     * @deprecated use elm_object_content_unset()
     *
     * @see elm_ctxpopup_content_set()
-    *
-    * @deprecated use elm_object_content_unset() instead
-    *
     */
-   WILL_DEPRECATE  EAPI Evas_Object  *elm_ctxpopup_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object  *elm_ctxpopup_content_unset(Evas_Object *obj) EINA_ARG_NONNULL(1);
    /**
     * @brief Set the direction priority of a ctxpopup.
     *
@@ -27991,95 +27705,18 @@ extern "C" {
 #define ELM_STORE_ITEM_MAPPING_END { ELM_STORE_ITEM_MAPPING_NONE, NULL, 0, { .empty = { EINA_TRUE } } }
 #define ELM_STORE_ITEM_MAPPING_OFFSET(st, it) offsetof(st, it)
 
-   /**
-    * dbsystem Store object
-    *
-    * @addtogroup DBStore
-    * @{
-    *
-    * @return The new object or NULL if it cannot be created
-    */
    EAPI Elm_Store              *elm_store_dbsystem_new(void);
-   /**
-    * Sets the item count of a store
-    *
-    * @param st The store object
-    * @param count The item count of an store
-    */
    EAPI void                    elm_store_item_count_set(Elm_Store *st, int count) EINA_ARG_NONNULL(1);
-   /**
-    * Set the select func that select the state of a list item whether true or false
-    *
-    * @param st The store object
-    * @param func The select cb function of an store
-    * @param data The new data pointer to set
-    */
    EAPI void                    elm_store_item_select_func_set(Elm_Store *st, Elm_Store_Item_Select_Cb func, const void *data) EINA_ARG_NONNULL(1);
-   /**
-    * Sets the sort func that sort the item with a next in the list
-    *
-    * @param st The store object
-    * @param func The sort cb function of an store
-    * @param data The new data pointer to set
-    */
    EAPI void                    elm_store_item_sort_func_set(Elm_Store *st, Elm_Store_Item_Sort_Cb func, const void *data) EINA_ARG_NONNULL(1);
-   /**
-    * Set the store item free func
-    *
-    * @param st The store object
-    * @param func The free cb function of an store
-    * @param data The new data pointer to set
-    */
    EAPI void                    elm_store_item_free_func_set(Elm_Store *st, Elm_Store_Item_Free_Cb func, const void *data) EINA_ARG_NONNULL(1);
-   /**
-    * Get the item index that included header items
-    *
-    * @param sti The store item object
-    * @return The item index in genlist
-    */
    EAPI int                     elm_store_item_data_index_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
-   /**
-    * Get the DB pointer of an item
-    *
-    * @param sti The store item object
-    * @return The DB pointer of item
-    */
    EAPI void                   *elm_store_dbsystem_db_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
-   /**
-    * Set the DB pointer of an item
-    *
-    * @param sti The store item object
-    * @parm p_db The DB pointer of item
-    */
    EAPI void                    elm_store_dbsystem_db_set(Elm_Store *store, void *pDB) EINA_ARG_NONNULL(1);
-   /**
-    */
    EAPI int                     elm_store_item_index_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
-   /**
-    * Append the item to the genlist
-    *
-    * @param st The store object
-    * @param info The store item info dbsystem object
-    * @return The item of store
-    */
    EAPI Elm_Store_Item         *elm_store_item_add(Elm_Store *st, Elm_Store_Item_Info *info) EINA_ARG_NONNULL(1);
-   /**
-    * Realize the visible items to the screen
-    *
-    * @param st The store object
-    */
    EAPI void                    elm_store_item_update(Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
-   /**
-    * Realize the item to the screen
-    *
-    * @param sti The store item object
-    */
    EAPI void                    elm_store_visible_items_update(Elm_Store *st) EINA_ARG_NONNULL(1);
-   /**
-    * Delete the item of genlist
-    *
-    * @param sti The store item object
-    */
    EAPI void                    elm_store_item_del(Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
    EAPI void                    elm_store_free(Elm_Store *st);
    EAPI Elm_Store              *elm_store_filesystem_new(void);
@@ -28103,9 +27740,6 @@ extern "C" {
    EAPI void                   *elm_store_item_data_get(Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
    EAPI const Elm_Store        *elm_store_item_store_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
    EAPI const Elm_Genlist_Item *elm_store_item_genlist_item_get(const Elm_Store_Item *sti) EINA_ARG_NONNULL(1);
-   /**
-    * @}
-    */
 
    /**
     * @defgroup SegmentControl SegmentControl
@@ -28906,6 +28540,84 @@ extern "C" {
    EAPI void         elm_popup_orient_set(Evas_Object *obj, Elm_Popup_Orient orient);
    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"
+
+   typedef enum
+     {
+        ELM_NAVIGATIONBAR_EX_BACK_BUTTON,
+        ELM_NAVIGATIONBAR_EX_FUNCTION_BUTTON1,
+        ELM_NAVIGATIONBAR_EX_FUNCTION_BUTTON2,
+        ELM_NAVIGATIONBAR_EX_FUNCTION_BUTTON3,
+        ELM_NAVIGATIONBAR_EX_MAX
+     } Elm_Navi_ex_Button_Type;
+   typedef struct _Elm_Navigationbar_ex_Item Elm_Navigationbar_ex_Item;
+
+   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_ex_add(Evas_Object *parent);
+   EINA_DEPRECATED    EAPI Elm_Navigationbar_ex_Item *elm_navigationbar_ex_item_push(Evas_Object *obj, Evas_Object *content, const char *item_style);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_item_pop(Evas_Object *obj);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_item_promote(Elm_Navigationbar_ex_Item* item);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_to_item_pop(Elm_Navigationbar_ex_Item* item);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_item_title_label_set(Elm_Navigationbar_ex_Item *item, const char *title);
+   EINA_DEPRECATED    EAPI const char  *elm_navigationbar_ex_item_title_label_get(Elm_Navigationbar_ex_Item* item);
+   EINA_DEPRECATED    EAPI Elm_Navigationbar_ex_Item *elm_navigationbar_ex_item_top_get(const Evas_Object *obj);
+   EINA_DEPRECATED    EAPI Elm_Navigationbar_ex_Item *elm_navigationbar_ex_item_bottom_get(const Evas_Object *obj);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_item_title_button_set(Elm_Navigationbar_ex_Item* item, char *btn_label, Evas_Object *icon, int button_type, Evas_Smart_Cb func, const void *data);
+   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_ex_item_title_button_get(Elm_Navigationbar_ex_Item* item, int button_type);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_item_title_object_set(Elm_Navigationbar_ex_Item* item, Evas_Object *title_obj);
+   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_ex_item_title_object_unset(Elm_Navigationbar_ex_Item* item);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_item_title_hidden_set(Elm_Navigationbar_ex_Item* item, Eina_Bool hidden);
+   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_ex_item_title_object_get(Elm_Navigationbar_ex_Item* item);
+   EINA_DEPRECATED    EAPI const char  *elm_navigationbar_ex_item_subtitle_label_get(Elm_Navigationbar_ex_Item* item);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_item_subtitle_label_set( Elm_Navigationbar_ex_Item* item, const char *subtitle);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_item_style_set(Elm_Navigationbar_ex_Item* item, const char* item_style);
+   EINA_DEPRECATED    EAPI const char  *elm_navigationbar_ex_item_style_get(Elm_Navigationbar_ex_Item* item);
+   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_ex_item_content_unset(Elm_Navigationbar_ex_Item* item);
+   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_ex_item_content_get(Elm_Navigationbar_ex_Item* item);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_delete_on_pop_set(Evas_Object *obj, Eina_Bool del_on_pop);
+   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_ex_item_icon_get(Elm_Navigationbar_ex_Item* item);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_item_icon_set(Elm_Navigationbar_ex_Item* item, Evas_Object *icon);
+   EINA_DEPRECATED    EAPI Evas_Object *elm_navigationbar_ex_item_title_button_unset(Elm_Navigationbar_ex_Item* item, int button_type);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_animation_disable_set(Evas_Object *obj, Eina_Bool disable);
+   EINA_DEPRECATED    EAPI void         elm_navigationbar_ex_title_object_visible_set(Elm_Navigationbar_ex_Item* item, Eina_Bool visible);
+   EINA_DEPRECATED    Eina_Bool         elm_navigationbar_ex_title_object_visible_get(Elm_Navigationbar_ex_Item* item);
+
    /**
     * @defgroup Naviframe Naviframe
     * @ingroup Elementary
@@ -29246,16 +28958,6 @@ extern "C" {
     * @}
     */
 
-   /**
-    * @defgroup Controlbar Controlbar
-    * @ingroup Elementary
-    * @addtogroup Controlbar
-    * @{
-    *
-    * This is a Controlbar. It can contain label and icon objects.
-    * In edit mode, you can change the location of items.
-    */
-
    /* Control Bar */
    #define CONTROLBAR_SYSTEM_ICON_ALBUMS "controlbar_albums"
    #define CONTROLBAR_SYSTEM_ICON_ARTISTS "controlbar_artists"
@@ -29279,398 +28981,55 @@ extern "C" {
      } Elm_Controlbar_Mode_Type;
 
    typedef struct _Elm_Controlbar_Item Elm_Controlbar_Item;
-   /**
-    * Add a new controlbar object
-    *
-    * @param parent The parent object
-    * @return The new object or NULL if it cannot be created
-    */
    EAPI Evas_Object *elm_controlbar_add(Evas_Object *parent);
-   /**
-    * Append new tab item
-    *
-    * @param   obj The controlbar object
-    * @param   icon_path The icon path of item
-    * @param   label The label of item
-    * @param   view The view of item
-    * @return  The item of controlbar
-    */
    EAPI Elm_Controlbar_Item *elm_controlbar_tab_item_append(Evas_Object *obj, const char *icon_path, const char *label, Evas_Object *view);
-   /**
-    * Prepend new tab item
-    *
-    * @param   obj The controlbar object
-    * @param   icon_path The icon path of item
-    * @param   label The label of item
-    * @param   view The view of item
-    * @return  The item of controlbar
-    */
    EAPI Elm_Controlbar_Item *elm_controlbar_tab_item_prepend(Evas_Object *obj, const char *icon_path, const char *label, Evas_Object *view);
-   /**
-    * Insert new tab item before given item
-    *
-    * @param   obj The controlbar object
-    * @param   before The given item
-    * @param   icon_path The icon path of item
-    * @param   label The label of item
-    * @param   view The view of item
-    * @return  The item of controlbar
-    */
    EAPI Elm_Controlbar_Item *elm_controlbar_tab_item_insert_before(Evas_Object *obj, Elm_Controlbar_Item *before, const char *icon_path, const char *label, Evas_Object *view);
-   /**
-    * Insert new tab item after given item
-    *
-    * @param   obj The controlbar object
-    * @param   after The given item
-    * @param   icon_path The icon path of item
-    * @param   label The label of item
-    * @param   view The view of item
-    * @return  The item of controlbar
-    */
    EAPI Elm_Controlbar_Item *elm_controlbar_tab_item_insert_after(Evas_Object *obj, Elm_Controlbar_Item *after, const char *icon_path, const char *label, Evas_Object *view);
-   /**
-    * Append new tool item
-    *
-    * @param   obj The controlbar object
-    * @param   icon_path The icon path of item
-    * @param   label The label of item
-    * @param   func Callback function of item
-    * @param   data The data of callback function
-    * @return  The item of controlbar
-    */
    EAPI Elm_Controlbar_Item *elm_controlbar_tool_item_append(Evas_Object *obj, const char *icon_path, const char *label, void (*func) (void *data, Evas_Object *obj, void *event_info), void *data);
-   /**
-    * Prepend new tool item
-    *
-    * @param   obj The controlbar object
-    * @param   icon_path The icon path of item
-    * @param   label The label of item
-    * @param   func Callback function of item
-    * @param   data The data of callback function
-    * @return  The item of controlbar
-    */
    EAPI Elm_Controlbar_Item *elm_controlbar_tool_item_prepend(Evas_Object *obj, const char *icon_path, const char *label, void (*func) (void *data, Evas_Object *obj, void *event_info), void *data);
-   /**
-    * Insert new tool item before given item
-    *
-    * @param   obj The controlbar object
-    * @param   before The given item
-    * @param   icon_path The icon path of item
-    * @param   label The label of item
-    * @param   func Callback function of item
-    * @param   data The data of callback function
-    * @return  The item of controlbar
-    */
    EAPI Elm_Controlbar_Item *elm_controlbar_tool_item_insert_before(Evas_Object *obj, Elm_Controlbar_Item *before, const char *icon_path, const char *label, void (*func) (void *data, Evas_Object *obj, void *event_info), void *data);
-   /**
-    * Insert new tool item after given item
-    *
-    * @param   obj The controlbar object
-    * @param   after The given item
-    * @param   icon_path The icon path of item
-    * @param   label The label of item
-    * @param   func Callback function of item
-    * @param   data The data of callback function
-    * @return  The item of controlbar
-    */
    EAPI Elm_Controlbar_Item *elm_controlbar_tool_item_insert_after(Evas_Object *obj, Elm_Controlbar_Item *after, const char *icon_path, const char *label, void (*func) (void *data, Evas_Object *obj, void *event_info), void *data);
-   /**
-    * Append new object item
-    *
-    * @param   obj The controlbar object
-    * @param   obj_item The object of item
-    * @param   sel The number of sel occupied
-    * @return  The item of controlbar
-    */
    EAPI Elm_Controlbar_Item *elm_controlbar_object_item_append(Evas_Object *obj, Evas_Object *obj_item, const int sel);
-   /**
-    * Prepend new object item
-    *
-    * @param   obj The controlbar object
-    * @param   obj_item The object of item
-    * @param   sel The number of sel occupied
-    * @return  The item of controlbar
-    */
    EAPI Elm_Controlbar_Item *elm_controlbar_object_item_prepend(Evas_Object *obj, Evas_Object *obj_item, const int sel);
-   /**
-    * Insert new object item before given item
-    *
-    * @param   obj The controlbar object
-    * @param   before The given item
-    * @param   obj_item The object of item
-    * @param   sel The number of sel occupied
-    * @return  The item of controlbar
-    */
    EAPI Elm_Controlbar_Item *elm_controlbar_object_item_insert_before(Evas_Object *obj, Elm_Controlbar_Item *before, Evas_Object *obj_item, const int sel);
-   /**
-    * Insert new object item after given item
-    *
-    * @param   obj The controlbar object
-    * @param   after The given item
-    * @param   obj_item The object of item
-    * @param   sel The number of sel occupied
-    * @return  The item of controlbar
-    */
    EAPI Elm_Controlbar_Item *elm_controlbar_object_item_insert_after(Evas_Object *obj, Elm_Controlbar_Item *after, Evas_Object *obj_item, const int sel);
-   /**
-    * Get the object of the object item
-    *
-    * @param       it The item of controlbar
-    * @return      The object of the object item
-    */
    EAPI Evas_Object *elm_controlbar_object_item_object_get(const Elm_Controlbar_Item *it);
-   /**
-    * Delete item from controlbar
-    *
-    * @param   it The item of controlbar
-    */
    EAPI void         elm_controlbar_item_del(Elm_Controlbar_Item *it);
-   /**
-    * Select item in controlbar
-    *
-    * @param   it The item of controlbar
-    */
    EAPI void         elm_controlbar_item_select(Elm_Controlbar_Item *it);
-   /**
-    * Set the visible status of item in bar
-    *
-    * @param   it The item of controlbar
-    * @param   bar EINA_TRUE or EINA_FALSE
-    */
    EAPI void         elm_controlbar_item_visible_set(Elm_Controlbar_Item *it, Eina_Bool bar);
-   /**
-    * Get the result which or not item is visible in bar
-    *
-    * @param   it The item of controlbar
-    * @return  EINA_TRUE or EINA_FALSE
-    */
    EAPI Eina_Bool    elm_controlbar_item_visible_get(const Elm_Controlbar_Item * it);
-   /**
-    * Set item disable
-    *
-    * @param   it The item of controlbar
-    * @param   bar EINA_TRUE or EINA_FALSE
-    */
    EAPI void         elm_controlbar_item_disabled_set(Elm_Controlbar_Item * it, Eina_Bool disabled);
-   /**
-    * Get item disable
-    *
-    * @param   it The item of controlbar
-    * @return  EINA_TRUE or EINA_FALSE
-    */
    EAPI Eina_Bool    elm_controlbar_item_disabled_get(const Elm_Controlbar_Item * it);
-   /**
-    * Set the icon of item
-    *
-    * @param   it The item of controlbar
-    * @param   icon_path The icon path of the item
-    * @return  The icon object
-    */
    EAPI void         elm_controlbar_item_icon_set(Elm_Controlbar_Item *it, const char *icon_path);
-   /**
-    * Get the icon of item
-    *
-    * @param   it The item of controlbar
-    * @return  The icon object
-    */
    EAPI Evas_Object *elm_controlbar_item_icon_get(const Elm_Controlbar_Item *it);
-   /**
-    * Set the label of item
-    *
-    * @param   it The item of controlbar
-    * @param   label The label of item
-    */
    EAPI void         elm_controlbar_item_label_set(Elm_Controlbar_Item *it, const char *label);
-   /**
-    * Get the label of item
-    *
-    * @param   it The item of controlbar
-    * @return The label of item
-    */
    EAPI const char  *elm_controlbar_item_label_get(const Elm_Controlbar_Item *it);
-   /**
-    * Get the selected item
-    *
-    * @param   obj The controlbar object
-    * @return          The item of controlbar
-    */
    EAPI Elm_Controlbar_Item *elm_controlbar_selected_item_get(const Evas_Object *obj);
-   /**
-    * Get the first item
-    *
-    * @param   obj The controlbar object
-    * @return          The item of controlbar
-    */
    EAPI Elm_Controlbar_Item *elm_controlbar_first_item_get(const Evas_Object *obj);
-   /**
-    * Get the last item
-    *
-    * @param   obj The controlbar object
-    * @return          The item of controlbar
-    */
    EAPI Elm_Controlbar_Item *elm_controlbar_last_item_get(const Evas_Object *obj);
-   /**
-    * Get the items
-    *
-    * @param   obj The controlbar object
-    * @return  The list of the items
-    */
    EAPI const Eina_List   *elm_controlbar_items_get(const Evas_Object *obj);
-   /**
-    * Get the previous item
-    *
-    * @param   it The item of controlbar
-    * @return  The previous item of the parameter item
-    */
    EAPI Elm_Controlbar_Item *elm_controlbar_item_prev(Elm_Controlbar_Item *it);
-   /**
-    * Get the next item
-    *
-    * @param   obj The controlbar object
-    * @return  The next item of the parameter item
-    */
    EAPI Elm_Controlbar_Item *elm_controlbar_item_next(Elm_Controlbar_Item *it);
-   /**
-    * Set the view of the item
-    *
-    * @param   it The item of controlbar
-    * @param   view The view for the item
-    */
    EAPI void         elm_controlbar_item_view_set(Elm_Controlbar_Item *it, Evas_Object * view);
-   /**
-    * Get the view of the item
-    *
-    * @param   it The item of controlbar
-    * @return  The view for the item
-    */
    EAPI Evas_Object *elm_controlbar_item_view_get(const Elm_Controlbar_Item *it);
-   /**
-    * Unset the view of the item
-    *
-    * @param   it The item of controlbar
-    * @return  The view for the item
-    */
    EAPI Evas_Object *elm_controlbar_item_view_unset(Elm_Controlbar_Item *it);
-   /**
-    * Set the vertical mode of the controlbar
-    *
-    * @param   obj The object of the controlbar
-    * @param   vertical The vertical mode of the controlbar (TRUE = vertical, FALSE = horizontal)
-    */
    EAPI Evas_Object *elm_controlbar_item_button_get(const Elm_Controlbar_Item *it);
-   /**
-    * Set the mode of the controlbar
-    *
-    * @param   obj The object of the controlbar
-    * @param   mode The mode of the controlbar
-    */
    EAPI void         elm_controlbar_mode_set(Evas_Object *obj, int mode);
-   /**
-    * Set the alpha of the controlbar
-    *
-    * @param   obj The object of the controlbar
-    * @param   alpha The alpha value of the controlbar (0-100)
-    */
    EAPI void         elm_controlbar_alpha_set(Evas_Object *obj, int alpha);
-   /**
-    * Set auto-align mode of the controlbar(It's not prepared yet)
-    * If you set the auto-align and add items more than 5,
-    * the "more" item will be made and the items more than 5 will be unvisible.
-    *
-    * @param   obj The object of the controlbar
-    * @param   auto_align The dicision that the controlbar use the auto-align
-    */
    EAPI void         elm_controlbar_item_auto_align_set(Evas_Object *obj, Eina_Bool auto_align);
-   /**
-    * Get the button object of the item
-    *
-    * @param   it The item of controlbar
-    * @return  button object of the item
-    */
    EAPI void         elm_controlbar_vertical_set(Evas_Object *obj, Eina_Bool vertical);
-   /**
-    * @}
-    */
-
-
-   /**
-    * @defgroup Searchbar Searchbar
-    * @addtogroup TickerNoti
-    * @{
-    * @ingroup Elementary
-    *
-    * This is Searchbar.
-    * It can contain a simple entry and button object.
-    */
 
-   /**
-    * Add a new searchbar to the parent
-    * @param parent The parent object
-    * @return The new object or NULL if it cannot be created
-    */
+   /* SearchBar */
    EAPI Evas_Object *elm_searchbar_add(Evas_Object *parent);
-   /**
-    * set the text of entry
-    *
-    * @param obj The searchbar object
-    * @return void
-    */
    EAPI void         elm_searchbar_text_set(Evas_Object *obj, const char *entry);
-   /**
-    * get the text of entry
-    *
-    * @param obj The searchbar object
-    * @return string pointer of entry
-    */
    EAPI const char  *elm_searchbar_text_get(Evas_Object *obj);
-   /**
-    * get the pointer of entry
-    *
-    * @param obj The searchbar object
-    * @return the entry object
-    */
    EAPI Evas_Object *elm_searchbar_entry_get(Evas_Object *obj);
-   /**
-    * get the pointer of editfield
-    *
-    * @param obj The searchbar object
-    * @return the editfield object
-    */
    EAPI Evas_Object *elm_searchbar_editfield_get(Evas_Object *obj);
-   /**
-    * set the cancel button animation flag
-    *
-    * @param obj The searchbar object
-    * @param cancel_btn_ani_flag The flag of animating cancen button or not
-    * @return void
-    */
    EAPI void         elm_searchbar_cancel_button_animation_set(Evas_Object *obj, Eina_Bool cancel_btn_ani_flag);
-   /**
-    * set the cancel button show mode
-    *
-    * @param obj The searchbar object
-    * @param visible The flag of cancen button show or not
-    * @return void
-    */
    EAPI void         elm_searchbar_cancel_button_set(Evas_Object *obj, Eina_Bool visible);
-   /**
-    * clear searchbar status
-    *
-    * @param obj The searchbar object
-    * @return void
-    */
    EAPI void         elm_searchbar_clear(Evas_Object *obj);
-   /**
-    * set the searchbar boundary rect mode(with bg rect) set
-    *
-    * @param obj The searchbar object
-    * @param boundary The present flag of boundary rect or not
-    * @return void
-    */
    EAPI void         elm_searchbar_boundary_rect_set(Evas_Object *obj, Eina_Bool boundary);
-   /**
-    * @}
-    */
 
    EAPI Evas_Object *elm_page_control_add(Evas_Object *parent);
    EAPI void         elm_page_control_page_count_set(Evas_Object *obj, unsigned int page_count);
@@ -29684,30 +29043,7 @@ extern "C" {
    EAPI void         elm_nocontents_custom_set(const Evas_Object *obj, Evas_Object *custom);
    EAPI Evas_Object *elm_nocontents_custom_get(const Evas_Object *obj);
 
-   /**
-    * @defgroup TickerNoti TickerNoti
-    * @addtogroup TickerNoti
-    * @{
-    *
-    * This is a notification widget which can be used to display some short information.
-    *
-    * Parts which can be used with elm_object_text_part_set() and
-    * elm_object_text_part_get():
-    *
-    * @li NULL/"default" - Operates on tickernoti content-text
-    *
-    * Parts which can be used with elm_object_content_part_set(),
-    * elm_object_content_part_get() and elm_object_content_part_unset():
-    *
-    * @li "icon" - Operates on tickernoti's icon
-    * @li "button" - Operates on tickernoti's button
-    *
-    * smart callbacks called:
-    * @li "clicked" - emitted when tickernoti is clicked, except at the
-    * swallow/button region, if any.
-    * @li "hide" - emitted when the tickernoti is completely hidden. In case of
-    * any hide animation, this signal is emitted after the animation.
-    */
+   /* TickerNoti */
    typedef enum
      {
         ELM_TICKERNOTI_ORIENT_TOP = 0,
@@ -29715,244 +29051,68 @@ extern "C" {
         ELM_TICKERNOTI_ORIENT_LAST
      }  Elm_Tickernoti_Orient;
 
-   /**
-    * Add a tickernoti object to @p parent
-    *
-    * @param parent The parent object
-    *
-    * @return The tickernoti object, or NULL upon failure
-    */
    EAPI Evas_Object              *elm_tickernoti_add (Evas_Object *parent);
-   /**
-    * Set the orientation of the tickernoti object
-    *
-    * @param obj The tickernoti object
-    * @param orient The orientation of tickernoti object
-    */
    EAPI void                      elm_tickernoti_orient_set (Evas_Object *obj, Elm_Tickernoti_Orient orient) EINA_ARG_NONNULL(1);
-   /**
-    * Get the orientation of the tickernoti object
-    *
-    * @param obj The tickernotil object
-    * @return The orientation of tickernotil object
-    */
    EAPI Elm_Tickernoti_Orient     elm_tickernoti_orient_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   /**
-    * Get the rotation of tickernoti object
-    *
-    * @param obj The tickernotil object
-    * @return The rotation angle
-    */
    EAPI int                       elm_tickernoti_rotation_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   /**
-    * Set the rotation angle for the tickernoti object
-    *
-    * @param obj The tickernoti object
-    * @param angle The rotation angle(in degree) will be used on the tickernoti object
-    */
    EAPI void                      elm_tickernoti_rotation_set (Evas_Object *obj, int angle) EINA_ARG_NONNULL(1);
-   /**
-    * Get the view window(elm_win) on the tickernoti object
-    *
-    * @param obj The tickernotil object
-    * @return internal view window(elm_win) object
-    */
    EAPI Evas_Object              *elm_tickernoti_win_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
    /* #### Below APIs and data structures are going to be deprecated, announcment will be made soon ####*/
-   /**
-    * @deprecated
-    */
    typedef enum
     {
        ELM_TICKERNOTI_DEFAULT,
        ELM_TICKERNOTI_DETAILVIEW
     } Elm_Tickernoti_Mode;
-   /**
-    * Set the detail label on the tickernoti object
+   EAPI void                      elm_tickernoti_detailview_label_set (Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+   EAPI const char               *elm_tickernoti_detailview_label_get (const Evas_Object *obj)EINA_ARG_NONNULL(1);
+   EAPI void                      elm_tickernoti_detailview_button_set (Evas_Object *obj, Evas_Object *button) EINA_ARG_NONNULL(2);
+   EAPI Evas_Object              *elm_tickernoti_detailview_button_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI void                      elm_tickernoti_detailview_icon_set (Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object              *elm_tickernoti_detailview_icon_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object              *elm_tickernoti_detailview_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI void                      elm_tickernoti_mode_set (Evas_Object *obj, Elm_Tickernoti_Mode mode) EINA_ARG_NONNULL(1);
+   EAPI Elm_Tickernoti_Mode       elm_tickernoti_mode_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI void                      elm_tickernoti_orientation_set (Evas_Object *obj, Elm_Tickernoti_Orient orient) EINA_ARG_NONNULL(1);
+   EAPI Elm_Tickernoti_Orient     elm_tickernoti_orientation_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI void                      elm_tickernoti_label_set (Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
+   EAPI const char               *elm_tickernoti_label_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI void                      elm_tickernoti_icon_set (Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object              *elm_tickernoti_icon_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   EAPI void                      elm_tickernoti_button_set (Evas_Object *obj, Evas_Object *button) EINA_ARG_NONNULL(1);
+   EAPI Evas_Object              *elm_tickernoti_button_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
+   /* ############################################################################### */
+   /*
+    * Parts which can be used with elm_object_text_part_set() and
+    * elm_object_text_part_get():
     *
-    * @param obj The tickernoti object
-    * @param label The label will be used on the tickernoti object
-    * @deprecated use elm_object_text_set() instead
-    */
-   WILL_DEPRECATE  EAPI void                      elm_tickernoti_detailview_label_set (Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
-   /**
-    * Get the detail label used on the tickernoti object
-    *
-    * @param obj The tickernotil object
-    * @return The string inside the label
-    * @deprecated use elm_object_text_get() instead
-    */
-   WILL_DEPRECATE  EAPI const char               *elm_tickernoti_detailview_label_get (const Evas_Object *obj)EINA_ARG_NONNULL(1);
-   /**
-    * Set the button object used on the tickernoti object
-    *
-    * @param obj The tickernotil object
-    * @param button The button object will be used on the tickernoti object
-    * @deprecated use elm_object_content_part_set() instead with "icon" as part name
-    */
-   WILL_DEPRECATE  EAPI void                      elm_tickernoti_detailview_button_set (Evas_Object *obj, Evas_Object *button) EINA_ARG_NONNULL(2);
-   /**
-    * Get the button object used on the tickernoti object
-    *
-    * @param obj The tickernotil object
-    * @return The button object inside the tickernoti
-    * @deprecated use elm_object_content_part_get() instead with "button" as part name
-    */
-   WILL_DEPRECATE  EAPI Evas_Object              *elm_tickernoti_detailview_button_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   /**
-    * Set the detail icon object used on the tickernoti object
-    *
-    * @param obj The tickernotil object
-    * @param icon The icon object will be used on the tickernoti object
-    * @deprecated use elm_object_content_part_set() instead with "icon" as part name
-    */
-   WILL_DEPRECATE  EAPI void                      elm_tickernoti_detailview_icon_set (Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
-   /**
-    * Get the detail icon object used on the tickernoti object
-    *
-    * @param obj The tickernotil object
-    * @return The icon object inside the tickernoti
-    * @deprecated use elm_object_content_part_get() instead with "icon" as part name
-    */
-   WILL_DEPRECATE  EAPI Evas_Object              *elm_tickernoti_detailview_icon_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   /**
-    * Get the view mode on the tickernoti object
-    *
-    * @param obj The tickernotil object
-    * @return The view mode
-    * @deprecated removed as now styles are used instead
-    */
-   WILL_DEPRECATE  EAPI Evas_Object              *elm_tickernoti_detailview_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   /**
-    * Set the view mode used on the tickernoti object
-    *
-    * @param obj The tickernotil object
-    * @param mode The view mode will be used on the tickernoti object
-    * @deprecated removed as now styles are used instead
-    */
-   WILL_DEPRECATE  EAPI void                      elm_tickernoti_mode_set (Evas_Object *obj, Elm_Tickernoti_Mode mode) EINA_ARG_NONNULL(1);
-   /**
-    * Get the detail view window(elm_win) on the tickernoti object
-    *
-    * @param obj The tickernotil object
-    * @return detail view window(elm_win) object
-    */
-   WILL_DEPRECATE  EAPI Elm_Tickernoti_Mode       elm_tickernoti_mode_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   /**
-    * Set the orientation of the tickernoti object
-    *
-    * @param obj The tickernoti object
-    * @param orient The orientation of tickernoti object
-    * @deprecated use elm_tickernoti_orient_set() instead
-    */
-   WILL_DEPRECATE  EAPI void                      elm_tickernoti_orientation_set (Evas_Object *obj, Elm_Tickernoti_Orient orient) EINA_ARG_NONNULL(1);
-   /**
-    * Get the orientation of the tickernoti object
-    *
-    * @param obj The tickernotil object
-    * @return The orientation of tickernotil object
-    * @deprecated use elm_tickernoti_orient_get() instead
-    */
-   WILL_DEPRECATE  EAPI Elm_Tickernoti_Orient     elm_tickernoti_orientation_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   /**
-    * Set the label on the tickernoti object
-    *
-    * @param obj The tickernoti object
-    * @param label The label will be used on the tickernoti object
-    * @deprecated use elm_object_text_get()
-    */
-   WILL_DEPRECATE  EAPI void                      elm_tickernoti_label_set (Evas_Object *obj, const char *label) EINA_ARG_NONNULL(1);
-   /**
-    * Get the label used on the tickernoti object
-    *
-    * @param obj The tickernotil object
-    * @return The string inside the label
-    * @deprecated use elm_object_text_get() instead
-    */
-   WILL_DEPRECATE  EAPI const char               *elm_tickernoti_label_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   /**
-    * Set the icon object of the tickernoti object
-    *
-    * @param obj The tickernotil object
-    * @param icon The icon object will be used on the tickernoti object
-    * @deprecated use elm_object_content_part_set() instead with "icon" as part name
-    */
-   WILL_DEPRECATE  EAPI void                      elm_tickernoti_icon_set (Evas_Object *obj, Evas_Object *icon) EINA_ARG_NONNULL(1);
-   /**
-    * Get the icon object of the tickernoti object
+    * @li NULL/"default" - Operates on tickernoti content-text
     *
-    * @param obj The tickernotil object
-    * @return The icon object inside the tickernoti
-    * @deprecated use elm_object_content_part_get() instead with "icon" as part name
-    */
-   WILL_DEPRECATE  EAPI Evas_Object              *elm_tickernoti_icon_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   /**
-    * Set the action button object used on the tickernoti object
+    * Parts which can be used with elm_object_content_part_set(),
+    * elm_object_content_part_get() and elm_object_content_part_unset():
     *
-    * @param obj The tickernotil object
-    * @param button The button object will be used on the tickernoti object
-    * @deprecated use elm_object_content_part_set() instead with "button" as part name
-    */
-   WILL_DEPRECATE  EAPI void                      elm_tickernoti_button_set (Evas_Object *obj, Evas_Object *button) EINA_ARG_NONNULL(1);
-   /**
-    * Get the action button object used on the tickernoti object
+    * @li "icon" - Operates on tickernoti's icon
+    * @li "button" - Operates on tickernoti's button
     *
-    * @param obj The tickernotil object
-    * @return The button object inside the tickernoti
-    * @deprecated use elm_object_content_part_get() instead with "button" as part name
-    */
-   WILL_DEPRECATE  EAPI Evas_Object              *elm_tickernoti_button_get (const Evas_Object *obj) EINA_ARG_NONNULL(1);
-   /**
-    * @}
+    * smart callbacks called:
+    * @li "clicked" - emitted when tickernoti is clicked, except at the
+    * swallow/button region, if any.
+    * @li "hide" - emitted when the tickernoti is completely hidden. In case of
+    * any hide animation, this signal is emitted after the animation.
     */
 
-   /**
-    * @defgroup Colorpalette Colorpalette
-    * @ingroup Elementary
-    * @addtogroup Colorpalette
-    * @{
-    *
-    * Using colorpalette, you can select a color by clicking
-    * a color rectangle on the colorpalette.
-    *
-    * Smart callbacks that you can add are:
-    *
-    * clicked - This signal is sent when a color rectangle is clicked.
-    */
+   /* colorpalette */
    typedef struct _Colorpalette_Color Elm_Colorpalette_Color;
+
    struct _Colorpalette_Color
      {
         unsigned int r, g, b;
      };
 
-   /**
-    * Add a new colorpalette to the parent.
-    *
-    * @param parent The parent object
-    * @return The new object or NULL if it cannot be created
-    *
-    * @ingroup Colorpalette
-    */
    EAPI Evas_Object *elm_colorpalette_add(Evas_Object *parent);
-   /**
-    * Set colors to the colorpalette.
-    *
-    * @param obj   Colorpalette object
-    * @param color_num     number of the colors on the colorpalette
-    * @param color     Color lists
-    */
    EAPI void         elm_colorpalette_color_set(Evas_Object *obj, int color_num, Elm_Colorpalette_Color *color);
-   /**
-    * Set row/column value for the colorpalette.
-    *
-    * @param obj   Colorpalette object
-    * @param row   row value for the colorpalette
-    * @param col   column value for the colorpalette
-    */
    EAPI void         elm_colorpalette_row_column_set(Evas_Object *obj, int row, int col);
-
-   /**
-    * @}
+   /* smart callbacks called:
+    * "clicked" - when image clicked
     */
 
    /* editfield */
@@ -29977,281 +29137,89 @@ extern "C" {
     */
 
 
-   /**
-    * @defgroup Multibuttonenetry Multibuttonenetry
-    *
-    * @image html img/widget/flipselector/preview-00.png
-    * @image latex img/widget/flipselector/preview-00.eps
-    *
-    * A Multibuttonentry is a widget to allow a user to insert a text button.
-    * the text button is inserted by pressing the "return" key. If there is no space in the current row,
-    * the new button is entered in the next row. If the button is pressed, it will become focused. 
-    * The focus can be removed by pressing the "backspace" key.
-    * when items are added over 1 lines, if Multibuttonentry lost focus, it becase shrink mode ( made it 1 line)
-    *
-    * Smart callbacks one can register to:
-    * - @c "item,selected" - when item is selected . it can be called by backspace key.                       
-    * - @c "item,added" - when a new multibuttonentry item is added. 
-    * - @c "item,deleted" -when a multibuttonentry item is deleted. 
-    * - @c "item,clicked" - selected item of multibuttonentry is clicked.                  
-    * - @c "clicked" - when multibuttonentry is clicked. 
-    * - @c "focused" - when multibuttonentry is focused. 
-    * - @c "unfocused" - when multibuttonentry is unfocused. 
-    * - @c "expanded" - when multibuttonentry is expanded . 
-    * - @c "shrank" - when multibuttonentry is shrank. 
-    * - @c "shrank,state,changed" - when shrink mode state of multibuttonentry is changed. 
-    *
-    * Here is an example on its usage:
-    * @li @ref multibuttonentry_example
-    */
-    /**
-    * @addtogroup Multibuttonentry
-    * @{
-    */
+   /* 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);
-
-   /**
-    * @brief Add a new multibuttonentry to the parent
-    *
-    * @param parent The parent object
-    * @return The new object or NULL if it cannot be created
-    */
    EAPI Evas_Object               *elm_multibuttonentry_add(Evas_Object *parent);
-   /**
-    * Get the label
-    *
-    * @param obj The multibuttonentry object
-    * @return The label, or NULL if none
-    */
    EAPI const char                *elm_multibuttonentry_label_get(const Evas_Object *obj);
-   /**
-    * Set the label
-    *
-    * @param obj The multibuttonentry object
-    * @param label The text label string
-    */
    EAPI void                       elm_multibuttonentry_label_set(Evas_Object *obj, const char *label);
-   /**
-    * Get the entry of the multibuttonentry object
-    *
-    * @param obj The multibuttonentry object
-    * @return The entry object, or NULL if none
-    */
    EAPI Evas_Object               *elm_multibuttonentry_entry_get(const Evas_Object *obj);
-   /**
-    * Get the guide text
-    *
-    * @param obj The multibuttonentry object
-    * @return The guide text, or NULL if none
-    */
    EAPI const char *               elm_multibuttonentry_guide_text_get(const Evas_Object *obj);
-   /**
-    * Set the guide text
-    *
-    * @param obj The multibuttonentry object
-    * @param label The guide text string
-    */
    EAPI void                       elm_multibuttonentry_guide_text_set(Evas_Object *obj, const char *guidetext);
-   /**
-    * Get the value of shrink_mode state.
-    *
-    * @param obj The multibuttonentry object
-    * @param the value of shrink mode state.
-    */
    EAPI int                        elm_multibuttonentry_contracted_state_get(const Evas_Object *obj);
-   /**
-    * Set/Unset the multibuttonentry to shrink mode state of single line
-    *
-    * @param obj The multibuttonentry object
-    * @param the value of shrink_mode state. set this to 1 to set the multibuttonentry to shrink state of single line. set this to 0 to unset the contracted state.
-    */
    EAPI void                       elm_multibuttonentry_contracted_state_set(Evas_Object *obj, int 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
-    */
    EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_add_start(Evas_Object *obj, const char *label, void *data);
-   /**
-    * 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
-    */
    EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_add_end(Evas_Object *obj, const char *label, void *data);
-   /**
-    * Add a new item to the multibuttonentry before the indicated object
-    *
-    * reference.
-    * @param obj The multibuttonentry object
-    * @param before The item before which to add it
-    * @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
-    */
    EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_add_before(Evas_Object *obj, const char *label, Elm_Multibuttonentry_Item *before, void *data);
-   /**
-    * Add a new item to the multibuttonentry after the indicated object
-    *
-    * @param obj The multibuttonentry object
-    * @param after The item after which to add it
-    * @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
-    */
    EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_add_after(Evas_Object *obj, const char *label, Elm_Multibuttonentry_Item *after, void *data);
-   /**
-    * Get a list of items in the multibuttonentry
-    *
-    * @param obj The multibuttonentry object
-    * @return The list of items, or NULL if none
-    */
    EAPI const Eina_List           *elm_multibuttonentry_items_get(const Evas_Object *obj);
-   /**
-    * Get the first item in the multibuttonentry
-    *
-    * @param obj The multibuttonentry object
-    * @return The first item, or NULL if none
-    */
    EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_first_get(const Evas_Object *obj);
-   /**
-    * Get the last item in the multibuttonentry
-    *
-    * @param obj The multibuttonentry object
-    * @return The last item, or NULL if none
-    */
    EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_last_get(const Evas_Object *obj);
-   /**
-    * Get the selected item in the multibuttonentry
-    *
-    * @param obj The multibuttonentry object
-    * @return The selected item, or NULL if none
-    */
    EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_selected_get(const Evas_Object *obj);
-   /**
-    * Set the selected state of an item
-    *
-    * @param item The item
-    * @param selected if it's EINA_TRUE, select the item otherwise, unselect the item
-    */
    EAPI void                       elm_multibuttonentry_item_selected_set(Elm_Multibuttonentry_Item *item);
-   /**
-   * unselect all of items.
-   *
-   * @param obj The multibuttonentry object
-   */
    EAPI void                       elm_multibuttonentry_item_unselect_all(Evas_Object *obj);
-  /**
-   * Delete a given item
-   *
-   * @param item The item
-   */
    EAPI void                       elm_multibuttonentry_item_del(Elm_Multibuttonentry_Item *item);
-  /**
-   * Remove all items in the multibuttonentry.
-   *
-   * @param obj The multibuttonentry object
-   */
    EAPI void                       elm_multibuttonentry_items_del(Evas_Object *obj);
-  /**
-   * Get the label of a given item
-   *
-   * @param item The item
-   * @return The label of a given item, or NULL if none
-   */
    EAPI const char                *elm_multibuttonentry_item_label_get(const Elm_Multibuttonentry_Item *item);
-  /**
-   * Set the label of a given item
-   *
-   * @param item The item
-   * @param label The text label string
-   */
    EAPI void                       elm_multibuttonentry_item_label_set(Elm_Multibuttonentry_Item *item, const char *str);
-  /**
-   * Get the previous item in the multibuttonentry
-   *
-   * @param item The item
-   * @return The item before the item @p item
-   */
    EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_prev(Elm_Multibuttonentry_Item *item);
-  /**
-   * Get the next item in the multibuttonentry
-   *
-   * @param item The item
-   * @return The item after the item @p item
-   */
    EAPI Elm_Multibuttonentry_Item *elm_multibuttonentry_item_next(Elm_Multibuttonentry_Item *item);
-
    EAPI void                      *elm_multibuttonentry_item_data_get(const Elm_Multibuttonentry_Item *item);
    EAPI void                       elm_multibuttonentry_item_data_set(Elm_Multibuttonentry_Item *item, void *data);
    EAPI void                       elm_multibuttonentry_item_verify_callback_set(Evas_Object *obj, Elm_Multibuttonentry_Item_Verify_Callback func, void *data);
-
-   /**
-    * @}
-    */
-
-   /**
-    * @defgroup Stackedicon Stackedicon
-    * @ingroup Elementary
-    * @addtogroup Stackedicon
-    * @{
-    *
-    * This is a Stackedicon.
-    * smart callback called:
-    * "expanded" - This signal is emitted when a stackedicon is expanded.
-    * "clicked" - This signal is emitted when a stackedicon is clicked.
-    *
-    * available styles:
+   /* smart callback called:
+    * "selected" - This signal is emitted when the selected item of multibuttonentry is changed.
+    * "added" - This signal is emitted when a new multibuttonentry item is added.
+    * "deleted" - This signal is emitted when a multibuttonentry item is deleted.
+    * "expanded" - This signal is emitted when a multibuttonentry is expanded.
+    * "contracted" - This signal is emitted when a multibuttonentry is contracted.
+    * "contracted,state,changed" - This signal is emitted when the contracted state of multibuttonentry is changed.
+    * "item,selected" - This signal is emitted when the selected item of multibuttonentry is changed.
+    * "item,added" - This signal is emitted when a new multibuttonentry item is added.
+    * "item,deleted" - This signal is emitted when a multibuttonentry item is deleted.
+    * "item,clicked" - This signal is emitted when a multibuttonentry item is clicked.
+    * "clicked" - This signal is emitted when a multibuttonentry is clicked.
+    * "unfocused" - This signal is emitted when a multibuttonentry is unfocused.
+    */
+   /* available styles:
     * default
     */
+
+   /* stackedicon */
    typedef struct _Stackedicon_Item Elm_Stackedicon_Item;
-   /**
-    * Add a new stackedicon to the parent
-    *
-    * @param parent The parent object
-    * @return The new object or NULL if it cannot be created
-    */
    EAPI Evas_Object          *elm_stackedicon_add(Evas_Object *parent);
-   /**
-    * This appends a path to the stackedicon
-    *
-    * @param    obj   The stackedicon object
-    * @param    path   The image full path
-    * @return   The new item or NULL if it cannot be created
-    */
    EAPI Elm_Stackedicon_Item *elm_stackedicon_item_append(Evas_Object *obj, const char *path);
-   /**
-    * This prepends a path to the stackedicon
-    *
-    * @param    obj   The stackedicon object
-    * @param    path   The image full path
-    * @return   The new item or NULL if it cannot be created
-    */
    EAPI Elm_Stackedicon_Item *elm_stackedicon_item_prepend(Evas_Object *obj, const char *path);
-   /**
-    * This delete a path at the stackedicon
-    *
-    * @param    Elm_Stackedicon_Item   The delete item
-    */
    EAPI void                  elm_stackedicon_item_del(Elm_Stackedicon_Item *it);
-   /**
-    * Get item list from the stackedicon
-    *
-    * @param    obj   The stackedicon object
-    * @return   The item list or NULL if it cannot be created
-    */
    EAPI Eina_List            *elm_stackedicon_item_list_get(Evas_Object *obj);
-   /**
-    * @}
+   /* smart callback called:
+    * "expanded" - This signal is emitted when a stackedicon is expanded.
+    * "clicked" - This signal is emitted when a stackedicon is clicked.
+    */
+   /* available styles:
+    * default
     */
-
 
    /* dialoguegroup */
    typedef struct _Dialogue_Item Dialogue_Item;
@@ -30304,131 +29272,24 @@ extern "C" {
    EAPI Eina_Bool    elm_dayselector_check_state_get(Evas_Object *obj, Elm_DaySelector_Day day);
    EAPI void         elm_dayselector_check_state_set(Evas_Object *obj, Elm_DaySelector_Day day, Eina_Bool checked);
 
-   /**
-    * @defgroup Imageslider Imageslider
-    * @ingroup Elementary
-    * @addtogroup Imageslider
-    * @{
-    *
-    * By flicking images on the screen,
-    * you can see the images in specific path.
-    */
+   /* Image Slider */
    typedef struct _Imageslider_Item Elm_Imageslider_Item;
    typedef void (*Elm_Imageslider_Cb)(void *data, Evas_Object *obj, void *event_info);
-
-   /**
-    * Add an Image Slider widget
-    *
-    * @param        parent  The parent object
-    * @return       The new Image slider object or NULL if it cannot be created
-    */
    EAPI Evas_Object           *elm_imageslider_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
-   /**
-    * Append an Image Slider item
-    *
-    * @param        obj          The Image Slider object
-    * @param        photo_file   photo file path
-    * @param        func         callback function
-    * @param        data         callback data
-    * @return       The Image Slider item handle or NULL
-    */
    EAPI Elm_Imageslider_Item  *elm_imageslider_item_append(Evas_Object *obj, const char *photo_file, Elm_Imageslider_Cb func, void *data) EINA_ARG_NONNULL(1);
-   /**
-    * Insert an Image Slider item into the Image Slider Widget by using the given index.
-    *
-    * @param        obj                     The Image Slider object
-    * @param        photo_file      photo file path
-    * @param        func            callback function
-    * @param        index           required position
-    * @param        data            callback data
-    * @return       The Image Slider item handle or NULL
-    */
    EAPI Elm_Imageslider_Item  *elm_imageslider_item_append_relative(Evas_Object *obj, const char *photo_file, Elm_Imageslider_Cb func, unsigned int index, void *data) EINA_ARG_NONNULL(1);
-   /**
-    * Prepend Image Slider item
-    *
-    * @param        obj          The Image Slider object
-    * @param        photo_file   photo file path
-    * @param        func         callback function
-    * @param        data         callback data
-    * @return       The imageslider item handle or NULL
-    */
    EAPI Elm_Imageslider_Item  *elm_imageslider_item_prepend(Evas_Object *obj, const char *photo_file, Elm_Imageslider_Cb func, void *data) EINA_ARG_NONNULL(1);
-   /**
-    * Delete the selected Image Slider item
-    *
-    * @param it             The selected Image Slider item handle
-    */
    EAPI void                   elm_imageslider_item_del(Elm_Imageslider_Item *it) EINA_ARG_NONNULL(1);
-   /**
-    * Get the selected Image Slider item
-    *
-    * @param obj            The Image Slider object
-    * @return The selected Image Slider item or NULL
-    */
    EAPI Elm_Imageslider_Item  *elm_imageslider_selected_item_get(Evas_Object *obj) EINA_ARG_NONNULL(1);
-   /**
-    * Get whether an Image Slider item is selected or not
-    *
-    * @param it              the selected Image Slider item
-    * @return EINA_TRUE or EINA_FALSE
-    */
    EAPI Eina_Bool              elm_imageslider_item_selected_get(Elm_Imageslider_Item *it) EINA_ARG_NONNULL(1);
-   /**
-    * Set the selected Image Slider item
-    *
-    * @param it             The Imaga Slider item
-    */
    EAPI void                   elm_imageslider_item_selected_set(Elm_Imageslider_Item *it) EINA_ARG_NONNULL(1);
-   /**
-    * Get the photo file path of given Image Slider item
-    *
-    * @param it             The Image Slider item
-    * @return The photo file path or NULL;
-    */
    EAPI const char            *elm_imageslider_item_photo_file_get(Elm_Imageslider_Item *it) EINA_ARG_NONNULL(1);
-   /**
-    * Sets the photo file path of given Image Slider item
-    *
-    * @param it         The Image Slider item
-    * @param photo_file The photo file path or NULL;
-    */
    EAPI Elm_Imageslider_Item  *elm_imageslider_item_prev(Elm_Imageslider_Item *it) EINA_ARG_NONNULL(1);
-   /**
-    * Get the previous Image Slider item
-    *
-    * @param it             The Image Slider item
-    * @return The previous Image Slider item or NULL
-    */
    EAPI Elm_Imageslider_Item  *elm_imageslider_item_next(Elm_Imageslider_Item *it) EINA_ARG_NONNULL(1);
-   /**
-    * Get the next Image Slider item
-    *
-    * @param it             The Image Slider item
-    * @return The next Image Slider item or NULL
-    */
    EAPI void                   elm_imageslider_prev(Evas_Object *obj) EINA_ARG_NONNULL(1);
-   /**
-    * Move to the previous Image Slider item
-    *
-    * @param obj    The Image Slider object
-    */
    EAPI void                   elm_imageslider_next(Evas_Object *obj) EINA_ARG_NONNULL(1);
-   /**
-    * Move to the next Image Slider item
-    *
-    * @param obj The Image Slider object
-    */
    EAPI void                   elm_imageslider_item_photo_file_set(Elm_Imageslider_Item *it, const char *photo_file) EINA_ARG_NONNULL(1,2);
-   /**
-    * Updates an Image Slider item
-    *
-    * @param it The Image Slider item
-    */
    EAPI void                   elm_imageslider_item_update(Elm_Imageslider_Item *it) EINA_ARG_NONNULL(1);
-   /**
-    * @}
-    */
 #ifdef __cplusplus
 }
 #endif
index e3770d0..378ce41 100644 (file)
@@ -49,7 +49,8 @@ elc_fileselector.c \
 elc_fileselector_entry.c \
 elc_hoversel.c \
 elc_naviframe.c \
-elc_multibuttonentry.c \
+elc_navigationbar.c \
+elc_navigationbar_ex.c\
 elc_player.c \
 elc_scrolled_entry.c \
 elm_access.c \
@@ -98,6 +99,7 @@ elm_mapbuf.c \
 elm_map.c \
 elm_menu.c \
 elm_module.c \
+elm_multibuttonentry.c \
 elm_nocontents.c \
 elm_notify.c \
 elm_pagecontrol.c \
@@ -109,13 +111,13 @@ elm_photocam.c \
 elm_popup.c \
 elm_progressbar.c \
 elm_radio.c \
-elm_route.c \
 elm_scroller.c \
 elm_searchbar.c \
 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 \
@@ -140,8 +142,7 @@ els_pan.c \
 els_pan.h \
 els_scroller.c \
 els_scroller.h \
-els_tooltip.c \
-elu_ews_wm.c
+els_tooltip.c
 
 libelementary_la_CFLAGS =
 libelementary_la_LIBADD = \
index 9ee79c3..95e84df 100644 (file)
@@ -12,6 +12,7 @@ struct _Elm_Ctxpopup_Item
    const char *label;
    Evas_Object *icon;
    Evas_Smart_Cb func;
+   Eina_Bool disabled:1;
 };
 
 struct _Widget_Data
@@ -80,21 +81,7 @@ static void _content_set_hook(Evas_Object *obj,
 static Evas_Object * _content_unset_hook(Evas_Object *obj,
                                          const char *item __UNUSED__);
 static Evas_Object * _content_get_hook(const Evas_Object *obj,
-                                       const char *part);
-static void _item_text_set_hook(Elm_Object_Item *it,
-                               const char *part,
-                               const char *label);
-static const char * _item_text_get_hook(const Elm_Object_Item *it,
-                                        const char *part);
-static void _item_content_set_hook(Elm_Object_Item *it,
-                                   const char *part,
-                                   Evas_Object *content);
-static Evas_Object * _item_content_get_hook(const Elm_Object_Item *it,
-                                            const char *part);
-static void _item_disable_set_hook(Elm_Object_Item *it);
-static void _item_signal_emit_hook(Elm_Object_Item *it,
-                                   const char *emission,
-                                   const char *source);
+                                       const char *item __UNUSED__);
 static void _bg_clicked_cb(void *data, Evas_Object *obj,
                            const char *emission,
                            const char *source);
@@ -793,7 +780,7 @@ _theme_hook(Evas_Object *obj)
         if (item->label)
           edje_object_part_text_set(VIEW(item), "elm.text", item->label);
 
-        if (elm_widget_item_disabled_get(item))
+        if (item->disabled)
           edje_object_signal_emit(VIEW(item), "elm,state,disabled", "elm");
 
        /*
@@ -906,106 +893,6 @@ _content_get_hook(const Evas_Object *obj, const char *part)
 }
 
 static void
-_item_text_set_hook(Elm_Object_Item *it,
-                    const char *part,
-                    const char *label)
-{
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
-
-   Widget_Data *wd;
-   Elm_Ctxpopup_Item *ctxpopup_it;
-
-   if (part && strcmp(part, "default")) return;
-
-   ctxpopup_it = (Elm_Ctxpopup_Item *) it;
-
-   wd = elm_widget_data_get(WIDGET(ctxpopup_it));
-   if (!wd) return;
-
-   _item_label_set(ctxpopup_it, label);
-   wd->dir = ELM_CTXPOPUP_DIRECTION_UNKNOWN;
-
-   if (wd->visible)
-     {
-        _scroller_size_reset(wd);
-        _sizing_eval(WIDGET(ctxpopup_it));
-     }
-}
-
-static const char *
-_item_text_get_hook(const Elm_Object_Item *it, const char *part)
-{
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
-   Elm_Ctxpopup_Item *ctxpopup_it;
-   if (part && strcmp(part, "default")) return NULL;
-   ctxpopup_it = (Elm_Ctxpopup_Item *) it;
-   return ctxpopup_it->label;
-}
-
-static void
-_item_content_set_hook(Elm_Object_Item *it,
-                       const char *part,
-                       Evas_Object *content)
-{
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
-   Widget_Data *wd;
-   Elm_Ctxpopup_Item *ctxpopup_it;
-
-   if (part && strcmp(part, "icon")) return;
-
-   ctxpopup_it = (Elm_Ctxpopup_Item *) it;
-
-   wd = elm_widget_data_get(WIDGET(ctxpopup_it));
-   if (!wd) return;
-
-   _item_icon_set(ctxpopup_it, content);
-   wd->dir = ELM_CTXPOPUP_DIRECTION_UNKNOWN;
-
-   if (wd->visible)
-     {
-        _scroller_size_reset(wd);
-        _sizing_eval(WIDGET(ctxpopup_it));
-     }
-}
-
-static Evas_Object *
-_item_content_get_hook(const Elm_Object_Item *it, const char *part)
-{
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
-   Elm_Ctxpopup_Item *ctxpopup_it;
-   if (part && strcmp(part, "icon")) return NULL;
-   ctxpopup_it  = (Elm_Ctxpopup_Item *) it;
-   return ctxpopup_it->icon;
-}
-
-static void
-_item_disable_set_hook(Elm_Object_Item *it)
-{
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
-
-   Widget_Data *wd;
-   Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it;
-
-   wd = elm_widget_data_get(WIDGET(ctxpopup_it));
-   if (!wd) return;
-
-   if (elm_widget_item_disabled_get(it))
-     edje_object_signal_emit(VIEW(ctxpopup_it), "elm,state,disabled", "elm");
-   else
-     edje_object_signal_emit(VIEW(ctxpopup_it), "elm,state,enabled", "elm");
-}
-
-static void
-_item_signal_emit_hook(Elm_Object_Item *it,
-                       const char *emission,
-                       const char *source)
-{
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
-   Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it;
-   edje_object_signal_emit(VIEW(ctxpopup_it), emission, source);
-}
-
-static void
 _bg_clicked_cb(void *data, Evas_Object *obj __UNUSED__,
                const char *emission __UNUSED__, const char *source __UNUSED__)
 {
@@ -1154,7 +1041,7 @@ _item_select_cb(void *data, Evas_Object *obj __UNUSED__,
    Elm_Ctxpopup_Item *item = data;
 
    if (!item) return;
-   if (elm_widget_item_disabled_get(item)) return;
+   if (item->disabled) return;
 
    if (item->func)
      item->func((void*) item->base.data, WIDGET(item), data);
@@ -1337,25 +1224,57 @@ elm_ctxpopup_add(Evas_Object *parent)
 EAPI Evas_Object *
 elm_ctxpopup_item_icon_get(const Elm_Object_Item *it)
 {
-   return _item_content_get_hook(it, "icon");
+   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+   Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it;
+   return ctxpopup_it->icon;
 }
 
 EAPI void
 elm_ctxpopup_item_icon_set(Elm_Object_Item *it, Evas_Object *icon)
 {
-   _item_content_set_hook(it, "icon", icon);
+   ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+
+   Widget_Data *wd;
+   Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it;
+
+   wd = elm_widget_data_get(WIDGET(ctxpopup_it));
+   if (!wd) return;
+
+   _item_icon_set(ctxpopup_it, icon);
+
+   if (wd->visible)
+     {
+        _scroller_size_reset(wd);
+        _sizing_eval(WIDGET(ctxpopup_it));
+     }
 }
 
 EAPI const char *
 elm_ctxpopup_item_label_get(const Elm_Object_Item *it)
 {
-   return _item_text_get_hook(it, NULL);
+   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+   Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it;
+   return ctxpopup_it->label;
 }
 
 EAPI void
 elm_ctxpopup_item_label_set(Elm_Object_Item *it, const char *label)
 {
-   _item_text_set_hook(it, NULL, label);
+   ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+
+   Widget_Data *wd;
+   Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it;
+
+   wd = elm_widget_data_get(WIDGET(ctxpopup_it));
+   if (!wd) return;
+
+   _item_label_set(ctxpopup_it, label);
+
+   if (wd->visible)
+     {
+        _scroller_size_reset(wd);
+        _sizing_eval(WIDGET(ctxpopup_it));
+     }
 }
 
 EAPI void
@@ -1492,13 +1411,6 @@ elm_ctxpopup_item_append(Evas_Object *obj, const char *label,
    item = elm_widget_item_new(obj, Elm_Ctxpopup_Item);
    if (!item) return NULL;
 
-   elm_widget_item_disable_set_hook_set(item, _item_disable_set_hook);
-   elm_widget_item_text_set_hook_set(item, _item_text_set_hook);
-   elm_widget_item_text_get_hook_set(item, _item_text_get_hook);
-   elm_widget_item_content_set_hook_set(item, _item_content_set_hook);
-   elm_widget_item_content_get_hook_set(item, _item_content_get_hook);
-   elm_widget_item_signal_emit_hook_set(item, _item_signal_emit_hook);
-
    //The first item is appended.
    if (wd->content)
      evas_object_del(elm_object_content_unset(obj));
@@ -1562,13 +1474,31 @@ elm_ctxpopup_item_del(Elm_Object_Item *it)
 EAPI void
 elm_ctxpopup_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled)
 {
-   elm_object_item_disabled_set(it, disabled);
+   ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+
+   Widget_Data *wd;
+   Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it;
+
+   wd = elm_widget_data_get(WIDGET(ctxpopup_it));
+   if (!wd) return;
+
+   if (disabled == ctxpopup_it->disabled)
+     return;
+
+   if (disabled)
+     edje_object_signal_emit(VIEW(ctxpopup_it), "elm,state,disabled", "elm");
+   else
+     edje_object_signal_emit(VIEW(ctxpopup_it), "elm,state,enabled", "elm");
+
+   ctxpopup_it->disabled = !!disabled;
 }
 
 EAPI Eina_Bool
 elm_ctxpopup_item_disabled_get(const Elm_Object_Item *it)
 {
-   return elm_object_item_disabled_get(it);
+   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
+   Elm_Ctxpopup_Item *ctxpopup_it = (Elm_Ctxpopup_Item *) it;
+   return ctxpopup_it->disabled;
 }
 
 EAPI void
index 32c8cbd..99d6f09 100644 (file)
@@ -670,7 +670,14 @@ _title_prev_btn_set(Elm_Naviframe_Item *it,
      evas_object_del(it->title_prev_btn);
 
    it->title_prev_btn = btn;
-   if (!btn) return;
+
+   if (!btn)
+     {
+        edje_object_signal_emit(VIEW(it),
+                                "elm,state,prev_btn,hide",
+                                "elm");
+        return;
+     }
 
    elm_widget_sub_object_add(WIDGET(it), btn);
    evas_object_event_callback_add(btn,
@@ -693,7 +700,14 @@ _title_next_btn_set(Elm_Naviframe_Item *it, Evas_Object *btn)
      evas_object_del(it->title_next_btn);
 
    it->title_next_btn = btn;
-   if (!btn) return;
+
+   if (!btn)
+     {
+        edje_object_signal_emit(VIEW(it),
+                                "elm,state,next_btn,hide",
+                                "elm");
+        return;
+     }
 
    elm_widget_sub_object_add(WIDGET(it), btn);
    evas_object_event_callback_add(btn,
@@ -715,7 +729,14 @@ _title_icon_set(Elm_Naviframe_Item *it, Evas_Object *icon)
      evas_object_del(it->icon);
 
    it->icon = icon;
-   if (!icon) return;
+
+   if (!icon)
+     {
+        edje_object_signal_emit(VIEW(it),
+                                "elm,state,icon,hide",
+                                "elm");
+        return;
+     }
 
    elm_widget_sub_object_add(WIDGET(it), icon);
    evas_object_event_callback_add(icon,
diff --git a/src/lib/elc_navigationbar.c b/src/lib/elc_navigationbar.c
new file mode 100644 (file)
index 0000000..8a33a0f
--- /dev/null
@@ -0,0 +1,1491 @@
+#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;
+}
diff --git a/src/lib/elc_navigationbar_ex.c b/src/lib/elc_navigationbar_ex.c
new file mode 100644 (file)
index 0000000..69b2b60
--- /dev/null
@@ -0,0 +1,1211 @@
+#include <Elementary.h>
+#include "elm_priv.h"
+
+/**
+ * @defgroup Navigationbar_ex Navigationbar_ex
+ * @ingroup Elementary
+ *
+ * The NavigationBar_ex is an object that allows flipping (with animation) between 1 or
+ * more pages of objects, much like a stack of windows within the window as well display
+ * the title area for the page consisting of buttons, title, titleobjects etc:-.
+ *
+ * Objects can be pushed or popped from the stack or deleted as normal.
+ * Pushes and pops will animate and a pop will delete the object once the
+ * animation is finished if delete_on_pop is set else the content is unset and the
+ * content pointer is sent as event information in the hide,finished signal.
+ * Any object in the Navigationbar_ex can be promoted to the top
+ * (from its current stacking position) as well. Objects are pushed to the
+ * top with elm_navigationbar_ex_item_push() and when the top item is no longer
+ * wanted, simply pop it with elm_navigationbar_ex_item_pop() and it will also be
+ * deleted/unset depending on delete_on_pop variable.
+ * Any object you wish to promote to the top that is already in the
+ * navigationbar, simply use elm_navigationbar_ex_item_promote(). If an object is no longer
+ * needed and is not the top item, just delete it as normal. You can query
+ * which objects are the top and bottom with elm_navigationbar_ex_item_bottom_get()
+ * and elm_navigationbar_ex_item_top_get().
+ */
+
+typedef struct _Widget_Data Widget_Data;
+typedef struct _function_button fn_button;
+
+struct _Widget_Data
+{
+   Eina_List *stack, *to_delete;
+   Elm_Navigationbar_ex_Item *top, *oldtop;
+   Evas_Object *rect, *clip;
+   Eina_Bool del_on_pop : 1;
+   Eina_Bool disable_animation: 1;
+};
+
+struct _Elm_Navigationbar_ex_Item
+{
+   Evas_Object *obj, *base, *content;
+   Evas_Object *ct_base;
+   Evas_Coord minw, minh;
+   const char *title;
+   const char *subtitle;
+   const char *item_style;
+   Eina_List *fnbtn_list;
+   Evas_Object *title_obj;
+   Evas_Object *icon;
+   Eina_Bool popme : 1;
+   Eina_Bool titleobj_visible:1;
+};
+
+struct _function_button
+{
+   Evas_Object *btn;
+   int btn_id;
+};
+
+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 _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void _sub_del(void *data, Evas_Object *obj, void *event_info);
+
+static const char SIG_HIDE_FINISHED[] = "hide,finished";
+static const char SIG_TITLE_OBJ_VISIBLE_CHANGED[] = "titleobj,visible,changed";
+
+static const Evas_Smart_Cb_Description _signals[] = {
+       {SIG_HIDE_FINISHED, ""},
+       {SIG_TITLE_OBJ_VISIBLE_CHANGED, ""},
+       {NULL, NULL}
+};
+
+static void
+_del_hook(Evas_Object *obj)
+{
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   free(wd);
+}
+
+static Evas_Object*
+_content_unset(Elm_Navigationbar_ex_Item* item)
+{
+   if (!item) return NULL;
+   Evas_Object *content = NULL;
+   if (!item->content) return NULL;
+   content = item->content;
+   elm_widget_sub_object_del(item->obj,item->content);
+   edje_object_part_unswallow(item->ct_base,item->content);
+   item->content = NULL;
+   evas_object_hide(content);
+   return content;
+}
+
+static void
+_theme_hook(Evas_Object *obj)
+{
+   Widget_Data *wd = elm_widget_data_get(obj);
+   Eina_List *l;
+   char buf_fn[1024];
+   char buf[1024];
+   Elm_Navigationbar_ex_Item *it;
+   if (!wd) return;
+   EINA_LIST_FOREACH(wd->stack, l, it)
+     {
+        Eina_List *bl;
+        fn_button *btn_det;
+        edje_object_scale_set(it->base, elm_widget_scale_get(obj) *
+                              _elm_config->scale);
+        strncpy(buf, "item/", sizeof(buf));
+        strncat(buf, it->item_style, sizeof(buf) - strlen(buf));
+        _elm_theme_object_set(obj, it->base,  "navigationbar_ex", buf, elm_widget_style_get(obj));
+        _elm_theme_object_set(obj, it->ct_base,  "navigationbar_ex", "content", elm_widget_style_get(obj));
+        if (it->title)
+          edje_object_part_text_set(it->base, "elm.text", it->title);
+        if (it->subtitle)
+          edje_object_part_text_set(it->base, "elm.text.sub", it->subtitle);
+        if (it->title_obj)
+          {
+             edje_object_part_swallow(it->base, "elm.swallow.title", it->title_obj);
+             if (it->titleobj_visible)
+               edje_object_signal_emit(it->base, "elm,state,show,title", "elm");
+             else
+               edje_object_signal_emit(it->base, "elm,state,hide,title", "elm");
+          }
+        if (it->icon)
+          edje_object_part_swallow(it->base, "elm.swallow.icon", it->icon);
+        EINA_LIST_FOREACH(it->fnbtn_list, bl, btn_det)
+          {
+             if (btn_det->btn_id == ELM_NAVIGATIONBAR_EX_BACK_BUTTON)
+               {
+                  snprintf(buf_fn, sizeof(buf_fn), "navigationbar_backbutton/%s", elm_widget_style_get(obj));
+                  snprintf(buf, sizeof(buf), "elm.swallow.back");
+               }
+             else
+               {
+                  snprintf(buf_fn, sizeof(buf_fn), "navigationbar_functionbutton/%s", elm_widget_style_get(obj));
+                  snprintf(buf, sizeof(buf), "elm.swallow.btn%d", btn_det->btn_id);
+               }
+             elm_object_style_set(btn_det->btn, buf_fn);
+             edje_object_part_swallow(it->base, buf, btn_det->btn);
+          }
+     }
+   _sizing_eval(obj);
+}
+
+static void
+_sizing_eval(Evas_Object *obj)
+{
+   Widget_Data *wd = elm_widget_data_get(obj);
+   Evas_Coord minw = -1, minh = -1;
+   Eina_List *l;
+   Elm_Navigationbar_ex_Item *it;
+   if (!wd) return;
+   EINA_LIST_FOREACH(wd->stack, l, it)
+     {
+        if (it->minw > minw) minw = it->minw;
+        if (it->minh > minh) minh = it->minh;
+     }
+   evas_object_size_hint_min_set(obj, minw, minh);
+   evas_object_size_hint_max_set(obj, -1, -1);
+}
+
+static void
+_changed_size_hints(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+   Elm_Navigationbar_ex_Item *it = data;
+   Evas_Coord minw = -1, minh = -1;
+   evas_object_size_hint_min_get(it->content, &minw, &minh);
+   // FIXME: why is this needed? how does edje get this unswallowed or
+   // lose its callbacks to edje
+   edje_object_part_swallow(it->ct_base, "elm.swallow.content", it->content);
+   edje_object_size_min_calc(it->base, &it->minw, &it->minh);
+   _sizing_eval(it->obj);
+}
+
+static void
+_eval_top(Evas_Object *obj)
+{
+   Widget_Data *wd = elm_widget_data_get(obj);
+   Eina_Bool animate = EINA_TRUE;
+   Elm_Navigationbar_ex_Item *ittop = NULL;
+   if (!wd) return;
+   if (!wd->stack) return;
+   ittop = eina_list_last(wd->stack)->data;
+   if (ittop != wd->top)
+     {
+        Evas_Object *o1, *o2;
+        const char *onshow, *onhide;
+
+        if (wd->top)
+          {
+             o1 = wd->top->ct_base;
+             o2 = wd->top->base;/*make use of the signals sent for animation*/
+
+             /*issue to fix, hide signal does not come for t_base, increasing time helps
+              in getting correct events in pop*/
+             if (wd->disable_animation)
+               {
+                  edje_object_signal_emit(o2, "elm,action,hide,noanimate", "elm");
+                  edje_object_signal_emit(o1, "elm,action,hide,noanimate", "elm");
+               }
+             else if (wd->top->popme)
+               {
+                  edje_object_signal_emit(o2, "elm,action,pop", "elm");
+                  edje_object_signal_emit(o1, "elm,action,pop", "elm");
+               }
+             else
+               {
+                  edje_object_signal_emit(o2, "elm,action,hide", "elm");
+                  edje_object_signal_emit(o1, "elm,action,hide", "elm");
+               }
+             onhide = edje_object_data_get(o1, "onhide");
+             if (onhide)
+               {
+                  if (!strcmp(onhide, "raise")) {
+                     evas_object_raise(o2);
+                     evas_object_raise(o1);
+                  }
+                  else if (!strcmp(onhide, "lower")) {
+                       evas_object_lower(o2);
+                       evas_object_lower(o1);
+                  }
+               }
+          }
+        else
+          {
+             animate = EINA_FALSE;
+          }
+        wd->oldtop = wd->top;
+        wd->top = ittop;
+        o1 = wd->top->ct_base;
+        o2 = wd->top->base;
+        evas_object_show(o2);
+        evas_object_show(o1);
+
+        if ((!animate)||(wd->disable_animation))
+          {
+             edje_object_signal_emit(o2, "elm,action,show,noanimate", "elm");
+             edje_object_signal_emit(o1, "elm,action,show,noanimate", "elm");
+          }
+        else if (wd->oldtop)
+          {
+             if (elm_object_focus_get(wd->oldtop->content))
+               elm_widget_focused_object_clear(wd->oldtop->content);
+             if (wd->oldtop->popme)
+               {
+                  edje_object_signal_emit(o2, "elm,action,show", "elm");
+                  edje_object_signal_emit(o1, "elm,action,show", "elm");
+               }
+             else
+               {
+                  edje_object_signal_emit(o2, "elm,action,push", "elm");
+                  edje_object_signal_emit(o1, "elm,action,push", "elm");
+               }
+          }
+        else
+          {
+             edje_object_signal_emit(o2, "elm,action,push", "elm");
+             edje_object_signal_emit(o1, "elm,action,push", "elm");
+          }
+        onshow = edje_object_data_get(o1, "onshow");
+        if (onshow)
+          {
+             if (!strcmp(onshow, "raise")) {
+                evas_object_raise(o2);
+                evas_object_raise(o1);
+             }
+             else if (!strcmp(onshow, "lower")) {
+                evas_object_lower(o2);
+                evas_object_lower(o1);
+             }
+          }
+     }
+}
+
+static void
+_move(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
+{
+   Widget_Data *wd = elm_widget_data_get(data);
+   Evas_Coord x, y;
+   Eina_List *l;
+   Elm_Navigationbar_ex_Item *it;
+   if (!wd) return;
+   evas_object_geometry_get(obj, &x, &y, NULL, NULL);
+   EINA_LIST_FOREACH(wd->stack, l, it)
+     evas_object_move(it->base, x, y);
+}
+
+static void
+_sub_del(void *data, Evas_Object *obj __UNUSED__, void *event_info)
+{
+   Widget_Data *wd = elm_widget_data_get(data);
+   Evas_Object *sub = event_info;
+   Eina_List *l,*list;
+   fn_button *btn_data;
+   Elm_Navigationbar_ex_Item *it;
+   if (!wd) return;
+   EINA_LIST_FOREACH(wd->stack, l, it)
+     {
+        if (it->content == sub)
+          {
+             wd->stack = eina_list_remove_list(wd->stack, l);
+             evas_object_event_callback_del_full
+               (sub, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints, it);
+             if (it->title) eina_stringshare_del(it->title);
+             if (it->subtitle) eina_stringshare_del(it->subtitle);
+             EINA_LIST_FOREACH(it->fnbtn_list, list, btn_data)
+               {
+                  evas_object_del(btn_data->btn);
+                  free(btn_data);
+                  btn_data = NULL;
+               }
+             if (it->item_style) eina_stringshare_del(it->item_style);
+             if (it->title_obj) evas_object_del(it->title_obj);
+             if (it->icon) evas_object_del(it->icon);
+             evas_object_del(it->ct_base);
+             evas_object_del(it->base);
+             _eval_top(it->obj);
+             free(it);
+             return;
+          }
+     }
+}
+
+static void
+_resize(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
+{
+   Widget_Data *wd = elm_widget_data_get(data);
+   Evas_Coord w, h;
+   Eina_List *l;
+   Elm_Navigationbar_ex_Item *it;
+   if (!wd) return;
+   evas_object_geometry_get(obj, NULL, NULL, &w, &h);
+   EINA_LIST_FOREACH(wd->stack, l, it) evas_object_resize(it->base, w, h);
+}
+
+static void
+_signal_hide_finished(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
+{
+   Elm_Navigationbar_ex_Item *it = data;
+   Evas_Object *obj2 = it->obj;
+   Widget_Data *wd = elm_widget_data_get(it->obj);
+   evas_object_hide(it->ct_base);
+   evas_object_hide(it->base);
+   edje_object_signal_emit(it->base, "elm,action,reset", "elm");
+   edje_object_signal_emit(it->ct_base, "elm,action,reset", "elm");
+   evas_object_smart_callback_call(obj2, SIG_HIDE_FINISHED, it->content);
+   edje_object_message_signal_process(it->base);
+   edje_object_message_signal_process(it->ct_base);
+   if (it->popme)
+     {
+        if (wd->del_on_pop)
+          {
+             evas_object_del(it->content);
+          }
+        else
+          {
+             _content_unset(it);
+          }
+     }
+   _sizing_eval(obj2);
+}
+
+static void
+_item_promote(Elm_Navigationbar_ex_Item* item)
+{
+   if (!item) return;
+   Widget_Data *wd = elm_widget_data_get(item->obj);
+   Eina_List *l;
+   Elm_Navigationbar_ex_Item *it;
+   if (!wd) return;
+   EINA_LIST_FOREACH(wd->stack, l, it)
+     {
+        if (it == item)
+          {
+             wd->stack = eina_list_remove_list(wd->stack, l);
+             wd->stack = eina_list_append(wd->stack, it);
+             _eval_top(it->obj);
+             return;
+          }
+     }
+}
+
+static void
+_process_deletions(Widget_Data *wd)
+{
+   if (!wd) return;
+   Elm_Navigationbar_ex_Item *it;
+   fn_button *btn_data;
+   Eina_List *list;
+   EINA_LIST_FREE(wd->to_delete, it)
+     {
+        evas_object_event_callback_del_full
+          (it->content, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints, it);
+        if (it->title) eina_stringshare_del(it->title);
+        if (it->subtitle) eina_stringshare_del(it->subtitle);
+        if (it->item_style) eina_stringshare_del(it->item_style);
+        EINA_LIST_FOREACH(it->fnbtn_list, list, btn_data)
+          {
+             evas_object_del(btn_data->btn);
+             free(btn_data);
+             btn_data = NULL;
+          }
+        if (it->title_obj) evas_object_del(it->title_obj);
+        if (it->content)  evas_object_del(it->content);
+        if (it->icon) evas_object_del(it->icon);
+        evas_object_del(it->ct_base);
+        evas_object_del(it->base);
+        _eval_top(it->obj);
+        free(it);
+        it = NULL;
+     }
+}
+
+static void
+_switch_titleobj_visibility(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
+{
+   Elm_Navigationbar_ex_Item *item = (Elm_Navigationbar_ex_Item *)data;
+   if(!item) return;
+   if(!item->title_obj) return;
+   if(!item->titleobj_visible)
+     {
+        edje_object_signal_emit(item->base, "elm,state,show,title", "elm");
+        evas_object_smart_callback_call(item->obj, SIG_TITLE_OBJ_VISIBLE_CHANGED, (void *) EINA_TRUE);
+        item->titleobj_visible = EINA_TRUE;
+     }
+   else
+     {
+        edje_object_signal_emit(item->base, "elm,state,hide,title", "elm");
+        evas_object_smart_callback_call(item->obj, SIG_TITLE_OBJ_VISIBLE_CHANGED, (void *) EINA_FALSE);
+        item->titleobj_visible = EINA_FALSE;
+     }
+}
+
+static 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_ex_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;
+
+   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;
+     }
+   /*sending signal to top most item of the stack*/
+   edje_object_signal_emit(it->base, emission, source);
+}
+
+/**
+ * Add a new navigationbar_ex to the parent
+ *
+ * @param[in] parent The parent object
+ * @return The new object or NULL if it cannot be created
+ *
+ * @ingroup Navigationbar_ex
+ */
+EAPI Evas_Object *
+elm_navigationbar_ex_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_ex");
+   elm_widget_type_set(obj, "navigationbar_ex");
+   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_can_focus_set(obj, EINA_FALSE);
+   elm_widget_signal_emit_hook_set(obj, _emit_hook);
+   wd->clip = evas_object_rectangle_add(e);
+   elm_widget_resize_object_set(obj, wd->clip);
+   elm_widget_sub_object_add(obj, wd->clip);
+
+   wd->rect = evas_object_rectangle_add(e);
+   elm_widget_sub_object_add(obj, wd->rect);
+   evas_object_color_set(wd->rect, 255, 255, 255, 0);
+   evas_object_clip_set(wd->rect, wd->clip);
+
+   evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, _move, obj);
+   evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, _resize, obj);
+
+   evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, obj);
+   wd->del_on_pop = EINA_TRUE;
+   _sizing_eval(obj);
+   return obj;
+}
+
+/**
+ * Push an object along with its style to the top of the Navigationbar_ex stack (and show it)
+ *
+ * The object pushed becomes a child of the Navigationbar_ex and will be controlled
+ * it will be deleted when the Navigationbar_ex is deleted or when content is popped(depending on del_
+ * on_pop variable).
+ *
+ * @param[in] obj The Navigationbar_ex object
+ * @param[in] content The object to push
+ * @param[in] item_style The style of the page
+ * @return The Navigationbar_ex Item or NULL
+ * @ingroup Navigationbar_ex
+ */
+EAPI Elm_Navigationbar_ex_Item*
+elm_navigationbar_ex_item_push(Evas_Object *obj, Evas_Object *content, const char* item_style)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype)NULL;
+   Widget_Data *wd = elm_widget_data_get(obj);
+   Elm_Navigationbar_ex_Item *it;
+   Evas_Coord x, y, w, h;
+   char buf[1024];
+   if (!wd) return NULL;
+   if (!content) return NULL;
+   if (!item_style) return NULL;
+   it = ELM_NEW(Elm_Navigationbar_ex_Item);
+   if (!it) return NULL;
+   it->obj = obj;
+   it->content = content;
+   it->base = edje_object_add(evas_object_evas_get(obj));
+   it->ct_base = edje_object_add(evas_object_evas_get(obj));
+   it->titleobj_visible = EINA_TRUE;
+
+   evas_object_smart_member_add(it->base, obj);
+   evas_object_smart_member_add(it->ct_base, obj);
+
+   evas_object_geometry_get(obj, &x, &y, &w, &h);
+   evas_object_move(it->base, x, y);
+   evas_object_resize(it->base, w, h);
+   evas_object_clip_set(it->base, wd->clip);
+
+   elm_widget_sub_object_add(obj, it->base);
+   elm_widget_sub_object_add(obj, it->ct_base);
+
+   elm_widget_sub_object_add(obj, it->content);
+
+   _elm_theme_object_set(obj, it->ct_base,  "navigationbar_ex", "content", elm_widget_style_get(obj));
+
+   strncpy(buf, "item/", sizeof(buf));
+   strncat(buf, item_style, sizeof(buf) - strlen(buf));
+   eina_stringshare_replace(&it->item_style, item_style);
+   _elm_theme_object_set(obj, it->base,  "navigationbar_ex", buf, elm_widget_style_get(obj));
+
+
+   edje_object_part_swallow(it->base, "elm.swallow.content", it->ct_base);
+
+   edje_object_signal_callback_add(it->ct_base, "elm,action,hide,finished", "",
+                                   _signal_hide_finished, it);
+   evas_object_event_callback_add(it->content,
+                                  EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+                                  _changed_size_hints, it);
+   edje_object_part_swallow(it->ct_base, "elm.swallow.content", it->content);
+   edje_object_size_min_calc(it->base, &it->minw, &it->minh);
+   evas_object_data_set(it->base, "_elm_leaveme", obj);
+   evas_object_show(it->content);
+   wd->stack = eina_list_append(wd->stack, it);
+   _eval_top(obj);
+   _sizing_eval(obj);
+   return it;
+}
+
+/**
+ * Set the title string for the pushed Item.
+ * @param[in] item The Navigationbar_ex Item
+ * @param[in] title The title string
+ *
+ * @ingroup Navigationbar_ex
+ */
+EAPI void
+elm_navigationbar_ex_item_title_label_set( Elm_Navigationbar_ex_Item* item, const char *title)
+{
+   if (!item) return;
+   if (!eina_stringshare_replace(&item->title, title)) return;
+   if (item->base)
+     {
+        edje_object_part_text_set(item->base, "elm.text", item->title);
+     }
+}
+
+/**
+ * Return the title string of the pushed item.
+ *
+ * @param[in]  item The Navigationbar_ex Item
+ * @return The title string or NULL if none
+ *
+ * @ingroup Navigationbar_ex
+ */
+EAPI const char *
+elm_navigationbar_ex_item_title_label_get(Elm_Navigationbar_ex_Item* item)
+{
+   if(!item) return NULL;
+   return item->title;
+}
+
+/**
+ * Set the sub title string for the pushed content
+ *
+ * @param[in] item The Navigationbar_ex Item
+ * @param[in] subtitle The subtitle string
+ *
+ * @ingroup Navigationbar_ex
+ */
+EAPI void
+elm_navigationbar_ex_item_subtitle_label_set( Elm_Navigationbar_ex_Item* item, const char *subtitle)
+{
+   if (!item) return;
+   if (!eina_stringshare_replace(&item->subtitle, subtitle)) return;
+   if (item->base)
+     edje_object_part_text_set(item->base, "elm.text.sub", item->subtitle);
+}
+
+/**
+ * Return the subtitle string of the pushed content
+ *
+ * @param[in] item The Navigationbar_ex Item
+ * @return The subtitle string or NULL if none
+ *
+ * @ingroup Navigationbar_ex
+ */
+EAPI const char *
+elm_navigationbar_ex_item_subtitle_label_get(Elm_Navigationbar_ex_Item* item)
+{
+   if (!item) return NULL;
+   return item->subtitle;
+}
+
+/**
+ * Set's the icon object of the pushed content
+ *
+ * @param[in] item The Navigationbar_ex Item
+ * @param[in] The icon object or NULL if none
+ *
+ *@ingroup Navigationbar_ex
+ */
+EAPI void
+elm_navigationbar_ex_item_icon_set(Elm_Navigationbar_ex_Item* item, Evas_Object *icon)
+{
+   if (!item) return;
+   if (item->icon == icon) return;
+   if (item->icon) evas_object_del(item->icon);
+   item->icon = icon;
+   if(icon)
+     {
+        edje_object_part_swallow(item->base, "elm.swallow.icon", icon);
+        elm_widget_sub_object_add(item->obj, icon);
+        edje_object_signal_emit(item->base, "elm,state,icon,visible", "elm");
+        edje_object_message_signal_process(item->base);
+     }
+   else
+     edje_object_signal_emit(item->base, "elm,state,icon,hidden", "elm");
+}
+
+/**
+ * Return the icon object of the pushed content
+ *
+ * @param[in] item The Navigationbar_ex Item
+ * @return The icon object or NULL if none
+ *
+ * @ingroup Navigationbar_ex
+ */
+EAPI Evas_Object *
+elm_navigationbar_ex_item_icon_get(Elm_Navigationbar_ex_Item* item)
+{
+   if (!item) return NULL;
+   return item->icon;
+}
+
+
+/**
+ * Set the button object of the pushed content
+ *
+ * @param[in] item The Navigationbar_ex Item
+ * @param[in] btn_label The button label
+ * @param[in] icon The button icon
+ * @param[in] button_type Indicates the position[use macros of type Elm_Navi_ex_Button_Type
+ * if more function buttons are required you can use values ELM_NAVIGATIONBAR_EX_MAX and more]
+ * @param[in] func Callback function called when button is clicked.
+ * @param[in] data Callback data that would be sent when button is clicked.
+ * @ingroup Navigationbar_ex
+ */
+EAPI void
+elm_navigationbar_ex_item_title_button_set(Elm_Navigationbar_ex_Item* item, char *btn_label, Evas_Object *icon, int button_type, Evas_Smart_Cb func, const void *data)
+{
+   if (!item) return;
+   Eina_List *bl;
+   Evas_Object *btn;
+   char buf[1024],theme[1024];
+   fn_button *btn_det = NULL;
+   EINA_LIST_FOREACH(item->fnbtn_list, bl, btn_det)
+     {
+        if (btn_det->btn_id == button_type)
+          {
+             evas_object_del(btn_det->btn);
+             free(btn_det);
+             btn_det = NULL;
+             item->fnbtn_list = eina_list_remove_list(item->fnbtn_list, bl);
+          }
+     }
+   btn = elm_button_add(item->obj);
+   btn_det = ELM_NEW(btn_det);
+   if (!btn_det) return;
+   if (button_type == ELM_NAVIGATIONBAR_EX_BACK_BUTTON)
+     {
+        snprintf(theme, sizeof(theme), "navigationbar_backbutton/%s", elm_widget_style_get(item->obj));
+        elm_object_style_set(btn, theme);
+        snprintf(buf, sizeof(buf), "elm.swallow.back");
+     }
+   else
+     {
+        snprintf(theme, sizeof(theme), "navigationbar_functionbutton/%s", elm_widget_style_get(item->obj));
+        elm_object_style_set(btn, theme);
+        snprintf(buf, sizeof(buf), "elm.swallow.btn%d", button_type);
+     }
+   if (btn_label)
+     elm_object_text_set(btn, btn_label);
+   if (icon)
+     elm_object_content_set(btn, icon);
+   elm_object_focus_allow_set(btn, EINA_FALSE);
+   evas_object_smart_callback_add(btn, "clicked", func, data);
+   edje_object_part_swallow(item->base, buf, btn);
+   elm_widget_sub_object_add(item->obj, btn);
+   btn_det->btn = btn;
+   btn_det->btn_id = button_type;
+   item->fnbtn_list = eina_list_append(item->fnbtn_list, btn_det);
+}
+
+/**
+ * Return the button object of the pushed content
+ *
+ * @param[in] item The Navigationbar_ex Item
+ * @param[in] button_type Indicates the position
+ * @return The button object or NULL if none
+ *
+ * @ingroup Navigationbar_ex
+ */
+EAPI Evas_Object *
+elm_navigationbar_ex_item_title_button_get(Elm_Navigationbar_ex_Item* item, int button_type)
+{
+   if (!item) return NULL;
+   fn_button *btn_det;
+   Eina_List *bl;
+   EINA_LIST_FOREACH(item->fnbtn_list, bl, btn_det)
+     {
+        if (btn_det->btn_id == button_type)
+          return btn_det->btn;
+     }
+   return NULL;
+}
+
+/**
+ * Unset the button object of the pushed content
+ *
+ * @param[in] item The Navigationbar_ex Item
+ * @param[in] button_type Indicates the position
+ * @return The button object or NULL if none
+ *
+ * @ingroup Navigationbar_ex
+ */
+EAPI Evas_Object *
+elm_navigationbar_ex_item_title_button_unset(Elm_Navigationbar_ex_Item* item, int button_type)
+{
+   if (!item) return NULL;
+   fn_button *btn_det;
+   Eina_List *bl;
+   Evas_Object *btn_ret;
+   EINA_LIST_FOREACH(item->fnbtn_list, bl, btn_det)
+     {
+        if (btn_det->btn_id == button_type)
+          {
+             btn_ret = btn_det->btn;
+             elm_widget_sub_object_del(item->obj,btn_det->btn);
+             edje_object_part_unswallow(item->base,btn_det->btn);
+             item->fnbtn_list = eina_list_remove_list(item->fnbtn_list, bl);
+             btn_det->btn = NULL;
+             return btn_ret;
+          }
+     }
+   return NULL;
+}
+
+/**
+ * Sets a title object for the Item
+ * @param[in] item The Navigationbar_ex Item
+ * @param[in] title_obj Title object (normally segment_control/searchbar)
+ *
+ * @ingroup Navigationbar_ex
+ */
+EAPI void
+elm_navigationbar_ex_item_title_object_set(Elm_Navigationbar_ex_Item* item, Evas_Object *title_obj)
+{
+   if (!item) return;
+   if (item->title_obj) evas_object_del(item->title_obj);
+   item->title_obj = title_obj;
+   if (title_obj)
+     {
+        elm_widget_sub_object_add(item->obj,title_obj);
+        edje_object_part_swallow(item->base, "elm.swallow.title", title_obj);
+        edje_object_signal_callback_add(item->base, "elm,action,clicked", "elm",
+                                        _switch_titleobj_visibility, item);
+     }
+   _sizing_eval(item->obj);
+}
+
+/**
+ * Hides the title area of the item.
+ * @param[in] item The Navigationbar_ex Item
+ * @param[in] hidden if EINA_TRUE the title area is hidden else its shown.
+ *
+ * @ingroup Navigationbar_ex
+ */
+
+EAPI void
+elm_navigationbar_ex_item_title_hidden_set(Elm_Navigationbar_ex_Item* item, Eina_Bool hidden)
+{
+   if (!item) return;
+   if (hidden) edje_object_signal_emit(item->base, "elm,state,item,moveup", "elm");
+   else edje_object_signal_emit(item->base, "elm,state,item,movedown", "elm");
+   _sizing_eval(item->obj);
+}
+
+/**
+ * Unsets a title object for the item, the return object has to be deleted
+ * by application if not added again in to navigationbar.
+ *
+ * @param[in] item The Navigationbar_ex Item
+ * @return The title object or NULL if none is set
+ *
+ * @ingroup Navigationbar_ex
+ */
+EAPI Evas_Object*
+elm_navigationbar_ex_item_title_object_unset(Elm_Navigationbar_ex_Item* item)
+{
+   if (!item) return NULL;
+   Evas_Object *title_obj=NULL;
+   if (!item->title_obj) return NULL;
+   title_obj = item->title_obj;
+   edje_object_signal_callback_del(item->base, "elm,action,clicked", "elm",
+                                   _switch_titleobj_visibility);
+   elm_widget_sub_object_del(item->obj,item->title_obj);
+   edje_object_part_unswallow(item->base,item->title_obj);
+   item->title_obj = NULL;
+   return title_obj;
+}
+
+/**
+ * Returns the title object of the pushed content.
+ *
+ * @param[in] item The Navigationbar_ex Item
+ * @return The title object or NULL if none is set
+ *
+ * @ingroup Navigationbar_ex
+ */
+EAPI Evas_Object*
+elm_navigationbar_ex_item_title_object_get(Elm_Navigationbar_ex_Item* item)
+{
+   if (!item) return NULL;
+   return item->title_obj;
+}
+
+
+/**
+ * Unsets the content of the item, the return object has to be deleted
+ * by application if not added again in to navigationbar, when the content
+ * is unset the corresponding item would be deleted, when this content is pushed again
+ * a new item would be created again.
+ *
+ * @param[in] item The Navigationbar_ex Item
+ * @return The content object or NULL if none is set
+ *
+ * @ingroup Navigationbar_ex
+ */
+EAPI Evas_Object *
+elm_navigationbar_ex_item_content_unset(Elm_Navigationbar_ex_Item* item)
+{
+ if (!item) return NULL;
+   Evas_Object *content = _content_unset(item);
+   return content;
+}
+
+/**
+ * Returns the content of the item.
+ *
+ * @param[in] item The Navigationbar_ex Item
+ * @return The content object or NULL if none is set
+ *
+ * @ingroup Navigationbar_ex
+ */
+EAPI Evas_Object *
+elm_navigationbar_ex_item_content_get(Elm_Navigationbar_ex_Item* item)
+{
+   if (!item) return NULL;
+   return item->content;
+}
+
+/**
+ * Set whether the content pushed has to be deleted on pop.
+ * if false the item is not deleted but only removed from the stack
+ * the pointer of the content is sent along with hide,finished signal.
+ *
+ * @param[in] obj The Navigationbar_ex object.
+ * @param[in] del_on_pop if set the content is deleted on pop else unset, by default the value is EINA_TRUE.
+ *
+ * @ingroup Navigationbar_ex
+ */
+EAPI void
+elm_navigationbar_ex_delete_on_pop_set(Evas_Object *obj, Eina_Bool del_on_pop)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   wd->del_on_pop = del_on_pop;
+}
+
+/**
+ * Sets the style of the navigationbar item.
+ * @param[in] item The Navigationbar_ex Item
+ * @param[in] item_style Navigationbar Item style, this can be used when the style of the item has to be dynamically set.
+ *
+ * @ingroup Navigationbar_ex
+ */
+EAPI void
+elm_navigationbar_ex_item_style_set(Elm_Navigationbar_ex_Item* item, const char* item_style)
+{
+   if (!item) return;
+   if(!item_style) return;
+   char buf[1024];
+   char buf_fn[1024];
+   Eina_List *bl;
+   fn_button *btn_det;
+   strncpy(buf, "item/", sizeof(buf));
+   strncat(buf, item_style, sizeof(buf) - strlen(buf));
+   if (!eina_stringshare_replace(&item->item_style, item_style)) return;
+   _elm_theme_object_set(item->obj, item->base,  "navigationbar_ex", buf, elm_widget_style_get(item->obj));
+   if (item->title)
+     edje_object_part_text_set(item->base, "elm.text", item->title);
+   if (item->subtitle)
+     edje_object_part_text_set(item->base, "elm.text.sub", item->subtitle);
+   if (item->fnbtn_list)
+     {
+        EINA_LIST_FOREACH(item->fnbtn_list, bl, btn_det)
+          {
+             if (btn_det->btn_id == ELM_NAVIGATIONBAR_EX_BACK_BUTTON)
+               {
+                  snprintf(buf_fn, sizeof(buf_fn), "navigationbar_backbutton/%s", elm_widget_style_get(item->obj));
+                  elm_object_style_set(btn_det->btn, buf_fn);
+               }
+             else
+               {
+                  snprintf(buf_fn, sizeof(buf_fn), "navigationbar_functionbutton/%s", elm_widget_style_get(item->obj));
+                  elm_object_style_set(btn_det->btn, buf_fn);
+               }
+          }
+     }
+}
+
+/**
+ * Returns the style of the item.
+ *
+ * @param[in] item The Navigationbar_ex Item
+ * @return The item style.
+ *
+ * @ingroup Navigationbar_ex
+ */
+EAPI const char*
+elm_navigationbar_ex_item_style_get(Elm_Navigationbar_ex_Item* item)
+{
+   if (!item) return NULL;
+   return item->item_style;
+}
+
+
+/**
+ * Promote an object already in the stack to the top of the stack
+ *
+ * This will take the indicated object and promote it to the top of the stack
+ * as if it had been pushed there. The object must already be inside the
+ * Navigationbar_ex stack to work.
+ *
+ * @param[in] item The Navigationbar_ex item to promote.
+ * @ingroup Navigationbar_ex
+ */
+EAPI void
+elm_navigationbar_ex_item_promote(Elm_Navigationbar_ex_Item* item)
+{
+   if (!item) return;
+   _item_promote(item);
+}
+
+/**
+ * Pop to the inputted Navigationbar_ex item
+ * the rest of the items are deleted.
+ *
+ * @param[in] item The Navigationbar_ex item
+ *
+ * @ingroup Navigationbar_ex
+ */
+EAPI void
+elm_navigationbar_ex_to_item_pop(Elm_Navigationbar_ex_Item* item)
+{
+   if (!item) return;
+   Widget_Data *wd = elm_widget_data_get(item->obj);
+   Elm_Navigationbar_ex_Item *it = NULL;
+   Eina_List *list;
+   if (!wd) return;
+   if (!wd->stack) return;
+   it = eina_list_last(wd->stack)->data;
+   it->popme = EINA_TRUE;
+   list = eina_list_last(wd->stack);
+   if (list)
+     {
+        while (list)
+          {
+             it = list->data;
+             if (it != item)
+               {
+                  wd->to_delete = eina_list_append(wd->to_delete, it);
+                  wd->stack = eina_list_remove_list(wd->stack, list);
+               }
+             else
+               break;
+
+             list = list->prev;
+          }
+     }
+   _eval_top(it->obj);
+   if (wd->to_delete)
+     _process_deletions(wd);
+}
+
+/**
+ * Pop the object that is on top of the Navigationbar_ex stack
+ * This pops the object that is on top (visible) in the navigationbar, makes it disappear, then deletes/unsets the object
+ * based on del_on_pop variable.
+ * The object that was underneath it on the stack will become visible.
+ *
+ * @param[in] obj The Navigationbar_ex object
+ *
+ * @ingroup Navigationbar_ex
+ */
+EAPI void
+elm_navigationbar_ex_item_pop(Evas_Object *obj)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   Eina_List *ll;
+   Elm_Navigationbar_ex_Item *it;
+   if (!wd) return;
+   if (!wd->stack) return;
+   it = eina_list_last(wd->stack)->data;
+   it->popme = EINA_TRUE;
+   ll = eina_list_last(wd->stack);
+   if (ll)
+     {
+        ll = ll->prev;
+        if (!ll)
+          {
+
+             Evas_Object *o, *o2;
+             const char *onhide;
+
+             wd->top = it;
+             o = wd->top->ct_base;
+             o2 = wd->top->base;
+
+             edje_object_signal_emit(o2, "elm,action,pop", "elm");
+             edje_object_signal_emit(o, "elm,action,pop", "elm");
+             onhide = edje_object_data_get(o, "onhide");
+             if (onhide)
+               {
+                  if (!strcmp(onhide, "raise"))
+                    {
+                       evas_object_raise(o2);
+                       evas_object_raise(o);
+                    }
+                  else if (!strcmp(onhide, "lower"))
+                    {
+                       evas_object_lower(o2);
+                       evas_object_lower(o);
+                    }
+               }
+             wd->top = NULL;
+          }
+        else
+          {
+             it = ll->data;
+             _item_promote(it);
+          }
+     }
+}
+
+
+/**
+ * Return the item at the bottom of the Navigationbar_ex stack
+ *
+ * @param[in] obj The Navigationbar_ex object
+ * @return The bottom item or NULL if none
+ *
+ * @ingroup Navigationbar_ex
+ */
+EAPI Elm_Navigationbar_ex_Item*
+elm_navigationbar_ex_item_bottom_get(const Evas_Object *obj)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+   Widget_Data *wd = elm_widget_data_get(obj);
+   Elm_Navigationbar_ex_Item *it;
+   if (!wd) return NULL;
+   if (!wd->stack) return NULL;
+   it = wd->stack->data;
+   return it;
+}
+
+/**
+ * Return the item at the top of the Navigationbar_ex stack
+ *
+ * @param[in] obj The Navigationbar_ex object
+ * @return The top object or NULL if none
+ *
+ * @ingroup Navigationbar_ex
+ */
+EAPI Elm_Navigationbar_ex_Item*
+elm_navigationbar_ex_item_top_get(const Evas_Object *obj)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+   Widget_Data *wd = elm_widget_data_get(obj);
+   Elm_Navigationbar_ex_Item *it;
+   if (!wd) return NULL;
+   if (!wd->stack) return NULL;
+   it = eina_list_last(wd->stack)->data;
+   return it;
+}
+
+/**
+ * This disables content animation on push/pop.
+ *
+ * @param obj The navigationbar_ex object
+ * @param disable  if EINA_TRUE animation is disabled.
+ *
+ * @ingroup Navigationbar_ex
+ */
+EAPI void
+elm_navigationbar_ex_animation_disable_set(Evas_Object *obj, Eina_Bool disable)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   wd->disable_animation = disable;
+}
+
+/**
+ * This shows/hides title object area.
+ *
+ * @param[in] item The Navigationbar_ex item
+ * @param[in] visible  if EINA_TRUE title object is shown else its hidden.
+ * @ingroup Navigationbar_ex
+ */
+EAPI void
+elm_navigationbar_ex_title_object_visible_set(Elm_Navigationbar_ex_Item* item, Eina_Bool visible)
+{
+   if(!item) return;
+   if(!item->title_obj) return;
+   if(visible)
+     {
+        edje_object_signal_emit(item->base, "elm,state,show,title", "elm");
+        evas_object_smart_callback_call(item->obj, SIG_TITLE_OBJ_VISIBLE_CHANGED, (void *) EINA_TRUE);
+     }
+   else
+     {
+        edje_object_signal_emit(item->base, "elm,state,hide,title", "elm");
+        evas_object_smart_callback_call(item->obj, SIG_TITLE_OBJ_VISIBLE_CHANGED, (void *) EINA_FALSE);
+     }
+   item->titleobj_visible = visible;
+}
+
+/**
+ * This gets the status whether title object is shown/hidden.
+ *
+ * @param[in] item The Navigationbar_ex item
+ * @return The status whether title object is shown/hidden.
+ * @ingroup Navigationbar_ex
+ */
+Eina_Bool
+elm_navigationbar_ex_title_object_visible_get(Elm_Navigationbar_ex_Item* item)
+{
+   if (!item) return EINA_FALSE;
+   return item->titleobj_visible;
+}
+
+
+
index 89f8925..9d90e43 100644 (file)
@@ -456,7 +456,7 @@ _double_to_time(double value)
 static void
 _content_set_hook(Evas_Object *obj, const char *part, Evas_Object *content)
 {
-   if (part && strcmp(part, "video")) return;
+   if (!part || strcmp(part, "video")) return;
 #ifdef HAVE_EMOTION
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
index 99d4157..dd463e9 100644 (file)
@@ -122,7 +122,7 @@ _content_set_hook(Evas_Object *obj, const char *part, Evas_Object *content)
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd;
 
-   if (part && strcmp(part, "overlay")) return;
+   if (!part || strcmp(part, "overlay")) return;
 
    wd = elm_widget_data_get(obj);
    if (!wd) return;
@@ -146,7 +146,7 @@ _content_get_hook(const Evas_Object *obj, const char *part)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd;
-   if (part && strcmp(part, "overlay")) return NULL;
+   if (!part || strcmp(part, "overlay")) return NULL;
    wd = elm_widget_data_get(obj);
    if (!wd) return NULL;
    return wd->overlay;
@@ -158,7 +158,7 @@ _content_unset_hook(Evas_Object *obj, const char *part)
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd;
    Evas_Object *overlay;
-   if (part && strcmp(part, "overlay")) return NULL;
+   if (!part || strcmp(part, "overlay")) return NULL;
    wd = elm_widget_data_get(obj);
    if (!wd || !wd->overlay) return NULL;
    overlay = wd->overlay;
index 395159f..b846eb8 100644 (file)
@@ -518,8 +518,6 @@ 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 77bef04..53765ea 100644 (file)
@@ -238,7 +238,7 @@ _content_set_hook(Evas_Object *obj, const char *part, Evas_Object *content)
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd;
 
-   if (part && strcmp(part, "icon")) return;
+   if (strcmp(part, "icon")) return;
    wd = elm_widget_data_get(obj);
    if (!wd) return;
    if (wd->icon == content) return;
@@ -263,7 +263,7 @@ _content_get_hook(const Evas_Object *obj, const char *part)
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd;
 
-   if (part && strcmp(part, "icon")) return NULL;
+   if (strcmp(part, "icon")) return NULL;
    wd = elm_widget_data_get(obj);
    if (!wd) return NULL;
    return wd->icon;
@@ -275,7 +275,7 @@ _content_unset_hook(Evas_Object *obj, const char *part)
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd;
 
-   if (part && strcmp(part, "icon")) return NULL;
+   if (strcmp(part, "icon")) return NULL;
    wd = elm_widget_data_get(obj);
    if (!wd) return NULL;
    if (!wd->icon) return NULL;
index 62c8198..59554ca 100644 (file)
@@ -1181,16 +1181,6 @@ _convert_to_edje(Eina_List* nodes)
 }
 
 Eina_Bool
-elm_selection_selection_has_owner(void)
-{
-#ifdef HAVE_ELEMENTARY_X
-   return !!ecore_x_selection_owner_get(clipboard_atom);
-#else
-   return EINA_FALSE;
-#endif
-}
-
-Eina_Bool
 elm_selection_set(Elm_Sel_Type selection, Evas_Object *widget, Elm_Sel_Format format, const char *selbuf)
 {
 #ifdef HAVE_ELEMENTARY_X
@@ -1542,7 +1532,7 @@ entry_insert_filter(Evas_Object* entry, char* str)
 
    char *insertStr = str;
    // if entry has text only set then remove item tags
-   if (elm_entry_cnp_mode_get(entry) != ELM_CNP_MODE_MARKUP)
+   if (elm_entry_cnp_textonly_get(entry))
      {
         while (EINA_TRUE)
           {
@@ -1610,8 +1600,7 @@ notify_handler_text(Cnp_Selection *sel, Ecore_X_Event_Selection_Notify *notify)
      {
         Elm_Selection_Data ddata;
 
-        str = malloc(data->length);
-        memcpy(str, data->data, data->length);
+        str = strdup(data->data);
         ddata.x = ddata.y = 0;
         ddata.format = ELM_SEL_FORMAT_TEXT;
         ddata.data = str;
@@ -2163,7 +2152,7 @@ pasteimage_append(Paste_Image *pi, Evas_Object *entry)
 
    if (!pi) return EINA_FALSE;
    if (!entry) return EINA_FALSE;
-   if (elm_entry_cnp_mode_get(entry) != ELM_CNP_MODE_MARKUP) return EINA_FALSE;
+   if (elm_entry_cnp_textonly_get(entry)) return EINA_FALSE;
 
    pasteimage_provider_set(entry);
 
index 3294c5b..b1f417d 100644 (file)
@@ -2,6 +2,19 @@
 #include "elm_priv.h"
 #include <Ecore.h>
 
+/**
+ * @defgroup Colorpalette Colorpalette
+ * @ingroup Elementary
+ *
+ * Using colorpalette, you can select a color by clicking
+ * a color rectangle on the colorpalette.
+ *
+ * Smart callbacks that you can add are:
+ *
+ * clicked - This signal is sent when a color rectangle is clicked.
+ *
+ */
+
 #define MAX_NUM_COLORS 30
 
 typedef struct _Colorpalette_Item Colorpalette_Item;
@@ -220,6 +233,14 @@ _color_parse(const char *str, unsigned char *r, unsigned char *g, unsigned char
    *b = (*b * 0xff) / 255;
 }
 
+/**
+ * Add a new colorpalette to the parent.
+ *
+ * @param parent The parent object
+ * @return The new object or NULL if it cannot be created
+ *
+ * @ingroup Colorpalette
+ */
 EAPI Evas_Object *elm_colorpalette_add(Evas_Object *parent)
 {
    Evas_Object *obj = NULL;
@@ -275,6 +296,15 @@ EAPI Evas_Object *elm_colorpalette_add(Evas_Object *parent)
 }
 
 
+/**
+ * Set colors to the colorpalette.
+ *
+ * @param obj   Colorpalette object
+ * @param color_num     number of the colors on the colorpalette
+ * @param color     Color lists
+ *
+ * @ingroup Colorpalette
+ */
 EAPI void elm_colorpalette_color_set(Evas_Object *obj, int color_num, Elm_Colorpalette_Color *color)
 {
    ELM_CHECK_WIDTYPE(obj, widtype);
@@ -300,6 +330,15 @@ EAPI void elm_colorpalette_color_set(Evas_Object *obj, int color_num, Elm_Colorp
    _sizing_eval(obj);
 }
 
+/**
+ * Set row/column value for the colorpalette.
+ *
+ * @param obj   Colorpalette object
+ * @param row   row value for the colorpalette
+ * @param col   column value for the colorpalette
+ *
+ * @ingroup Colorpalette
+ */
 EAPI void elm_colorpalette_row_column_set(Evas_Object *obj, int row, int col)
 {
    ELM_CHECK_WIDTYPE(obj, widtype);
index ebbfb64..ca7ec0a 100644 (file)
@@ -406,11 +406,7 @@ _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->a) / 255,
-                               (wd->eg * wd->a) / 255,
-                               (wd->eb * wd->a) / 255,
-                               wd->a);
+         evas_object_color_set(wd->cp[3]->arrow, wd->er, wd->eg, wd->eb, wd->a);
          break;
       default:
          break;
index 50b0351..9148924 100644 (file)
@@ -1,3 +1,11 @@
+/**
+ * @defgroup Controlbar Controlbar
+ * @ingroup Elementary
+ *
+ * This is a Controlbar. It can contain label and icon objects.
+ * In edit mode, you can change the location of items.
+ */
+
 #include <string.h>
 #include <math.h>
 
@@ -91,7 +99,7 @@ struct _Elm_Controlbar_Item
 };
 
 static const char *widtype = NULL;
-
+// prototype
 static void _sizing_eval(Evas_Object * obj);
 static int _check_bar_item_number(Widget_Data *wd);
 static void _select_box(Elm_Controlbar_Item * it);
@@ -99,6 +107,12 @@ static void _cancel_selected_box(Widget_Data *wd);
 static void _check_toolbar_line(Widget_Data *wd);
 static Eina_Bool _press_box(Elm_Controlbar_Item * it);
 
+///////////////////////////////////////////////////////////////////
+//
+//  Smart Object basic function
+//
+////////////////////////////////////////////////////////////////////
+
 static void
 _controlbar_move(void *data, Evas_Object * obj __UNUSED__)
 {
@@ -111,7 +125,7 @@ _controlbar_move(void *data, Evas_Object * obj __UNUSED__)
    wd->x = x;
    wd->y = y;
    evas_object_move(wd->edje, x, y);
-   evas_object_geometry_get(elm_object_part_content_get(wd->edje, "bg_image"), NULL, NULL, &width, NULL);
+   evas_object_geometry_get(elm_object_content_part_get(wd->edje, "bg_image"), NULL, NULL, &width, NULL);
    evas_object_geometry_get(wd->edje, &x_, &y_, NULL, NULL);
 }
 
@@ -127,7 +141,7 @@ _controlbar_resize(void *data, Evas_Object * obj __UNUSED__)
    wd->w = w;
    wd->h = h;
    evas_object_resize(wd->edje, w, h);
-   evas_object_geometry_get(elm_object_part_content_get(wd->edje, "bg_image"), NULL, NULL, &width, &height);
+   evas_object_geometry_get(elm_object_content_part_get(wd->edje, "bg_image"), NULL, NULL, &width, &height);
    evas_object_geometry_get(wd->edje, &x_, &y_, NULL, NULL);
 }
 
@@ -248,9 +262,9 @@ _theme_hook(Evas_Object * obj)
    Widget_Data * wd = elm_widget_data_get(obj);
    if (!wd) return;
    elm_layout_theme_set(wd->edje, "controlbar", "base",
-                        elm_widget_style_get(obj));
+                         elm_widget_style_get(obj));
    elm_layout_theme_set(wd->bg, "controlbar", "background",
-                        elm_widget_style_get(obj));
+                         elm_widget_style_get(obj));
    evas_object_color_get(wd->bg, &r, &g, &b, NULL);
    evas_object_color_set(wd->bg, r, g, b, (int)(255 * wd->alpha / 100));
    EINA_LIST_FOREACH(wd->items, l, item)
@@ -299,6 +313,12 @@ _sizing_eval(Evas_Object * obj)
    _controlbar_resize(obj, obj);
 }
 
+/////////////////////////////////////////////////////////////
+//
+// animation function
+//
+/////////////////////////////////////////////////////////////
+
 static Eina_Bool
 _move_evas_object(void *data)
 {
@@ -393,6 +413,12 @@ _move_object_with_animation(Evas_Object * obj, Evas_Coord x, Evas_Coord y,
    return ad;
 }
 
+/////////////////////////////////////////////////////////////
+//
+// callback function
+//
+/////////////////////////////////////////////////////////////
+
 static int
 _sort_cb(const void *d1, const void *d2)
 {
@@ -404,6 +430,12 @@ _sort_cb(const void *d1, const void *d2)
    return item1->order > item2->order ? 1 : -1;
 }
 
+///////////////////////////////////////////////////////////////////
+//
+//  basic utility function
+//
+////////////////////////////////////////////////////////////////////
+
 static Eina_Bool
 _check_item(Widget_Data *wd, Elm_Controlbar_Item *item)
 {
@@ -414,7 +446,7 @@ _check_item(Widget_Data *wd, Elm_Controlbar_Item *item)
    if (!wd->items) return EINA_FALSE;
 
    EINA_LIST_FOREACH(wd->items, l, it)
-     if (it == item) return EINA_TRUE;
+      if (it == item) return EINA_TRUE;
 
    return EINA_FALSE;
 }
@@ -674,7 +706,7 @@ _move_selected_box(Widget_Data *wd, Elm_Controlbar_Item * fit, Elm_Controlbar_It
         wd->ad = NULL;
      }
    wd->ad = _move_object_with_animation(wd->edje, fx, fy, fw, fh, tx, ty, tw, th,
-                                        0.3, _move_evas_object, _end_selected_box, wd);
+                                       0.3, _move_evas_object, _end_selected_box, wd);
 }
 
 static void
@@ -693,7 +725,7 @@ _select_box(Elm_Controlbar_Item * it)
 
    if (it->style == TABBAR)
      {
-        content = elm_object_part_content_unset(wd->edje, "elm.swallow.view");
+        content = elm_object_content_part_unset(wd->edje, "elm.swallow.view");
         if (content) evas_object_hide(content);
 
         EINA_LIST_FOREACH(wd->items, l, item){
@@ -720,7 +752,7 @@ _select_box(Elm_Controlbar_Item * it)
                evas_object_smart_callback_call(it->obj, "view,change,before", it);
           }
 
-        elm_object_part_content_set(wd->edje, "elm.swallow.view", it->view);
+        elm_object_content_part_set(wd->edje, "elm.swallow.view", it->view);
      }
    else if (it->style == TOOLBAR)
      {
@@ -850,7 +882,7 @@ _create_item_layout(Evas_Object * parent, Elm_Controlbar_Item * it, Evas_Object
    *item = elm_button_add(parent);
    if (*item == NULL) return NULL;
    elm_object_style_set(*item, "controlbar/vertical");
-   elm_object_part_content_set(obj, "item", *item);
+   elm_object_content_part_set(obj, "item", *item);
 
    if (it->text)
      elm_object_text_set(*item, it->text);
@@ -955,9 +987,9 @@ _create_tool_item(Evas_Object * obj, const char *icon_path, const char *label,
 }
 
 static Elm_Controlbar_Item *
-_create_object_item(Evas_Object *obj, Evas_Object *obj_item, const int sel)
+_create_object_item(Evas_Object * obj, Evas_Object * obj_item, const int sel)
 {
-   Elm_Controlbar_Item *it;
+   Elm_Controlbar_Item * it;
    Widget_Data * wd;
    if (obj == NULL)
      {
@@ -983,7 +1015,7 @@ _create_object_item(Evas_Object *obj, Evas_Object *obj_item, const int sel)
    evas_object_size_hint_weight_set(it->base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    evas_object_size_hint_align_set(it->base, EVAS_HINT_FILL, EVAS_HINT_FILL);
    it->base_item = obj_item;
-   elm_object_part_content_set(it->base, "item", it->base_item);
+   elm_object_content_part_set(it->base, "item", it->base_item);
    evas_object_show(it->base);
    return it;
 }
@@ -1008,8 +1040,8 @@ _repack_items(Widget_Data *wd)
 }
 
 static void
-_set_items_position(Evas_Object *obj, Elm_Controlbar_Item *it,
-                    Elm_Controlbar_Item *mit, Eina_Bool bar)
+_set_items_position(Evas_Object * obj, Elm_Controlbar_Item * it,
+                   Elm_Controlbar_Item * mit, Eina_Bool bar)
 {
    Widget_Data * wd;
    const Eina_List *l;
@@ -1095,11 +1127,11 @@ _list_clicked(void *data, Evas_Object *obj, void *event_info __UNUSED__)
 
    if (item->style == TABBAR)
      {
-        content = elm_object_part_content_unset(wd->edje, "elm.swallow.view");
+        content = elm_object_content_part_unset(wd->edje, "elm.swallow.view");
         evas_object_hide(content);
         item->selected = EINA_TRUE;
         evas_object_smart_callback_call(item->obj, "view,change,before", item);
-        elm_object_part_content_set(wd->edje, "elm.swallow.view", item->view);
+        elm_object_content_part_set(wd->edje, "elm.swallow.view", item->view);
      }
 
    if ((item->style == TOOLBAR) && (item->func))
@@ -1136,8 +1168,7 @@ _create_more_view(Widget_Data *wd)
    return list;
 }
 
-static void
-_ctxpopup_cb(void *data, Evas_Object *obj, void *event_info)
+static void _ctxpopup_cb(void *data, Evas_Object *obj, void *event_info)
 {
    Elm_Controlbar_Item *it;
    const Eina_List *l;
@@ -1160,8 +1191,7 @@ _ctxpopup_cb(void *data, Evas_Object *obj, void *event_info)
    ctxpopup = NULL;
 }
 
-static void
-_ctxpopup_dismissed_cb(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
+static void _ctxpopup_dismissed_cb(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
 {
    Evas_Object *ctxpopup = obj;
 
@@ -1233,8 +1263,21 @@ _create_more_item(Widget_Data *wd, int style)
    return it;
 }
 
-EAPI Evas_Object *
-elm_controlbar_add(Evas_Object *parent)
+///////////////////////////////////////////////////////////////////
+//
+//  API function
+//
+////////////////////////////////////////////////////////////////////
+
+/**
+ * Add a new controlbar object
+ *
+ * @param parent The parent object
+ * @return The new object or NULL if it cannot be created
+ *
+ * @ingroup Controlbar
+ */
+EAPI Evas_Object * elm_controlbar_add(Evas_Object * parent)
 {
    if (parent == NULL) return NULL;
    Evas_Object * obj = NULL;
@@ -1287,7 +1330,7 @@ elm_controlbar_add(Evas_Object *parent)
         printf("Cannot load bg edj\n");
         return NULL;
      }
-   elm_object_part_content_set(wd->edje, "bg_image", wd->bg);
+   elm_object_content_part_set(wd->edje, "bg_image", wd->bg);
 
    // initialization
    evas_object_event_callback_add(wd->edje, EVAS_CALLBACK_RESIZE,
@@ -1299,7 +1342,7 @@ elm_controlbar_add(Evas_Object *parent)
    evas_object_event_callback_add(wd->edje, EVAS_CALLBACK_HIDE,
                                   _controlbar_object_hide, obj);
 
-   bg = elm_object_part_content_get(wd->edje, "bg_image");
+   bg = elm_object_content_part_get(wd->edje, "bg_image");
    evas_object_event_callback_add(bg, EVAS_CALLBACK_MOVE, _controlbar_object_move, obj);
    evas_object_event_callback_add(bg, EVAS_CALLBACK_RESIZE, _controlbar_object_resize, obj);
 
@@ -1309,7 +1352,7 @@ elm_controlbar_add(Evas_Object *parent)
    evas_object_size_hint_weight_set(wd->box, EVAS_HINT_EXPAND,
                                     EVAS_HINT_EXPAND);
    evas_object_size_hint_align_set(wd->box, EVAS_HINT_FILL, EVAS_HINT_FILL);
-   elm_object_part_content_set(wd->edje, "elm.swallow.items", wd->box);
+   elm_object_content_part_set(wd->edje, "elm.swallow.items", wd->box);
    evas_object_show(wd->box);
 
    evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, obj);
@@ -1321,9 +1364,23 @@ elm_controlbar_add(Evas_Object *parent)
    return obj;
 }
 
-EAPI Elm_Controlbar_Item *
-elm_controlbar_tab_item_append(Evas_Object *obj, const char *icon_path,
-                               const char *label, Evas_Object *view)
+/**
+ * Append new tab item
+ *
+ * @param      obj The controlbar object
+ * @param      icon_path The icon path of item
+ * @param      label The label of item
+ * @param      view The view of item
+ * @return     The item of controlbar
+ *
+ * @ingroup Controlbar
+ */
+EAPI Elm_Controlbar_Item * elm_controlbar_tab_item_append(Evas_Object * obj,
+                                                          const char
+                                                          *icon_path,
+                                                          const char *label,
+                                                          Evas_Object *
+                                                          view)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Elm_Controlbar_Item * it;
@@ -1340,11 +1397,10 @@ elm_controlbar_tab_item_append(Evas_Object *obj, const char *icon_path,
              _create_more_item(wd, TABBAR);
         }
         _set_items_position(obj, it, NULL, EINA_FALSE);
-     }
-   else
-     {
+   }
+   else{
         _set_items_position(obj, it, NULL, EINA_TRUE);
-     }
+   }
    wd->items = eina_list_append(wd->items, it);
    if (wd->more_item)
      elm_controlbar_item_view_set(wd->more_item, _create_more_view(wd));
@@ -1354,9 +1410,25 @@ elm_controlbar_tab_item_append(Evas_Object *obj, const char *icon_path,
    return it;
 }
 
-EAPI Elm_Controlbar_Item *
-elm_controlbar_tab_item_prepend(Evas_Object *obj, const char *icon_path,
-                                const char *label, Evas_Object *view)
+/**
+ * Prepend new tab item
+ *
+ * @param      obj The controlbar object
+ * @param      icon_path The icon path of item
+ * @param      label The label of item
+ * @param      view The view of item
+ * @return     The item of controlbar
+ *
+ * @ingroup Controlbar
+ */
+EAPI Elm_Controlbar_Item * elm_controlbar_tab_item_prepend(Evas_Object *
+                                                           obj,
+                                                           const char
+                                                           *icon_path,
+                                                           const char
+                                                           *label,
+                                                           Evas_Object *
+                                                           view)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data * wd;
@@ -1369,20 +1441,18 @@ elm_controlbar_tab_item_prepend(Evas_Object *obj, const char *icon_path,
    item = eina_list_data_get(wd->items);
    if ((_check_bar_item_number(wd) >= 5) && (wd->auto_align))
      {
-        if (!wd->more_item)
-          {
+        if (!wd->more_item) {
              lit = elm_controlbar_last_item_get(obj);
              _set_item_visible(lit, EINA_FALSE);
              _create_more_item(wd, TABBAR);
-          }
+        }
         lit = elm_controlbar_item_prev(wd->more_item);
         _set_item_visible(lit, EINA_FALSE);
         _set_items_position(obj, it, item, EINA_TRUE);
-     }
-   else
-     {
+   }
+   else{
         _set_items_position(obj, it, item, EINA_TRUE);
-     }
+   }
    wd->items = eina_list_prepend(wd->items, it);
    if (wd->more_item)
      elm_controlbar_item_view_set(wd->more_item, _create_more_view(wd));
@@ -1392,11 +1462,23 @@ elm_controlbar_tab_item_prepend(Evas_Object *obj, const char *icon_path,
    return it;
 }
 
+/**
+ * Insert new tab item before given item
+ *
+ * @param      obj The controlbar object
+ * @param      before The given item
+ * @param      icon_path The icon path of item
+ * @param      label The label of item
+ * @param      view The view of item
+ * @return     The item of controlbar
+ *
+ * @ingroup Controlbar
+ */
 EAPI Elm_Controlbar_Item *
-elm_controlbar_tab_item_insert_before(Evas_Object *obj,
-                                      Elm_Controlbar_Item *before,
+elm_controlbar_tab_item_insert_before(Evas_Object * obj,
+                                      Elm_Controlbar_Item * before,
                                       const char *icon_path,
-                                      const char *label, Evas_Object *view)
+                                      const char *label, Evas_Object * view)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data * wd;
@@ -1425,11 +1507,10 @@ elm_controlbar_tab_item_insert_before(Evas_Object *obj,
           {
              _set_items_position(obj, it, before, EINA_FALSE);
           }
-     }
-   else
-     {
+   }
+   else{
         _set_items_position(obj, it, before, EINA_TRUE);
-     }
+   }
    wd->items = eina_list_prepend_relative(wd->items, it, before);
    if (wd->more_item)
      elm_controlbar_item_view_set(wd->more_item, _create_more_view(wd));
@@ -1439,9 +1520,21 @@ elm_controlbar_tab_item_insert_before(Evas_Object *obj,
    return it;
 }
 
+/**
+ * Insert new tab item after given item
+ *
+ * @param      obj The controlbar object
+ * @param      after The given item
+ * @param      icon_path The icon path of item
+ * @param      label The label of item
+ * @param      view The view of item
+ * @return     The item of controlbar
+ *
+ * @ingroup Controlbar
+ */
 EAPI Elm_Controlbar_Item *
-elm_controlbar_tab_item_insert_after(Evas_Object *obj,
-                                     Elm_Controlbar_Item *after,
+elm_controlbar_tab_item_insert_after(Evas_Object * obj,
+                                     Elm_Controlbar_Item * after,
                                      const char *icon_path, const char *label,
                                      Evas_Object * view)
 {
@@ -1473,11 +1566,10 @@ elm_controlbar_tab_item_insert_after(Evas_Object *obj,
           {
              _set_items_position(obj, it, NULL, EINA_FALSE);
           }
-     }
-   else
-     {
+   }
+   else{
         _set_items_position(obj, it, item, EINA_TRUE);
-     }
+   }
    wd->items = eina_list_append_relative(wd->items, it, after);
    if (wd->more_item)
      elm_controlbar_item_view_set(wd->more_item, _create_more_view(wd));
@@ -1487,11 +1579,31 @@ elm_controlbar_tab_item_insert_after(Evas_Object *obj,
    return it;
 }
 
-EAPI Elm_Controlbar_Item *
-elm_controlbar_tool_item_append(Evas_Object *obj, const char *icon_path,
-                                const char *label,
-                                void (*func)(void *data, Evas_Object * obj, void *event_info),
-                                void *data)
+/**
+ * Append new tool item
+ *
+ * @param      obj The controlbar object
+ * @param      icon_path The icon path of item
+ * @param      label The label of item
+ * @param      func Callback function of item
+ * @param      data The data of callback function
+ * @return     The item of controlbar
+ *
+ * @ingroup Controlbar
+ */
+EAPI Elm_Controlbar_Item * elm_controlbar_tool_item_append(Evas_Object *
+                                                           obj,
+                                                           const char
+                                                           *icon_path,
+                                                           const char
+                                                           *label,
+                                                           void (*func)
+                                                           (void *data,
+                                                            Evas_Object *
+                                                            obj,
+                                                            void
+                                                            *event_info),
+                                                           void *data)
 
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
@@ -1503,29 +1615,49 @@ elm_controlbar_tool_item_append(Evas_Object *obj, const char *icon_path,
    wd = elm_widget_data_get(obj);
    if ((_check_bar_item_number(wd) >= 5) && (wd->auto_align))
      {
-        if (!wd->more_item)
-          {
+        if (!wd->more_item) {
              lit = elm_controlbar_last_item_get(obj);
              _set_item_visible(lit, EINA_FALSE);
              _create_more_item(wd, TOOLBAR);
-          }
+        }
         _set_items_position(obj, it, NULL, EINA_FALSE);
-     }
-   else
-     {
+   }
+   else{
         _set_items_position(obj, it, NULL, EINA_TRUE);
-     }
+   }
    wd->items = eina_list_append(wd->items, it);
    _check_toolbar_line(wd);
    _sizing_eval(obj);
    return it;
 }
 
-EAPI Elm_Controlbar_Item *
-elm_controlbar_tool_item_prepend(Evas_Object *obj, const char *icon_path,
-                                 const char *label,
-                                 void (*func) (void *data, Evas_Object *obj, void *event_info),
-                                 void *data)
+/**
+ * Prepend new tool item
+ *
+ * @param      obj The controlbar object
+ * @param      icon_path The icon path of item
+ * @param      label The label of item
+ * @param      func Callback function of item
+ * @param      data The data of callback function
+ * @return     The item of controlbar
+ *
+ * @ingroup Controlbar
+ */
+EAPI Elm_Controlbar_Item * elm_controlbar_tool_item_prepend(Evas_Object *
+                                                            obj,
+                                                            const char
+                                                            *icon_path,
+                                                            const char
+                                                            *label,
+                                                            void (*func)
+                                                            (void
+                                                             *data,
+                                                             Evas_Object *
+                                                             obj,
+                                                             void
+                                                             *event_info),
+                                                            void
+                                                            *data)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data * wd;
@@ -1538,32 +1670,45 @@ elm_controlbar_tool_item_prepend(Evas_Object *obj, const char *icon_path,
    item = eina_list_data_get(wd->items);
    if ((_check_bar_item_number(wd) >= 5) && (wd->auto_align))
      {
-        if (!wd->more_item)
-          {
+        if (!wd->more_item) {
              lit = elm_controlbar_last_item_get(obj);
              _set_item_visible(lit, EINA_FALSE);
              _create_more_item(wd, TOOLBAR);
-          }
+        }
         lit = elm_controlbar_item_prev(wd->more_item);
         _set_item_visible(lit, EINA_FALSE);
         _set_items_position(obj, it, item, EINA_TRUE);
-     }
-   else
-     {
+   }
+   else{
         _set_items_position(obj, it, item, EINA_TRUE);
-     }
+   }
    wd->items = eina_list_prepend(wd->items, it);
    _check_toolbar_line(wd);
    _sizing_eval(obj);
    return it;
 }
 
+/**
+ * Insert new tool item before given item
+ *
+ * @param      obj The controlbar object
+ * @param      before The given item
+ * @param      icon_path The icon path of item
+ * @param      label The label of item
+ * @param      func Callback function of item
+ * @param      data The data of callback function
+ * @return     The item of controlbar
+ *
+ * @ingroup Controlbar
+ */
 EAPI Elm_Controlbar_Item *
-elm_controlbar_tool_item_insert_before(Evas_Object *obj,
-                                       Elm_Controlbar_Item *before,
+elm_controlbar_tool_item_insert_before(Evas_Object * obj,
+                                       Elm_Controlbar_Item * before,
                                        const char *icon_path,
                                        const char *label,
-                                       void (*func)(void *data, Evas_Object *obj, void *event_info),
+                                       void (*func) (void *data,
+                                                     Evas_Object * obj,
+                                                     void *event_info),
                                        void *data)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
@@ -1593,23 +1738,37 @@ elm_controlbar_tool_item_insert_before(Evas_Object *obj,
           {
              _set_items_position(obj, it, before, EINA_FALSE);
           }
-     }
-   else
-     {
+   }
+   else{
         _set_items_position(obj, it, before, EINA_TRUE);
-     }
+   }
    wd->items = eina_list_prepend_relative(wd->items, it, before);
    _check_toolbar_line(wd);
    _sizing_eval(obj);
    return it;
 }
 
+/**
+ * Insert new tool item after given item
+ *
+ * @param      obj The controlbar object
+ * @param      after The given item
+ * @param      icon_path The icon path of item
+ * @param      label The label of item
+ * @param      func Callback function of item
+ * @param      data The data of callback function
+ * @return     The item of controlbar
+ *
+ * @ingroup Controlbar
+ */
 EAPI Elm_Controlbar_Item *
-elm_controlbar_tool_item_insert_after(Evas_Object *obj,
-                                      Elm_Controlbar_Item *after,
+elm_controlbar_tool_item_insert_after(Evas_Object * obj,
+                                      Elm_Controlbar_Item * after,
                                       const char *icon_path,
                                       const char *label,
-                                      void (*func) (void *data, Evas_Object *obj, void *event_info),
+                                      void (*func) (void *data,
+                                                    Evas_Object * obj,
+                                                    void *event_info),
                                       void *data)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
@@ -1640,20 +1799,31 @@ elm_controlbar_tool_item_insert_after(Evas_Object *obj,
           {
              _set_items_position(obj, it, NULL, EINA_FALSE);
           }
-     }
-   else
-     {
+   }
+   else{
         _set_items_position(obj, it, item, EINA_TRUE);
-     }
+   }
    wd->items = eina_list_append_relative(wd->items, it, after);
    _check_toolbar_line(wd);
    _sizing_eval(obj);
    return it;
 }
 
-EAPI Elm_Controlbar_Item *
-elm_controlbar_object_item_append(Evas_Object *obj, Evas_Object *obj_item,
-                                  const int sel)
+/**
+ * Append new object item
+ *
+ * @param      obj The controlbar object
+ * @param      obj_item The object of item
+ * @param      sel The number of sel occupied
+ * @return  The item of controlbar
+ *
+ * @ingroup Controlbar
+ */
+EAPI Elm_Controlbar_Item * elm_controlbar_object_item_append(Evas_Object *
+                                                             obj,
+                                                             Evas_Object *
+                                                             obj_item,
+                                                             const int sel)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data * wd;
@@ -1668,9 +1838,21 @@ elm_controlbar_object_item_append(Evas_Object *obj, Evas_Object *obj_item,
    return it;
 }
 
-EAPI Elm_Controlbar_Item *
-elm_controlbar_object_item_prepend(Evas_Object *obj, Evas_Object *obj_item,
-                                   const int sel)
+/**
+ * Prepend new object item
+ *
+ * @param      obj The controlbar object
+ * @param      obj_item The object of item
+ * @param      sel The number of sel occupied
+ * @return  The item of controlbar
+ *
+ * @ingroup Controlbar
+ */
+EAPI Elm_Controlbar_Item * elm_controlbar_object_item_prepend(Evas_Object *
+                                                              obj,
+                                                              Evas_Object *
+                                                              obj_item,
+                                                              const int sel)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data * wd;
@@ -1687,10 +1869,21 @@ elm_controlbar_object_item_prepend(Evas_Object *obj, Evas_Object *obj_item,
    return it;
 }
 
+/**
+ * Insert new object item before given item
+ *
+ * @param      obj The controlbar object
+ * @param      before The given item
+ * @param      obj_item The object of item
+ * @param      sel The number of sel occupied
+ * @return  The item of controlbar
+ *
+ * @ingroup Controlbar
+ */
 EAPI Elm_Controlbar_Item *
-elm_controlbar_object_item_insert_before(Evas_Object *obj,
-                                         Elm_Controlbar_Item *before,
-                                         Evas_Object *obj_item, const int sel)
+elm_controlbar_object_item_insert_before(Evas_Object * obj,
+                                         Elm_Controlbar_Item * before,
+                                         Evas_Object * obj_item, const int sel)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data * wd;
@@ -1706,15 +1899,26 @@ elm_controlbar_object_item_insert_before(Evas_Object *obj,
    return it;
 }
 
+/**
+ * Insert new object item after given item
+ *
+ * @param      obj The controlbar object
+ * @param      after The given item
+ * @param      obj_item The object of item
+ * @param      sel The number of sel occupied
+ * @return  The item of controlbar
+ *
+ * @ingroup Controlbar
+ */
 EAPI Elm_Controlbar_Item *
-elm_controlbar_object_item_insert_after(Evas_Object *obj,
-                                        Elm_Controlbar_Item *after,
-                                        Evas_Object *obj_item, const int sel)
+elm_controlbar_object_item_insert_after(Evas_Object * obj,
+                                        Elm_Controlbar_Item * after,
+                                        Evas_Object * obj_item, const int sel)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
-   Widget_Data *wd;
-   Elm_Controlbar_Item *it;
-   Elm_Controlbar_Item *item;
+   Widget_Data * wd;
+   Elm_Controlbar_Item * it;
+   Elm_Controlbar_Item * item;
    wd = elm_widget_data_get(obj);
    if (!wd) return NULL;
    if (!after) return NULL;
@@ -1727,8 +1931,16 @@ elm_controlbar_object_item_insert_after(Evas_Object *obj,
    return it;
 }
 
+/**
+ * Get the object of the object item
+ *
+ * @param       it The item of controlbar
+ * @return      The object of the object item
+ *
+ * @ingroup Controlbar
+ */
 EAPI Evas_Object *
-elm_controlbar_object_item_object_get(const Elm_Controlbar_Item *it)
+elm_controlbar_object_item_object_get(const Elm_Controlbar_Item * it)
 {
    if (!it) return NULL;
    if (it->style != OBJECT) return NULL;
@@ -1736,14 +1948,21 @@ elm_controlbar_object_item_object_get(const Elm_Controlbar_Item *it)
    return it->base_item;
 }
 
+/**
+ * Delete item from controlbar
+ *
+ * @param      it The item of controlbar
+
+ * @ingroup Controlbar
+ */
 EAPI void
-elm_controlbar_item_del(Elm_Controlbar_Item *it)
+elm_controlbar_item_del(Elm_Controlbar_Item * it)
 {
-   Evas_Object *obj;
-   Widget_Data *wd;
+   Evas_Object * obj;
+   Widget_Data * wd;
    const Eina_List *l;
 
-   Elm_Controlbar_Item *item;
+   Elm_Controlbar_Item * item;
 
    int sel = 1;
 
@@ -1795,6 +2014,13 @@ elm_controlbar_item_del(Elm_Controlbar_Item *it)
    _sizing_eval(obj);
 }
 
+/**
+ * Select item in controlbar
+ *
+ * @param      it The item of controlbar
+
+ * @ingroup Controlbar
+ */
 EAPI void
 elm_controlbar_item_select(Elm_Controlbar_Item * it)
 {
@@ -1806,8 +2032,17 @@ elm_controlbar_item_select(Elm_Controlbar_Item * it)
    _select_box(it);
 }
 
+/**
+ * Set the icon of item
+ *
+ * @param      it The item of controlbar
+ * @param      icon_path The icon path of the item
+ * @return     The icon object
+ *
+ * @ingroup Controlbar
+ */
 EAPI void
-elm_controlbar_item_icon_set(Elm_Controlbar_Item *it, const char *icon_path)
+elm_controlbar_item_icon_set(Elm_Controlbar_Item * it, const char *icon_path)
 {
    if (!it) return;
    if (it->style == OBJECT) return;
@@ -1832,15 +2067,31 @@ elm_controlbar_item_icon_set(Elm_Controlbar_Item *it, const char *icon_path)
      elm_widget_disabled_set(it->base_item, EINA_FALSE);
 }
 
+/**
+ * Get the icon of item
+ *
+ * @param      it The item of controlbar
+ * @return     The icon object
+ *
+ * @ingroup Controlbar
+ */
 EAPI Evas_Object *
-elm_controlbar_item_icon_get(const Elm_Controlbar_Item *it)
+elm_controlbar_item_icon_get(const Elm_Controlbar_Item * it)
 {
    if (!it) return NULL;
    return it->icon;
 }
 
+/**
+ * Set the label of item
+ *
+ * @param      it The item of controlbar
+ * @param      label The label of item
+ *
+ * @ingroup Controlbar
+ */
 EAPI void
-elm_controlbar_item_label_set(Elm_Controlbar_Item *it, const char *label)
+elm_controlbar_item_label_set(Elm_Controlbar_Item * it, const char *label)
 {
    if (!it) return;
    if (it->style == OBJECT) return;
@@ -1860,6 +2111,14 @@ elm_controlbar_item_label_set(Elm_Controlbar_Item *it, const char *label)
      elm_widget_disabled_set(it->base_item, EINA_FALSE);
 }
 
+/**
+ * Get the label of item
+ *
+ * @param      it The item of controlbar
+ * @return The label of item
+ *
+ * @ingroup Controlbar
+ */
 EAPI const char *
 elm_controlbar_item_label_get(const Elm_Controlbar_Item * it)
 {
@@ -1867,8 +2126,16 @@ elm_controlbar_item_label_get(const Elm_Controlbar_Item * it)
    return it->text;
 }
 
-EAPI Elm_Controlbar_Item *
-elm_controlbar_selected_item_get(const Evas_Object *obj)
+/**
+ * Get the selected item
+ *
+ * @param      obj The controlbar object
+ * @return             The item of controlbar
+ *
+ * @ingroup Controlbar
+ */
+EAPI Elm_Controlbar_Item * elm_controlbar_selected_item_get(const Evas_Object *
+                                                            obj)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    const Eina_List *l;
@@ -1884,8 +2151,15 @@ elm_controlbar_selected_item_get(const Evas_Object *obj)
    return NULL;
 }
 
-EAPI Elm_Controlbar_Item *
-elm_controlbar_first_item_get(const Evas_Object *obj)
+/**
+ * Get the first item
+ *
+ * @param      obj The controlbar object
+ * @return             The item of controlbar
+ *
+ * @ingroup Controlbar
+ */
+EAPI Elm_Controlbar_Item * elm_controlbar_first_item_get(const Evas_Object * obj)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data * wd = elm_widget_data_get(obj);
@@ -1893,8 +2167,15 @@ elm_controlbar_first_item_get(const Evas_Object *obj)
    return eina_list_data_get(wd->items);
 }
 
-EAPI Elm_Controlbar_Item *
-elm_controlbar_last_item_get(const Evas_Object *obj)
+/**
+ * Get the last item
+ *
+ * @param      obj The controlbar object
+ * @return             The item of controlbar
+ *
+ * @ingroup Controlbar
+ */
+EAPI Elm_Controlbar_Item * elm_controlbar_last_item_get(const Evas_Object * obj)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data * wd = elm_widget_data_get(obj);
@@ -1902,8 +2183,15 @@ elm_controlbar_last_item_get(const Evas_Object *obj)
    return eina_list_data_get(eina_list_last(wd->items));
 }
 
-EAPI const Eina_List *
-elm_controlbar_items_get(const Evas_Object *obj)
+/**
+ * Get the items
+ *
+ * @param      obj The controlbar object
+ * @return     The list of the items
+ *
+ * @ingroup Controlbar
+ */
+EAPI const Eina_List * elm_controlbar_items_get(const Evas_Object * obj)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data * wd = elm_widget_data_get(obj);
@@ -1911,8 +2199,16 @@ elm_controlbar_items_get(const Evas_Object *obj)
    return wd->items;
 }
 
-EAPI Elm_Controlbar_Item *
-elm_controlbar_item_prev(Elm_Controlbar_Item *it)
+/**
+ * Get the previous item
+ *
+ * @param      it The item of controlbar
+ * @return     The previous item of the parameter item
+ *
+ * @ingroup Controlbar
+ */
+EAPI Elm_Controlbar_Item * elm_controlbar_item_prev(Elm_Controlbar_Item *
+                                                    it)
 {
    if (!it) return NULL;
    const Eina_List *l;
@@ -1933,8 +2229,16 @@ elm_controlbar_item_prev(Elm_Controlbar_Item *it)
    return NULL;
 }
 
-EAPI Elm_Controlbar_Item *
-elm_controlbar_item_next(Elm_Controlbar_Item *it)
+/**
+ * Get the next item
+ *
+ * @param      obj The controlbar object
+ * @return     The next item of the parameter item
+ *
+ * @ingroup Controlbar
+ */
+EAPI Elm_Controlbar_Item * elm_controlbar_item_next(Elm_Controlbar_Item *
+                                                    it)
 {
    if (!it) return NULL;
    const Eina_List *l;
@@ -1955,8 +2259,16 @@ elm_controlbar_item_next(Elm_Controlbar_Item *it)
    return NULL;
 }
 
+/**
+ * Set the visible status of item in bar
+ *
+ * @param      it The item of controlbar
+ * @param      bar EINA_TRUE or EINA_FALSE
+ *
+ * @ingroup Controlbar
+ */
 EAPI void
-elm_controlbar_item_visible_set(Elm_Controlbar_Item *it, Eina_Bool visible)
+elm_controlbar_item_visible_set(Elm_Controlbar_Item * it, Eina_Bool visible)
 {
    if (!it) return;
    if (it->obj == NULL) return;
@@ -1967,8 +2279,16 @@ elm_controlbar_item_visible_set(Elm_Controlbar_Item *it, Eina_Bool visible)
      _set_item_visible(it, visible);
 }
 
+/**
+ * Get the result which or not item is visible in bar
+ *
+ * @param      it The item of controlbar
+ * @return     EINA_TRUE or EINA_FALSE
+ *
+ * @ingroup Controlbar
+ */
 EAPI Eina_Bool
-elm_controlbar_item_visible_get(const Elm_Controlbar_Item *it)
+elm_controlbar_item_visible_get(const Elm_Controlbar_Item * it)
 {
    if (!it) return EINA_FALSE;
    if (it->obj == NULL) return EINA_FALSE;
@@ -1979,8 +2299,16 @@ elm_controlbar_item_visible_get(const Elm_Controlbar_Item *it)
    return EINA_TRUE;
 }
 
+/**
+ * Set item disable
+ *
+ * @param      it The item of controlbar
+ * @param      bar EINA_TRUE or EINA_FALSE
+ *
+ * @ingroup Controlbar
+ */
 EAPI void
-elm_controlbar_item_disabled_set(Elm_Controlbar_Item *it, Eina_Bool disabled)
+elm_controlbar_item_disabled_set(Elm_Controlbar_Item * it, Eina_Bool disabled)
 {
    if (!it) return;
 
@@ -1993,14 +2321,30 @@ elm_controlbar_item_disabled_set(Elm_Controlbar_Item *it, Eina_Bool disabled)
    if (it->base_item) elm_widget_disabled_set(it->base_item, disabled);
 }
 
+/**
+ * Get item disable
+ *
+ * @param      it The item of controlbar
+ * @return     EINA_TRUE or EINA_FALSE
+ *
+ * @ingroup Controlbar
+ */
 EAPI Eina_Bool
-elm_controlbar_item_disabled_get(const Elm_Controlbar_Item *it)
+elm_controlbar_item_disabled_get(const Elm_Controlbar_Item * it)
 {
    if (!it) return EINA_FALSE;
 
    return it->disabled;
 }
 
+/**
+ * Set the view of the item
+ *
+ * @param      it The item of controlbar
+ * @param      view The view for the item
+ *
+ * @ingroup Controlbar
+ */
 EAPI void
 elm_controlbar_item_view_set(Elm_Controlbar_Item *it, Evas_Object * view)
 {
@@ -2011,6 +2355,14 @@ elm_controlbar_item_view_set(Elm_Controlbar_Item *it, Evas_Object * view)
    it->view = view;
 }
 
+/**
+ * Get the view of the item
+ *
+ * @param      it The item of controlbar
+ * @return     The view for the item
+ *
+ * @ingroup Controlbar
+ */
 EAPI Evas_Object *
 elm_controlbar_item_view_get(const Elm_Controlbar_Item *it)
 {
@@ -2019,6 +2371,14 @@ elm_controlbar_item_view_get(const Elm_Controlbar_Item *it)
    return it->view;
 }
 
+/**
+ * Unset the view of the item
+ *
+ * @param      it The item of controlbar
+ * @return     The view for the item
+ *
+ * @ingroup Controlbar
+ */
 EAPI Evas_Object *
 elm_controlbar_item_view_unset(Elm_Controlbar_Item *it)
 {
@@ -2028,9 +2388,9 @@ elm_controlbar_item_view_unset(Elm_Controlbar_Item *it)
    if (!wd) return NULL;
    Evas_Object *content;
 
-   if (it->view == elm_object_part_content_get(wd->edje, "elm.swallow.view"))
+   if (it->view == elm_object_content_part_get(wd->edje, "elm.swallow.view"))
      {
-        content = elm_object_part_content_unset(wd->edje, "elm.swallow.view");
+        content = elm_object_content_part_unset(wd->edje, "elm.swallow.view");
         if (content) evas_object_hide(content);
      }
    else
@@ -2041,6 +2401,14 @@ elm_controlbar_item_view_unset(Elm_Controlbar_Item *it)
    return content;
 }
 
+/**
+ * Set the mode of the controlbar
+ *
+ * @param      obj The object of the controlbar
+ * @param      mode The mode of the controlbar
+ *
+ * @ingroup Controlbar
+ */
 EAPI void
 elm_controlbar_mode_set(Evas_Object *obj, int mode)
 {
@@ -2073,7 +2441,7 @@ elm_controlbar_mode_set(Evas_Object *obj, int mode)
          edje_object_signal_emit(_EDJ(wd->edje), "elm,state,small", "elm");
          break;
       case ELM_CONTROLBAR_MODE_LEFT:
-         selected_box = elm_object_part_content_get(wd->edje, "elm.dragable.box");
+         selected_box = elm_object_content_part_get(wd->edje, "elm.dragable.box");
          if (selected_box) edje_object_signal_emit(_EDJ(selected_box), "elm,state,left", "elm");
          wd->selected_signal = eina_stringshare_add("elm,state,selected_left");
          wd->pressed_signal = eina_stringshare_add("elm,state,pressed_left");
@@ -2082,7 +2450,7 @@ elm_controlbar_mode_set(Evas_Object *obj, int mode)
          _sizing_eval(obj);
          return;
       case ELM_CONTROLBAR_MODE_RIGHT:
-         selected_box = elm_object_part_content_get(wd->edje, "elm.dragable.box");
+         selected_box = elm_object_content_part_get(wd->edje, "elm.dragable.box");
          if (selected_box) edje_object_signal_emit(_EDJ(selected_box), "elm,state,right", "elm");
          wd->selected_signal = eina_stringshare_add("elm,state,selected_right");
          wd->pressed_signal = eina_stringshare_add("elm,state,pressed_right");
@@ -2093,7 +2461,7 @@ elm_controlbar_mode_set(Evas_Object *obj, int mode)
       default:
          break;
      }
-   selected_box = elm_object_part_content_get(wd->edje, "elm.dragable.box");
+   selected_box = elm_object_content_part_get(wd->edje, "elm.dragable.box");
    if (selected_box) edje_object_signal_emit(_EDJ(selected_box), "elm,state,default", "elm");
    wd->selected_signal = eina_stringshare_add("elm,state,selected");
    wd->pressed_signal = eina_stringshare_add("elm,state,pressed");
@@ -2101,6 +2469,14 @@ elm_controlbar_mode_set(Evas_Object *obj, int mode)
    _sizing_eval(obj);
 }
 
+/**
+ * Set the alpha of the controlbar
+ *
+ * @param      obj The object of the controlbar
+ * @param      alpha The alpha value of the controlbar (0-100)
+ *
+ * @ingroup Controlbar
+ */
 EAPI void
 elm_controlbar_alpha_set(Evas_Object *obj, int alpha)
 {
@@ -2121,6 +2497,17 @@ elm_controlbar_alpha_set(Evas_Object *obj, int alpha)
    evas_object_color_set(wd->bg, r, g, b, (int)(255 * wd->alpha / 100));
 }
 
+
+/**
+ * Set auto-align mode of the controlbar(It's not prepared yet)
+ * If you set the auto-align and add items more than 5,
+ * the "more" item will be made and the items more than 5 will be unvisible.
+ *
+ * @param      obj The object of the controlbar
+ * @param      auto_align The dicision that the controlbar use the auto-align
+ *
+ * @ingroup Controlbar
+ */
 EAPI void
 elm_controlbar_item_auto_align_set(Evas_Object *obj, Eina_Bool auto_align)
 {
@@ -2189,6 +2576,14 @@ elm_controlbar_item_auto_align_set(Evas_Object *obj, Eina_Bool auto_align)
    _sizing_eval(obj);
 }
 
+/**
+ * Set the vertical mode of the controlbar
+ *
+ * @param      obj The object of the controlbar
+ * @param      vertical The vertical mode of the controlbar (TRUE = vertical, FALSE = horizontal)
+ *
+ * @ingroup Controlbar
+ */
 EAPI void
 elm_controlbar_vertical_set(Evas_Object *obj, Eina_Bool vertical)
 {
@@ -2210,6 +2605,14 @@ elm_controlbar_vertical_set(Evas_Object *obj, Eina_Bool vertical)
    _check_toolbar_line(wd);
 }
 
+/**
+ * Get the button object of the item
+ *
+ * @param      it The item of controlbar
+ * @return  button object of the item
+ *
+ * @ingroup Controlbar
+ */
 EAPI Evas_Object *
 elm_controlbar_item_button_get(const Elm_Controlbar_Item *it)
 {
index 66960c8..dd00c7e 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_part_content_set(item->bg_layout, "swallow", item->content);
+   elm_object_content_part_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_part_content_set(item->bg_layout, "swallow", item->content);
+   elm_object_content_part_set(item->bg_layout, "swallow", item->content);
 
    return item;
 }
index cba3012..453732d 100644 (file)
@@ -181,6 +181,15 @@ _theme_data_get(Widget_Data *wd)
 }
 
 static void
+_default_display_item_num_set(Widget_Data *wd)
+{
+   const char* str;
+   str = edje_object_data_get(wd->right_blank, "display_item_num");
+   if (str) wd->display_item_num = MAX(DISPLAY_ITEM_NUM_MIN, atoi(str));
+   else wd->display_item_num = DISPLAY_ITEM_NUM_MIN;
+}
+
+static void
 _del_hook(Evas_Object * obj)
 {
    Widget_Data *wd = elm_widget_data_get(obj);
@@ -1373,12 +1382,3 @@ elm_diskselector_display_item_num_set(Evas_Object *obj, int num)
    wd->display_item_num = num;
    wd->display_item_num_by_api = EINA_TRUE;
 }
-
-EAPI int
-elm_diskselector_display_item_num_get(const Evas_Object *item)
-{
-   ELM_CHECK_WIDTYPE(item, widtype) (-1);
-   Widget_Data *wd = elm_widget_data_get(item);
-   if (!wd) return -1;
-   return wd->display_item_num;
-}
index 5ff10b7..4a31e63 100644 (file)
@@ -82,6 +82,7 @@ struct _Widget_Data
    Eina_Bool bgcolor : 1;
    Eina_Bool can_write : 1;
    Eina_Bool autosave : 1;
+   Eina_Bool textonly : 1;
    Eina_Bool usedown : 1;
    Eina_Bool scroll : 1;
    Eina_Bool input_panel_enable : 1;
@@ -89,7 +90,6 @@ struct _Widget_Data
    Eina_Bool autoperiod : 1;
    Eina_Bool matchlist_list_clicked : 1;
    Eina_Bool matchlist_case_sensitive : 1;
-   Elm_CNP_Mode cnp_mode : 2;
 };
 
 struct _Elm_Entry_Context_Menu_Item
@@ -613,6 +613,7 @@ _recalc_cursor_geometry(Evas_Object *obj)
    Widget_Data *wd = elm_widget_data_get(obj);
    if (!wd) return;
    evas_object_smart_callback_call(obj, SIG_CURSOR_CHANGED, NULL);
+   if (!elm_object_focus_get(obj)) return;
    if (!wd->deferred_recalc_job)
      {
         Evas_Coord cx, cy, cw, ch;
@@ -637,12 +638,8 @@ _elm_win_recalc_job(void *data)
    wd->deferred_recalc_job = NULL;
 
    evas_object_geometry_get(wd->ent, NULL, NULL, &resw, NULL);
-   /* This is a hack to workaround to avoid the cursor geometry bug
-    * in a char-wrap or a mixed-mode textblock in a scroller.
-    * The order of calling next 2 functions affects to the size of the textblock cursor.
-    * when the textblock core issue is fixed these comments will be removed. */
-   edje_object_size_min_restricted_calc(wd->ent, &fw, &fh, 0, 0);
    edje_object_size_min_restricted_calc(wd->ent, &minw, &minh, resw, 0);
+   edje_object_size_min_restricted_calc(wd->ent, &fw, &fh, 0, 0);
    elm_coords_finger_size_adjust(1, &fw, 1, &minh);
    wd->entmw = fw;
    wd->entmh = minh;
@@ -689,7 +686,7 @@ _elm_win_recalc_job(void *data)
           }
      }
 
-   if (wd->deferred_cur)
+   if ((wd->deferred_cur) && (elm_object_focus_get(data)))
      {
         Evas_Coord cx, cy, cw, ch;
         edje_object_part_text_cursor_geometry_get(wd->ent, "elm.text",
@@ -1076,6 +1073,7 @@ static void
 _move(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
 {
    Widget_Data *wd = elm_widget_data_get(data);
+   Evas_Coord_Rectangle ret_rect;
 
    if (wd->hoversel) _hoversel_position(data);
 
@@ -1181,11 +1179,10 @@ _paste(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
    if (wd->sel_notify_handler)
      {
 #ifdef HAVE_ELEMENTARY_X
-        Elm_Sel_Format formats = ELM_SEL_FORMAT_MARKUP;
+        Elm_Sel_Format formats;
         wd->selection_asked = EINA_TRUE;
-        if (wd->cnp_mode == ELM_CNP_MODE_PLAINTEXT)
-          formats = ELM_SEL_FORMAT_TEXT;
-        else if (wd->cnp_mode != ELM_CNP_MODE_NO_IMAGE)
+        formats = ELM_SEL_FORMAT_MARKUP;
+        if (!wd->textonly)
           formats |= ELM_SEL_FORMAT_IMAGE;
         elm_selection_get(ELM_SEL_CLIPBOARD, formats, data, NULL, NULL);
 #endif
@@ -1197,57 +1194,46 @@ _store_selection(Elm_Sel_Type seltype, Evas_Object *obj)
 {
    Widget_Data *wd = elm_widget_data_get(obj);
    const char *sel;
-   char *sel_str = NULL;
-   Elm_Sel_Format formats = ELM_SEL_FORMAT_MARKUP;
+   char *sel_str;
 
    if (!wd) return;
    sel = edje_object_part_text_selection_get(wd->ent, "elm.text");
-   if (wd->cnp_mode == ELM_CNP_MODE_PLAINTEXT)
-     {
-        sel_str = elm_entry_markup_to_utf8(sel);
-        if (!sel_str)
-          return;
-        formats = ELM_SEL_FORMAT_TEXT;
-     }
-   else
+   sel_str = strdup(sel);
+   if (!sel_str)
+     return;
+   if (wd->textonly)
      {
-        sel_str = strdup(sel);
-        if (!sel_str)
-          return;
-        if (wd->cnp_mode == ELM_CNP_MODE_NO_IMAGE)
+        while (EINA_TRUE)
           {
-             while (EINA_TRUE)
+             char *startTag = NULL;
+             char *endTag = NULL;
+
+             startTag = strstr(sel_str, "<item");
+             if (!startTag)
+               startTag = strstr(sel_str, "</item");
+             if (startTag)
+               endTag = strstr(startTag, ">");
+             else
+               break;
+             if (!endTag || startTag > endTag)
+               break;
+
+             size_t sindex = startTag - sel_str;
+             size_t eindex = endTag - sel_str + 1;
+
+             Eina_Strbuf *buf = eina_strbuf_new();
+             if (buf)
                {
-                  char *startTag = NULL;
-                  char *endTag = NULL;
-
-                  startTag = strstr(sel_str, "<item");
-                  if (!startTag)
-                    startTag = strstr(sel_str, "</item");
-                  if (startTag)
-                    endTag = strstr(startTag, ">");
-                  else
-                    break;
-                  if (!endTag || startTag > endTag)
-                    break;
-
-                  size_t sindex = startTag - sel_str;
-                  size_t eindex = endTag - sel_str + 1;
-
-                  Eina_Strbuf *buf = eina_strbuf_new();
-                  if (buf)
-                    {
-                       eina_strbuf_append(buf, sel_str);
-                       eina_strbuf_remove(buf, sindex, eindex);
-                       sel_str = eina_strbuf_string_steal(buf);
-                       eina_strbuf_free(buf);
-                    }
+                  eina_strbuf_append(buf, sel_str);
+                  eina_strbuf_remove(buf, sindex, eindex);
+                  sel_str = eina_strbuf_string_steal(buf);
+                  eina_strbuf_free(buf);
                }
           }
      }
-   elm_selection_set(seltype, obj, formats, sel_str);
+   elm_selection_set(seltype, obj, ELM_SEL_FORMAT_MARKUP, sel_str);
    if (seltype == ELM_SEL_CLIPBOARD)
-     eina_stringshare_replace(&wd->cut_sel, sel);
+     eina_stringshare_replace(&wd->cut_sel, sel_str);
    free(sel_str);
 }
 
@@ -1308,7 +1294,7 @@ _clipboard_menu(void *data, Evas_Object *obj, void *event_info __UNUSED__)
 #endif
    cnpwidgetdata = data;
    elm_cbhm_helper_init(obj);
-   if (elm_entry_cnp_mode_get(obj) != ELM_CNP_MODE_MARKUP)
+   if (elm_entry_cnp_textonly_get(obj))
      elm_cbhm_send_raw_data("show0");
    else
      elm_cbhm_send_raw_data("show1");
@@ -2461,14 +2447,8 @@ _event_selection_clear(void *data __UNUSED__, int type __UNUSED__, void *event _
 
    if (cnpwidgetdata == data)
      {
-        Widget_Data *wd = elm_widget_data_get(data);
-        Elm_Sel_Format formats = ELM_SEL_FORMAT_MARKUP;
         evas_object_smart_callback_call(data, SIG_SELECTION_PASTE, NULL);
-        if (wd->cnp_mode == ELM_CNP_MODE_PLAINTEXT)
-          formats = ELM_SEL_FORMAT_TEXT;
-        else if (wd->cnp_mode != ELM_CNP_MODE_NO_IMAGE)
-          formats |= ELM_SEL_FORMAT_IMAGE;
-        elm_selection_get(ELM_SEL_SECONDARY, formats ,data, NULL, NULL);
+        elm_selection_get(ELM_SEL_SECONDARY,ELM_SEL_FORMAT_MARKUP,data,NULL,NULL);
      }
 
    // end for cbhm
@@ -2958,7 +2938,7 @@ elm_entry_add(Evas_Object *parent)
    wd->disabled     = EINA_FALSE;
    wd->context_menu = EINA_TRUE;
    wd->autosave     = EINA_TRUE;
-   wd->cnp_mode     = ELM_CNP_MODE_MARKUP;
+   wd->textonly     = EINA_FALSE;
    wd->autoperiod   = EINA_TRUE;
 
    wd->ent = edje_object_add(e);
@@ -3091,7 +3071,7 @@ EAPI void elm_entry_extension_module_data_get(Evas_Object *obj,Elm_Entry_Extensi
    ext_mod->selmode = wd->selmode;
    ext_mod->cnpinit = _cnpinit;
    ext_mod->context_menu = wd->context_menu;
-   ext_mod->cnp_mode = wd->cnp_mode;
+   ext_mod->textonly = wd->textonly;
 }
 
 EAPI void
@@ -3103,7 +3083,7 @@ elm_entry_single_line_set(Evas_Object *obj, Eina_Bool single_line)
    if (wd->single_line == single_line) return;
    wd->single_line = single_line;
    wd->linewrap = ELM_WRAP_NONE;
-   elm_entry_cnp_mode_set(obj, ELM_CNP_MODE_NO_IMAGE);
+   elm_entry_cnp_textonly_set(obj, EINA_TRUE);
    _theme_hook(obj);
    if (wd->scroller)
      {
@@ -3217,7 +3197,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,
@@ -3231,7 +3211,7 @@ elm_entry_is_empty(const Evas_Object *obj)
    evas_textblock_cursor_free(cur);
 
    return !ret;
-   }
+}
 
    char *str = elm_entry_markup_to_utf8(elm_entry_entry_get(obj));
    if (!str) return EINA_TRUE;
@@ -3242,27 +3222,6 @@ elm_entry_is_empty(const Evas_Object *obj)
    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)
 {
@@ -3898,41 +3857,26 @@ elm_entry_autosave_get(const Evas_Object *obj)
 EAPI void
 elm_entry_cnp_textonly_set(Evas_Object *obj, Eina_Bool textonly)
 {
-   ELM_CHECK_WIDTYPE(obj, widtype);
-   elm_entry_cnp_mode_set(obj, textonly ? ELM_CNP_MODE_NO_IMAGE : ELM_CNP_MODE_MARKUP);
-}
-
-EAPI Eina_Bool
-elm_entry_cnp_textonly_get(const Evas_Object *obj)
-{
-   ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
-   return elm_entry_cnp_mode_get(obj) != ELM_CNP_MODE_MARKUP;
-}
-
-EAPI void
-elm_entry_cnp_mode_set(Evas_Object *obj, Elm_CNP_Mode cnp_mode)
-{
    Elm_Sel_Format format = ELM_SEL_FORMAT_MARKUP;
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
    if (!wd) return;
-   if (wd->cnp_mode == cnp_mode) return;
-   wd->cnp_mode = cnp_mode;
-   if (wd->cnp_mode == ELM_CNP_MODE_PLAINTEXT)
-     format = ELM_SEL_FORMAT_TEXT;
-   else if (cnp_mode == ELM_CNP_MODE_MARKUP) format |= ELM_SEL_FORMAT_IMAGE;
+   textonly = !!textonly;
+   if (wd->textonly == textonly) return;
+   wd->textonly = !!textonly;
+   if (!textonly) format |= ELM_SEL_FORMAT_IMAGE;
 #ifdef HAVE_ELEMENTARY_X
    elm_drop_target_add(obj, format, _drag_drop_cb, NULL);
 #endif
 }
 
-EAPI Elm_CNP_Mode
-elm_entry_cnp_mode_get(const Evas_Object *obj)
+EAPI Eina_Bool
+elm_entry_cnp_textonly_get(const Evas_Object *obj)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
    Widget_Data *wd = elm_widget_data_get(obj);
    if (!wd) return EINA_FALSE;
-   return wd->cnp_mode;
+   return wd->textonly;
 }
 
 EAPI void
index fa327b4..ffbbc63 100644 (file)
@@ -34,7 +34,6 @@ struct _Elm_Flipselector_Item
 };
 
 typedef struct _Widget_Data Widget_Data;
-typedef struct _Elm_Flipselector_Item Elm_Flipselector_Item;
 
 struct _Widget_Data
 {
@@ -68,70 +67,13 @@ static const Evas_Smart_Cb_Description _signals[] = {
   {NULL, NULL}
 };
 
-static void
-_item_text_set_hook(Elm_Object_Item *it,
-                    const char *part,
-                    const char *label)
-{
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
-
-   Widget_Data *wd;
-   Eina_List *l;
-   Elm_Flipselector_Item *item;
-
-   if (!label) return;
-
-   if (part && strcmp(part ,"default")) return;
-
-   item = (Elm_Flipselector_Item *) it;
-   wd = elm_widget_data_get(WIDGET(item));
-   if ((!wd) || (!wd->items)) return;
-
-   l = eina_list_data_find_list(wd->items, item);
-   if (!l) return;
-
-   eina_stringshare_del(item->label);
-   item->label = eina_stringshare_add_length(label, wd->max_len);
-
-   if (strlen(label) > strlen(elm_object_item_text_get(DATA_GET(wd->sentinel))))
-     wd->sentinel = l;
-
-   if (wd->current == l)
-     {
-        _update_view(WIDGET(item));
-        _sizing_eval(wd->self);
-     }
-}
-
-static const char *
-_item_text_get_hook(const Elm_Object_Item *it, const char *part)
-{
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
-
-   Elm_Flipselector_Item *item, *_item;
-   Widget_Data *wd;
-   Eina_List *l;
-
-   if (part && strcmp(part ,"default")) return NULL;
-
-   item = (Elm_Flipselector_Item *) it;
-   wd = elm_widget_data_get(WIDGET(item));
-   if ((!wd) || (!wd->items)) return NULL;
-
-   EINA_LIST_FOREACH(wd->items, l, _item)
-     if (_item == item) return item->label;
-   return NULL;
-}
-
-static void
-_item_signal_emit_hook(Elm_Object_Item *it,
-                       const char *emission,
-                       const char *source)
-{
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
-   Elm_Flipselector_Item *item = (Elm_Flipselector_Item *) it;
-   edje_object_signal_emit(VIEW(item), emission, source);
-}
+#define ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(it, ...)             \
+   ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it, __VA_ARGS__);            \
+  if (it->deleted)                                                      \
+    {                                                                   \
+       ERR(""#it" has been DELETED.\n");                                \
+       return __VA_ARGS__;                                              \
+    }                                                                   \
 
 static Elm_Flipselector_Item *
 _item_new(Evas_Object *obj, const char *label, Evas_Smart_Cb func, const void *data)
@@ -141,11 +83,8 @@ _item_new(Evas_Object *obj, const char *label, Evas_Smart_Cb func, const void *d
    Widget_Data *wd = elm_widget_data_get(obj);
 
    it = elm_widget_item_new(obj, Elm_Flipselector_Item);
-   if (!it) return NULL;
-
-   elm_widget_item_text_set_hook_set(it, _item_text_set_hook);
-   elm_widget_item_text_get_hook_set(it, _item_text_get_hook);
-   elm_widget_item_signal_emit_hook_set(it, _item_signal_emit_hook);
+   if (!it)
+     return NULL;
 
    len = strlen(label);
    if (len > wd->max_len)
@@ -173,12 +112,14 @@ _del_hook(Evas_Object *obj)
    Elm_Flipselector_Item *item;
 
    Widget_Data *wd = elm_widget_data_get(obj);
-   if (!wd) return;
+   if (!wd)
+     return;
 
-   if (wd->walking) ERR("flipselector deleted while walking.\n");
+   if (wd->walking)
+     ERR("flipselector deleted while walking.\n");
 
    EINA_LIST_FREE(wd->items, item)
-     _item_free(item);
+      _item_free(item);
 
    if (wd->spin) ecore_timer_del(wd->spin);
    free(wd);
@@ -191,7 +132,8 @@ _theme_hook(Evas_Object *obj)
    const char *max_len;
 
    wd = elm_widget_data_get(obj);
-   if (!wd) return;
+   if (!wd)
+     return;
 
    _elm_theme_object_set(obj, wd->base, "flipselector", "base",
                          elm_widget_style_get(obj));
@@ -228,8 +170,8 @@ _sentinel_eval(Widget_Data *wd)
 
    EINA_LIST_FOREACH(wd->items, l, it)
      {
-        if (strlen(elm_object_item_text_get((Elm_Object_Item *) it)) >
-            strlen(elm_object_item_text_get(DATA_GET(wd->sentinel))))
+        if (strlen(elm_flipselector_item_label_get(it)) >
+            strlen(elm_flipselector_item_label_get(DATA_GET(wd->sentinel))))
           wd->sentinel = l;
      }
 }
@@ -247,12 +189,14 @@ _flipselector_process_deletions(Widget_Data *wd)
 
    EINA_LIST_FOREACH(wd->items, l, it)
      {
-        if (!it->deleted) continue;
+        if (!it->deleted)
+          continue;
 
         if (wd->current == l)
           {
              if (wd->current == wd->sentinel)
                sentinel_eval = EINA_TRUE;
+
              wd->current = eina_list_prev(wd->current);
           }
         wd->items = eina_list_remove(wd->items, it);
@@ -298,7 +242,9 @@ _flipselector_unwalk(Widget_Data *wd)
         ERR("walking became negative. fixed!\n");
         wd->walking = 0;
      }
-   if (wd->walking) return;
+
+   if (wd->walking)
+     return;
 
    _flipselector_process_deletions(wd);
 }
@@ -310,15 +256,19 @@ _event_hook(Evas_Object *obj, Evas_Object *src __UNUSED__, Evas_Callback_Type ty
    Widget_Data *wd;
    Eina_Bool is_up = EINA_TRUE;
 
-   if (type != EVAS_CALLBACK_KEY_DOWN) return EINA_FALSE;
+   if (type != EVAS_CALLBACK_KEY_DOWN)
+     return EINA_FALSE;
 
    wd = elm_widget_data_get(obj);
-   if (!wd) return EINA_FALSE;
+   if (!wd)
+     return EINA_FALSE;
 
    ev = event_info;
-   if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return EINA_FALSE;
+   if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+     return EINA_FALSE;
 
-   if (elm_widget_disabled_get(obj)) return EINA_FALSE;
+   if (elm_widget_disabled_get(obj))
+     return EINA_FALSE;
 
    if ((!strcmp(ev->keyname, "Down")) || (!strcmp(ev->keyname, "KP_Down")))
      is_up = EINA_FALSE;
@@ -330,8 +280,10 @@ _event_hook(Evas_Object *obj, Evas_Object *src __UNUSED__, Evas_Callback_Type ty
    /* TODO: if direction setting via API is not coming in, replace
       these calls by flip_{next,prev} */
    _flipselector_walk(wd);
-   if (is_up) _flip_up(wd);
-   else _flip_down(wd);
+   if (is_up)
+     _flip_up(wd);
+   else
+     _flip_down(wd);
    _flipselector_unwalk(wd);
 
    ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
@@ -342,7 +294,8 @@ static void
 _on_focus_hook(void *data __UNUSED__, Evas_Object *obj)
 {
    Widget_Data *wd = elm_widget_data_get(obj);
-   if (!wd) return;
+   if (!wd)
+     return;
 
    /* FIXME: no treatment of this signal so far */
    if (elm_widget_focus_get(obj))
@@ -365,13 +318,16 @@ _sizing_eval(Evas_Object *obj)
    Evas_Coord minw = -1, minh = -1, w, h;
 
    wd = elm_widget_data_get(obj);
-   if (!wd) return;
+   if (!wd)
+     return;
 
    elm_coords_finger_size_adjust(1, &minw, 2, &minh);
 
    if (wd->sentinel)
      {
-        const char *label = elm_object_item_text_get(DATA_GET(wd->sentinel));
+        const char *label = \
+                            elm_flipselector_item_label_get(DATA_GET(wd->sentinel));
+
         tmp = edje_object_part_text_get(wd->base, "top");
         edje_object_part_text_set(wd->base, "top", label);
      }
@@ -380,7 +336,8 @@ _sizing_eval(Evas_Object *obj)
    elm_coords_finger_size_adjust(1, &minw, 2, &minh);
    evas_object_size_hint_min_get(obj, &w, &h);
 
-   if (wd->sentinel) edje_object_part_text_set(wd->base, "top", tmp);
+   if (wd->sentinel)
+     edje_object_part_text_set(wd->base, "top", tmp);
 
    if (w > minw) minw = w;
    if (h > minh) minh = h;
@@ -396,14 +353,17 @@ _update_view(Evas_Object *obj)
    Elm_Flipselector_Item *item;
 
    wd = elm_widget_data_get(obj);
-   if (!wd) return;
+   if (!wd)
+     return;
 
    label = NULL;
    item = DATA_GET(wd->current);
-   if (item) label = item->label;
+   if (item)
+     label = item->label;
 
    edje_object_part_text_set(wd->base, "top", label ? label : "");
    edje_object_part_text_set(wd->base, "bottom", label ? label : "");
+
    edje_object_message_signal_process(wd->base);
 }
 
@@ -413,7 +373,8 @@ _changed(Widget_Data *wd)
    Elm_Flipselector_Item *item;
 
    item = DATA_GET(wd->current);
-   if (!item) return;
+   if (!item)
+     return;
 
    if (item->func)
      item->func((void *)item->base.data, WIDGET(item), item);
@@ -438,7 +399,8 @@ _flip_up(Widget_Data *wd)
 {
    Elm_Flipselector_Item *item;
 
-   if (!wd->current) return;
+   if (!wd->current)
+     return;
 
    if (wd->current == wd->items)
      {
@@ -449,7 +411,8 @@ _flip_up(Widget_Data *wd)
      wd->current = eina_list_prev(wd->current);
 
    item = DATA_GET(wd->current);
-   if (!item) return;
+   if (!item)
+     return;
 
    _send_msg(wd, MSG_FLIP_UP, (char *)item->label);
 }
@@ -459,7 +422,8 @@ _signal_val_up(void *data)
 {
    Widget_Data *wd = elm_widget_data_get(data);
 
-   if (!wd) goto val_up_exit_on_error;
+   if (!wd)
+     goto val_up_exit_on_error;
 
    _flipselector_walk(wd);
 
@@ -482,11 +446,13 @@ static void
 _signal_val_up_start(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
 {
    Widget_Data *wd = elm_widget_data_get(data);
-   if (!wd) return;
+   if (!wd)
+     return;
 
    wd->interval = wd->first_interval;
 
-   if (wd->spin) ecore_timer_del(wd->spin);
+   if (wd->spin)
+     ecore_timer_del(wd->spin);
    wd->spin = ecore_timer_add(wd->interval, _signal_val_up, data);
 
    _signal_val_up(data);
@@ -497,7 +463,8 @@ _flip_down(Widget_Data *wd)
 {
    Elm_Flipselector_Item *item;
 
-   if (!wd->current) return;
+   if (!wd->current)
+     return;
 
    wd->current = eina_list_next(wd->current);
    if (!wd->current)
@@ -507,7 +474,8 @@ _flip_down(Widget_Data *wd)
      }
 
    item = DATA_GET(wd->current);
-   if (!item) return;
+   if (!item)
+     return;
 
    _send_msg(wd, MSG_FLIP_DOWN, (char *)item->label);
 }
@@ -517,7 +485,8 @@ _signal_val_down(void *data)
 {
    Widget_Data *wd = elm_widget_data_get(data);
 
-   if (!wd) goto val_down_exit_on_error;
+   if (!wd)
+     goto val_down_exit_on_error;
 
    _flipselector_walk(wd);
 
@@ -539,11 +508,13 @@ static void
 _signal_val_down_start(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
 {
    Widget_Data *wd = elm_widget_data_get(data);
-   if (!wd) return;
+   if (!wd)
+     return;
 
    wd->interval = wd->first_interval;
 
-   if (wd->spin) ecore_timer_del(wd->spin);
+   if (wd->spin)
+     ecore_timer_del(wd->spin);
    wd->spin = ecore_timer_add(wd->interval, _signal_val_down, data);
 
    _signal_val_down(data);
@@ -553,9 +524,11 @@ static void
 _signal_val_change_stop(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
 {
    Widget_Data *wd = elm_widget_data_get(data);
-   if (!wd) return;
+   if (!wd)
+     return;
 
-   if (wd->spin) ecore_timer_del(wd->spin);
+   if (wd->spin)
+     ecore_timer_del(wd->spin);
    wd->spin = NULL;
 }
 
@@ -616,7 +589,8 @@ elm_flipselector_flip_next(Evas_Object *obj)
    ELM_CHECK_WIDTYPE(obj, widtype);
 
    Widget_Data *wd = elm_widget_data_get(obj);
-   if (!wd) return;
+   if (!wd)
+     return;
 
    if (wd->spin) ecore_timer_del(wd->spin);
 
@@ -631,7 +605,8 @@ elm_flipselector_flip_prev(Evas_Object *obj)
    ELM_CHECK_WIDTYPE(obj, widtype);
 
    Widget_Data *wd = elm_widget_data_get(obj);
-   if (!wd) return;
+   if (!wd)
+     return;
 
    if (wd->spin) ecore_timer_del(wd->spin);
 
@@ -640,7 +615,7 @@ elm_flipselector_flip_prev(Evas_Object *obj)
    _flipselector_unwalk(wd);
 }
 
-EAPI Elm_Object_Item *
+EAPI Elm_Flipselector_Item *
 elm_flipselector_item_append(Evas_Object *obj, const char *label, void (*func)(void *data, Evas_Object *obj, void *event_info), void *data)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
@@ -649,21 +624,22 @@ elm_flipselector_item_append(Evas_Object *obj, const char *label, void (*func)(v
    Widget_Data *wd;
 
    wd = elm_widget_data_get(obj);
-   if (!wd) return NULL;
+   if (!wd)
+     return NULL;
 
    item = _item_new(obj, label, func, data);
-   if (!item) return NULL;
+   if (!item)
+     return NULL;
 
    wd->items = eina_list_append(wd->items, item);
-   if (!wd->current)
-     {
+   if (!wd->current) {
         wd->current = wd->items;
         _update_view(obj);
-     }
+   }
 
    if (!wd->sentinel ||
-       (strlen(elm_object_item_text_get((Elm_Object_Item *) item)) >
-        strlen(elm_object_item_text_get(DATA_GET(wd->sentinel)))))
+       (strlen(elm_flipselector_item_label_get(item)) >
+        strlen(elm_flipselector_item_label_get(DATA_GET(wd->sentinel)))))
      {
         wd->sentinel = eina_list_last(wd->items);
         _sizing_eval(obj);
@@ -672,10 +648,10 @@ elm_flipselector_item_append(Evas_Object *obj, const char *label, void (*func)(v
    if (eina_list_count(wd->items) >= 2)
      edje_object_signal_emit(wd->base, "elm,state,button,visible", "elm");
 
-   return (Elm_Object_Item *) item;
+   return item;
 }
 
-EAPI Elm_Object_Item *
+EAPI Elm_Flipselector_Item *
 elm_flipselector_item_prepend(Evas_Object *obj, const char *label, void (*func)(void *data, Evas_Object *obj, void *event_info), void *data)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
@@ -684,21 +660,22 @@ elm_flipselector_item_prepend(Evas_Object *obj, const char *label, void (*func)(
    Widget_Data *wd;
 
    wd = elm_widget_data_get(obj);
-   if (!wd) return NULL;
+   if (!wd)
+     return NULL;
 
    item = _item_new(obj, label, func, data);
-   if (!item) return NULL;
+   if (!item)
+     return NULL;
 
    wd->items = eina_list_prepend(wd->items, item);
-   if (!wd->current)
-     {
+   if (!wd->current) {
         wd->current = wd->items;
         _update_view(obj);
-     }
+   }
 
    if (!wd->sentinel ||
-       (strlen(elm_object_item_text_get((Elm_Object_Item *) item)) >
-        strlen(elm_object_item_text_get(DATA_GET(wd->sentinel)))))
+       (strlen(elm_flipselector_item_label_get(item)) >
+        strlen(elm_flipselector_item_label_get(DATA_GET(wd->sentinel)))))
      {
         wd->sentinel = wd->items;
         _sizing_eval(obj);
@@ -707,7 +684,7 @@ elm_flipselector_item_prepend(Evas_Object *obj, const char *label, void (*func)(
    if (eina_list_count(wd->items) >= 2)
      edje_object_signal_emit(wd->base, "elm,state,button,visible", "elm");
 
-   return (Elm_Object_Item *) item;
+   return item;
 }
 
 /* TODO: account for deleted items?  */
@@ -717,11 +694,13 @@ elm_flipselector_items_get(const Evas_Object *obj)
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
 
    Widget_Data *wd = elm_widget_data_get(obj);
-   if (!wd) return NULL;
+   if (!wd)
+     return NULL;
+
    return wd->items;
 }
 
-EAPI Elm_Object_Item *
+EAPI Elm_Flipselector_Item *
 elm_flipselector_first_item_get(const Evas_Object *obj)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
@@ -731,17 +710,21 @@ elm_flipselector_first_item_get(const Evas_Object *obj)
    Eina_List *l;
 
    wd = elm_widget_data_get(obj);
-   if (!wd || !wd->items) return NULL;
+   if (!wd || !wd->items)
+     return NULL;
 
    EINA_LIST_FOREACH(wd->items, l, it)
      {
-        if (it->deleted) continue;
-        return (Elm_Object_Item *) it;
+        if (it->deleted)
+          continue;
+
+        return it;
      }
+
    return NULL;
 }
 
-EAPI Elm_Object_Item *
+EAPI Elm_Flipselector_Item *
 elm_flipselector_last_item_get(const Evas_Object *obj)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
@@ -751,42 +734,49 @@ elm_flipselector_last_item_get(const Evas_Object *obj)
    Eina_List *l;
 
    wd = elm_widget_data_get(obj);
-   if (!wd || !wd->items) return NULL;
+   if (!wd || !wd->items)
+     return NULL;
 
    EINA_LIST_REVERSE_FOREACH(wd->items, l, it)
      {
-        if (it->deleted) continue;
-        return (Elm_Object_Item *) it;
+        if (it->deleted)
+          continue;
+
+        return it;
      }
+
    return NULL;
 }
 
-EAPI Elm_Object_Item *
+EAPI Elm_Flipselector_Item *
 elm_flipselector_selected_item_get(const Evas_Object *obj)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
 
    Widget_Data *wd = elm_widget_data_get(obj);
-   if (!wd || !wd->current) return NULL;
+   if (!wd || !wd->current)
+     return NULL;
+
    return DATA_GET(wd->current);
 }
 
 EAPI void
-elm_flipselector_item_selected_set(Elm_Object_Item *it, Eina_Bool selected)
+elm_flipselector_item_selected_set(Elm_Flipselector_Item *item, Eina_Bool selected)
 {
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+   ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item);
 
-   Elm_Flipselector_Item *item, *_item, *cur;
+   Elm_Flipselector_Item *_item, *cur;
    int flipside = MSG_FLIP_UP;
    Widget_Data *wd;
    Eina_List *l;
 
-   item = (Elm_Flipselector_Item *) it;
    wd = elm_widget_data_get(WIDGET(item));
-   if (!wd) return;
+   if (!wd)
+     return;
 
    cur = DATA_GET(wd->current);
-   if ((selected) && (cur == item)) return;
+   if ((selected) && (cur == item))
+     return;
 
    _flipselector_walk(wd);
 
@@ -807,7 +797,8 @@ elm_flipselector_item_selected_set(Elm_Object_Item *it, Eina_Bool selected)
 
    EINA_LIST_FOREACH(wd->items, l, _item)
      {
-        if (_item == cur) flipside = MSG_FLIP_DOWN;
+        if (_item == cur)
+          flipside = MSG_FLIP_DOWN;
 
         if (_item == item)
           {
@@ -821,29 +812,26 @@ elm_flipselector_item_selected_set(Elm_Object_Item *it, Eina_Bool selected)
 }
 
 EAPI Eina_Bool
-elm_flipselector_item_selected_get(const Elm_Object_Item *it)
+elm_flipselector_item_selected_get(const Elm_Flipselector_Item *item)
 {
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
+   ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item, EINA_FALSE);
    Widget_Data *wd;
-   Elm_Flipselector_Item *item;
 
-   item = (Elm_Flipselector_Item *) it;
    wd = elm_widget_data_get(WIDGET(item));
    if (!wd) return EINA_FALSE;
    return (eina_list_data_get(wd->current) == item);
 }
 
 EAPI void
-elm_flipselector_item_del(Elm_Object_Item *it)
+elm_flipselector_item_del(Elm_Flipselector_Item *item)
 {
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
+   ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item);
+
    Widget_Data *wd;
-   Elm_Flipselector_Item *item, *item2;
-   Eina_List *l;
 
-   item = (Elm_Flipselector_Item *) it;
    wd = elm_widget_data_get(WIDGET(item));
-   if (!wd) return;
+   if (!wd)
+     return;
 
    if (wd->walking > 0)
      {
@@ -856,64 +844,112 @@ elm_flipselector_item_del(Elm_Object_Item *it)
    wd->items = eina_list_remove(wd->items, item);
    _item_free(item);
    _sentinel_eval(wd);
+
    _flipselector_unwalk(wd);
 }
 
 EAPI const char *
-elm_flipselector_item_label_get(const Elm_Object_Item *it)
+elm_flipselector_item_label_get(const Elm_Flipselector_Item *item)
 {
-   return _item_text_get_hook(it, NULL);
+   ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item, NULL);
+
+   Elm_Flipselector_Item *_item;
+   Widget_Data *wd;
+   Eina_List *l;
+
+   wd = elm_widget_data_get(WIDGET(item));
+   if ((!wd) || (!wd->items))
+     return NULL;
+
+   EINA_LIST_FOREACH(wd->items, l, _item)
+      if (_item == item)
+        return item->label;
+
+   return NULL;
 }
 
 EAPI void
-elm_flipselector_item_label_set(Elm_Object_Item *it, const char *label)
+elm_flipselector_item_label_set(Elm_Flipselector_Item *item, const char *label)
 {
-   _item_text_set_hook(it, NULL, label);
+   ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item);
+
+   Widget_Data *wd;
+   Eina_List *l;
+
+   if ((!item) || (!label))
+     return;
+
+   wd = elm_widget_data_get(WIDGET(item));
+   if ((!wd) || (!wd->items))
+     return;
+
+   l = eina_list_data_find_list(wd->items, item);
+   if (!l)
+     return;
+
+   eina_stringshare_del(item->label);
+   item->label = eina_stringshare_add_length(label, wd->max_len);
+
+   if (strlen(label) >
+       strlen(elm_flipselector_item_label_get(DATA_GET(wd->sentinel))))
+     wd->sentinel = l;
+
+   if (wd->current == l)
+     {
+        _update_view(WIDGET(item));
+        _sizing_eval(wd->self);
+     }
+
+   return;
 }
 
-EAPI Elm_Object_Item *
-elm_flipselector_item_prev_get(Elm_Object_Item *it)
+EAPI Elm_Flipselector_Item *
+elm_flipselector_item_prev_get(Elm_Flipselector_Item *item)
 {
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+   ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item, NULL);
 
-   Elm_Flipselector_Item *item, *_item;
+   Elm_Flipselector_Item *_item;
    Widget_Data *wd;
    Eina_List *l;
 
-   item = (Elm_Flipselector_Item *) it;
    wd = elm_widget_data_get(WIDGET(item));
-   if ((!wd) || (!wd->items)) return NULL;
+   if ((!wd) || (!wd->items))
+     return NULL;
 
    EINA_LIST_FOREACH(wd->items, l, _item)
-     if (_item == item)
-       {
-          l = eina_list_prev(l);
-          if (!l) return NULL;
-          return DATA_GET(l);
-       }
+      if (_item == item)
+        {
+           l = eina_list_prev(l);
+           if (!l)
+             return NULL;
+           return DATA_GET(l);
+        }
+
    return NULL;
 }
 
-EAPI Elm_Object_Item *
-elm_flipselector_item_next_get(Elm_Object_Item *it)
+EAPI Elm_Flipselector_Item *
+elm_flipselector_item_next_get(Elm_Flipselector_Item *item)
 {
-   ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
+   ELM_FLIPSELECTOR_ITEM_CHECK_DELETED_RETURN(item, NULL);
 
-   Elm_Flipselector_Item *item, *_item;
+   Elm_Flipselector_Item *_item;
    Widget_Data *wd;
    Eina_List *l;
 
-   item = (Elm_Flipselector_Item *) it;
    wd = elm_widget_data_get(WIDGET(item));
-   if ((!wd) || (!wd->items)) return NULL;
+   if ((!wd) || (!wd->items))
+     return NULL;
 
    EINA_LIST_FOREACH(wd->items, l, _item)
-     if (_item == item)
-       {
-          l = eina_list_next(l);
-          if (!l) return NULL;
-          return DATA_GET(l);
-       }
+      if (_item == item)
+        {
+           l = eina_list_next(l);
+           if (!l)
+             return NULL;
+           return DATA_GET(l);
+        }
+
    return NULL;
 }
 
@@ -923,7 +959,9 @@ elm_flipselector_interval_set(Evas_Object *obj, double interval)
    ELM_CHECK_WIDTYPE(obj, widtype);
 
    Widget_Data *wd = elm_widget_data_get(obj);
-   if (!wd) return;
+   if (!wd)
+     return;
+
    wd->first_interval = interval;
 }
 
@@ -933,6 +971,8 @@ elm_flipselector_interval_get(const Evas_Object *obj)
    ELM_CHECK_WIDTYPE(obj, widtype) 0.0;
 
    Widget_Data *wd = elm_widget_data_get(obj);
-   if (!wd) return 0;
+
+   if (!wd)
+     return 0.0;
    return wd->first_interval;
 }
index af2f4be..6aea4ef 100644 (file)
@@ -137,10 +137,6 @@ 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[] = {
@@ -161,10 +157,6 @@ 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}
 };
@@ -1620,39 +1612,6 @@ _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__)
@@ -1711,10 +1670,6 @@ 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);
index 50b2342..7bbf256 100644 (file)
@@ -4336,52 +4336,41 @@ elm_genlist_item_subitems_clear(Elm_Genlist_Item *it)
    ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it);
    Widget_Data *wd = elm_widget_data_get(WIDGET(it));
    if (!wd) return;
-   Elm_Genlist_Item *it2, *it3;
+   Elm_Genlist_Item *it2;
    Evas_Coord y, h;
 
-   if (!wd->effect_mode || !wd->move_effect_mode)
+   if (!it->wd->effect_mode || !it->wd->move_effect_mode)
       _item_subitems_clear(it);
    else
      {
-        if ((!wd->item_moving_effect_timer) && (it->flags != ELM_GENLIST_ITEM_GROUP) &&
-             wd->move_effect_mode != ELM_GENLIST_ITEM_MOVE_EFFECT_DELETE)
+        if ((!it->wd->item_moving_effect_timer) && (it->flags != ELM_GENLIST_ITEM_GROUP) &&
+             it->wd->move_effect_mode != ELM_GENLIST_ITEM_MOVE_EFFECT_DELETE   )
           {
-             wd->expand_item = it;
+             it->wd->expand_item = it;
              _item_flip_effect_show(it);
              evas_object_geometry_get(VIEW(it), NULL, &y, NULL, &h);
-             wd->expand_item_end = y + h;
+             it->wd->expand_item_end = y + h;
 
-             it2= it;
+              it2= it;
              do {
                   it2 = elm_genlist_item_next_get(it2);
                   if (!it2) break;
              } while (it2->expanded_depth > it->expanded_depth);
              if (it2)
                {
-                  int diff;
                   Evas_Coord vy, vh;
                   evas_output_viewport_get(evas_object_evas_get(wd->pan_smart), NULL, &vy, NULL, &vh);
-                  diff = it2->old_scrl_y - (vy + vh);
-                  if (diff > 0)
-                    {
-                       it3 = it2;
-                       while (it3)
-                         {
-                            it3->old_scrl_y = it3->old_scrl_y - diff;
-                            it3 = elm_genlist_item_next_get(it3);
-                         }
-                    }
-
-                  wd->expand_item_gap = wd->expand_item_end - it2->old_scrl_y;
+                  it2->old_scrl_y = ((it2->old_scrl_y > vy + vh) ? vy + vh : it2->old_scrl_y);
+                  it->wd->expand_item_gap = it->wd->expand_item_end - it2->old_scrl_y;
                }
              else
-                wd->expand_item_gap = 0;
+                it->wd->expand_item_gap = 0;
 
-             evas_object_raise(wd->alpha_bg);
-             evas_object_show(wd->alpha_bg);
+             evas_object_raise(it->wd->alpha_bg);
+             evas_object_show(it->wd->alpha_bg);
 
-             wd->start_time = current_time_get();
-             wd->item_moving_effect_timer = ecore_animator_add(_item_moving_effect_timer_cb, wd);
+             it->wd->start_time = current_time_get();
+             it->wd->item_moving_effect_timer = ecore_animator_add(_item_moving_effect_timer_cb, it->wd);
           }
         else
            _item_subitems_clear(it);
@@ -5528,6 +5517,7 @@ _emit_contract(Elm_Genlist_Item *it)
    Elm_Genlist_Item *it2;
    Eina_List *l;
 
+   //   printf("%p is emited contract\n", it);
    edje_object_signal_emit(VIEW(it), "elm,state,contract_flip", "");
    it->effect_done = EINA_FALSE;
 
@@ -5543,7 +5533,14 @@ _item_flip_effect_show(Elm_Genlist_Item *it)
    Elm_Genlist_Item *it2;
    Eina_List *l;
    Widget_Data *wd = it->wd;
+   Eina_Bool check = EINA_FALSE;
 
+   it2 = elm_genlist_item_next_get(it);
+   while (it2)
+     {
+        if (it2->expanded_depth <= it->expanded_depth) check = EINA_TRUE;
+        it2 = elm_genlist_item_next_get(it2);
+     }
    EINA_LIST_FOREACH(it->items, l, it2)
      {
         if (it2->parent && it == it2->parent)
index 3f22bc2..4104bb5 100644 (file)
@@ -1,8 +1,20 @@
+/*
+*
+* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+*/
 #include <stdio.h>
 #include <math.h>
 #include <Elementary.h>
 #include "elm_priv.h"
 
+/**
+* @defgroup Imageslider Imageslider
+* @ingroup Elementary
+*
+* By flicking images on the screen,
+* you can see the images in specific path.
+*/
+
 typedef struct _Widget_Data Widget_Data;
 
 #define ANI_STEP (14 * elm_scale_get())
@@ -128,6 +140,7 @@ _del_hook(Evas_Object *obj)
      }
 
    if (wd) free(wd);
+
 }
 
 // Whenever require processing theme, Call this function
@@ -165,6 +178,7 @@ _sizing_eval(Evas_Object *obj)
 
    _imageslider_move(obj, e, obj, NULL);
    _imageslider_resize(obj, e, obj, NULL);
+
 }
 
 // Whenever MOVE event occurs, Call this function.
@@ -187,6 +201,7 @@ _imageslider_move(void *data, Evas * e __UNUSED__, Evas_Object *obj, void *event
    wd->y = y;
 
    _imageslider_update_pos(wd, wd->x, wd->y, wd->w);
+
 }
 
 // Whenever RESIZE event occurs, Call this fucntion.
@@ -270,7 +285,7 @@ _imageslider_obj_shift(Widget_Data * wd, Eina_Bool left)
         wd->ly[BLOCK_LEFT] = wd->ly[BLOCK_CENTER];
         wd->ly[BLOCK_CENTER] = wd->ly[BLOCK_RIGHT];
         wd->ly[BLOCK_RIGHT] = ly_temp;
-        elm_object_part_content_set(wd->ly[BLOCK_RIGHT], "swl.photo", NULL);
+        elm_object_content_part_set(wd->ly[BLOCK_RIGHT], "swl.photo", NULL);
      }
    else
      {
@@ -279,7 +294,7 @@ _imageslider_obj_shift(Widget_Data * wd, Eina_Bool left)
         wd->ly[BLOCK_RIGHT] = wd->ly[BLOCK_CENTER];
         wd->ly[BLOCK_CENTER] = wd->ly[BLOCK_LEFT];
         wd->ly[BLOCK_LEFT] = ly_temp;
-        elm_object_part_content_set(wd->ly[BLOCK_LEFT], "swl.photo", NULL);
+        elm_object_content_part_set(wd->ly[BLOCK_LEFT], "swl.photo", NULL);
      }
 }
 
@@ -489,14 +504,14 @@ _check_drag(int state, void *data)
 
    it = eina_list_data_get(l[state]);
 
-   eo = elm_object_part_content_get(wd->ly[state], "swl.photo");
+   eo = (Evas_Object*)elm_object_content_part_get(wd->ly[state], "swl.photo");
    if (eo)
      evas_object_geometry_get(eo, &ix, &iy, &iw, &ih);
    edje_object_part_drag_value_get(elm_layout_edje_get(wd->ly[state]), "swl.photo", &dx, &dy);
 
    if ((iw != wd->w) || ((dx != 0) || (dy != 0)))
      {
-        elm_object_part_content_set(wd->ly[state], "swl.photo", NULL);
+        elm_object_content_part_set(wd->ly[state], "swl.photo", NULL);
      }
    else
      return 1;
@@ -615,10 +630,10 @@ _imageslider_update(Widget_Data * wd)
 
    for (i = 0; i < BLOCK_MAX; i++)
      {
-        eo = elm_object_part_content_get((const Evas_Object*)wd->ly[i], "swl.photo");
+        eo = (Evas_Object*)elm_object_content_part_get((const Evas_Object*)wd->ly[i], "swl.photo");
         if (!l[i])
           {
-             elm_object_part_content_set(wd->ly[i], "swl.photo", NULL);
+             elm_object_content_part_set(wd->ly[i], "swl.photo", NULL);
           }
         else
           {
@@ -631,13 +646,21 @@ _imageslider_update(Widget_Data * wd)
                   eo = elm_image_add(wd->obj);
                   //elm_image_prescale_set(eo, wd->w);
                   elm_image_file_set(eo, it->photo_file, NULL);
-                  elm_object_part_content_set(wd->ly[i], "swl.photo", eo);
+                  elm_object_content_part_set(wd->ly[i], "swl.photo", eo);
                }
           }
      }
    _anim(wd);
 }
 
+/**
+* Add an Image Slider widget
+*
+* @param        parent  The parent object
+* @return       The new Image slider object or NULL if it cannot be created
+*
+* @ingroup Imageslider
+*/
 EAPI Evas_Object *
 elm_imageslider_add(Evas_Object *parent)
 {
@@ -684,6 +707,17 @@ elm_imageslider_add(Evas_Object *parent)
    return obj;
 }
 
+/**
+* Append an Image Slider item
+*
+* @param        obj          The Image Slider object
+* @param        photo_file   photo file path
+* @param        func         callback function
+* @param        data         callback data
+* @return       The Image Slider item handle or NULL
+*
+* @ingroup Imageslider
+*/
 EAPI Elm_Imageslider_Item *
 elm_imageslider_item_append(Evas_Object *obj, const char *photo_file, Elm_Imageslider_Cb func, void *data)
 {
@@ -710,6 +744,18 @@ elm_imageslider_item_append(Evas_Object *obj, const char *photo_file, Elm_Images
    return it;
 }
 
+/**
+* Insert an Image Slider item into the Image Slider Widget by using the given index.
+*
+* @param        obj                     The Image Slider object
+* @param        photo_file      photo file path
+* @param        func            callback function
+* @param        index           required position
+* @param        data            callback data
+* @return       The Image Slider item handle or NULL
+*
+* @ingroup      Imageslider
+*/
 EAPI Elm_Imageslider_Item *
 elm_imageslider_item_append_relative(Evas_Object *obj, const char *photo_file, Elm_Imageslider_Cb func, unsigned int index, void *data)
 {
@@ -741,6 +787,17 @@ elm_imageslider_item_append_relative(Evas_Object *obj, const char *photo_file, E
    return it;
 }
 
+/**
+* Prepend Image Slider item
+*
+* @param        obj          The Image Slider object
+* @param        photo_file   photo file path
+* @param        func         callback function
+* @param        data         callback data
+* @return       The imageslider item handle or NULL
+*
+* @ingroup Imageslider
+*/
 EAPI Elm_Imageslider_Item *
 elm_imageslider_item_prepend(Evas_Object *obj, const char *photo_file, Elm_Imageslider_Cb func, void *data)
 {
@@ -764,6 +821,13 @@ elm_imageslider_item_prepend(Evas_Object *obj, const char *photo_file, Elm_Image
    return it;
 }
 
+/**
+* Delete the selected Image Slider item
+*
+* @param it             The selected Image Slider item handle
+*
+* @ingroup Imageslider
+*/
 EAPI void
 elm_imageslider_item_del(Elm_Imageslider_Item * it)
 {
@@ -791,6 +855,14 @@ elm_imageslider_item_del(Elm_Imageslider_Item * it)
    _imageslider_update(wd);
 }
 
+/**
+* Get the selected Image Slider item
+*
+* @param obj            The Image Slider object
+* @return The selected Image Slider item or NULL
+*
+* @ingroup Imageslider
+*/
 EAPI Elm_Imageslider_Item *
 elm_imageslider_selected_item_get(Evas_Object *obj)
 {
@@ -806,6 +878,14 @@ elm_imageslider_selected_item_get(Evas_Object *obj)
    return eina_list_data_get(wd->cur);
 }
 
+/**
+* Get whether an Image Slider item is selected or not
+*
+* @param it              the selected Image Slider item
+* @return EINA_TRUE or EINA_FALSE
+*
+* @ingroup Imageslider
+*/
 EAPI Eina_Bool
 elm_imageslider_item_selected_get(Elm_Imageslider_Item * it)
 {
@@ -823,6 +903,13 @@ elm_imageslider_item_selected_get(Elm_Imageslider_Item * it)
       return EINA_FALSE;
 }
 
+/**
+* Set the selected Image Slider item
+*
+* @param it             The Imaga Slider item
+*
+* @ingroup Imageslider
+*/
 EAPI void
 elm_imageslider_item_selected_set(Elm_Imageslider_Item * it)
 {
@@ -847,13 +934,21 @@ elm_imageslider_item_selected_set(Elm_Imageslider_Item * it)
 
    for (i = 0; i < BLOCK_MAX; i++)
      {
-       eo = elm_object_part_content_get(wd->ly[i], "swl.photo");
+       eo = (Evas_Object*)elm_object_content_part_get(wd->ly[i], "swl.photo");
        if (eo)
-         elm_object_part_content_set(wd->ly[i], "swl.photo", NULL);
+         elm_object_content_part_set(wd->ly[i], "swl.photo", NULL);
      }
    _imageslider_update(wd);
 }
 
+/**
+* Get the photo file path of given Image Slider item
+*
+* @param it             The Image Slider item
+* @return The photo file path or NULL;
+*
+* @ingroup Imageslider
+*/
 EAPI const char *
 elm_imageslider_item_photo_file_get(Elm_Imageslider_Item * it)
 {
@@ -862,6 +957,14 @@ elm_imageslider_item_photo_file_get(Elm_Imageslider_Item * it)
    return it->photo_file;
 }
 
+/**
+* Sets the photo file path of given Image Slider item
+*
+* @param it         The Image Slider item
+* @param photo_file The photo file path or NULL;
+*
+* @ingroup Imageslider
+*/
 EAPI void
 elm_imageslider_item_photo_file_set(Elm_Imageslider_Item *it, const char *photo_file)
 {
@@ -875,6 +978,14 @@ elm_imageslider_item_photo_file_set(Elm_Imageslider_Item *it, const char *photo_
      }
 }
 
+/**
+* Get the previous Image Slider item
+*
+* @param it             The Image Slider item
+* @return The previous Image Slider item or NULL
+*
+* @ingroup Imageslider
+*/
 EAPI Elm_Imageslider_Item *
 elm_imageslider_item_prev(Elm_Imageslider_Item * it)
 {
@@ -900,6 +1011,14 @@ elm_imageslider_item_prev(Elm_Imageslider_Item * it)
    return NULL;
 }
 
+/**
+* Get the next Image Slider item
+*
+* @param it             The Image Slider item
+* @return The next Image Slider item or NULL
+*
+* @ingroup Imageslider
+*/
 EAPI Elm_Imageslider_Item *
 elm_imageslider_item_next(Elm_Imageslider_Item * it)
 {
@@ -925,6 +1044,13 @@ elm_imageslider_item_next(Elm_Imageslider_Item * it)
    return NULL;
 }
 
+/**
+* Move to the previous Image Slider item
+*
+* @param obj    The Image Slider object
+*
+* @ingroup Imageslider
+*/
 EAPI void
 elm_imageslider_prev(Evas_Object *obj)
 {
@@ -938,6 +1064,13 @@ elm_imageslider_prev(Evas_Object *obj)
    _imageslider_obj_move(wd, -1);
 }
 
+/**
+* Move to the next Image Slider item
+*
+* @param obj The Image Slider object
+*
+* @ingroup Imageslider
+*/
 EAPI void
 elm_imageslider_next(Evas_Object * obj)
 {
@@ -951,6 +1084,13 @@ elm_imageslider_next(Evas_Object * obj)
    _imageslider_obj_move(wd, 1);
 }
 
+/**
+* Updates an Image Slider item
+*
+* @param it The Image Slider item
+*
+* @ingroup Imageslider
+*/
 EAPI void
 elm_imageslider_item_update(Elm_Imageslider_Item *it)
 {
@@ -961,10 +1101,10 @@ elm_imageslider_item_update(Elm_Imageslider_Item *it)
 
    if (wd->ani_lock) return;
    if (it == eina_list_data_get(eina_list_prev(wd->cur)))
-     elm_object_part_content_set(wd->ly[BLOCK_LEFT], "swl.photo", NULL);
+     elm_object_content_part_set(wd->ly[BLOCK_LEFT], "swl.photo", NULL);
    else if (it == eina_list_data_get(wd->cur))
-     elm_object_part_content_set(wd->ly[BLOCK_CENTER], "swl.photo", NULL);
+     elm_object_content_part_set(wd->ly[BLOCK_CENTER], "swl.photo", NULL);
    else if (it == eina_list_data_get(eina_list_next(wd->cur)))
-     elm_object_part_content_set(wd->ly[BLOCK_RIGHT], "swl.photo", NULL);
+     elm_object_content_part_set(wd->ly[BLOCK_RIGHT], "swl.photo", NULL);
    _imageslider_update(wd);
 }
index 4cc2453..d7acc84 100644 (file)
@@ -918,10 +918,6 @@ elm_object_mirrored_automatic_set(Evas_Object *obj, Eina_Bool automatic)
    elm_widget_mirrored_automatic_set(obj, automatic);
 }
 
-/**
- * @}
- */
-
 EAPI void
 elm_object_scale_set(Evas_Object *obj,
                      double       scale)
@@ -2125,7 +2121,7 @@ elm_object_signal_emit(Evas_Object *obj,
 }
 
 EAPI void
-elm_object_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data)
+elm_object_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data)
 {
     EINA_SAFETY_ON_NULL_RETURN(obj);
     EINA_SAFETY_ON_NULL_RETURN(func);
@@ -2133,7 +2129,7 @@ elm_object_signal_callback_add(Evas_Object *obj, const char *emission, const cha
 }
 
 EAPI void *
-elm_object_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func)
+elm_object_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source))
 {
     EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
     EINA_SAFETY_ON_NULL_RETURN_VAL(func, NULL);
@@ -2205,41 +2201,20 @@ elm_object_item_content_part_set(Elm_Object_Item *it,
                                  const char *part,
                                  Evas_Object *content)
 {
-   _elm_widget_item_content_part_set((Elm_Widget_Item *) it, part, content);
-}
-
-EAPI void
-elm_object_item_part_content_set(Elm_Object_Item *it,
-                                 const char *part,
-                                 Evas_Object *content)
-{
-   _elm_widget_item_content_part_set((Elm_Widget_Item *) it, part, content);
+   elm_widget_item_content_part_set(it, part, content);
 }
 
 EAPI Evas_Object *
 elm_object_item_content_part_get(const Elm_Object_Item *it,
                                  const char *part)
 {
-   return _elm_widget_item_content_part_get((Elm_Widget_Item *) it, part);
-}
-
-EAPI Evas_Object *
-elm_object_item_part_content_get(const Elm_Object_Item *it,
-                                 const char *part)
-{
-   return _elm_widget_item_content_part_get((Elm_Widget_Item *) it, part);
+   return elm_widget_item_content_part_get(it, part);
 }
 
 EAPI Evas_Object *
 elm_object_item_content_part_unset(Elm_Object_Item *it, const char *part)
 {
-   return _elm_widget_item_content_part_unset((Elm_Widget_Item *) it, part);
-}
-
-EAPI Evas_Object *
-elm_object_item_part_content_unset(Elm_Object_Item *it, const char *part)
-{
-   return _elm_widget_item_content_part_unset((Elm_Widget_Item *) it, part);
+   return elm_widget_item_content_part_unset(it, part);
 }
 
 EAPI void
@@ -2247,39 +2222,13 @@ elm_object_item_text_part_set(Elm_Object_Item *it,
                               const char *part,
                               const char *label)
 {
-   _elm_widget_item_text_part_set((Elm_Widget_Item *) it, part, label);
-}
-
-EAPI void
-elm_object_item_part_text_set(Elm_Object_Item *it,
-                              const char *part,
-                              const char *label)
-{
-   _elm_widget_item_text_part_set((Elm_Widget_Item *) it, part, label);
+   elm_widget_item_text_part_set(it, part, label);
 }
 
 EAPI const char *
 elm_object_item_text_part_get(const Elm_Object_Item *it, const char *part)
 {
-   return _elm_widget_item_text_part_get((Elm_Widget_Item *) it, part);
-}
-
-EAPI const char *
-elm_object_item_part_text_get(const Elm_Object_Item *it, const char *part)
-{
-   return _elm_widget_item_text_part_get((Elm_Widget_Item *) it, part);
-}
-
-EAPI void
-elm_object_access_info_set(Evas_Object *obj, const char *txt)
-{
-   elm_widget_access_info_set(obj, txt);
-}
-
-EAPI void
-elm_object_item_access_info_set(Elm_Object_Item *it, const char *txt)
-{
-   _elm_widget_item_access_info_set((Elm_Widget_Item *) it, txt);
+   return elm_widget_item_text_part_get(it, part);
 }
 
 EAPI void *
@@ -2297,16 +2246,18 @@ elm_object_item_data_set(Elm_Object_Item *it, void *data)
 EAPI void
 elm_object_item_signal_emit(Elm_Object_Item *it, const char *emission, const char *source)
 {
-   _elm_widget_item_signal_emit((Elm_Widget_Item *) it, emission, source);
+   elm_widget_item_signal_emit(it, emission, source);
 }
 
-EAPI void elm_object_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled)
+EAPI void
+elm_object_access_info_set(Evas_Object *obj, const char *txt)
 {
-   _elm_widget_item_disabled_set((Elm_Widget_Item *) it, disabled);
+   elm_widget_access_info_set(obj, txt);
 }
 
-EAPI Eina_Bool elm_object_item_disabled_get(const Elm_Object_Item *it)
+EAPI void
+elm_object_item_access_info_set(Elm_Object_Item *it, const char *txt)
 {
-   return _elm_widget_item_disabled_get((Elm_Widget_Item *) it);
+   _elm_widget_item_access_info_set((Elm_Widget_Item *)it, txt);
 }
 
index 01b24b3..9d7acd5 100644 (file)
@@ -6,8 +6,6 @@
 #include "elm_priv.h"
 #include "els_scroller.h"
 
-#ifdef HAVE_ELEMENTARY_ECORE_CON
-
 typedef struct _Widget_Data Widget_Data;
 typedef struct _Pan Pan;
 typedef struct _Grid Grid;
@@ -1242,7 +1240,7 @@ _process_download_list(Evas_Object *obj)
 {
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
-   Eina_List *l, *ll;
+   Eina_List *l;
    Evas_Coord ox, oy, ow, oh, cvx, cvy, cvw, cvh, tx, ty, gw, gh, xx, yy, ww, hh;
    Grid_Item *gi;
 
@@ -1252,7 +1250,7 @@ _process_download_list(Evas_Object *obj)
    gw = wd->size.w;
    gh = wd->size.h;
 
-   EINA_LIST_FOREACH_SAFE(wd->download_list, l, ll, gi)
+   EINA_LIST_FOREACH(wd->download_list, l, gi)
      {
         xx = gi->out.x;
         yy = gi->out.y;
@@ -1281,7 +1279,7 @@ _process_download_list(Evas_Object *obj)
           }
      }
 
-   EINA_LIST_REVERSE_FOREACH_SAFE(wd->download_list, l, ll, gi)
+   EINA_LIST_REVERSE_FOREACH(wd->download_list, l, gi)
      {
         if (gi->wd->download_num >= MAX_CONCURRENT_DOWNLOAD)
           break;
@@ -1320,13 +1318,22 @@ grid_create(Evas_Object *obj)
 
    if ((!wd) || (!wd->src)) return NULL;
    g = calloc(1, sizeof(Grid));
+   if (!g) return NULL;
 
    g->zoom = wd->zoom;
    g->tsize = wd->tsize;
    g->wd = wd;
 
-   if (g->zoom > wd->src->zoom_max) return NULL;
-   if (g->zoom < wd->src->zoom_min) return NULL;
+   if (g->zoom > wd->src->zoom_max)
+     {
+        free(g);
+        return NULL;
+     }
+   if (g->zoom < wd->src->zoom_min)
+     {
+        free(g);
+        return NULL;
+     }
 
    int size =  pow(2.0, wd->zoom);
    g->gw = size;
@@ -2926,14 +2933,15 @@ _parse_kml(void *data)
              char *buf;
 
              fseek(f, 0, SEEK_SET);
-             buf = malloc(sz);
+             buf = malloc(sz + 1);
              if (buf)
                {
+                  memset(buf, 0, sz + 1);
                   if (fread(buf, 1, sz, f))
                     {
                        eina_simple_xml_parse(buf, sz, EINA_TRUE, cb_route_dump, &dump);
-                       free(buf);
                     }
+                  free(buf);
                }
           }
         fclose(f);
@@ -3018,14 +3026,15 @@ _parse_name(void *data)
              char *buf;
 
              fseek(f, 0, SEEK_SET);
-             buf = malloc(sz);
+             buf = malloc(sz + 1);
              if (buf)
                {
+                  memset(buf, 0, sz + 1);
                   if (fread(buf, 1, sz, f))
                     {
                        eina_simple_xml_parse(buf, sz, EINA_TRUE, cb_name_dump, &dump);
-                       free(buf);
                     }
+                  free(buf);
                }
           }
         fclose(f);
@@ -3149,12 +3158,9 @@ _utils_convert_name(const Evas_Object *obj, int method, char *address, double lo
 
 static int idnum = 1;
 
-#endif
-
 EAPI Evas_Object *
 elm_map_add(Evas_Object *parent)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    Evas *e;
    Widget_Data *wd;
    Evas_Coord minw, minh;
@@ -3285,16 +3291,11 @@ elm_map_add(Evas_Object *parent)
      }
 
    return obj;
-#else
-   (void) parent;
-   return NULL;
-#endif
 }
 
 EAPI void
 elm_map_zoom_set(Evas_Object *obj, int zoom)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
    Eina_List *l;
@@ -3436,31 +3437,21 @@ elm_map_zoom_set(Evas_Object *obj, int zoom)
      }
 
    if (zoom_changed) evas_object_smart_callback_call(obj, SIG_ZOOM_CHANGE, NULL);
-#else
-   (void) obj;
-   (void) zoom;
-#endif
 }
 
 EAPI int
 elm_map_zoom_get(const Evas_Object *obj)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype) 0;
    Widget_Data *wd = elm_widget_data_get(obj);
 
    if (!wd) return 0;
    return wd->zoom;
-#else
-   (void) obj;
-   return 0;
-#endif
 }
 
 EAPI void
 elm_map_zoom_mode_set(Evas_Object *obj, Elm_Map_Zoom_Mode mode)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
 
@@ -3474,31 +3465,21 @@ elm_map_zoom_mode_set(Evas_Object *obj, Elm_Map_Zoom_Mode mode)
         wd->zoom = 0;
         elm_map_zoom_set(wd->obj, tz);
      }
-#else
-   (void) obj;
-   (void) mode;
-#endif
 }
 
 EAPI Elm_Map_Zoom_Mode
 elm_map_zoom_mode_get(const Evas_Object *obj)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype) ELM_MAP_ZOOM_MODE_MANUAL;
    Widget_Data *wd = elm_widget_data_get(obj);
 
    if (!wd) return ELM_MAP_ZOOM_MODE_MANUAL;
    return wd->mode;
-#else
-   (void) obj;
-   return ELM_MAP_ZOOM_MODE_MANUAL;
-#endif
 }
 
 EAPI void
 elm_map_geo_region_bring_in(Evas_Object *obj, double lon, double lat)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
    int rx, ry, rw, rh;
@@ -3524,17 +3505,11 @@ elm_map_geo_region_bring_in(Evas_Object *obj, double lon, double lat)
    wd->center_on.enabled = EINA_TRUE;
    wd->center_on.lon = lon;
    wd->center_on.lat = lat;
-#else
-   (void) obj;
-   (void) lon;
-   (void) lat;
-#endif
 }
 
 EAPI void
 elm_map_geo_region_show(Evas_Object *obj, double lon, double lat)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
    int rx, ry, rw, rh;
@@ -3559,17 +3534,11 @@ elm_map_geo_region_show(Evas_Object *obj, double lon, double lat)
    wd->center_on.enabled = EINA_TRUE;
    wd->center_on.lon = lon;
    wd->center_on.lat = lat;
-#else
-   (void) obj;
-   (void) lon;
-   (void) lat;
-#endif
 }
 
 EAPI void
 elm_map_geo_region_get(const Evas_Object *obj, double *lon, double *lat)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
    Evas_Coord sx, sy, sw, sh;
@@ -3581,17 +3550,11 @@ elm_map_geo_region_get(const Evas_Object *obj, double *lon, double *lat)
    sy += sh / 2;
 
    elm_map_utils_convert_coord_into_geo(obj, sx, sy, wd->size.w, lon, lat);
-#else
-   (void) obj;
-   (void) lon;
-   (void) lat;
-#endif
 }
 
 EAPI void
 elm_map_paused_set(Evas_Object *obj, Eina_Bool paused)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
 
@@ -3608,62 +3571,42 @@ elm_map_paused_set(Evas_Object *obj, Eina_Bool paused)
              evas_object_smart_callback_call(obj, SIG_ZOOM_STOP, NULL);
           }
      }
-#else
-   (void) obj;
-   (void) paused;
-#endif
 }
 
 EAPI void
 elm_map_paused_markers_set(Evas_Object *obj, Eina_Bool paused)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
 
    if (!wd) return;
    if (wd->paused_markers == !!paused) return;
    wd->paused_markers = paused;
-#else
-   (void) obj;
-   (void) paused;
-#endif
 }
 
 EAPI Eina_Bool
 elm_map_paused_get(const Evas_Object *obj)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
    Widget_Data *wd = elm_widget_data_get(obj);
 
    if (!wd) return EINA_FALSE;
    return wd->paused;
-#else
-   (void) obj;
-   return EINA_FALSE;
-#endif
 }
 
 EAPI Eina_Bool
 elm_map_paused_markers_get(const Evas_Object *obj)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
    Widget_Data *wd = elm_widget_data_get(obj);
 
    if (!wd) return EINA_FALSE;
    return wd->paused_markers;
-#else
-   (void) obj;
-   return EINA_FALSE;
-#endif
 }
 
 EAPI void
 elm_map_utils_downloading_status_get(const Evas_Object *obj, int *try_num, int *finish_num)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
 
@@ -3677,17 +3620,11 @@ elm_map_utils_downloading_status_get(const Evas_Object *obj, int *try_num, int *
      {
         *finish_num = wd->finish_num;
      }
-#else
-   (void) obj;
-   (void) try_num;
-   (void) finish_num;
-#endif
 }
 
 EAPI void
 elm_map_utils_convert_coord_into_geo(const Evas_Object *obj, int x, int y, int size, double *lon, double *lat)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
 
@@ -3707,20 +3644,11 @@ elm_map_utils_convert_coord_into_geo(const Evas_Object *obj, int x, int y, int s
         double n = ELM_PI - 2.0 * ELM_PI * y / size;
         *lat = 180.0 / ELM_PI * atan(0.5 * (exp(n) - exp(-n)));
      }
-#else
-   (void) obj;
-   (void) x;
-   (void) y;
-   (void) size;
-   (void) lon;
-   (void) lat;
-#endif
 }
 
 EAPI void
 elm_map_utils_convert_geo_into_coord(const Evas_Object *obj, double lon, double lat, int size, int *x, int *y)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
 
@@ -3735,48 +3663,26 @@ elm_map_utils_convert_geo_into_coord(const Evas_Object *obj, double lon, double
      *x = floor((lon + 180.0) / 360.0 * size);
    if (y)
      *y = floor((1.0 - log( tan(lat * ELM_PI / 180.0) + 1.0 / cos(lat * ELM_PI / 180.0)) / ELM_PI) / 2.0 * size);
-#else
-   (void) obj;
-   (void) lon;
-   (void) lat;
-   (void) size;
-   (void) x;
-   (void) y;
-#endif
 }
 
 EAPI Elm_Map_Name *
 elm_map_utils_convert_coord_into_name(const Evas_Object *obj, double lon, double lat)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    return _utils_convert_name(obj, ELM_MAP_NAME_METHOD_REVERSE, NULL, lon, lat);
-#else
-   (void) obj;
-   (void) lon;
-   (void) lat;
-   return NULL;
-#endif
 }
 
 EAPI Elm_Map_Name *
 elm_map_utils_convert_name_into_coord(const Evas_Object *obj, char *address)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    if (!address) return NULL;
    return _utils_convert_name(obj, ELM_MAP_NAME_METHOD_SEARCH, address, 0.0, 0.0);
-#else
-   (void) obj;
-   (void) address;
-   return NULL;
-#endif
 }
 
 EAPI void
 elm_map_utils_rotate_coord(const Evas_Object *obj __UNUSED__, const Evas_Coord x, const Evas_Coord y, const Evas_Coord cx, const Evas_Coord cy, const double degree, Evas_Coord *xx, Evas_Coord *yy)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    if ((!xx) || (!yy)) return;
 
    double r = (degree * M_PI) / 180.0;
@@ -3792,21 +3698,11 @@ elm_map_utils_rotate_coord(const Evas_Object *obj __UNUSED__, const Evas_Coord x
 
    *xx = tx + cx;
    *yy = ty + cy;
-#else
-   (void) x;
-   (void) y;
-   (void) cx;
-   (void) cy;
-   (void) degree;
-   (void) xx;
-   (void) yy;
-#endif
 }
 
 EAPI Elm_Map_Marker *
 elm_map_marker_add(Evas_Object *obj, double lon, double lat, Elm_Map_Marker_Class *clas, Elm_Map_Group_Class *clas_group, void *data)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd = elm_widget_data_get(obj);
    int i, j;
@@ -3986,21 +3882,11 @@ elm_map_marker_add(Evas_Object *obj, double lon, double lat, Elm_Map_Marker_Clas
      }
 
    return marker;
-#else
-   (void) obj;
-   (void) lon;
-   (void) lat;
-   (void) clas;
-   (void) clas_group;
-   (void) data;
-   return NULL;
-#endif
 }
 
 EAPI void
 elm_map_marker_remove(Elm_Map_Marker *marker)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    int i;
    Eina_List *groups;
    Widget_Data *wd;
@@ -4063,51 +3949,33 @@ elm_map_marker_remove(Elm_Map_Marker *marker)
         evas_object_geometry_get(wd->obj, &ox, &oy, &ow, &oh);
         marker_place(wd->obj, eina_list_data_get(wd->grids), wd->pan_x, wd->pan_y, ox, oy, ow, oh);
      }
-#else
-   (void) marker;
-#endif
 }
 
 EAPI void
 elm_map_marker_region_get(const Elm_Map_Marker *marker, double *lon, double *lat)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    EINA_SAFETY_ON_NULL_RETURN(marker);
    if (lon) *lon = marker->longitude;
    if (lat) *lat = marker->latitude;
-#else
-   (void) marker;
-   (void) lon;
-   (void) lat;
-#endif
 }
 
 EAPI void
 elm_map_marker_bring_in(Elm_Map_Marker *marker)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    EINA_SAFETY_ON_NULL_RETURN(marker);
    elm_map_geo_region_bring_in(marker->wd->obj, marker->longitude, marker->latitude);
-#else
-   (void) marker;
-#endif
 }
 
 EAPI void
 elm_map_marker_show(Elm_Map_Marker *marker)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    EINA_SAFETY_ON_NULL_RETURN(marker);
    elm_map_geo_region_show(marker->wd->obj, marker->longitude, marker->latitude);
-#else
-   (void) marker;
-#endif
 }
 
 EAPI void
 elm_map_markers_list_show(Eina_List *markers)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    int zoom;
    double lon, lat;
    Eina_List *l;
@@ -4151,42 +4019,28 @@ elm_map_markers_list_show(Eina_List *markers)
 
    elm_map_geo_region_show(wd->obj, lon, lat);
    elm_map_zoom_set(wd->obj, zoom);
-#else
-   (void) markers;
-#endif
 }
 
 EAPI void
 elm_map_max_marker_per_group_set(Evas_Object *obj, int max)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
 
    if (!wd) return;
    wd->markers_max_num = max;
-#else
-   (void) obj;
-   (void) max;
-#endif
 }
 
 EAPI Evas_Object *
 elm_map_marker_object_get(const Elm_Map_Marker *marker)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    EINA_SAFETY_ON_NULL_RETURN_VAL(marker, NULL);
    return marker->content;
-#else
-   (void) marker;
-   return NULL;
-#endif
 }
 
 EAPI void
 elm_map_marker_update(Elm_Map_Marker *marker)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    EINA_SAFETY_ON_NULL_RETURN(marker);
    if (marker->content)
      {
@@ -4197,15 +4051,11 @@ elm_map_marker_update(Elm_Map_Marker *marker)
         marker->content = NULL;
         _group_bubble_content_update(marker->groups[marker->wd->zoom]);
      }
-#else
-   (void) marker;
-#endif
 }
 
 EAPI void
 elm_map_bubbles_close(Evas_Object *obj)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
    Marker_Group *group;
@@ -4214,15 +4064,11 @@ elm_map_bubbles_close(Evas_Object *obj)
    if (!wd) return;
    EINA_LIST_FOREACH_SAFE(wd->opened_bubbles, l, l_next, group)
       _group_bubble_free(group);
-#else
-   (void) obj;
-#endif
 }
 
 EAPI Elm_Map_Group_Class *
 elm_map_group_class_new(Evas_Object *obj)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd = elm_widget_data_get(obj);
 
@@ -4231,76 +4077,46 @@ elm_map_group_class_new(Evas_Object *obj)
    clas->zoom_grouped = wd->zoom_max;
    wd->groups_clas = eina_list_append(wd->groups_clas, clas);
    return clas;
-#else
-   (void) obj;
-   return NULL;
-#endif
 }
 
 EAPI void
 elm_map_group_class_style_set(Elm_Map_Group_Class *clas, const char *style)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    EINA_SAFETY_ON_NULL_RETURN(clas);
    eina_stringshare_replace(&clas->style, style);
-#else
-   (void) clas;
-   (void) style;
-#endif
 }
 
 EAPI void
 elm_map_group_class_icon_cb_set(Elm_Map_Group_Class *clas, ElmMapGroupIconGetFunc icon_get)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    EINA_SAFETY_ON_NULL_RETURN(clas);
    clas->func.icon_get = icon_get;
-#else
-   (void) clas;
-   (void) icon_get;
-#endif
 }
 
 EAPI void
 elm_map_group_class_data_set(Elm_Map_Group_Class *clas, void *data)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    EINA_SAFETY_ON_NULL_RETURN(clas);
    clas->data = data;
-#else
-   (void) clas;
-   (void) data;
-#endif
 }
 
 EAPI void
 elm_map_group_class_zoom_displayed_set(Elm_Map_Group_Class *clas, int zoom)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    EINA_SAFETY_ON_NULL_RETURN(clas);
    clas->zoom_displayed = zoom;
-#else
-   (void) clas;
-   (void) zoom;
-#endif
 }
 
 EAPI void
 elm_map_group_class_zoom_grouped_set(Elm_Map_Group_Class *clas, int zoom)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    EINA_SAFETY_ON_NULL_RETURN(clas);
    clas->zoom_grouped = zoom;
-#else
-   (void) clas;
-   (void) zoom;
-#endif
 }
 
 EAPI void
 elm_map_group_class_hide_set(Evas_Object *obj, Elm_Map_Group_Class *clas, Eina_Bool hide)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
 
@@ -4314,17 +4130,11 @@ elm_map_group_class_hide_set(Evas_Object *obj, Elm_Map_Group_Class *clas, Eina_B
         evas_object_geometry_get(obj, &ox, &oy, &ow, &oh);
         marker_place(obj, eina_list_data_get(wd->grids), wd->pan_x, wd->pan_y, ox, oy, ow, oh);
      }
-#else
-   (void) obj;
-   (void) clas;
-   (void) hide;
-#endif
 }
 
 EAPI Elm_Map_Marker_Class *
 elm_map_marker_class_new(Evas_Object *obj)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd = elm_widget_data_get(obj);
 
@@ -4332,79 +4142,49 @@ elm_map_marker_class_new(Evas_Object *obj)
    Elm_Map_Marker_Class *clas = calloc(1, sizeof(Elm_Map_Marker_Class));
    wd->markers_clas = eina_list_append(wd->markers_clas, clas);
    return clas;
-#else
-   (void) obj;
-   return NULL;
-#endif
 }
 
 EAPI void
 elm_map_marker_class_style_set(Elm_Map_Marker_Class *clas, const char *style)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    EINA_SAFETY_ON_NULL_RETURN(clas);
    eina_stringshare_replace(&clas->style, style);
-#else
-   (void) clas;
-   (void) style;
-#endif
 }
 
 EAPI void
 elm_map_marker_class_icon_cb_set(Elm_Map_Marker_Class *clas, ElmMapMarkerIconGetFunc icon_get)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    EINA_SAFETY_ON_NULL_RETURN(clas);
    clas->func.icon_get = icon_get;
-#else
-   (void) clas;
-   (void) icon_get;
-#endif
 }
 
 EAPI void
 elm_map_marker_class_get_cb_set(Elm_Map_Marker_Class *clas, ElmMapMarkerGetFunc get)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    EINA_SAFETY_ON_NULL_RETURN(clas);
    clas->func.get = get;
-#else
-   (void) clas;
-   (void) get;
-#endif
 }
 
 EAPI void
 elm_map_marker_class_del_cb_set(Elm_Map_Marker_Class *clas, ElmMapMarkerDelFunc del)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    EINA_SAFETY_ON_NULL_RETURN(clas);
    clas->func.del = del;
-#else
-   (void) clas;
-   (void) del;
-#endif
 }
 
 EAPI const char **
 elm_map_source_names_get(const Evas_Object *obj)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd = elm_widget_data_get(obj);
 
    if (!wd) return NULL;
    return wd->source_names;
-#else
-   (void) obj;
-   return NULL;
-#endif
 }
 
 EAPI void
 elm_map_source_name_set(Evas_Object *obj, const char *source_name)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
    Map_Sources_Tab *s;
@@ -4439,123 +4219,83 @@ elm_map_source_name_set(Evas_Object *obj, const char *source_name)
           zoom = wd->src->zoom_min;
      }
    elm_map_zoom_set(obj, zoom);
-#else
-   (void) obj;
-   (void) source_name;
-#endif
 }
 
 EAPI const char *
 elm_map_source_name_get(const Evas_Object *obj)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd = elm_widget_data_get(obj);
 
    if ((!wd) || (!wd->src)) return NULL;
    return wd->src->name;
-#else
-   (void) obj;
-   return NULL;
-#endif
 }
 
 EAPI void
 elm_map_route_source_set(Evas_Object *obj, Elm_Map_Route_Sources source)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
 
    if (!wd) return;
    wd->route_source = source;
-#else
-   (void) obj;
-   (void) source;
-#endif
 }
 
 EAPI Elm_Map_Route_Sources
 elm_map_route_source_get(const Evas_Object *obj)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype) ELM_MAP_ROUTE_SOURCE_YOURS;
    Widget_Data *wd = elm_widget_data_get(obj);
 
    if (!wd) return ELM_MAP_ROUTE_SOURCE_YOURS;
    return wd->route_source;
-#else
-   (void) obj;
-   return ELM_MAP_ROUTE_SOURCE_YOURS;
-#endif
 }
 
 EAPI void
 elm_map_source_zoom_max_set(Evas_Object *obj, int zoom)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
 
    if ((!wd) || (!wd->src)) return;
    if ((zoom > wd->zoom_max) || (zoom < wd->zoom_min)) return;
    wd->src->zoom_max = zoom;
-#else
-   (void) obj;
-   (void) zoom;
-#endif
 }
 
 EAPI int
 elm_map_source_zoom_max_get(const Evas_Object *obj)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype) 18;
    Widget_Data *wd = elm_widget_data_get(obj);
 
    if ((!wd) || (!wd->src)) return 18;
    return wd->src->zoom_max;
-#else
-   (void) obj;
-   return 18;
-#endif
 }
 
 EAPI void
 elm_map_source_zoom_min_set(Evas_Object *obj, int zoom)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
 
    if ((!wd) || (!wd->src)) return;
    if ((zoom > wd->zoom_max) || (zoom < wd->zoom_min)) return;
    wd->src->zoom_min = zoom;
-#else
-   (void) obj;
-   (void) zoom;
-#endif
 }
 
 EAPI int
 elm_map_source_zoom_min_get(const Evas_Object *obj)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype) 0;
    Widget_Data *wd = elm_widget_data_get(obj);
 
    if ((!wd) || (!wd->src)) return 0;
    return wd->src->zoom_min;
-#else
-   (void) obj;
-   return 0;
-#endif
 }
 
 EAPI void
 elm_map_user_agent_set(Evas_Object *obj, const char *user_agent)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
 
@@ -4565,25 +4305,16 @@ elm_map_user_agent_set(Evas_Object *obj, const char *user_agent)
 
    if (!wd->ua) wd->ua = eina_hash_string_small_new(NULL);
    eina_hash_set(wd->ua, "User-Agent", wd->user_agent);
-#else
-   (void) obj;
-   (void) user_agent;
-#endif
 }
 
 EAPI const char *
 elm_map_user_agent_get(const Evas_Object *obj)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd = elm_widget_data_get(obj);
 
    if (!wd) return NULL;
    return wd->user_agent;
-#else
-   (void) obj;
-   return NULL;
-#endif
 }
 
 EAPI Elm_Map_Route *
@@ -4595,7 +4326,6 @@ elm_map_route_add(Evas_Object *obj,
                   double tlon,
                   double tlat)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd = elm_widget_data_get(obj);
    char buf[PATH_MAX];
@@ -4676,22 +4406,11 @@ elm_map_route_add(Evas_Object *obj,
                            "elm,state,busy,start", "elm");
    evas_object_smart_callback_call(wd->obj, SIG_ROUTE_LOAD, NULL);
    return route;
-#else
-   (void) obj;
-   (void) type;
-   (void) method;
-   (void) flon;
-   (void) flat;
-   (void) tlon;
-   (void) tlat;
-   return NULL;
-#endif
 }
 
 EAPI void
 elm_map_route_remove(Elm_Map_Route *route)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    EINA_SAFETY_ON_NULL_RETURN(route);
 
    Path_Waypoint *w;
@@ -4727,113 +4446,67 @@ elm_map_route_remove(Elm_Map_Route *route)
         free(route->ud.fname);
         route->ud.fname = NULL;
      }
-#else
-   (void) route;
-#endif
 }
 
 EAPI void
 elm_map_route_color_set(Elm_Map_Route *route, int r, int g , int b, int a)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    EINA_SAFETY_ON_NULL_RETURN(route);
    route->color.r = r;
    route->color.g = g;
    route->color.b = b;
    route->color.a = a;
-#else
-   (void) route;
-   (void) r;
-   (void) g;
-   (void) b;
-   (void) a;
-#endif
 }
 
 EAPI void
 elm_map_route_color_get(const Elm_Map_Route *route, int *r, int *g , int *b, int *a)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    EINA_SAFETY_ON_NULL_RETURN(route);
    if (r) *r = route->color.r;
    if (g) *g = route->color.g;
    if (b) *b = route->color.b;
    if (a) *a = route->color.a;
-#else
-   (void) route;
-   (void) r;
-   (void) g;
-   (void) b;
-   (void) a;
-#endif
 }
 
 EAPI double
 elm_map_route_distance_get(const Elm_Map_Route *route)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    EINA_SAFETY_ON_NULL_RETURN_VAL(route, 0.0);
    return route->info.distance;
-#else
-   (void) route;
-   return 0.0;
-#endif
 }
 
 EAPI const char*
 elm_map_route_node_get(const Elm_Map_Route *route)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    EINA_SAFETY_ON_NULL_RETURN_VAL(route, NULL);
    return route->info.nodes;
-#else
-   (void) route;
-   return NULL;
-#endif
 }
 
 EAPI const char*
 elm_map_route_waypoint_get(const Elm_Map_Route *route)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    EINA_SAFETY_ON_NULL_RETURN_VAL(route, NULL);
    return route->info.waypoints;
-#else
-   (void) route;
-   return NULL;
-#endif
 }
 
 EAPI const char *
 elm_map_name_address_get(const Elm_Map_Name *name)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    EINA_SAFETY_ON_NULL_RETURN_VAL(name, NULL);
    return name->address;
-#else
-   (void) name;
-   return NULL;
-#endif
 }
 
 EAPI void
 elm_map_name_region_get(const Elm_Map_Name *name, double *lon, double *lat)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    EINA_SAFETY_ON_NULL_RETURN(name);
    if (lon) *lon = name->lon;
    if (lat) *lat = name->lat;
-#else
-   (void) name;
-   (void) lon;
-   (void) lat;
-#endif
 }
 
 EAPI void
 elm_map_name_remove(Elm_Map_Name *name)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    EINA_SAFETY_ON_NULL_RETURN(name);
    if (name->address)
      {
@@ -4851,15 +4524,11 @@ elm_map_name_remove(Elm_Map_Name *name)
         free(name->ud.fname);
         name->ud.fname = NULL;
      }
-#else
-   (void) name;
-#endif
 }
 
 EAPI void
 elm_map_rotate_set(Evas_Object *obj, double degree, Evas_Coord cx, Evas_Coord cy)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
 
@@ -4868,18 +4537,11 @@ elm_map_rotate_set(Evas_Object *obj, double degree, Evas_Coord cx, Evas_Coord cy
    wd->rotate.cx = cx;
    wd->rotate.cy = cy;
    wd->calc_job = ecore_job_add(_calc_job, wd);
-#else
-   (void) obj;
-   (void) degree;
-   (void) cx;
-   (void) cy;
-#endif
 }
 
 EAPI void
 elm_map_rotate_get(const Evas_Object *obj, double *degree, Evas_Coord *cx, Evas_Coord *cy)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
 
@@ -4887,18 +4549,11 @@ elm_map_rotate_get(const Evas_Object *obj, double *degree, Evas_Coord *cx, Evas_
    if (degree) *degree = wd->rotate.d;
    if (cx) *cx = wd->rotate.cx;
    if (cy) *cy = wd->rotate.cy;
-#else
-   (void) obj;
-   (void) degree;
-   (void) cx;
-   (void) cy;
-#endif
 }
 
 EAPI void
 elm_map_wheel_disabled_set(Evas_Object *obj, Eina_Bool disabled)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
 
@@ -4908,32 +4563,22 @@ elm_map_wheel_disabled_set(Evas_Object *obj, Eina_Bool disabled)
    else if ((wd->wheel_disabled) && (!disabled))
      evas_object_event_callback_add(wd->rect, EVAS_CALLBACK_MOUSE_WHEEL, _mouse_wheel_cb, obj);
    wd->wheel_disabled = !!disabled;
-#else
-   (void) obj;
-   (void) disabled;
-#endif
 }
 
 EAPI Eina_Bool
 elm_map_wheel_disabled_get(const Evas_Object *obj)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
    Widget_Data *wd = elm_widget_data_get(obj);
 
    if (!wd) return EINA_FALSE;
    return wd->wheel_disabled;
-#else
-   (void) obj;
-   return EINA_FALSE;
-#endif
 }
 
 #ifdef ELM_EMAP
 EAPI Evas_Object *
 elm_map_track_add(Evas_Object *obj, EMap_Route *emap)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd = elm_widget_data_get(obj);
 
@@ -4944,18 +4589,12 @@ elm_map_track_add(Evas_Object *obj, EMap_Route *emap)
    wd->track = eina_list_append(wd->track, route);
 
    return route;
-#else
-   (void) obj;
-   (void) emap;
-   return NULL;
-#endif
 }
 #endif
 
 EAPI void
 elm_map_track_remove(Evas_Object *obj, Evas_Object *route)
 {
-#ifdef HAVE_ELEMENTARY_ECORE_CON
    ELM_CHECK_WIDTYPE(obj, widtype) ;
    Widget_Data *wd = elm_widget_data_get(obj);
 
@@ -4963,14 +4602,8 @@ elm_map_track_remove(Evas_Object *obj, Evas_Object *route)
 
    wd->track = eina_list_remove(wd->track, route);
    evas_object_del(route);
-#else
-   (void) obj;
-   (void) route;
-#endif
 }
 
-#ifdef HAVE_ELEMENTARY_ECORE_CON
-
 static char *
 _mapnik_url_cb(Evas_Object *obj __UNUSED__, int x, int y, int zoom)
 {
@@ -5051,7 +4684,7 @@ _nominatim_url_cb(Evas_Object *obj, int method, char *name, double lon, double l
 {
    ELM_CHECK_WIDTYPE(obj, widtype) strdup("");
    Widget_Data *wd = elm_widget_data_get(obj);
-   char **str;
+   char **str = NULL;
    unsigned int ele, idx;
    char search_url[PATH_MAX];
    char buf[PATH_MAX];
@@ -5071,7 +4704,10 @@ _nominatim_url_cb(Evas_Object *obj, int method, char *name, double lon, double l
    else if (method == ELM_MAP_NAME_METHOD_REVERSE) snprintf(buf, sizeof(buf), "%s/reverse?format=xml&lat=%lf&lon=%lf&zoom=%d&addressdetails=0", NAME_NOMINATIM_URL, lat, lon, wd->zoom);
    else strcpy(buf, "");
 
+   if (str && str[0])
+     {
+       free(str[0]);
+       free(str);
+     }
    return strdup(buf);
 }
-
-#endif
index 0af8b74..03abcdd 100644 (file)
@@ -22,7 +22,7 @@ struct _Elm_Entry_Extension_data
        Eina_Bool have_selection: 1;
        Eina_Bool selmode :1;
        Eina_Bool context_menu : 1;
-       Elm_CNP_Mode cnp_mode : 2;
+       Eina_Bool textonly : 1;
 };
 
 EAPI void elm_entry_extension_module_data_get(Evas_Object *obj,Elm_Entry_Extension_data *ext_mod);
similarity index 82%
rename from src/lib/elc_multibuttonentry.c
rename to src/lib/elm_multibuttonentry.c
index 0949492..b148899 100644 (file)
@@ -1,74 +1,77 @@
 #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
-  {
-     MULTIBUTTONENTRY_POS_START,
-     MULTIBUTTONENTRY_POS_END,
-     MULTIBUTTONENTRY_POS_BEFORE,
-     MULTIBUTTONENTRY_POS_AFTER,
-     MULTIBUTTONENTRY_POS_NUM
-  } Multibuttonentry_Pos;
+{
+   MULTIBUTONENTRY_POS_START,
+   MULTIBUTONENTRY_POS_END,
+   MULTIBUTONENTRY_POS_BEFORE,
+   MULTIBUTONENTRY_POS_AFTER,
+   MULTIBUTONENTRY_POS_NUM
+} Multibuttonentry_Pos;
 
 typedef enum _Multibuttonentry_Button_State
-  {
-     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;
+{
+   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;
 
 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 *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;
-  };
+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;
+};
 
 static const char *widtype = NULL;
 static void _del_hook(Evas_Object *obj);
@@ -81,24 +84,23 @@ 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 char *str);
+static void _set_label(Evas_Object *obj, const charstr);
 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);
@@ -109,8 +111,8 @@ static void
 _del_hook(Evas_Object *obj)
 {
    Widget_Data *wd = elm_widget_data_get(obj);
-
    if (!wd) return;
+
    if (wd->items)
      {
         Elm_Multibuttonentry_Item *item;
@@ -127,7 +129,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->rect_for_end) evas_object_del(wd->rect_for_end);
+   if (wd->rectForEnd) evas_object_del(wd->rectForEnd);
 }
 
 static void
@@ -136,11 +138,10 @@ _theme_hook(Evas_Object *obj)
    Widget_Data *wd = elm_widget_data_get(obj);
    Eina_List *l;
    Elm_Multibuttonentry_Item *item;
-
    if (!wd) return;
 
    _elm_theme_object_set(obj, wd->base, "multibuttonentry", "base", elm_widget_style_get(obj));
-   if (wd->box) edje_object_part_swallow (wd->base, "box.swallow", wd->box);
+   if (wd->box)   edje_object_part_swallow (wd->base, "box.swallow", wd->box);
    edje_object_scale_set(wd->base, elm_widget_scale_get(obj) * _elm_config->scale);
 
    EINA_LIST_FOREACH(wd->items, l, item)
@@ -191,11 +192,11 @@ _event_hook(Evas_Object *obj __UNUSED__, Evas_Object *src __UNUSED__, Evas_Callb
    return EINA_TRUE;
 }
 
+
 static void
 _signal_emit_hook(Evas_Object *obj, const char *emission, const char *source)
 {
    Widget_Data *wd = elm_widget_data_get(obj);
-
    if (!wd) return;
    edje_object_signal_emit(wd->base, emission, source);
 }
@@ -204,10 +205,11 @@ static void
 _sizing_eval(Evas_Object *obj)
 {
    Widget_Data *wd = elm_widget_data_get(obj);
+
    Evas_Coord minw = -1, minh = -1;
    Evas_Coord left, right, top, bottom;
-
    if (!wd) return;
+
    evas_object_size_hint_min_get(wd->box, &minw, &minh);
    edje_object_part_geometry_get(wd->base, "top.left.pad", NULL, NULL, &left, &top);
    edje_object_part_geometry_get(wd->base, "bottom.right.pad", NULL, NULL, &right, &bottom);
@@ -222,8 +224,8 @@ static void
 _signal_mouse_clicked(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, const char *source __UNUSED__)
 {
    Widget_Data *wd = elm_widget_data_get(data);
+   if(!wd || !wd->base) return;
 
-   if (!wd || !wd->base) return;
    wd->focused = EINA_TRUE;
    _view_update(data);
 
@@ -238,7 +240,6 @@ _changed_size_hint_cb(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUS
 {
    Evas_Object *eo = (Evas_Object *)data;
    Widget_Data *wd = elm_widget_data_get(data);
-
    if (!wd) return;
    _sizing_eval(eo);
 }
@@ -248,8 +249,8 @@ _resize_cb(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void
 {
    Widget_Data *wd = elm_widget_data_get(data);
    Evas_Coord w, h;
-
    if (!wd) return;
+
    evas_object_geometry_get(wd->box, NULL, NULL, &w, &h);
 
    if (wd->h_box < h) evas_object_smart_callback_call (data, "expanded", NULL);
@@ -265,8 +266,8 @@ static void
 _event_init(Evas_Object *obj)
 {
    Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd || !wd->base)   return;
 
-   if (!wd || !wd->base) return;
    if (wd->base)
      {
         edje_object_signal_callback_add(wd->base, "mouse,clicked,1", "*", _signal_mouse_clicked, obj);
@@ -295,8 +296,8 @@ static void
 _set_vis_guidetext(Evas_Object *obj)
 {
    Widget_Data *wd = elm_widget_data_get(obj);
-
    if (!wd) return;
+
    elm_box_unpack(wd->box, wd->guidetext);
    elm_box_unpack(wd->box, wd->entry);
    if (wd->view_state == MULTIBUTTONENTRY_VIEW_CONTRACTED) return;
@@ -316,9 +317,10 @@ _set_vis_guidetext(Evas_Object *obj)
         evas_object_show(wd->entry);
         if (elm_widget_focus_get(obj) || wd->focused)
           if (!wd->current)
-            elm_object_focus_set(wd->entry, EINA_TRUE);
+            elm_object_focus(wd->entry);
         wd->view_state = MULTIBUTTONENTRY_VIEW_ENTRY;
      }
+   return;
 }
 
 static void
@@ -327,15 +329,15 @@ _contracted_state_set(Evas_Object *obj, int contracted)
    Widget_Data *wd = elm_widget_data_get(obj);
    Eina_List *l;
    Elm_Multibuttonentry_Item *item;
-
    if (!wd || !wd->box) return;
+
    if (wd->view_state == MULTIBUTTONENTRY_VIEW_ENTRY)
      evas_object_hide(wd->entry);
    else if (wd->view_state == MULTIBUTTONENTRY_VIEW_GUIDETEXT)
      evas_object_hide(wd->guidetext);
    else if (wd->view_state == MULTIBUTTONENTRY_VIEW_CONTRACTED)
      {
-        evas_object_hide(wd->rect_for_end);
+        evas_object_hide(wd->rectForEnd);
         evas_object_hide(wd->end);
         wd->view_state = MULTIBUTTONENTRY_VIEW_NONE;
      }
@@ -356,6 +358,7 @@ _contracted_state_set(Evas_Object *obj, int contracted)
                   item->visible = EINA_FALSE;
                }
           }
+
         // pack buttons only 1line
         w = wd->w_box;
 
@@ -375,10 +378,10 @@ _contracted_state_set(Evas_Object *obj, int contracted)
           {
              const char *size_str;
              size_str = edje_object_data_get(wd->end, "closed_button_width");
-             if (size_str) button_min_width = (Evas_Coord)atoi(size_str);
+             if(size_str) button_min_width = (Evas_Coord)atoi(size_str);
              /* it use for later
              size_str = edje_object_data_get(wd->end, "closed_button_height");
-             if (size_str) button_min_width = (Evas_Coord)atoi(size_str);
+             if(size_str) button_min_width = (Evas_Coord)atoi(size_str);
               */
           }
 
@@ -387,7 +390,7 @@ _contracted_state_set(Evas_Object *obj, int contracted)
              if (item)
                {
                   int w_label_count = 0;
-                  char buf[MAX_STR];
+                  char buf[MAX_STR] = {0,};
 
                   elm_box_pack_end(wd->box, item->button);
                   evas_object_show(item->button);
@@ -432,23 +435,22 @@ _contracted_state_set(Evas_Object *obj, int contracted)
                             Evas_Coord rectSize;
                             Evas_Coord closed_height = 0;
                             const char *height_str = edje_object_data_get(wd->base, "closed_height");
-
-                            if (height_str) closed_height = (Evas_Coord)atoi(height_str);
+                            if(height_str) closed_height = (Evas_Coord)atoi(height_str);
                             elm_box_unpack(wd->box, item->button);
                             evas_object_hide(item->button);
                             item->visible = EINA_FALSE;
 
                             w += item->vw;
                             rectSize = w - button_min_width;
-                            if (!wd->rect_for_end)
+                            if (!wd->rectForEnd)
                               {
                                  Evas *e = evas_object_evas_get(obj);
-                                 wd->rect_for_end = evas_object_rectangle_add(e);
-                                 evas_object_color_set(wd->rect_for_end, 0, 0, 0, 0);
+                                 wd->rectForEnd = evas_object_rectangle_add(e);
+                                 evas_object_color_set(wd->rectForEnd, 0, 0, 0, 0);
                               }
-                            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);
+                            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);
 
                             elm_box_pack_end(wd->box, wd->end);
                             evas_object_show(wd->end);
@@ -475,7 +477,7 @@ _contracted_state_set(Evas_Object *obj, int contracted)
           }
         evas_object_hide(wd->end);
 
-        if (wd->rect_for_end) evas_object_hide(wd->rect_for_end);
+        if (wd->rectForEnd) evas_object_hide(wd->rectForEnd);
 
         // pack buttons only 1line
 
@@ -536,8 +538,8 @@ static void
 _set_label(Evas_Object *obj, const char* str)
 {
    Widget_Data *wd = elm_widget_data_get(obj);
-
    if (!wd || !str) return;
+
    if (wd->label)
    {
       Evas_Coord width, height, sum_width = 0;
@@ -556,7 +558,6 @@ _set_label(Evas_Object *obj, const char* str)
         {
            edje_object_signal_emit(wd->label, "elm,mbe,set_text", "");
            edje_object_part_geometry_get(wd->label, "mbe.label", NULL, NULL, &width, &height);
-
            sum_width += width;
 
            edje_object_part_geometry_get(wd->label, "mbe.label.left.padding", NULL, NULL, &width, NULL);
@@ -575,8 +576,8 @@ static void
 _set_guidetext(Evas_Object *obj, const char* str)
 {
    Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd || !str)   return;
 
-   if (!wd || !str) return;
    if (!wd->guidetext)
      {
         if (! (wd->guidetext = edje_object_add (evas_object_evas_get (obj)))) return;
@@ -594,20 +595,20 @@ _change_current_button_state(Evas_Object *obj, Multibuttonentry_Button_State sta
 {
    Widget_Data *wd = elm_widget_data_get(obj);
    Elm_Multibuttonentry_Item *item = NULL;
-
    if (!wd) return;
+
    if (wd->current)
      item = eina_list_data_get(wd->current);
 
    if (item && item->button)
      {
-        switch (state)
+        switch(state)
           {
-             case MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT:
+             case MULTIBUTONENTRY_BUTTON_STATE_DEFAULT:
                 edje_object_signal_emit(item->button, "default", "");
                 wd->current = NULL;
                 break;
-             case MULTIBUTTONENTRY_BUTTON_STATE_SELECTED:
+             case MULTIBUTONENTRY_BUTTON_STATE_SELECTED:
                 edje_object_signal_emit(item->button, "focused", "");
                 evas_object_smart_callback_call(obj, "item,selected", item);
                 break;
@@ -625,11 +626,10 @@ _change_current_button(Evas_Object *obj, Evas_Object *btn)
    Widget_Data *wd = elm_widget_data_get(obj);
    Eina_List *l;
    Elm_Multibuttonentry_Item *item;
-
    if (!wd) return;
 
    // change the state of previous button to "default"
-   _change_current_button_state(obj, MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT);
+   _change_current_button_state(obj, MULTIBUTONENTRY_BUTTON_STATE_DEFAULT);
 
    // change the current
    EINA_LIST_FOREACH(wd->items, l, item)
@@ -640,8 +640,10 @@ _change_current_button(Evas_Object *obj, Evas_Object *btn)
              break;
           }
      }
-   // change the state of current button to "focused"
-   _change_current_button_state(obj, MULTIBUTTONENTRY_BUTTON_STATE_SELECTED);
+
+   // chagne the state of current button to "focused"
+   _change_current_button_state(obj, MULTIBUTONENTRY_BUTTON_STATE_SELECTED);
+
 }
 
 static void
@@ -666,9 +668,10 @@ static void
 _del_button_obj(Evas_Object *obj, Evas_Object *btn)
 {
    Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd || !btn)   return;
 
-   if (!wd || !btn) return;
    if (btn)
+     // del button
      evas_object_del(btn);
 }
 
@@ -711,22 +714,22 @@ static void
 _select_button(Evas_Object *obj, Evas_Object *btn)
 {
    Widget_Data *wd = elm_widget_data_get(obj);
-
    if (!wd) return;
+
    if (btn)
      {
         _change_current_button(obj, btn);
         if (elm_widget_focus_get(obj))
           {
-             elm_object_focus_set(wd->entry, EINA_FALSE);
+             elm_object_unfocus(wd->entry);
              evas_object_focus_set(btn, EINA_TRUE);
           }
      }
    else
      {
-        _change_current_button_state(obj, MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT);
+        _change_current_button_state(obj, MULTIBUTONENTRY_BUTTON_STATE_DEFAULT);
         if (elm_widget_focus_get(obj))
-          elm_object_focus_set(wd->entry, EINA_TRUE);
+          elm_object_focus(wd->entry);
      }
 }
 
@@ -766,8 +769,8 @@ _resize_button(Evas_Object *btn, Evas_Coord *realw, Evas_Coord *vieww)
    evas_object_resize(btn, vw, h_btn);
    evas_object_size_hint_min_set(btn, vw, h_btn);
 
-   if (realw) *realw = rw;
-   if (vieww) *vieww = vw;
+   if(realw) *realw = rw;
+   if(vieww) *vieww = vw;
 }
 
 static Elm_Multibuttonentry_Item*
@@ -797,9 +800,7 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co
    _elm_theme_object_set(obj, btn, "multibuttonentry", "btn", elm_widget_style_get(obj));
    edje_object_part_text_set(btn, "elm.btn.text", str_utf8);
    edje_object_part_geometry_get(btn, "elm.btn.text", NULL, NULL, &width, &height);
-
    evas_object_size_hint_min_set(btn, width, height);
-
    edje_object_signal_callback_add(btn, "mouse,clicked,1", "*", _button_clicked, obj);
    evas_object_size_hint_weight_set(btn, 0.0, 0.0);
    evas_object_show(btn);
@@ -817,9 +818,9 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co
         item->vw = vw;
         item->visible = EINA_TRUE;
 
-        switch (pos)
+        switch(pos)
           {
-             case MULTIBUTTONENTRY_POS_START:
+             case MULTIBUTONENTRY_POS_START:
                 wd->items = eina_list_prepend(wd->items, item);
                 if (wd->view_state == MULTIBUTTONENTRY_VIEW_CONTRACTED)
                   {
@@ -836,7 +837,7 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co
                        _set_vis_guidetext(obj);
                   }
                 break;
-             case MULTIBUTTONENTRY_POS_END:
+             case MULTIBUTONENTRY_POS_END:
                 wd->items = eina_list_append(wd->items, item);
                 if (wd->view_state == MULTIBUTTONENTRY_VIEW_CONTRACTED)
                   {
@@ -853,7 +854,7 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co
                        elm_box_pack_end(wd->box, btn);
                   }
                 break;
-             case MULTIBUTTONENTRY_POS_BEFORE:
+             case MULTIBUTONENTRY_POS_BEFORE:
                 if (reference)
                      wd->items = eina_list_prepend_relative(wd->items, item, reference);
                 else
@@ -879,7 +880,7 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co
                        }
                   }
                 break;
-             case MULTIBUTTONENTRY_POS_AFTER:
+             case MULTIBUTONENTRY_POS_AFTER:
                 if (reference)
                      wd->items = eina_list_append_relative(wd->items, item, reference);
                 else
@@ -909,7 +910,6 @@ _add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, co
           }
      }
    evas_object_smart_callback_call(obj, "item,added", item);
-
    free(str_utf8);
 
    return item;
@@ -922,7 +922,7 @@ _add_button(Evas_Object *obj, char *str)
    if (!wd) return;
 
    // add button
-   _add_button_item(obj, str, MULTIBUTTONENTRY_POS_END, NULL, NULL);
+   _add_button_item(obj, str, MULTIBUTONENTRY_POS_END, NULL, NULL);
 }
 
 static void
@@ -971,7 +971,7 @@ _entry_key_down_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__,
 
    if (!wd) return;
 
-   if ((wd->n_str == 1) && (strcmp(ev->keyname, "BackSpace") == 0 || (strcmp(ev->keyname, "BackSpace (") == 0 )))
+   if ( (wd->n_str == 1) && (strcmp (ev->keyname, "BackSpace") == 0 || (strcmp (ev->keyname, "BackSpace (") == 0 )))
      wd->last_btn_select = EINA_FALSE;
 }
 
@@ -1001,8 +1001,8 @@ _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, MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT);
-   elm_object_focus_set(wd->entry, EINA_TRUE);
+   _change_current_button_state(data, MULTIBUTONENTRY_BUTTON_STATE_DEFAULT);
+   elm_object_focus(wd->entry);
 }
 
 static void
@@ -1010,13 +1010,12 @@ _entry_focus_in_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __U
 {
    Widget_Data *wd = elm_widget_data_get(data);
    Elm_Multibuttonentry_Item *item = NULL;
-
    if (!wd) return;
 
    if (wd->current)
      {
         item = eina_list_data_get(wd->current);
-        elm_object_focus_set(wd->entry, EINA_FALSE);
+        elm_object_unfocus(wd->entry);
         evas_object_focus_set(item->button, EINA_TRUE);
      }
 }
@@ -1062,6 +1061,7 @@ _entry_resized_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, v
    evas_object_geometry_get(wd->entry, &en_x, &en_y, &en_w, &en_h);
    evas_object_geometry_get(wd->box, &bx_x, &bx_y, NULL, NULL);
 
+   // should be reconsidered appropriate location to use the function as below.
    elm_widget_show_region_set(wd->box, en_x - bx_x, en_y - bx_y, en_w, en_h, EINA_TRUE);
 }
 
@@ -1069,22 +1069,20 @@ static void
 _view_init(Evas_Object *obj)
 {
    Widget_Data *wd = elm_widget_data_get(obj);
-
    if (!wd) return;
 
    if (!wd->box)
      {
-        wd->box = elm_box_add (obj);
-        if (!wd->box) return;
+        if (! (wd->box = elm_box_add (obj))) return;
         elm_widget_sub_object_add(obj, wd->box);
         elm_box_layout_set(wd->box, _box_layout_cb, NULL, NULL);
         elm_box_homogeneous_set(wd->box, EINA_FALSE);
         edje_object_part_swallow(wd->base, "box.swallow", wd->box);
      }
+
    if (!wd->label)
      {
-        wd->label = edje_object_add(evas_object_evas_get(obj));
-        if (!wd->label) return;
+        if (!(wd->label = edje_object_add(evas_object_evas_get(obj)))) return;
         _elm_theme_object_set(obj, wd->label, "multibuttonentry", "label", elm_widget_style_get(obj));
         _set_label(obj, "");
         elm_widget_sub_object_add(obj, wd->label);
@@ -1158,12 +1156,12 @@ _calculate_box_min_size(Evas_Object *box, Evas_Object_Box_Data *priv)
         evas_object_size_hint_min_get(opt->obj, &mnw, &mnh);
         evas_object_size_hint_weight_get(opt->obj, &wx, NULL);
 
-        if (wx)
+        if(wx)
           {
              if (mnw != -1 && (w - cw) >= mnw)
-               ww = w - cw;
+                ww = w - cw;
              else
-               ww = w;
+                ww = w;
           }
         else
            ww = mnw;
@@ -1199,7 +1197,7 @@ _calculate_item_max_height(Evas_Object *box, Evas_Object_Box_Data *priv, int obj
         evas_object_size_hint_min_get(opt->obj, &mnw, &mnh);
         evas_object_size_hint_weight_get(opt->obj, &wx, NULL);
 
-        if (wx)
+        if(wx)
           {
              if (mnw != -1 && (w - cw) >= mnw)
                 ww = w - cw;
@@ -1280,7 +1278,7 @@ _box_layout_cb(Evas_Object *o, Evas_Object_Box_Data *priv, void *data __UNUSED__
         if (wy > 0.0) xh = 1;
         Evas_Coord ww, hh, ow, oh;
 
-        if (wx)
+        if(wx)
           {
              if (mnw != -1 && (w - cw) >= mnw)
                 ww = w - cw;
@@ -1317,6 +1315,14 @@ _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)
 {
@@ -1340,13 +1346,13 @@ elm_multibuttonentry_add(Evas_Object *parent)
    wd->base = edje_object_add(e);
    _elm_theme_object_set(obj, wd->base, "multibuttonentry", "base", "default");
    elm_widget_resize_object_set(obj, wd->base);
-   elm_widget_can_focus_set(obj, EINA_TRUE);
+   elm_widget_can_focus_set(obj,EINA_TRUE);
 
    wd->view_state = MULTIBUTTONENTRY_VIEW_NONE;
    wd->focused = EINA_FALSE;
    wd->last_btn_select = EINA_TRUE;
    wd->n_str = 0;
-   wd->rect_for_end= NULL;
+   wd->rectForEnd = NULL;
    wd->add_callback = NULL;
    wd->add_callback_data = NULL;
 
@@ -1356,34 +1362,55 @@ 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)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd = elm_widget_data_get(obj);
-
-   if (!wd) return NULL;
+   if (!wd)   return NULL;
 
    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)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd = elm_widget_data_get(obj);
-
    if (!wd) return NULL;
    if (wd->label) return edje_object_part_text_get(wd->label, "mbe.label");
    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)
 {
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
-
    if (!wd) return;
    if (label)
      _set_label(obj, label);
@@ -1391,139 +1418,242 @@ 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)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd = elm_widget_data_get(obj);
-
-   if (!wd) return NULL;
+   if (!wd)   return NULL;
    if (wd->guidetext) return edje_object_part_text_get(wd->guidetext, "elm.text");
    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)
 {
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
-
    if (!wd) return;
    if (guidetext)
-     _set_guidetext(obj, guidetext);
+      _set_guidetext(obj, guidetext);
    else
-     _set_guidetext(obj, "");
+      _set_guidetext(obj, "");
+
 }
 
+/**
+ * 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)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) -1;
    Widget_Data *wd = elm_widget_data_get(obj);
-
    if (!wd) return -1;
    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)
 {
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd = elm_widget_data_get(obj);
-
    if (!wd || !wd->box ||
        ((wd->view_state == MULTIBUTTONENTRY_VIEW_CONTRACTED) ? 1 : 0) == contracted) return;
    _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)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd = elm_widget_data_get(obj);
    Elm_Multibuttonentry_Item *item;
-
    if (!wd || !label) return NULL;
-   item = _add_button_item(obj, label, MULTIBUTTONENTRY_POS_START, NULL, data);
+   item = _add_button_item(obj, label, MULTIBUTONENTRY_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)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd = elm_widget_data_get(obj);
    Elm_Multibuttonentry_Item *item;
-
    if (!wd || !label) return NULL;
-   item = _add_button_item(obj, label, MULTIBUTTONENTRY_POS_END, NULL, data);
+   item = _add_button_item(obj, label, MULTIBUTONENTRY_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)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd = elm_widget_data_get(obj);
    Elm_Multibuttonentry_Item *item;
-
    if (!wd || !label) return NULL;
-   item = _add_button_item(obj, label, MULTIBUTTONENTRY_POS_BEFORE, before, data);
+   item = _add_button_item(obj, label, MULTIBUTONENTRY_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)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd = elm_widget_data_get(obj);
    Elm_Multibuttonentry_Item *item;
-
    if (!wd || !label) return NULL;
-   item = _add_button_item(obj, label, MULTIBUTTONENTRY_POS_AFTER, after, data);
+   item = _add_button_item(obj, label, MULTIBUTONENTRY_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)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd = elm_widget_data_get(obj);
-
    if (!wd) return NULL;
    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)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd = elm_widget_data_get(obj);
-
    if (!wd || !wd->items) return NULL;
    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)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd = elm_widget_data_get(obj);
-
    if (!wd || !wd->items) return NULL;
    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)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd = elm_widget_data_get(obj);
-
    if (!wd || !wd->current) return NULL;
    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)
 {
@@ -1543,6 +1673,13 @@ 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)
 {
@@ -1553,6 +1690,13 @@ 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)
 {
@@ -1575,6 +1719,13 @@ 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)
 {
@@ -1582,6 +1733,14 @@ 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)
 {
@@ -1602,6 +1761,14 @@ 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)
 {
@@ -1614,14 +1781,22 @@ elm_multibuttonentry_item_label_set(Elm_Multibuttonentry_Item *item, const char
    if (!wd || !wd->items) return;
 
    EINA_LIST_FOREACH(wd->items, l, _item)
-     if (_item == item)
-       {
-          edje_object_part_text_set(_item->button, "elm.btn.text", str);
-          _resize_button(_item->button, &_item->rw, &_item->vw);
-          break;
-       }
+      if (_item == item)
+        {
+           edje_object_part_text_set(_item->button, "elm.btn.text", str);
+           _resize_button(_item->button, &_item->rw, &_item->vw);
+           break;
+        }
 }
 
+/**
+ * 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)
 {
@@ -1643,13 +1818,20 @@ 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)
 {
    Widget_Data *wd;
    Eina_List *l;
    Elm_Multibuttonentry_Item *_item;
-
    if (!item) return NULL;
    ELM_CHECK_WIDTYPE(item->multibuttonentry, widtype) NULL;
    wd = elm_widget_data_get(item->multibuttonentry);
@@ -1665,6 +1847,14 @@ 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)
 {
@@ -1672,6 +1862,14 @@ 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)
 {
@@ -1679,6 +1877,15 @@ 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)
 {
index 219ed30..abc43c6 100644 (file)
@@ -103,9 +103,9 @@ _theme_hook(Evas_Object *obj)
              elm_object_style_set(action_data->btn, buf);
              ++index;
              snprintf(buf, sizeof(buf), "actionbtn%d", index);
-             elm_object_part_content_set(wd->action_area, buf, action_data->btn);
+             elm_object_content_part_set(wd->action_area, buf, action_data->btn);
           }
-        elm_object_part_content_set(wd->layout, "elm.swallow.buttonArea", wd->action_area);
+        elm_object_content_part_set(wd->layout, "elm.swallow.buttonArea", wd->action_area);
      }
    if (wd->content_area)
      {
@@ -114,13 +114,13 @@ _theme_hook(Evas_Object *obj)
           {
              snprintf(buf, sizeof(buf), "popup_description/%s", elm_widget_style_get(obj));
              elm_object_style_set(wd->desc_label, buf);
-             elm_object_part_content_set(wd->content_area, "elm.swallow.content", wd->desc_label);
+             elm_object_content_part_set(wd->content_area, "elm.swallow.content", wd->desc_label);
           }
         else if (wd->content)
           {
-             elm_object_part_content_set(wd->content_area, "elm.swallow.content", wd->content);
+             elm_object_content_part_set(wd->content_area, "elm.swallow.content", wd->content);
           }
-        elm_object_part_content_set(wd->layout, "elm.swallow.content", wd->content_area);
+        elm_object_content_part_set(wd->layout, "elm.swallow.content", wd->content_area);
      }
    if (wd->title_area)
      {
@@ -231,7 +231,7 @@ _elm_popup_buttons_add_valist(Evas_Object *obj, const char *first_button_text, v
         btn = _elm_popup_add_button(obj, text, response);
         ++index;
         snprintf(buf, sizeof(buf), "actionbtn%d", index);
-        elm_object_part_content_set(wd->action_area, buf, btn);
+        elm_object_content_part_set(wd->action_area, buf, btn);
         evas_object_event_callback_add(wd->action_area, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
                                        _changed_size_hints, obj);
         text = va_arg(args, char*);
@@ -384,7 +384,7 @@ elm_popup_with_buttons_add(Evas_Object *parent, const char *title, const char *d
         va_list args;
         va_start(args, first_button_text);
         wd->action_area = elm_layout_add(popup);
-        elm_object_part_content_set(wd->layout, "elm.swallow.buttonArea", wd->action_area);
+        elm_object_content_part_set(wd->layout, "elm.swallow.buttonArea", wd->action_area);
         snprintf(buf,sizeof(buf), "buttons%d", no_of_buttons);
                                 wd->no_of_buttons = no_of_buttons;
         elm_layout_theme_set(wd->action_area, "popup", buf, elm_widget_style_get(popup));
@@ -433,8 +433,8 @@ elm_popup_desc_set(Evas_Object *obj, const char *text)
    evas_object_size_hint_weight_set(wd->desc_label, EVAS_HINT_EXPAND, 0.0);
    evas_object_size_hint_align_set(wd->desc_label, EVAS_HINT_FILL, EVAS_HINT_FILL);
    evas_object_show(wd->desc_label);
-   elm_object_part_content_set(wd->content_area, "elm.swallow.content", wd->desc_label);
-   elm_object_part_content_set(wd->layout, "elm.swallow.content", wd->content_area);
+   elm_object_content_part_set(wd->content_area, "elm.swallow.content", wd->desc_label);
+   elm_object_content_part_set(wd->layout, "elm.swallow.content", wd->content_area);
    evas_object_event_callback_add(wd->content_area, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
                                   _changed_size_hints, obj);
    _sizing_eval(obj);
@@ -523,7 +523,7 @@ elm_popup_title_icon_set(Evas_Object *obj, Evas_Object *icon)
         wd->title_icon = NULL;
      }
    wd->title_icon = icon;
-   elm_object_part_content_set(wd->layout, "elm.swallow.title.icon", wd->title_icon);
+   elm_object_content_part_set(wd->layout, "elm.swallow.title.icon", wd->title_icon);
    edje_object_signal_emit(elm_layout_edje_get(wd->layout), "elm,state,title,icon,visible", "elm");
    edje_object_message_signal_process(wd->layout);
    _sizing_eval(obj);
@@ -573,8 +573,8 @@ elm_popup_content_set(Evas_Object *obj, Evas_Object *content)
      {
         wd->content_area = elm_layout_add(obj);
         elm_layout_theme_set(wd->content_area, "popup","content", elm_widget_style_get(obj));
-        elm_object_part_content_set(wd->content_area, "elm.swallow.content", content);
-        elm_object_part_content_set(wd->layout, "elm.swallow.content", wd->content_area);
+        elm_object_content_part_set(wd->content_area, "elm.swallow.content", content);
+        elm_object_content_part_set(wd->layout, "elm.swallow.content", wd->content_area);
         evas_object_event_callback_add(wd->content_area, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
                                        _changed_size_hints, obj);
      }
@@ -624,7 +624,7 @@ elm_popup_buttons_add(Evas_Object *obj,int no_of_buttons, const char *first_butt
         wd->action_area = NULL;
      }
    wd->action_area = elm_layout_add(obj);
-   elm_object_part_content_set(wd->layout, "elm.swallow.buttonArea", wd->action_area);
+   elm_object_content_part_set(wd->layout, "elm.swallow.buttonArea", wd->action_area);
    evas_object_size_hint_weight_set(wd->action_area, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    evas_object_size_hint_align_set(wd->action_area, EVAS_HINT_FILL, EVAS_HINT_FILL);
    snprintf(buf, sizeof(buf), "buttons%d", no_of_buttons);
index 6c70a69..c1da756 100644 (file)
@@ -39,7 +39,6 @@ struct _Elm_Theme
    Eina_List  *themes;
    Eina_List  *extension;
    Eina_Hash  *cache;
-   Eina_Hash  *cache_data;
    Elm_Theme  *ref_theme;
    Eina_List  *referrers;
    const char *theme;
index 205455b..9ada9fb 100644 (file)
@@ -202,7 +202,7 @@ _content_set_hook(Evas_Object *obj, const char *part, Evas_Object *content)
 {
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd;
-   if (part && strcmp(part, "icon")) return;
+   if (!part || strcmp(part, "icon")) return;
    wd = elm_widget_data_get(obj);
    if (!wd) return;
    if (wd->icon == content) return;
@@ -226,7 +226,7 @@ _content_get_hook(const Evas_Object *obj, const char *part)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd;
-   if (part && strcmp(part, "icon")) return NULL;
+   if (!part || strcmp(part, "icon")) return NULL;
    wd = elm_widget_data_get(obj);
    if (!wd) return NULL;
    return wd->icon;
@@ -238,7 +238,7 @@ _content_unset_hook(Evas_Object *obj, const char *part)
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd;
    Evas_Object *icon;
-   if (part && strcmp(part, "icon")) return NULL;
+   if (!part || strcmp(part, "icon")) return NULL;
    wd = elm_widget_data_get(obj);
    if (!wd) return NULL;
    if (!wd->icon) return NULL;
index c111130..032e072 100644 (file)
@@ -277,7 +277,7 @@ _content_set_hook(Evas_Object *obj, const char *part, Evas_Object *content)
    ELM_CHECK_WIDTYPE(obj, widtype);
    Widget_Data *wd;
 
-   if (part && strcmp(part, "icon")) return;
+   if (!part || strcmp(part, "icon")) return;
    wd = elm_widget_data_get(obj);
    if (!wd) return;
    if (wd->icon == content) return;
@@ -302,7 +302,7 @@ _content_get_hook(const Evas_Object *obj, const char *part)
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd;
 
-   if (part && strcmp(part, "icon")) return NULL;
+   if (!part || strcmp(part, "icon")) return NULL;
    wd = elm_widget_data_get(obj);
    if (!wd) return NULL;
    return wd->icon;
@@ -314,7 +314,7 @@ _content_unset_hook(Evas_Object *obj, const char *part)
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd;
    Evas_Object *icon;
-   if (part && strcmp(part, "icon")) return NULL;
+   if (!part || strcmp(part, "icon")) return NULL;
    wd = elm_widget_data_get(obj);
    if (!wd) return NULL;
    if (!wd->icon) return NULL;
diff --git a/src/lib/elm_scrolled_grid.c b/src/lib/elm_scrolled_grid.c
new file mode 100644 (file)
index 0000000..187478f
--- /dev/null
@@ -0,0 +1,1564 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#include <Elementary.h>
+#include "elm_priv.h"
+
+/**
+ * @defgroup Grid Scrolled Grid
+ * @ingroup Elementary
+ *
+ * This widget aims to position objects in a grid layout while actually
+ * building only the visible ones, using the same idea as genlist: the user
+ * define a class for each cell, specifying functions that will be called at
+ * object creation and deletion.
+ *
+ * Signals that you can add callbacks for are:
+ *
+ * clicked - The user has double-clicked a cell. The event_info parameter is
+ * the grid cell that was double-clicked.
+ *
+ * selected - The user has made an item selected. The event_info parameter is
+ * the grid cell that was selected.
+ *
+ * unselected - The user has made an item unselected. The event_info parameter
+ * is the grid cell that was unselected.
+ *
+ * realized - This is called when the cell in the grid is created as a real
+ * evas object. event_info is the grid cell that was created. The object may be
+ * deleted at any time, so it is up to the caller to not use the object pointer
+ * from elm_scrolled_grid_cell_object_get() in a way where it may point to
+ * freed objects.
+ *
+ * drag,start,up - Called when the cell in the grid has been dragged (not
+ * scrolled) up.
+ *
+ * drag,start,down - Called when the cell in the grid has been dragged (not
+ * scrolled) down.
+ *
+ * drag,start,left - Called when the cell in the grid has been dragged (not
+ * scrolled) left.
+ *
+ * drag,start,right - Called when the cell in the grid has been dragged (not
+ * scrolled) right.
+ *
+ * drag,stop - Called when the cell in the grid has stopped being dragged.
+ *
+ * drag - Called when the cell in the grid is being dragged.
+ *
+ * scroll - called when the content has been scrolled (moved).
+ *
+ * scroll,drag,start - called when dragging the content has started.
+ *
+ * scroll,drag,stop - called when dragging the content has stopped.
+ *
+ *
+ * A cell in the grid can have 0 or more text labels (they can be regular text
+ * or textblock - that's up to the style to determine), 0 or more icons (which
+ * are simply objects swallowed into the grid cell) and 0 or more boolean states
+ * that can be used for check, radio or other indicators by the edje theme style.
+ * A cell may be one of several styles (Elementary provides 1 by default -
+ * "default", but this can be extended by system or application custom
+ * themes/overlays/extensions).
+ *
+ * In order to implement the ability to add and delete cells on the fly, Grid
+ * implements a class/callback system where the application provides a structure
+ * with information about that type of cell (grid may contain multiple different
+ * cells with different classes, states and styles). Grid will call the functions
+ * in this struct (methods) when a cell is "realized" (that is created
+ * dynamically while scrolling). All objects will simply be deleted when no
+ * longer needed with evas_object_del(). The Elm_Genlist_Item_Class structure
+ * contains the following members:
+ *
+ * cell_style - This is a constant string and simply defines the name of the
+ * cell style. It must be specified and the default should be "default".
+ *
+ * func.label_get - This function is called when an actual cell object is
+ * created. The data parameter is the one passed to elm_scrolled_grid_cell_add()
+ * and related cell creation functions. The obj parameter is the grid object and
+ * the part parameter is the string name of the text part in the edje design that
+ * is listed as one of the possible labels that can be set. This function must
+ * return a strdup'()ed string as the caller will free() it when done.
+ *
+ * func.icon_get - This function is called when an actual item object is
+ * created. The data parameter is the one passed to elm_scrolled_grid_cell_add()
+ * and related cell creation functions. The obj parameter is the grid object and
+ * the part parameter is the string name of the icon part in the edje design that
+ * is listed as one of the possible icons that can be set. This must return NULL
+ * for no object or a valid object. The object will be deleted by grid on
+ * shutdown or when the cell is unrealized.
+ *
+ * func.state_get - This function is called when an actual cell object is
+ * created. The data parameter is the one passed to elm_scrolled_grid_cell_add()
+ * and related cell creation functions. The obj parameter is the grid object and
+ * the part parameter is the string name of th state part in the edje design that
+ * is listed as one of the possible states that can be set. Return 0 for false
+ * and 1 for true. Grid will emit a signal to the edje object with
+ * "elm,state,XXX,active" "elm" when true (the default is false), where XXX is
+ * the name of the part.
+ *
+ * func.del - This is called when elm_scrolled_grid_cell_del() is called on a
+ * cell or elm_scrolled_grid_clear() is called on the grid. This is intended for
+ * use when actual grid cells are deleted, so any backing data attached to the
+ * cell (e.g. its data parameter on creation) can be deleted.
+ *
+ * If the application wants multiple cells to be able to be selected,
+ * elm_scrolled_grid_multi_select_set() can enable this. If the grid is
+ * single-selection only (the default), then elm_scrolled_grid_select_cell_get()
+ * will return the selected cell, if any, or NULL if none is selected. If the
+ * grid is multi-select then elm_scrolled_grid_selected_cells_get() will return a
+ * list (that is only valid as long as no cells are modified (added, deleted,
+ * selected or unselected).
+ *
+ * If a cell changes (state of boolean changes, label or icons change), then use
+ * elm_scrolled_grid_cell_update() to have grid update the cell with the new
+ * state. Grid will re-realize the cell thus call the functions in the
+ * _Elm_Grid_Cell_Class for that cell.
+ *
+ * To programmatically (un)select a cell use elm_scrolled_grid_cell_selected_set().
+ * To get its selected state use elm_scrolled_grid_cell_selected_get(). To make a
+ * cell disabled (unable to be selected and appear differently) use
+ * elm_scrolled_grid_cell_disable_set() to set this and
+ * elm_scrolled_grid_cell_disable_get() to get the disabled state.
+ *
+ * Cells will only call their selection func and callback when first becoming
+ * selected. Any further clicks will do nothing, unless you enable always
+ * select with elm_scrolled_grid_always_select_mode_set(). This means event if
+ * selected, every click will make the selected callbacks be called.
+ * elm_scrolled_grid_no_select_mode_set() will turn off the ability to select
+ * items entirely and they will neither appear selected nor call selected
+ * callback function.
+ *
+ * Remember that you can create new styles and add your own theme augmentation
+ * per application with elm_theme_extension_add(). If you absolutely must have a
+ * specific style that overrides any theme the user or system sets up you can use
+ * elm_theme_overlay_add() to add such a file.
+ *
+ * --
+ * TODO:
+ *  * Handle non-homogeneous objects too.
+ */
+
+typedef struct _Widget_Data Widget_Data;
+typedef struct _Pan Pan;
+
+#define PRELOAD 1
+
+struct _Elm_Grid_Cell
+{
+   Evas_Object *base, *spacer;
+   const Elm_Grid_Cell_Class *gcc;
+   Ecore_Timer *long_timer;
+   Widget_Data *wd;
+   Eina_List *labels, *icons, *states, *icon_objs;
+   const void *data;
+   struct
+     {
+       Evas_Smart_Cb func;
+       const void *data;
+     } func;
+
+   Evas_Coord x, y, dx, dy;
+   int relcount;
+
+   Eina_Bool want_unrealize : 1;
+   Eina_Bool realized : 1;
+   Eina_Bool dragging : 1;
+   Eina_Bool down : 1;
+   Eina_Bool delete_me : 1;
+   Eina_Bool display_only : 1;
+   Eina_Bool disabled : 1;
+   Eina_Bool selected : 1;
+   Eina_Bool hilighted : 1;
+   Eina_Bool walking : 1;
+};
+
+struct _Widget_Data
+{
+   Evas_Object *self, *scr;
+   Evas_Object *pan_smart;
+   Pan *pan;
+   Eina_List *cells;
+   Ecore_Job *calc_job;
+   Eina_List *selected;
+   double align_x, align_y;
+
+   Evas_Coord pan_x, pan_y;
+   Evas_Coord cell_width, cell_height; /* Each cell size */
+   Evas_Coord minw, minh;              /* Total obj size */
+   unsigned int nmax;
+
+   Eina_Bool horizontal : 1;
+   Eina_Bool on_hold : 1;
+   Eina_Bool longpressed : 1;
+   Eina_Bool multi : 1;
+   Eina_Bool no_select : 1;
+   Eina_Bool wasselected : 1;
+   Eina_Bool always_select : 1;
+};
+
+struct _Pan
+{
+   Evas_Object_Smart_Clipped_Data __clipped_data;
+   Widget_Data *wd;
+};
+
+static const char *widtype = NULL;
+static void _sizing_eval(Evas_Object *obj);
+static void _cell_hilight(Elm_Grid_Cell *cell);
+static void _cell_unrealize(Elm_Grid_Cell *cell);
+static void _cell_select(Elm_Grid_Cell *cell);
+static void _cell_unselect(Elm_Grid_Cell *cell);
+
+static Evas_Smart_Class _pan_sc = EVAS_SMART_CLASS_INIT_VERSION;
+
+static void
+_theme_hook(Evas_Object *obj)
+{
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   elm_smart_scroller_object_theme_set(obj, wd->scr, "grid", "base",
+                                       elm_widget_style_get(obj));
+   _sizing_eval(obj);
+}
+
+static void
+_sizing_eval(Evas_Object *obj)
+{
+   Widget_Data *wd = elm_widget_data_get(obj);
+   Evas_Coord minw = -1, minh = -1, maxw = -1, maxh = -1;
+   if (!wd) return;
+   evas_object_size_hint_max_get(wd->scr, &maxw, &maxh);
+   evas_object_size_hint_min_set(obj, minw, minh);
+   evas_object_size_hint_max_set(obj, maxw, maxh);
+}
+
+static void
+_del_hook(Evas_Object *obj)
+{
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   if (wd->calc_job) ecore_job_del(wd->calc_job);
+   evas_object_del(wd->pan_smart);
+   wd->pan_smart = NULL;
+   elm_scrolled_grid_clear(obj);
+   free(wd);
+}
+
+static void
+_mouse_move(void *data, Evas *evas __UNUSED__, Evas_Object *obj, void *event_info)
+{
+   Elm_Grid_Cell *cell = data;
+   Evas_Event_Mouse_Move *ev = event_info;
+   Evas_Coord minw = 0, minh = 0, x, y, dx, dy, adx, ady;
+
+   if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD)
+     {
+       if (!cell->wd->on_hold) {
+            cell->wd->on_hold = EINA_TRUE;
+            _cell_unselect(cell);
+       }
+     }
+   if ((cell->dragging) && (cell->down))
+     {
+       if (cell->long_timer)
+         {
+            ecore_timer_del(cell->long_timer);
+            cell->long_timer = NULL;
+         }
+       evas_object_smart_callback_call(cell->wd->self, "drag", cell);
+       return;
+     }
+   if ((!cell->down) || (cell->wd->longpressed))
+     {
+       if (cell->long_timer)
+         {
+            ecore_timer_del(cell->long_timer);
+            cell->long_timer = NULL;
+         }
+       return;
+     }
+   if (!cell->display_only)
+     elm_coords_finger_size_adjust(1, &minw, 1, &minh);
+   evas_object_geometry_get(obj, &x, &y, NULL, NULL);
+   x = ev->cur.canvas.x - x;
+   y = ev->cur.canvas.y - y;
+   dx = x - cell->dx;
+   adx = dx;
+   if (adx < 0) adx = -dx;
+   dy = y - cell->dy;
+   ady = dy;
+   if (ady < 0) ady = -dy;
+   minw /= 2;
+   minh /= 2;
+   if ((adx > minw) || (ady > minh))
+     {
+       cell->dragging = 1;
+       if (cell->long_timer)
+         {
+            ecore_timer_del(cell->long_timer);
+            cell->long_timer = NULL;
+         }
+       if (cell->wd->wasselected)
+         _cell_unselect(cell);
+       cell->wd->wasselected = 0;
+       if (dy < 0)
+         {
+            if (ady > adx)
+              evas_object_smart_callback_call(cell->wd->self, "drag,start,up",
+                                              cell);
+            else
+              {
+                 if (dx < 0)
+                   evas_object_smart_callback_call(cell->wd->self,
+                                                   "drag,start,left", cell);
+              }
+         }
+       else
+         {
+            if (ady > adx)
+              evas_object_smart_callback_call(cell->wd->self,
+                                              "drag,start,down", cell);
+            else
+              {
+                 if (dx < 0)
+                   evas_object_smart_callback_call(cell->wd->self,
+                                                   "drag,start,left", cell);
+                 else
+                   evas_object_smart_callback_call(cell->wd->self,
+                                                   "drag,start,right", cell);
+              }
+         }
+     }
+}
+
+static int
+_long_press(void *data)
+{
+   Elm_Grid_Cell *cell = data;
+
+   cell->long_timer = NULL;
+   if ((cell->disabled) || (cell->dragging)) return 0;
+   cell->wd->longpressed = EINA_TRUE;
+   evas_object_smart_callback_call(cell->wd->self, "longpressed", cell);
+   return 0;
+}
+
+static void
+_mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj, void *event_info)
+{
+   Elm_Grid_Cell *cell = data;
+   Evas_Event_Mouse_Down *ev = event_info;
+   Evas_Coord x, y;
+
+   if (ev->button != 1) return;
+   cell->down = 1;
+   cell->dragging = 0;
+   evas_object_geometry_get(obj, &x, &y, NULL, NULL);
+   cell->dx = ev->canvas.x - x;
+   cell->dy = ev->canvas.y - y;
+   cell->wd->longpressed = EINA_FALSE;
+   if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) cell->wd->on_hold = EINA_TRUE;
+   else cell->wd->on_hold = EINA_FALSE;
+   cell->wd->wasselected = cell->selected;
+   _cell_hilight(cell);
+   if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
+     evas_object_smart_callback_call(cell->wd->self, "clicked", cell);
+   if (cell->long_timer) ecore_timer_del(cell->long_timer);
+   if (cell->realized)
+     cell->long_timer = ecore_timer_add(1.0, _long_press, cell);
+   else
+     cell->long_timer = NULL;
+}
+
+static void
+_mouse_up(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
+{
+   Elm_Grid_Cell *cell = data;
+   Evas_Event_Mouse_Up *ev = event_info;
+   Eina_Bool dragged = EINA_FALSE;
+
+   if (ev->button != 1) return;
+   cell->down = EINA_FALSE;
+   if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) cell->wd->on_hold = EINA_TRUE;
+   else cell->wd->on_hold = EINA_FALSE;
+   if (cell->long_timer)
+     {
+       ecore_timer_del(cell->long_timer);
+       cell->long_timer = NULL;
+     }
+   if (cell->dragging)
+     {
+       cell->dragging = EINA_FALSE;
+       evas_object_smart_callback_call(cell->wd->self, "drag,stop", cell);
+       dragged = EINA_TRUE;
+     }
+   if (cell->wd->on_hold)
+     {
+       cell->wd->longpressed = EINA_FALSE;
+       cell->wd->on_hold = EINA_FALSE;
+       return;
+     }
+   if (cell->wd->longpressed)
+     {
+       cell->wd->longpressed = EINA_FALSE;
+       if (!cell->wd->wasselected)
+         _cell_unselect(cell);
+       cell->wd->wasselected = EINA_FALSE;
+       return;
+     }
+   if (dragged)
+     {
+       if (cell->want_unrealize)
+            _cell_unrealize(cell);
+     }
+   if ((cell->disabled) || dragged) return;
+   if (cell->wd->multi)
+     {
+       if (!cell->selected)
+         {
+            _cell_hilight(cell);
+            _cell_select(cell);
+         }
+       else _cell_unselect(cell);
+     }
+   else
+     {
+       if (!cell->selected)
+         {
+            while (cell->wd->selected) _cell_unselect(cell->wd->selected->data);
+         }
+       else
+         {
+            const Eina_List *l, *l_next;
+            Elm_Grid_Cell *cell2;
+
+            EINA_LIST_FOREACH_SAFE(cell->wd->selected, l, l_next, cell2)
+               if (cell2 != cell) _cell_unselect(cell2);
+         }
+       _cell_hilight(cell);
+       _cell_select(cell);
+     }
+}
+
+static void
+_cell_hilight(Elm_Grid_Cell *cell)
+{
+   if ((cell->wd->no_select) || (cell->delete_me) || (cell->hilighted)) return;
+   edje_object_signal_emit(cell->base, "elm,state,selected", "elm");
+   cell->hilighted = EINA_TRUE;
+}
+
+static void
+_cell_realize(Elm_Grid_Cell *cell)
+{
+   char buf[1024];
+
+   if ((cell->realized) || (cell->delete_me)) return;
+   cell->base = edje_object_add(evas_object_evas_get(cell->wd->self));
+   edje_object_scale_set(cell->base, elm_widget_scale_get(cell->wd->self) *
+                        _elm_config->scale);
+   evas_object_smart_member_add(cell->base, cell->wd->pan_smart);
+   elm_widget_sub_object_add(cell->wd->self, cell->base);
+   _elm_theme_object_set(cell->wd->self, cell->base, "grid", "cell/default",
+                         elm_widget_style_get(cell->wd->self));
+   cell->spacer = evas_object_rectangle_add(evas_object_evas_get(cell->wd->self));
+   evas_object_color_set(cell->spacer, 0, 0, 0, 0);
+   elm_widget_sub_object_add(cell->wd->self, cell->spacer);
+   evas_object_size_hint_min_set(cell->spacer, 2 * _elm_config->scale, 1);
+   edje_object_part_swallow(cell->base, "elm.swallow.pad", cell->spacer);
+
+   if (cell->gcc->func.label_get)
+     {
+       const Eina_List *l;
+       const char *key;
+
+       cell->labels = _elm_stringlist_get(edje_object_data_get(cell->base,
+                                                               "labels"));
+       EINA_LIST_FOREACH(cell->labels, l, key)
+         {
+            char *s = cell->gcc->func.label_get(cell->data, cell->wd->self,
+                                                l->data);
+            if (s)
+              {
+                 edje_object_part_text_set(cell->base, l->data, s);
+                 free(s);
+              }
+         }
+     }
+
+   if (cell->gcc->func.icon_get)
+     {
+       const Eina_List *l;
+       const char *key;
+
+       cell->icons = _elm_stringlist_get(edje_object_data_get(cell->base,
+                                                              "icons"));
+       EINA_LIST_FOREACH(cell->icons, l, key)
+         {
+            Evas_Object *ic = cell->gcc->func.icon_get(cell->data,
+                                                       cell->wd->self,
+                                                       l->data);
+            if (ic)
+              {
+                 cell->icon_objs = eina_list_append(cell->icon_objs, ic);
+                 edje_object_part_swallow(cell->base, key, ic);
+                 evas_object_show(ic);
+                 elm_widget_sub_object_add(cell->wd->self, ic);
+              }
+         }
+     }
+
+   if (cell->gcc->func.state_get)
+     {
+       const Eina_List *l;
+       const char *key;
+
+       cell->states = _elm_stringlist_get(edje_object_data_get(cell->base,
+                                                               "states"));
+       EINA_LIST_FOREACH(cell->states, l, key)
+         {
+            Eina_Bool on = cell->gcc->func.state_get(cell->data,
+                  cell->wd->self, l->data);
+            if (on)
+              {
+                 snprintf(buf, sizeof(buf), "elm,state,%s,active", key);
+                 edje_object_signal_emit(cell->base, buf, "elm");
+              }
+         }
+     }
+
+   if (!cell->wd->cell_width && !cell->wd->cell_height)
+     {
+       edje_object_size_min_restricted_calc(cell->base,
+             &cell->wd->cell_width, &cell->wd->cell_height,
+             cell->wd->cell_width, cell->wd->cell_height);
+       elm_coords_finger_size_adjust(1, &cell->wd->cell_width,
+                                     1, &cell->wd->cell_height);
+     }
+
+   evas_object_event_callback_add(cell->base, EVAS_CALLBACK_MOUSE_DOWN,
+                                 _mouse_down, cell);
+   evas_object_event_callback_add(cell->base, EVAS_CALLBACK_MOUSE_UP,
+                                 _mouse_up, cell);
+   evas_object_event_callback_add(cell->base, EVAS_CALLBACK_MOUSE_MOVE,
+                                 _mouse_move, cell);
+
+   if (cell->selected)
+     edje_object_signal_emit(cell->base, "elm,state,selected", "elm");
+   if (cell->disabled)
+     edje_object_signal_emit(cell->base, "elm,state,disabled", "elm");
+
+   evas_object_show(cell->base);
+   cell->realized = EINA_TRUE;
+   cell->want_unrealize = EINA_FALSE;
+}
+
+static void
+_cell_unrealize(Elm_Grid_Cell *cell)
+{
+   Evas_Object *icon;
+
+   if (!cell->realized) return;
+   if (cell->long_timer)
+     {
+       ecore_timer_del(cell->long_timer);
+       cell->long_timer = NULL;
+     }
+   evas_object_del(cell->base);
+   cell->base = NULL;
+   evas_object_del(cell->spacer);
+   cell->spacer = NULL;
+   _elm_stringlist_free(cell->labels);
+   cell->labels = NULL;
+   _elm_stringlist_free(cell->icons);
+   cell->icons = NULL;
+   _elm_stringlist_free(cell->states);
+
+   EINA_LIST_FREE(cell->icon_objs, icon)
+      evas_object_del(icon);
+
+   cell->states = NULL;
+   cell->realized = EINA_FALSE;
+   cell->want_unrealize = EINA_FALSE;
+}
+
+static void
+_cell_place(Elm_Grid_Cell *cell, Evas_Coord cx, Evas_Coord cy)
+{
+   Evas_Coord x, y, ox, oy, cvx, cvy, cvw, cvh;
+   Evas_Coord tch, tcw, alignw = 0, alignh = 0, vw, vh;
+
+   cell->x = cx;
+   cell->y = cy;
+   evas_object_geometry_get(cell->wd->self, &ox, &oy, &vw, &vh);
+   evas_output_viewport_get(evas_object_evas_get(cell->wd->self),
+                           &cvx, &cvy, &cvw, &cvh);
+
+   /* Preload rows/columns at each side of the Grid */
+   cvx -= PRELOAD * cell->wd->cell_width;
+   cvy -= PRELOAD * cell->wd->cell_height;
+   cvw += 2 * PRELOAD * cell->wd->cell_width;
+   cvh += 2 * PRELOAD * cell->wd->cell_height;
+
+   tch = ((vh/cell->wd->cell_height)*cell->wd->cell_height);
+   alignh = (vh - tch)*cell->wd->align_y;
+
+   tcw = ((vw/cell->wd->cell_width)*cell->wd->cell_width);
+   alignw = (vw - tcw)*cell->wd->align_x;
+
+   if (cell->wd->horizontal && cell->wd->minw < vw)
+     {
+        int columns;
+
+        columns = eina_list_count(cell->wd->cells)/(vh/cell->wd->cell_height);
+        if (eina_list_count(cell->wd->cells) % (vh/cell->wd->cell_height))
+             columns++;
+
+        tcw = cell->wd->cell_width * columns;
+       alignw = (vw - tcw)*cell->wd->align_x;
+     }
+   else if (cell->wd->horizontal && cell->wd->minw > vw)
+        alignw = 0;
+   if (!cell->wd->horizontal && cell->wd->minh < vh)
+     {
+        int rows;
+
+        rows = eina_list_count(cell->wd->cells)/(vw/cell->wd->cell_width);
+        if (eina_list_count(cell->wd->cells) % (vw/cell->wd->cell_width))
+             rows++;
+
+        tch = cell->wd->cell_height * rows;
+        alignh = (vh - tch)*cell->wd->align_y;
+     }
+   else if (!cell->wd->horizontal && cell->wd->minh > vh)
+        alignh = 0;
+   x = cx * cell->wd->cell_width - cell->wd->pan_x + ox + alignw;
+   y = cy * cell->wd->cell_height - cell->wd->pan_y + oy + alignh;
+
+   if (ELM_RECTS_INTERSECT(x, y, cell->wd->cell_width, cell->wd->cell_height,
+                          cvx, cvy, cvw, cvh))
+     {
+       Eina_Bool was_realized = cell->realized;
+       _cell_realize(cell);
+       if (!was_realized)
+         evas_object_smart_callback_call(cell->wd->self, "realized", cell);
+       evas_object_move(cell->base, x, y);
+       evas_object_resize(cell->base, cell->wd->cell_width,
+                          cell->wd->cell_height);
+     }
+   else
+     _cell_unrealize(cell);
+}
+
+static Elm_Grid_Cell *
+_cell_create(Widget_Data *wd, const Elm_Grid_Cell_Class *gcc,
+      const void *data, Evas_Smart_Cb func, const void *func_data)
+{
+   Elm_Grid_Cell *cell;
+
+   cell = calloc(1, sizeof(*cell));
+   if (!cell) return NULL;
+   cell->wd = wd;
+   cell->gcc = gcc;
+   cell->data = data;
+   cell->func.func = func;
+   cell->func.data = func_data;
+   return cell;
+}
+
+static void
+_cell_del(Elm_Grid_Cell *cell)
+{
+   if (cell->selected)
+     cell->wd->selected = eina_list_remove(cell->wd->selected, cell);
+   if (cell->realized) _cell_unrealize(cell);
+   if ((!cell->delete_me) && (cell->gcc->func.del))
+     cell->gcc->func.del(cell->data, cell->wd->self);
+   cell->delete_me = EINA_TRUE;
+   cell->wd->cells = eina_list_remove(cell->wd->cells, cell);
+   if (cell->long_timer) ecore_timer_del(cell->long_timer);
+   free(cell);
+}
+
+static void
+_cell_select(Elm_Grid_Cell *cell)
+{
+   if ((cell->wd->no_select) || (cell->delete_me)) return;
+   if (cell->selected)
+     {
+       if (cell->wd->always_select) goto call;
+       return;
+     }
+   cell->selected = EINA_TRUE;
+   cell->wd->selected = eina_list_append(cell->wd->selected, cell);
+call:
+   cell->walking++;
+   if (cell->func.func) cell->func.func((void *)cell->func.data, cell->wd->self,
+                                       cell);
+   if (!cell->delete_me)
+     evas_object_smart_callback_call(cell->wd->self, "selected", cell);
+   cell->walking--;
+   if ((cell->walking == 0) && (cell->delete_me))
+     if (cell->relcount == 0) _cell_del(cell);
+}
+
+static void
+_cell_unselect(Elm_Grid_Cell *cell)
+{
+   if ((cell->delete_me) || (!cell->hilighted)) return;
+   edje_object_signal_emit(cell->base, "elm,state,unselected", "elm");
+   cell->hilighted = EINA_FALSE;
+   if (cell->selected)
+     {
+       cell->selected = EINA_FALSE;
+       cell->wd->selected = eina_list_remove(cell->wd->selected, cell);
+       evas_object_smart_callback_call(cell->wd->self, "unselected", cell);
+     }
+}
+
+static void
+_calc_job(void *data)
+{
+   Widget_Data *wd = data;
+   Evas_Coord minw = 0, minh = 0, nmax = 0, cvw, cvh;
+   int count;
+
+   evas_output_viewport_get(evas_object_evas_get(wd->self), NULL, NULL,
+                           &cvw, &cvh);
+   if (wd->horizontal && wd->cell_height)
+     nmax = cvh / wd->cell_height;
+   else if (wd->cell_width)
+     nmax = cvw / wd->cell_width;
+
+   if (nmax)
+     {
+       count = eina_list_count(wd->cells);
+       if (wd->horizontal)
+         {
+            minw = ceil(count  / (float)nmax) * wd->cell_width;
+            minh = nmax * wd->cell_height;
+         }
+       else
+         {
+            minw = nmax * wd->cell_width;
+            minh = ceil(count / (float)nmax) * wd->cell_height;
+         }
+     }
+
+   if ((minw != wd->minw) || (minh != wd->minh))
+     {
+       wd->minh = minh;
+       wd->minw = minw;
+       evas_object_smart_callback_call(wd->pan_smart, "changed", NULL);
+       _sizing_eval(wd->self);
+     }
+
+   wd->nmax = nmax;
+   wd->calc_job = NULL;
+   evas_object_smart_changed(wd->pan_smart);
+}
+
+static void
+_pan_add(Evas_Object *obj)
+{
+   Pan *sd;
+   Evas_Object_Smart_Clipped_Data *cd;
+
+   _pan_sc.add(obj);
+   cd = evas_object_smart_data_get(obj);
+   sd = ELM_NEW(Pan);
+   if (!sd) return;
+   sd->__clipped_data = *cd;
+   free(cd);
+   evas_object_smart_data_set(obj, sd);
+}
+
+static void
+_pan_del(Evas_Object *obj)
+{
+   Pan *sd = evas_object_smart_data_get(obj);
+
+   if (!sd) return;
+   _pan_sc.del(obj);
+}
+
+static void
+_pan_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
+{
+   Pan *sd = evas_object_smart_data_get(obj);
+   if ((x == sd->wd->pan_x) && (y == sd->wd->pan_y)) return;
+   sd->wd->pan_x = x;
+   sd->wd->pan_y = y;
+   evas_object_smart_changed(obj);
+}
+
+static void
+_pan_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y)
+{
+   Pan *sd = evas_object_smart_data_get(obj);
+   if (x) *x = sd->wd->pan_x;
+   if (y) *y = sd->wd->pan_y;
+}
+
+static void
+_pan_child_size_get(Evas_Object *obj, Evas_Coord *w, Evas_Coord *h)
+{
+   Pan *sd = evas_object_smart_data_get(obj);
+   if (w) *w = sd->wd->minw;
+   if (h) *h = sd->wd->minh;
+}
+
+static void
+_pan_max_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y)
+{
+   Pan *sd = evas_object_smart_data_get(obj);
+   Evas_Coord ow, oh;
+
+   if (!sd) return;
+   evas_object_geometry_get(obj, NULL, NULL, &ow, &oh);
+   if (x)
+     *x = (ow < sd->wd->minw) ? sd->wd->minw - ow : 0;
+   if (y)
+     *y = (oh < sd->wd->minh) ? sd->wd->minh - oh : 0;
+}
+
+static void
+_pan_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
+{
+   Pan *sd = evas_object_smart_data_get(obj);
+   Evas_Coord ow, oh;
+
+   evas_object_geometry_get(obj, NULL, NULL, &ow, &oh);
+   if ((ow == w) && (oh == h)) return;
+   if (sd->wd->calc_job) ecore_job_del(sd->wd->calc_job);
+   sd->wd->calc_job = ecore_job_add(_calc_job, sd->wd);
+}
+
+static void
+_pan_calculate(Evas_Object *obj)
+{
+   Pan *sd = evas_object_smart_data_get(obj);
+   Evas_Coord cx = 0, cy = 0;
+   Eina_List *l;
+   Elm_Grid_Cell *cell;
+
+   if (!sd) return;
+   if (!sd->wd->nmax) return;
+
+   EINA_LIST_FOREACH(sd->wd->cells, l, cell)
+     {
+       _cell_place(cell, cx, cy);
+       if (sd->wd->horizontal)
+         {
+            cy = (cy + 1) % sd->wd->nmax;
+            if (!cy) cx++;
+         }
+       else
+         {
+            cx = (cx + 1) % sd->wd->nmax;
+            if (!cx) cy++;
+         }
+     }
+}
+
+static void
+_pan_move(Evas_Object *obj, Evas_Coord x __UNUSED__, Evas_Coord y __UNUSED__)
+{
+   Pan *sd = evas_object_smart_data_get(obj);
+   if (!sd) return;
+   if (sd->wd->calc_job) ecore_job_del(sd->wd->calc_job);
+   sd->wd->calc_job = ecore_job_add(_calc_job, sd->wd);
+}
+
+static void
+_hold_on(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
+{
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   elm_smart_scroller_hold_set(wd->scr, 1);
+}
+
+static void
+_hold_off(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
+{
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   elm_smart_scroller_hold_set(wd->scr, 0);
+}
+
+static void
+_freeze_on(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
+{
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   elm_smart_scroller_freeze_set(wd->scr, 1);
+}
+
+static void
+_freeze_off(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
+{
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   elm_smart_scroller_freeze_set(wd->scr, 0);
+}
+
+static void
+_scr_drag_start(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+   evas_object_smart_callback_call(data, "scroll,drag,start", NULL);
+}
+
+static void
+_scr_drag_stop(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+   evas_object_smart_callback_call(data, "scroll,drag,stop", NULL);
+}
+
+static void
+_scr_scroll(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+   evas_object_smart_callback_call(data, "scroll", NULL);
+}
+
+/**
+ * Add a new Scrolled Grid object.
+ *
+ * @param parent The parent object.
+ * @return  The new object or NULL if it cannot be created.
+ *
+ * @see elm_scrolled_grid_cell_size_set()
+ * @see elm_scrolled_grid_horizontal_set()
+ * @see elm_scrolled_grid_cell_add()
+ * @see elm_scrolled_grid_cell_del()
+ * @see elm_scrolled_grid_clear()
+ *
+ * @ingroup Grid
+ */
+EAPI Evas_Object *
+elm_scrolled_grid_add(Evas_Object *parent)
+{
+   Evas_Object *obj;
+   Evas *e;
+   Evas_Coord minw, minh;
+   Widget_Data *wd;
+   static Evas_Smart *smart = NULL;
+
+   wd = ELM_NEW(Widget_Data);
+   e = evas_object_evas_get(parent);
+   obj = elm_widget_add(e);
+   ELM_SET_WIDTYPE(widtype, "grid");
+   elm_widget_type_set(obj, "grid");
+   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);
+
+   wd->scr = elm_smart_scroller_add(e);
+   elm_smart_scroller_widget_set(wd->scr, obj);
+   elm_smart_scroller_object_theme_set(obj, wd->scr, "grid", "base", "default");
+   elm_widget_resize_object_set(obj, wd->scr);
+
+   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, "scroll", _scr_scroll, obj);
+
+   elm_smart_scroller_bounce_allow_set(wd->scr, 1, 1);
+
+   wd->self = obj;
+   wd->align_x = 0.5;
+   wd->align_y = 0.5;
+
+   evas_object_smart_callback_add(obj, "scroll-hold-on", _hold_on, obj);
+   evas_object_smart_callback_add(obj, "scroll-hold-off", _hold_off, obj);
+   evas_object_smart_callback_add(obj, "scroll-freeze-on", _freeze_on, obj);
+   evas_object_smart_callback_add(obj, "scroll-freeze-off", _freeze_off, obj);
+
+   if (!smart)
+     {
+       static Evas_Smart_Class sc;
+
+       evas_object_smart_clipped_smart_set(&_pan_sc);
+       sc = _pan_sc;
+       sc.name = "elm_scrolled_grid_pan";
+       sc.version = EVAS_SMART_CLASS_VERSION;
+       sc.add = _pan_add;
+       sc.del = _pan_del;
+       sc.resize = _pan_resize;
+       sc.move = _pan_move;
+       sc.calculate = _pan_calculate;
+       smart = evas_smart_class_new(&sc);
+     }
+   if (smart)
+     {
+       wd->pan_smart = evas_object_smart_add(e, smart);
+       wd->pan = evas_object_smart_data_get(wd->pan_smart);
+       wd->pan->wd = wd;
+     }
+
+   elm_smart_scroller_extern_pan_set(wd->scr, wd->pan_smart,
+                                    _pan_set, _pan_get,
+                                    _pan_max_get, _pan_child_size_get);
+
+   _sizing_eval(obj);
+
+   return obj;
+}
+
+/**
+ * Set the size for the cell of the Grid.
+ *
+ * @param obj The Grid object.
+ * @param w The cell's width.
+ * @param h The cell's height;
+ *
+ * @see elm_scrolled_grid_cell_size_get()
+ *
+ * @ingroup Grid
+ */
+EAPI void
+elm_scrolled_grid_cell_size_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   if (wd->cell_width == w && wd->cell_height == h) return;
+   wd->cell_width = w;
+   wd->cell_height = h;
+   if (wd->calc_job) ecore_job_del(wd->calc_job);
+   wd->calc_job = ecore_job_add(_calc_job, wd);
+}
+
+/**
+ * Get the size of the cell of the Grid.
+ *
+ * @param obj The Grid object.
+ * @param w Pointer to the cell's width.
+ * @param h Pointer to the cell's height.
+ *
+ * @see elm_scrolled_grid_cell_size_get()
+ *
+ * @ingroup Grid
+ */
+EAPI void
+elm_scrolled_grid_cell_size_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   if (w) *w = wd->cell_width;
+   if (h) *h = wd->cell_height;
+}
+
+/**
+ * Set cell's alignment within the scroller.
+ *
+ * @param obj The grid object.
+ * @param align_x The x alignment (0 <= x <= 1).
+ * @param align_y The y alignment (0 <= y <= 1).
+ *
+ * @see elm_scrolled_grid_align_get()
+ *
+ * @ingroup Grid
+ */
+EAPI void
+elm_scrolled_grid_align_set(Evas_Object *obj, double align_x, double align_y)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+
+   if (align_x > 1.0)
+     align_x = 1.0;
+   else if (align_x < 0.0)
+     align_x = 0.0;
+   wd->align_x = align_x;
+
+   if (align_y > 1.0)
+     align_y = 1.0;
+   else if (align_y < 0.0)
+     align_y = 0.0;
+   wd->align_y = align_y;
+}
+
+/**
+ * Get the alignenment set for the grid object.
+ *
+ * @param obj The grid object.
+ * @param align_x Pointer to x alignenment.
+ * @param align_y Pointer to y alignenment.
+ *
+ * @see elm_scrolled_grid_align_set()
+ *
+ * @ingroup Grid
+ */
+EAPI void
+elm_scrolled_grid_align_get(const Evas_Object *obj, double *align_x, double *align_y)
+{
+    ELM_CHECK_WIDTYPE(obj, widtype);
+    Widget_Data *wd = elm_widget_data_get(obj);
+    if (align_x) *align_x = wd->align_x;
+    if (align_y) *align_y = wd->align_y;
+}
+
+/**
+ * Add cell to the end of the Grid.
+ *
+ * @param obj The Grid object.
+ * @param gcc The cell class for the cell.
+ * @param data The cell data.
+ * @param func Convenience function called when cell is selected.
+ * @param func_data Data passed to @p func above.
+ * @return A handle to the cell added or NULL if not possible.
+ *
+ * @see elm_scrolled_grid_cell_del()
+ *
+ * @ingroup Grid
+ */
+EAPI Elm_Grid_Cell *
+elm_scrolled_grid_cell_add(Evas_Object *obj, const Elm_Grid_Cell_Class *gcc,
+                          const void *data, Evas_Smart_Cb func,
+                          const void *func_data)
+{
+   Elm_Grid_Cell *cell;
+   ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return NULL;
+
+   cell = _cell_create(wd, gcc, data, func, func_data);
+   if (!cell) return NULL;
+
+   wd->cells = eina_list_append(wd->cells, cell);
+   wd->no_select = EINA_FALSE;
+
+   if (wd->calc_job) ecore_job_del(wd->calc_job);
+   wd->calc_job = ecore_job_add(_calc_job, wd);
+
+   return cell;
+}
+
+/**
+ * Remove a cell from the Grid.
+ *
+ * @param cell The cell to be removed.
+ * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise.
+ *
+ * @see elm_scrolled_grid_clear() to remove all cells of the grid.
+ *
+ * @ingroup Grid
+ */
+EAPI void
+elm_scrolled_grid_cell_del(Elm_Grid_Cell *cell)
+{
+   if (!cell) return;
+   if ((cell->relcount > 0) || (cell->walking > 0))
+     {
+       cell->delete_me = EINA_TRUE;
+       if (cell->selected)
+         cell->wd->selected = eina_list_remove(cell->wd->selected, cell);
+       if (cell->gcc->func.del) cell->gcc->func.del(cell->data, cell->wd->self);
+       return;
+     }
+
+   _cell_del(cell);
+
+   if (cell->wd->calc_job) ecore_job_del(cell->wd->calc_job);
+   cell->wd->calc_job = ecore_job_add(_calc_job, cell->wd);
+}
+
+/**
+ * Set for what direction the grid will expand.
+ *
+ * @param obj The Grid object.
+ * @param setting If @c EINA_TRUE the grid will expand horizontally or
+ * vertically if @c EINA_FALSE.
+ *
+ * @ingroup Grid
+ */
+EAPI void
+elm_scrolled_grid_horizontal_set(Evas_Object *obj, Eina_Bool setting)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   if (setting == wd->horizontal) return;
+   wd->horizontal = setting;
+
+   /* Update the cells to conform to the new layout */
+   if (wd->calc_job) ecore_job_del(wd->calc_job);
+   wd->calc_job = ecore_job_add(_calc_job, wd);
+}
+
+/**
+ * Clear the Grid
+ *
+ * This clears all cells in the grid, leaving it empty.
+ *
+ * @param obj The Grid object.
+ *
+ * @see elm_scrolled_grid_cell_del() to remove just one cell.
+ *
+ * @ingroup Grid
+ */
+EAPI void
+elm_scrolled_grid_clear(Evas_Object *obj)
+{
+   Eina_List *l, *l_next;
+   Elm_Grid_Cell *cell;
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+
+   if (wd->calc_job)
+     {
+       ecore_job_del(wd->calc_job);
+       wd->calc_job = NULL;
+     }
+
+   EINA_LIST_FOREACH_SAFE(wd->cells, l, l_next, cell)
+     {
+       if (cell->realized) _cell_unrealize(cell);
+       if (cell->gcc->func.del) cell->gcc->func.del(cell->data, wd->self);
+       if (cell->long_timer) ecore_timer_del(cell->long_timer);
+       free(cell);
+       wd->cells = eina_list_remove_list(wd->cells, l);
+     }
+
+   if (wd->selected)
+     {
+       eina_list_free(wd->selected);
+       wd->selected = NULL;
+     }
+
+   wd->pan_x = 0;
+   wd->pan_y = 0;
+   wd->minw = 0;
+   wd->minh = 0;
+   evas_object_size_hint_min_set(wd->pan_smart, wd->minw, wd->minh);
+   evas_object_smart_callback_call(wd->pan_smart, "changed", NULL);
+   _sizing_eval(obj);
+}
+
+/**
+ * Get the real evas object of the grid cell
+ *
+ * This returns the actual evas object used for the specified grid cell.
+ * This may be NULL as it may not be created, and may be deleted at any time
+ * by grid. Do not modify this object (move, resize, show, hide etc.) as grid
+ * is controlling it. This function is for querying, emitting custom signals
+ * or hooking lower level callbacks for events. Do not delete this object
+ * under any circumstances.
+ *
+ * @param cell The Grid cell.
+ * @return the evas object associated to this cell.
+ *
+ * @see elm_scrolled_grid_cell_data_get()
+ *
+ * @ingroup Grid
+ */
+EAPI const Evas_Object *
+elm_scrolled_grid_cell_object_get(Elm_Grid_Cell *cell)
+{
+   if (!cell) return NULL;
+   return cell->base;
+}
+
+/**
+ * Returns the data associated to a cell
+ *
+ * This returns the data value passed on the elm_scrolled_grid_cell_add() and
+ * related cell addition calls.
+ *
+ * @param cell The Grid cell.
+ * @return the data associated to this cell.
+ *
+ * @see elm_scrolled_grid_cell_add()
+ * @see elm_scrolled_grid_cell_object_get()
+ *
+ * @ingroup Grid
+ */
+EAPI void *
+elm_scrolled_grid_cell_data_get(Elm_Grid_Cell *cell)
+{
+   if (!cell) return NULL;
+   return (void *)cell->data;
+}
+
+/**
+ * Get the cell's coordinates.
+ *
+ * This returns the logical position of the cell whithin the Grid.
+ *
+ * @param cell The Grid cell.
+ * @param x The x-axis coordinate pointer.
+ * @param y The y-axis coordinate pointer.
+ *
+ * @ingroup Grid
+ */
+EAPI void
+elm_scrolled_grid_cell_pos_get(const Elm_Grid_Cell *cell, unsigned int *x, unsigned int *y)
+{
+   if (!cell) return;
+   if (x) *x = cell->x;
+   if (y) *y = cell->y;
+}
+
+/**
+ * Enable or disable multi-select in the grid.
+ *
+ * This enables (EINA_TRUE) or disables (EINA_FALSE) multi-select in the grid.
+ * This allows more than 1 cell to be selected.
+ *
+ * @param obj The grid object.
+ * @param multi Multi-select enabled/disabled
+ *
+ * @ingroup Grid
+ */
+EAPI void
+elm_scrolled_grid_multi_select_set(Evas_Object *obj, Eina_Bool multi)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   wd->multi = multi;
+}
+
+/**
+ * Get if multi-select in grid is enabled or disabled
+ *
+ * @param obj The grid object
+ * @return Multi-select enable/disable
+ * (EINA_TRUE = enabled / EINA_FALSE = disabled)
+ *
+ * @ingroup Grid
+ */
+EAPI Eina_Bool
+elm_scrolled_grid_multi_select_get(const Evas_Object *obj)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return EINA_FALSE;
+   return wd->multi;
+}
+
+/**
+ * Get the selected cell in the grid
+ *
+ * This gets the selected cell in the grid (if multi-select is enabled only
+ * the first cell in the list is selected - which is not very useful, so see
+ * elm_scrolled_grid_selected_cells_get() for when multi-select is used).
+ *
+ * If no cell is selected, NULL is returned.
+ *
+ * @param obj The grid object.
+ * @return The selected cell, or NULL if none.
+ *
+ * @ingroup Grid
+ */
+EAPI Elm_Grid_Cell *
+elm_scrolled_grid_selected_cell_get(const Evas_Object *obj)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return NULL;
+   if (wd->selected) return wd->selected->data;
+   return NULL;
+}
+
+/**
+ * Get a list of selected cells in the grid.
+ *
+ * This returns a list of the selected cells. This list pointer is only valid
+ * so long as no cells are selected or unselected (or unselected implictly by
+ * deletion). The list contains Elm_Grid_Cell pointers.
+ *
+ * @param obj The grid object.
+ * @return The list of selected cells, or NULL if none are selected.
+ *
+ * @ingroup Grid
+ */
+EAPI const Eina_List *
+elm_scrolled_grid_selected_cells_get(const Evas_Object *obj)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype) NULL;
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return NULL;
+   return wd->selected;
+}
+
+/**
+ * Get the selected state of a cell.
+ *
+ * This gets the selected state of a cell (1 selected, 0 not selected).
+ *
+ * @param cell The cell
+ * @return The selected state
+ *
+ * @ingroup Grid
+ */
+EAPI Eina_Bool
+elm_scrolled_grid_cell_selected_get(const Elm_Grid_Cell *cell)
+{
+   if (!cell) return EINA_FALSE;
+   return cell->selected;
+}
+
+/**
+ * Sets the disabled state of a cell.
+ *
+ * A disabled cell cannot be selected or unselected. It will also change
+ * appearance to disabled. This sets the disabled state (1 disabled, 0 not
+ * disabled).
+ *
+ * @param cell The cell
+ * @param disabled The disabled state
+ *
+ * @ingroup Grid
+ */
+EAPI void
+elm_scrolled_grid_cell_disabled_set(Elm_Grid_Cell *cell, Eina_Bool disabled)
+{
+   if (!cell) return;
+   if (cell->disabled == disabled) return;
+   if (cell->delete_me) return;
+   cell->disabled = disabled;
+   if (cell->realized)
+     {
+       if (cell->disabled)
+         edje_object_signal_emit(cell->base, "elm,state,disabled", "elm");
+       else
+         edje_object_signal_emit(cell->base, "elm,state,enabled", "elm");
+     }
+}
+
+/**
+ * Get the disabled state of a cell.
+ *
+ * This gets the disabled state of the given cell.
+ *
+ * @param cell The cell
+ * @return The disabled state
+ *
+ * @ingroup Grid
+ */
+EAPI Eina_Bool
+elm_scrolled_grid_cell_disabled_get(const Elm_Grid_Cell *cell)
+{
+   if (!cell) return EINA_FALSE;
+   if (cell->delete_me) return EINA_FALSE;
+   return cell->disabled;
+}
+
+/**
+ * Set the always select mode.
+ *
+ * Cells will only call their selection func and callback when first becoming
+ * selected. Any further clicks will do nothing, unless you enable always select
+ * with elm_scrolled_grid_always_select_mode_set(). This means even if selected,
+ * every click will make the selected callbacks be called.
+ *
+ * @param obj The grid object
+ * @param always_select The always select mode (EINA_TRUE = on, EINA_FALSE = off)
+ *
+ * @ingroup Grid
+ */
+EAPI void
+elm_scrolled_grid_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   wd->always_select = always_select;
+}
+
+/**
+ * Get the always select mode.
+ *
+ * @param obj The grid object.
+ * @return The always select mode (EINA_TRUE = on, EINA_FALSE = off)
+ *
+ * @ingroup Grid
+ */
+EAPI Eina_Bool
+elm_scrolled_grid_always_select_mode_get(const Evas_Object *obj)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return EINA_FALSE;
+   return wd->always_select;
+}
+
+/**
+ * Set no select mode.
+ *
+ * This will turn off the ability to select items entirely and they will
+ * neither appear selected nor call selected callback functions.
+ *
+ * @param obj The grid object
+ * @param no_select The no select mode (EINA_TRUE = on, EINA_FALSE = off)
+ *
+ * @ingroup Grid
+ */
+EAPI void
+elm_scrolled_grid_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   wd->no_select = no_select;
+}
+
+/**
+ * Gets no select mode.
+ *
+ * @param obj The grid object
+ * @return The no select mode (EINA_TRUE = on, EINA_FALSE = off)
+ *
+ * @ingroup Grid
+ */
+EAPI Eina_Bool
+elm_scrolled_grid_no_select_mode_get(const Evas_Object *obj)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return EINA_FALSE;
+   return wd->no_select;
+}
+
+/**
+ * Set bounce mode.
+ *
+ * This will enable or disable the scroller bounce mode for the grid. See
+ * elm_scroller_bounce_set() for details.
+ *
+ * @param obj The grid object
+ * @param h_bounce Allow bounce horizontally
+ * @param v_bounce Allow bounce vertically
+ *
+ * @ingroup Grid
+ */
+EAPI void
+elm_scrolled_grid_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   elm_smart_scroller_bounce_allow_set(wd->scr, h_bounce, v_bounce);
+}
+
+/**
+ * Get the bounce mode
+ *
+ * @param obj The grid object
+ * @param h_bounce Allow bounce horizontally
+ * @param v_bounce Allow bounce vertically
+ *
+ * @ingroup Grid
+ */
+EAPI void
+elm_scrolled_grid_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce)
+{
+   ELM_CHECK_WIDTYPE(obj, widtype);
+   Widget_Data *wd = elm_widget_data_get(obj);
+   if (!wd) return;
+   elm_smart_scroller_bounce_allow_get(wd->scr, h_bounce, v_bounce);
+}
index 722931b..d26c6d9 100644 (file)
@@ -4,6 +4,14 @@
 #include <Elementary.h>
 #include "elm_priv.h"
 
+/**
+ * @defgroup Searchbar Searchbar
+ * @ingroup Elementary
+ *
+ * This is Searchbar.
+ * It can contain a simple entry and button object.
+ */
+
 typedef struct _Widget_Data Widget_Data;
 
 struct _Widget_Data
@@ -167,6 +175,13 @@ _elm_searchbar_text_get(const Evas_Object *obj, const char *item)
 }
 
 
+/**
+ * Add a new searchbar to the parent
+ * @param parent The parent object
+ * @return The new object or NULL if it cannot be created
+ *
+ * @ingroup Searchbar
+ */
 EAPI Evas_Object *elm_searchbar_add(Evas_Object *parent)
 {
    Evas_Object *obj;
@@ -220,16 +235,40 @@ EAPI Evas_Object *elm_searchbar_add(Evas_Object *parent)
    return obj;
 }
 
+/**
+ * set the text of entry
+ *
+ * @param obj The searchbar object
+ * @return void
+ *
+ * @ingroup Searchbar
+ */
 EAPI void elm_searchbar_text_set(Evas_Object *obj, const char *entry)
 {
    _elm_searchbar_text_set(obj, NULL, entry);
 }
 
+/**
+ * get the text of entry
+ *
+ * @param obj The searchbar object
+ * @return string pointer of entry
+ *
+ * @ingroup Searchbar
+ */
 EAPI const char* elm_searchbar_text_get(Evas_Object *obj)
 {
    return _elm_searchbar_text_get(obj, NULL);
 }
 
+/**
+ * get the pointer of entry
+ *
+ * @param obj The searchbar object
+ * @return the entry object
+ *
+ * @ingroup Searchbar
+ */
 EAPI Evas_Object *elm_searchbar_entry_get(Evas_Object *obj)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
@@ -239,6 +278,14 @@ EAPI Evas_Object *elm_searchbar_entry_get(Evas_Object *obj)
    return elm_editfield_entry_get(wd->ef);
 }
 
+/**
+ * get the pointer of editfield
+ *
+ * @param obj The searchbar object
+ * @return the editfield object
+ *
+ * @ingroup Searchbar
+ */
 EAPI Evas_Object *elm_searchbar_editfield_get(Evas_Object *obj)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
@@ -248,6 +295,15 @@ EAPI Evas_Object *elm_searchbar_editfield_get(Evas_Object *obj)
    return wd->ef;
 }
 
+/**
+ * set the cancel button animation flag
+ *
+ * @param obj The searchbar object
+ * @param cancel_btn_ani_flag The flag of animating cancen button or not
+ * @return void
+ *
+ * @ingroup Searchbar
+ */
 EAPI void elm_searchbar_cancel_button_animation_set(Evas_Object *obj, Eina_Bool cancel_btn_ani_flag)
 {
    ELM_CHECK_WIDTYPE(obj, widtype);
@@ -258,6 +314,15 @@ EAPI void elm_searchbar_cancel_button_animation_set(Evas_Object *obj, Eina_Bool
    else wd->cancel_btn_ani_flag = cancel_btn_ani_flag;
 }
 
+/**
+ * set the cancel button show mode
+ *
+ * @param obj The searchbar object
+ * @param visible The flag of cancen button show or not
+ * @return void
+ *
+ * @ingroup Searchbar
+ */
 EAPI void elm_searchbar_cancel_button_set(Evas_Object *obj, Eina_Bool visible)
 {
    ELM_CHECK_WIDTYPE(obj, widtype);
@@ -277,6 +342,14 @@ EAPI void elm_searchbar_cancel_button_set(Evas_Object *obj, Eina_Bool visible)
    _sizing_eval(obj);
 }
 
+/**
+ * clear searchbar status
+ *
+ * @param obj The searchbar object
+ * @return void
+ *
+ * @ingroup Searchbar
+ */
 EAPI void elm_searchbar_clear(Evas_Object *obj)
 {
    ELM_CHECK_WIDTYPE(obj, widtype);
@@ -293,6 +366,15 @@ EAPI void elm_searchbar_clear(Evas_Object *obj)
 //   elm_entry_entry_set(elm_editfield_entry_get(wd->ef), NULL);
 }
 
+/**
+ * set the searchbar boundary rect mode(with bg rect) set
+ *
+ * @param obj The searchbar object
+ * @param boundary The present flag of boundary rect or not
+ * @return void
+ *
+ * @ingroup Searchbar
+ */
 EAPI void elm_searchbar_boundary_rect_set(Evas_Object *obj, Eina_Bool boundary)
 {
    ELM_CHECK_WIDTYPE(obj, widtype);
index bd6ca90..2407392 100644 (file)
@@ -602,7 +602,8 @@ static void
 _content_set_hook(Evas_Object *obj, const char *part, Evas_Object *content)
 {
    ELM_CHECK_WIDTYPE(obj, widtype);
-   if (!part || !strcmp(part, "icon"))
+   if (!part) return;
+   if (!strcmp(part, "icon"))
      _icon_set(obj, content);
    else if (!strcmp(part, "end"))
      _end_set(obj, content);
@@ -613,9 +614,10 @@ _content_get_hook(const Evas_Object *obj, const char *part)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
    Widget_Data *wd;
+   if (!part) return NULL;
    wd = elm_widget_data_get(obj);
    if (!wd) return NULL;
-   if (!part || !strcmp(part, "icon"))
+   if (!strcmp(part, "icon"))
      return wd->icon;
    else if (!strcmp(part, "end"))
      return wd->end;
@@ -626,7 +628,8 @@ static Evas_Object *
 _content_unset_hook(Evas_Object *obj, const char *part)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
-   if (!part || !strcmp(part, "icon"))
+   if (!part) return NULL;
+   if (!strcmp(part, "icon"))
      return _icon_unset(obj);
    else if (!strcmp(part, "end"))
      return _end_unset(obj);
diff --git a/src/lib/elm_slidingdrawer.c b/src/lib/elm_slidingdrawer.c
new file mode 100644 (file)
index 0000000..dd71d0d
--- /dev/null
@@ -0,0 +1,295 @@
+/*
+ * @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 bd8adb9..1e54310 100644 (file)
@@ -2,6 +2,13 @@
 #include "elm_priv.h"
 
 
+/**
+ * @defgroup Stackedicon Stackedicon
+ * @ingroup Elementary
+ *
+ * This is a Stackedicon.
+ */
+
 
 #define MAX_ITEM_NUM      (9)
 #define MAX_MOVE_INTERVAL   (0.2)
@@ -686,6 +693,14 @@ _event_init(Evas_Object *obj)
    evas_object_event_callback_add(obj, EVAS_CALLBACK_HIDE, _hide_cb, obj);
 }
 
+/**
+ * Add a new stackedicon to the parent
+ *
+ * @param parent The parent object
+ * @return The new object or NULL if it cannot be created
+ *
+ * @ingroup Stackedicon
+ */
 EAPI Evas_Object *
 elm_stackedicon_add(Evas_Object *parent)
 {
@@ -717,6 +732,15 @@ elm_stackedicon_add(Evas_Object *parent)
    return obj;
 }
 
+/**
+ * This appends a path to the stackedicon
+ *
+ * @param    obj   The stackedicon object
+ * @param    path   The image full path
+ * @return   The new item or NULL if it cannot be created
+ *
+ * @ingroup Stackedicon
+ */
 EAPI Elm_Stackedicon_Item *elm_stackedicon_item_append(Evas_Object *obj, const char *path)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
@@ -744,6 +768,15 @@ EAPI Elm_Stackedicon_Item *elm_stackedicon_item_append(Evas_Object *obj, const c
    return it;
 }
 
+/**
+ * This prepends a path to the stackedicon
+ *
+ * @param    obj   The stackedicon object
+ * @param    path   The image full path
+ * @return   The new item or NULL if it cannot be created
+ *
+ * @ingroup Stackedicon
+ */
 EAPI Elm_Stackedicon_Item *elm_stackedicon_item_prepend(Evas_Object *obj, const char *path)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
@@ -771,9 +804,16 @@ EAPI Elm_Stackedicon_Item *elm_stackedicon_item_prepend(Evas_Object *obj, const
    return it;
 }
 
+/**
+ * This delete a path at the stackedicon
+ *
+ * @param    Elm_Stackedicon_Item   The delete item
+ *
+ * @ingroup Stackedicon
+ */
 EAPI void elm_stackedicon_item_del(Elm_Stackedicon_Item *it)
 {
-   if (!it) return;
+   if (!it)return;
    ELM_CHECK_WIDTYPE(it->parent, widtype);
    Evas_Object *obj = it->parent;
    Widget_Data *wd = elm_widget_data_get(obj);
@@ -794,6 +834,14 @@ EAPI void elm_stackedicon_item_del(Elm_Stackedicon_Item *it)
    _update_stackedicon(obj);
 }
 
+/**
+ * Get item list from the stackedicon
+ *
+ * @param    obj   The stackedicon object
+ * @return   The item list or NULL if it cannot be created
+ *
+ * @ingroup Stackedicon
+ */
 EAPI Eina_List *elm_stackedicon_item_list_get(Evas_Object *obj)
 {
    ELM_CHECK_WIDTYPE(obj, widtype) NULL;
@@ -801,3 +849,4 @@ EAPI Eina_List *elm_stackedicon_item_list_get(Evas_Object *obj)
    if (!wd) return NULL;
    return wd->list;
 }
+
index 4265bda..46915e0 100644 (file)
@@ -1686,6 +1686,13 @@ _store_free(Elm_Store *st)
    if(std->p_db) eina_stringshare_del(std->p_db);
 }
 
+/**
+ * Add a new dbsystem Store object
+ *
+ * @return The new object or NULL if it cannot be created
+ *
+ * @ingroup Store
+ */
 EAPI Elm_Store *
 elm_store_dbsystem_new(void)
 {
@@ -1698,6 +1705,14 @@ elm_store_dbsystem_new(void)
    return &std->base;
 }
 
+/**
+ * Sets the item count of a store
+ *
+ * @param st The store object
+ * @param count The item count of an store
+ *
+ * @ingroup Store
+ */
 EAPI void
 elm_store_item_count_set(Elm_Store *st, int count)
 {
@@ -1706,6 +1721,15 @@ elm_store_item_count_set(Elm_Store *st, int count)
 }
 
 
+/**
+ * Set the select func that select the state of a list item whether true or false
+ *
+ * @param st The store object
+ * @param func The select cb function of an store
+ * @param data The new data pointer to set
+ *
+ * @ingroup Store
+ */
 EAPI void
 elm_store_item_select_func_set(Elm_Store *st, Elm_Store_Item_Select_Cb func, const void *data)
 {
@@ -1714,6 +1738,15 @@ elm_store_item_select_func_set(Elm_Store *st, Elm_Store_Item_Select_Cb func, con
    st->cb.item_select.data = (void *)data;
 }
 
+/**
+ * Sets the sort func that sort the item with a next in the list
+ *
+ * @param st The store object
+ * @param func The sort cb function of an store
+ * @param data The new data pointer to set
+ *
+ * @ingroup Store
+ */
 EAPI void
 elm_store_item_sort_func_set(Elm_Store *st, Elm_Store_Item_Sort_Cb func, const void *data)
 {
@@ -1722,6 +1755,15 @@ elm_store_item_sort_func_set(Elm_Store *st, Elm_Store_Item_Sort_Cb func, const v
    st->cb.item_sort.data = (void *)data;
 }
 
+/**
+ * Set the store item free func
+ *
+ * @param st The store object
+ * @param func The free cb function of an store
+ * @param data The new data pointer to set
+ *
+ * @ingroup Store
+ */
 EAPI void
 elm_store_item_free_func_set(Elm_Store *st, Elm_Store_Item_Free_Cb func, const void *data)
 {
@@ -1730,6 +1772,14 @@ elm_store_item_free_func_set(Elm_Store *st, Elm_Store_Item_Free_Cb func, const v
    st->cb.item_free.data = (void *)data;
 }
 
+/**
+ * Get the item index that included header items
+ *
+ * @param sti The store item object
+ * @return The item index in genlist
+ *
+ * @ingroup Store
+ */
 EAPI int
 elm_store_item_index_get(const Elm_Store_Item *sti)
 {
@@ -1754,6 +1804,14 @@ elm_store_item_index_get(const Elm_Store_Item *sti)
    return -1;
 }
 
+/**
+ * Get the item index of real data that don't included header items
+ *
+ * @param sti The store item object
+ * @return The real item index
+ *
+ * @ingroup Store
+ */
 EAPI int
 elm_store_item_data_index_get(const Elm_Store_Item *sti)
 {
@@ -1778,6 +1836,14 @@ elm_store_item_data_index_get(const Elm_Store_Item *sti)
    return -1;
 }
 
+/**
+ * Get the DB pointer of an item
+ *
+ * @param sti The store item object
+ * @return The DB pointer of item
+ *
+ * @ingroup Store
+ */
 EAPI void *
 elm_store_dbsystem_db_get(const Elm_Store_Item *sti)
 {
@@ -1789,6 +1855,14 @@ elm_store_dbsystem_db_get(const Elm_Store_Item *sti)
    return std->p_db;
 }
 
+/**
+ * Set the DB pointer of an item
+ *
+ * @param sti The store item object
+ * @parm p_db The DB pointer of item
+ *
+ * @ingroup Store
+ */
 EAPI void
 elm_store_dbsystem_db_set(Elm_Store *store, void *p_db)
 {
@@ -1808,6 +1882,15 @@ elm_store_dbsystem_db_set(Elm_Store *store, void *p_db)
                                               store, EINA_TRUE);
 }
 
+/**
+ * Append the item to the genlist
+ *
+ * @param st The store object
+ * @param info The store item info dbsystem object
+ * @return The item of store
+ *
+ * @ingroup Store
+ */
 EAPI Elm_Store_Item *
 elm_store_item_add(Elm_Store *st, Elm_Store_Item_Info *info)
 {
@@ -1847,6 +1930,13 @@ elm_store_item_add(Elm_Store *st, Elm_Store_Item_Info *info)
      }
 }
 
+/**
+ * Realize the visible items to the screen
+ *
+ * @param st The store object
+ *
+ * @ingroup Store
+ */
 EAPI void
 elm_store_visible_items_update(Elm_Store *st)
 {
@@ -1863,6 +1953,13 @@ elm_store_visible_items_update(Elm_Store *st)
      }
 }
 
+/**
+ * Realize the item to the screen
+ *
+ * @param sti The store item object
+ *
+ * @ingroup Store
+ */
 EAPI void
 elm_store_item_update(Elm_Store_Item *sti)
 {
@@ -1883,6 +1980,13 @@ elm_store_item_update(Elm_Store_Item *sti)
      }
 }
 
+/**
+ * Delete the item of genlist
+ *
+ * @param sti The store item object
+ *
+ * @ingroup Store
+ */
 EAPI void
 elm_store_item_del(Elm_Store_Item *sti)
 {
@@ -1937,3 +2041,6 @@ elm_store_item_del(Elm_Store_Item *sti)
         if(!deleted) printf(" Not deleted because it does not existed in the genlist \n");
      }
 }
+
+// TODO: END -DBsystem store
+
index 3382b67..b8ccfed 100644 (file)
@@ -4,7 +4,7 @@
 
 static Elm_Theme theme_default =
 {
-   NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1
+   NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1
 };
 
 static Eina_List *themes = NULL;
@@ -24,11 +24,6 @@ _elm_theme_clear(Elm_Theme *th)
         eina_hash_free(th->cache);
         th->cache = NULL;
      }
-   if (th->cache_data)
-     {
-        eina_hash_free(th->cache_data);
-        th->cache_data = NULL;
-     }
    if (th->theme)
      {
         eina_stringshare_del(th->theme);
@@ -116,79 +111,6 @@ _elm_theme_group_file_find(Elm_Theme *th, const char *group)
    return NULL;
 }
 
-static const char *
-_elm_theme_find_data_try(Elm_Theme *th, const char *f, const char *key)
-{
-   char *data;
-   const char *t;
-
-   data = edje_file_data_get(f, key);
-   t = eina_stringshare_add(data);
-   free(data);
-   if (t)
-     {
-        eina_hash_add(th->cache, key, t);
-        return t;
-     }
-   return NULL;
-}
-
-static const char *
-_elm_theme_theme_data_try(Elm_Theme *th, const char *home, const char *f, const char *key)
-{
-   char buf[PATH_MAX];
-   const char *data = NULL;
-
-   if ((f[0] == '/') || ((f[0] == '.') && (f[1] == '/')) ||
-       ((f[0] == '.') && (f[1] == '.') && (f[2] == '/')) ||
-       ((isalpha(f[0])) && (f[1] == ':')))
-     return _elm_theme_find_data_try(th, f, key);
-   else if (((f[0] == '~') && (f[1] == '/')))
-     {
-        snprintf(buf, sizeof(buf), "%s/%s", home, f + 2);
-        return _elm_theme_find_try(th, buf, key);
-     }
-   snprintf(buf, sizeof(buf), "%s/.elementary/themes/%s.edj", home, f);
-   data = _elm_theme_find_data_try(th, buf, key);
-   if (data) return data;
-   snprintf(buf, sizeof(buf), "%s/themes/%s.edj", _elm_data_dir, f);
-   data = _elm_theme_find_data_try(th, buf, key);
-   return data;
-}
-
-static const char *
-_elm_theme_data_find(Elm_Theme *th, const char *key)
-{
-   const Eina_List *l;
-   const char *f;
-   static const char *home = NULL;
-   const char *data = eina_hash_find(th->cache_data, key);
-
-   if (data) return data;
-   if (!home)
-     {
-        home = getenv("HOME");
-        if (!home) home = "";
-     }
-   EINA_LIST_FOREACH(th->overlay, l, f)
-     {
-        data = _elm_theme_theme_data_try(th, home, f, key);
-        if (data) return data;
-     }
-   EINA_LIST_FOREACH(th->themes, l, f)
-     {
-        data = _elm_theme_theme_data_try(th, home, f, key);
-        if (data) return data;
-     }
-   EINA_LIST_FOREACH(th->extension, l, f)
-     {
-        data = _elm_theme_theme_data_try(th, home, f, key);
-        if (data) return data;
-     }
-   if (th->ref_theme) return _elm_theme_data_find(th->ref_theme, key);
-   return NULL;
-}
-
 Eina_Bool
 _elm_theme_object_set(Evas_Object *parent, Evas_Object *o, const char *clas, const char *group, const char *style)
 {
@@ -302,8 +224,6 @@ _elm_theme_parse(Elm_Theme *th, const char *theme)
      }
    if (th->cache) eina_hash_free(th->cache);
    th->cache = eina_hash_string_superfast_new(EINA_FREE_CB(eina_stringshare_del));
-   if (th->cache_data) eina_hash_free(th->cache_data);
-   th->cache_data = eina_hash_string_superfast_new(EINA_FREE_CB(eina_stringshare_del));
 
    EINA_LIST_FREE(th->themes, p) eina_stringshare_del(p);
 
@@ -513,8 +433,6 @@ elm_theme_flush(Elm_Theme *th)
    if (!th) th = &(theme_default);
    if (th->cache) eina_hash_free(th->cache);
    th->cache = eina_hash_string_superfast_new(EINA_FREE_CB(eina_stringshare_del));
-   if (th->cache_data) eina_hash_free(th->cache_data);
-   th->cache_data = eina_hash_string_superfast_new(EINA_FREE_CB(eina_stringshare_del));
    _elm_win_rescale(th, EINA_TRUE);
    if (th->referrers)
      {
@@ -638,10 +556,3 @@ elm_object_theme_get(const Evas_Object *obj)
    EINA_SAFETY_ON_NULL_RETURN_VAL(obj, NULL);
    return elm_widget_theme_get(obj);
 }
-
-EAPI const char *
-elm_theme_data_get(Elm_Theme *th, const char *key)
-{
-   if (!th) th = &(theme_default);
-   return _elm_theme_data_find(th, key);
-}
index 4da82fb..188d20b 100644 (file)
@@ -1,6 +1,13 @@
 #include <Elementary.h>
 #include "elm_priv.h"
 
+/**
+ * @defgroup TickerNoti TickerNoti
+ * @ingroup Elementary
+ *
+ * This is a notification widget which can be used to display some short information.
+ */
+
 typedef struct _Widget_Data Widget_Data;
 
 struct _Widget_Data
@@ -506,6 +513,15 @@ _elm_tickernoti_content_part_unset_hook(Evas_Object *obj, const char *part)
    return NULL;
 }
 
+/**
+ * Add a tickernoti object to @p parent
+ *
+ * @param parent The parent object
+ *
+ * @return The tickernoti object, or NULL upon failure
+ *
+ * @ingroup TickerNoti
+ */
 EAPI Evas_Object *
 elm_tickernoti_add(Evas_Object *parent)
 {
@@ -543,6 +559,13 @@ elm_tickernoti_add(Evas_Object *parent)
    return obj;
 }
 
+/**
+ * Get the rotation of tickernoti object
+ *
+ * @param obj The tickernotil object
+ * @return The rotation angle
+ * @ingroup TickerNoti
+ */
 EAPI int
 elm_tickernoti_rotation_get(const Evas_Object *obj)
 {
@@ -552,6 +575,13 @@ elm_tickernoti_rotation_get(const Evas_Object *obj)
    return wd->angle;
 }
 
+/**
+ * Set the rotation angle for the tickernoti object
+ *
+ * @param obj The tickernoti object
+ * @param angle The rotation angle(in degree) will be used on the tickernoti object
+ * @ingroup TickerNoti
+ */
 EAPI void
 elm_tickernoti_rotation_set(Evas_Object *obj, int angle)
 {
@@ -566,6 +596,13 @@ elm_tickernoti_rotation_set(Evas_Object *obj, int angle)
    elm_win_rotation_with_resize_set (wd->win, angle);
 }
 
+/**
+ * Set the orientation of the tickernoti object
+ *
+ * @param obj The tickernoti object
+ * @param orient The orientation of tickernoti object
+ * @ingroup TickerNoti
+ */
 EAPI void
 elm_tickernoti_orient_set(Evas_Object *obj, Elm_Tickernoti_Orient orient)
 {
@@ -603,6 +640,14 @@ elm_tickernoti_orient_set(Evas_Object *obj, Elm_Tickernoti_Orient orient)
 #endif
 }
 
+/**
+ * Get the orientation of the tickernoti object
+ *
+ * @param obj The tickernotil object
+ * @return The orientation of tickernotil object
+ *
+ * @ingroup TickerNoti
+ */
 EAPI Elm_Tickernoti_Orient
 elm_tickernoti_orient_get(const Evas_Object *obj)
 {
@@ -613,6 +658,14 @@ elm_tickernoti_orient_get(const Evas_Object *obj)
    return wd->orient;
 }
 
+/**
+ * Get the view window(elm_win) on the tickernoti object
+ *
+ * @param obj The tickernotil object
+ * @return internal view window(elm_win) object
+ *
+ * @ingroup TickerNoti
+ */
 EAPI Evas_Object *
 elm_tickernoti_win_get(const Evas_Object *obj)
 {
@@ -622,42 +675,107 @@ elm_tickernoti_win_get(const Evas_Object *obj)
    return wd->win;
 }
 
+// ################### Below APIs are going to be removed. ###########################
+/**
+ * Set the detail label on the tickernoti object
+ *
+ * @param obj The tickernoti object
+ * @param label The label will be used on the tickernoti object
+ * @deprecated use elm_object_text_set() instead
+ *
+ * @ingroup TickerNoti
+ */
 EAPI void
 elm_tickernoti_detailview_label_set(Evas_Object *obj, const char *label)
 {
    _elm_tickernoti_label_set(obj, NULL, label);
 }
 
+/**
+ * Get the detail label used on the tickernoti object
+ *
+ * @param obj The tickernotil object
+ * @return The string inside the label
+ * @deprecated use elm_object_text_get() instead
+ *
+ * @ingroup TickerNoti
+ */
 EAPI const char *
 elm_tickernoti_detailview_label_get(const Evas_Object *obj)
 {
    return _elm_tickernoti_label_get(obj, NULL);
 }
 
+/**
+ * Set the button object used on the tickernoti object
+ *
+ * @param obj The tickernotil object
+ * @param button The button object will be used on the tickernoti object
+ * @deprecated use elm_object_content_part_set() instead with "icon" as part name
+ *
+ * @ingroup TickerNoti
+ */
 EAPI void
 elm_tickernoti_detailview_button_set(Evas_Object *obj, Evas_Object *button)
 {
    _elm_tickernoti_button_set(obj, button);
 }
 
+
+/**
+ * Get the button object used on the tickernoti object
+ *
+ * @param obj The tickernotil object
+ * @return The button object inside the tickernoti
+ * @deprecated use elm_object_content_part_get() instead with "button" as part name
+ *
+ * @ingroup TickerNoti
+ */
 EAPI Evas_Object *
 elm_tickernoti_detailview_button_get(const Evas_Object *obj)
 {
    return _elm_tickernoti_button_get(obj);
 }
 
+/**
+ * Set the detail icon object used on the tickernoti object
+ *
+ * @param obj The tickernotil object
+ * @param icon The icon object will be used on the tickernoti object
+ * @deprecated use elm_object_content_part_set() instead with "icon" as part name
+ *
+ * @ingroup TickerNoti
+ */
 EAPI void
 elm_tickernoti_detailview_icon_set(Evas_Object *obj, Evas_Object *icon)
 {
    _elm_tickernoti_icon_set(obj, icon);
 }
 
+/**
+ * Get the detail icon object used on the tickernoti object
+ *
+ * @param obj The tickernotil object
+ * @return The icon object inside the tickernoti
+ * @deprecated use elm_object_content_part_get() instead with "icon" as part name
+ *
+ * @ingroup TickerNoti
+ */
 EAPI Evas_Object *
 elm_tickernoti_detailview_icon_get(const Evas_Object *obj)
 {
    return _elm_tickernoti_icon_get(obj);
 }
 
+/**
+ * Get the view mode on the tickernoti object
+ *
+ * @param obj The tickernotil object
+ * @return The view mode
+ * @deprecated removed as now styles are used instead
+ *
+ * @ingroup TickerNoti
+ */
 EAPI Elm_Tickernoti_Mode
 elm_tickernoti_mode_get(const Evas_Object *obj)
 {
@@ -667,6 +785,15 @@ elm_tickernoti_mode_get(const Evas_Object *obj)
    return wd->mode;
 }
 
+/**
+ * Set the view mode used on the tickernoti object
+ *
+ * @param obj The tickernotil object
+ * @param mode The view mode will be used on the tickernoti object
+ * @deprecated removed as now styles are used instead
+ *
+ * @ingroup TickerNoti
+ */
 EAPI void
 elm_tickernoti_mode_set(Evas_Object *obj, Elm_Tickernoti_Mode mode)
 {
@@ -684,54 +811,133 @@ elm_tickernoti_mode_set(Evas_Object *obj, Elm_Tickernoti_Mode mode)
    }
 }
 
+/**
+ * Get the detail view window(elm_win) on the tickernoti object
+ *
+ * @param obj The tickernotil object
+ * @return detail view window(elm_win) object
+ * @ingroup TickerNoti
+ */
 EAPI Evas_Object *
 elm_tickernoti_detailview_get(const Evas_Object *obj)
 {
    return elm_tickernoti_win_get(obj);
 }
 
+/**
+ * Set the orientation of the tickernoti object
+ *
+ * @param obj The tickernoti object
+ * @param orient The orientation of tickernoti object
+ * @deprecated use elm_tickernoti_orient_set() instead
+ *
+ * @ingroup TickerNoti
+ */
 EAPI void
 elm_tickernoti_orientation_set(Evas_Object *obj, Elm_Tickernoti_Orient orient)
 {
    elm_tickernoti_orient_set(obj, orient);
 }
 
+/**
+ * Get the orientation of the tickernoti object
+ *
+ * @param obj The tickernotil object
+ * @return The orientation of tickernotil object
+ * @deprecated use elm_tickernoti_orient_get() instead
+ *
+ * @ingroup TickerNoti
+ */
 EAPI Elm_Tickernoti_Orient
 elm_tickernoti_orientation_get(const Evas_Object *obj)
 {
    return elm_tickernoti_orient_get(obj);
 }
 
+/**
+ * Set the label on the tickernoti object
+ *
+ * @param obj The tickernoti object
+ * @param label The label will be used on the tickernoti object
+ * @deprecated use elm_object_text_get()
+ *
+ * @ingroup TickerNoti
+ */
 EAPI void
 elm_tickernoti_label_set(Evas_Object *obj, const char *label)
 {
    _elm_tickernoti_label_set(obj, NULL, label);
 }
 
+/**
+ * Get the label used on the tickernoti object
+ *
+ * @param obj The tickernotil object
+ * @return The string inside the label
+ * @deprecated use elm_object_text_get() instead
+ *
+ * @ingroup TickerNoti
+ */
 EAPI const char *
 elm_tickernoti_label_get(const Evas_Object *obj)
 {
    return _elm_tickernoti_label_get(obj, NULL);
 }
 
+/**
+ * Set the action button object used on the tickernoti object
+ *
+ * @param obj The tickernotil object
+ * @param button The button object will be used on the tickernoti object
+ * @deprecated use elm_object_content_part_set() instead with "button" as part name
+ *
+ * @ingroup TickerNoti
+ */
 EAPI void
 elm_tickernoti_button_set(Evas_Object *obj, Evas_Object *button)
 {
    _elm_tickernoti_button_set(obj, button);
 }
 
+/**
+ * Get the action button object used on the tickernoti object
+ *
+ * @param obj The tickernotil object
+ * @return The button object inside the tickernoti
+ * @deprecated use elm_object_content_part_get() instead with "button" as part name
+ *
+ * @ingroup TickerNoti
+ */
 EAPI Evas_Object *
 elm_tickernoti_button_get(const Evas_Object *obj)
 {
    return _elm_tickernoti_button_get(obj);
 }
 
+/**
+ * Set the icon object of the tickernoti object
+ *
+ * @param obj The tickernotil object
+ * @param icon The icon object will be used on the tickernoti object
+ * @deprecated use elm_object_content_part_set() instead with "icon" as part name
+ *
+ * @ingroup TickerNoti
+ */
 EAPI void
 elm_tickernoti_icon_set(Evas_Object *obj, Evas_Object *icon)
 {
    _elm_tickernoti_icon_set(obj, icon);
 }
 
+/**
+ * Get the icon object of the tickernoti object
+ *
+ * @param obj The tickernotil object
+ * @return The icon object inside the tickernoti
+ * @deprecated use elm_object_content_part_get() instead with "icon" as part name
+ *
+ * @ingroup TickerNoti
+ */
 EAPI Evas_Object *
 elm_tickernoti_icon_get(const Evas_Object *obj)
 {
index 2d02c80..5cdd33c 100644 (file)
@@ -50,6 +50,7 @@ elm_toggle_states_labels_set(Evas_Object *obj, const char *onlabel, const char *
    elm_object_part_text_set(obj, "off", offlabel);
 }
 
+
 EAPI void
 elm_toggle_states_labels_get(const Evas_Object *obj, const char **onlabel, const char **offlabel)
 {
index 5557e0a..216a28d 100644 (file)
@@ -2212,7 +2212,7 @@ _transit_effect_image_animation_op(Elm_Transit_Effect *effect, Elm_Transit *tran
 
    EINA_LIST_FOREACH(transit->objs, elist, obj)
      {
-        if (elm_widget_type_check(obj, type, __func__))
+        if (elm_widget_type_check(obj, type))
           elm_icon_file_set(obj,
                             eina_list_nth(image_animation->images, count), NULL);
      }
index cb90a85..d893fef 100644 (file)
@@ -279,13 +279,14 @@ elm_video_add(Evas_Object *parent)
    wd->layout = edje_object_add(e);
    _elm_theme_object_set(obj, wd->layout, "video", "base", "default");
    elm_widget_resize_object_set(obj, wd->layout);
+   elm_widget_sub_object_add(obj, wd->layout);
    evas_object_show(wd->layout);
    evas_object_size_hint_weight_set(wd->layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
 
    wd->emotion = emotion_object_add(e);
    emotion_object_init(wd->emotion, NULL);
-   elm_widget_sub_object_add(obj, wd->emotion);
    edje_object_part_swallow(wd->layout, "elm.swallow.video", wd->emotion);
+   elm_widget_sub_object_add(obj, wd->emotion);
 
    evas_object_smart_callback_add(wd->emotion, "open_done", _open_done, obj);
    evas_object_smart_callback_add(wd->emotion, "playback_started", _playback_started, obj);
index 6e8b044..4f1198d 100644 (file)
@@ -26,7 +26,6 @@ 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;
@@ -1220,47 +1219,6 @@ 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)
@@ -1357,24 +1315,6 @@ 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,
@@ -1966,7 +1906,7 @@ elm_widget_focused_object_clear(Evas_Object *obj)
 EAPI void
 elm_widget_focus_steal(Evas_Object *obj)
 {
-   Evas_Object *parent, *parent2, *o;
+   Evas_Object *parent, *o;
    API_ENTRY return;
 
    if (sd->focused) return;
@@ -1983,30 +1923,24 @@ elm_widget_focus_steal(Evas_Object *obj)
         if (sd->focused) break;
         parent = o;
      }
-   if ((!elm_widget_parent_get(parent)) &&
-       (!elm_widget_parent2_get(parent)))
-      elm_widget_focused_object_clear(parent);
+   if (!elm_widget_parent_get(parent))
+     elm_widget_focused_object_clear(parent);
    else
      {
-        parent2 = elm_widget_parent_get(parent);
-        if (!parent2) parent2 = elm_widget_parent2_get(parent);
-        parent = parent2;
+        parent = elm_widget_parent_get(parent);
         sd = evas_object_smart_data_get(parent);
-        if (sd)
+        if ((sd->resize_obj) && (elm_widget_focus_get(sd->resize_obj)))
+          elm_widget_focused_object_clear(sd->resize_obj);
+        else
           {
-             if ((sd->resize_obj) && (elm_widget_focus_get(sd->resize_obj)))
-                elm_widget_focused_object_clear(sd->resize_obj);
-             else
+             const Eina_List *l;
+             Evas_Object *child;
+             EINA_LIST_FOREACH(sd->subobjs, l, child)
                {
-                  const Eina_List *l;
-                  Evas_Object *child;
-                  EINA_LIST_FOREACH(sd->subobjs, l, child)
+                  if (elm_widget_focus_get(child))
                     {
-                       if (elm_widget_focus_get(child))
-                         {
-                            elm_widget_focused_object_clear(child);
-                            break;
-                         }
+                       elm_widget_focused_object_clear(child);
+                       break;
                     }
                }
           }
@@ -2613,8 +2547,7 @@ elm_widget_is_check(const Evas_Object *obj)
 
 EAPI Eina_Bool
 elm_widget_type_check(const Evas_Object *obj,
-                      const char        *type,
-                      const char        *func)
+                      const char        *type)
 {
    const char *provided, *expected = "(unknown)";
    static int abort_on_warn = -1;
@@ -2627,7 +2560,7 @@ elm_widget_type_check(const Evas_Object *obj,
         if ((!provided) || (!provided[0]))
           provided = "(unknown)";
      }
-   ERR("Passing Object: %p in function: %s, of type: '%s' when expecting type: '%s'", obj, func, provided, expected);
+   ERR("Passing Object: %p, of type: '%s' when expecting type: '%s'", obj, provided, expected);
    if (abort_on_warn == -1)
      {
         if (getenv("ELM_ERROR_ABORT")) abort_on_warn = 1;
@@ -2897,31 +2830,6 @@ _elm_widget_item_data_get(const Elm_Widget_Item *item)
    return (void *)item->data;
 }
 
-EAPI void
-_elm_widget_item_disabled_set(Elm_Widget_Item *item, Eina_Bool disabled)
-{
-   ELM_WIDGET_ITEM_CHECK_OR_RETURN(item);
-
-   if (item->disabled == disabled) return;
-   item->disabled = !!disabled;
-   if (item->disable_func) item->disable_func(item);
-}
-
-EAPI Eina_Bool
-_elm_widget_item_disabled_get(const Elm_Widget_Item *item)
-{
-   ELM_WIDGET_ITEM_CHECK_OR_RETURN(item, EINA_FALSE);
-   return item->disabled;
-}
-
-EAPI void
-_elm_widget_item_disable_set_hook_set(Elm_Widget_Item *item,
-                                      Elm_Widget_On_Disable_Set_Cb func)
-{
-   ELM_WIDGET_ITEM_CHECK_OR_RETURN(item);
-   item->disable_func = func;
-}
-
 typedef struct _Elm_Widget_Item_Tooltip Elm_Widget_Item_Tooltip;
 
 struct _Elm_Widget_Item_Tooltip
index 329333d..964d061 100644 (file)
@@ -201,8 +201,6 @@ typedef const char *(*Elm_Widget_On_Text_Get_Cb)(const void *data, const char *p
 typedef Evas_Object *(*Elm_Widget_On_Content_Get_Cb)(const void *data, const char *part);
 typedef Evas_Object *(*Elm_Widget_On_Content_Unset_Cb)(const void *data, const char *part);
 typedef void (*Elm_Widget_On_Signal_Emit_Cb)(void *data, const char *emission, const char *source);
-typedef void (*Elm_Widget_On_Disable_Set_Cb)(void *data);
-
 
 #define ELM_ACCESS_TYPE     0 // when reading out widget or item this is read first
 #define ELM_ACCESS_INFO     1 // next read is info - this is normally label
@@ -262,10 +260,8 @@ struct _Elm_Widget_Item
    Elm_Widget_On_Text_Set_Cb on_text_set_func;
    Elm_Widget_On_Text_Get_Cb on_text_get_func;
    Elm_Widget_On_Signal_Emit_Cb on_signal_emit_func;
-   Elm_Widget_On_Disable_Set_Cb disable_func;
    Elm_Access_Info *access;
    const char *access_info;
-   Eina_Bool disabled: 1;
    /* widget variations should have data from here and on */
    /* @todo: TODO check if this is enough for 1.0 release, maybe add padding! */
 };
@@ -321,12 +317,11 @@ EAPI void             elm_widget_sub_object_del(Evas_Object *obj, Evas_Object *s
 EAPI void             elm_widget_resize_object_set(Evas_Object *obj, Evas_Object *sobj);
 EAPI void             elm_widget_hover_object_set(Evas_Object *obj, Evas_Object *sobj);
 EAPI void             elm_widget_signal_emit(Evas_Object *obj, const char *emission, const char *source);
-EAPI void             elm_widget_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data);
-EAPI void            *elm_widget_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func);
+EAPI void             elm_widget_signal_callback_add(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source), void *data);
+EAPI void            *elm_widget_signal_callback_del(Evas_Object *obj, const char *emission, const char *source, void (*func) (void *data, Evas_Object *o, const char *emission, const char *source));
 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);
@@ -353,8 +348,6 @@ 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);
 
 /**
@@ -411,7 +404,7 @@ EAPI Eina_Bool        elm_widget_theme_object_set(Evas_Object *obj, Evas_Object
 EAPI void             elm_widget_type_register(const char **ptr);
 EAPI void             elm_widget_type_unregister(const char **ptr);
 EAPI Eina_Bool        elm_widget_is_check(const Evas_Object *obj);
-EAPI Eina_Bool        elm_widget_type_check(const Evas_Object *obj, const char *type, const char *func);
+EAPI Eina_Bool        elm_widget_type_check(const Evas_Object *obj, const char *type);
 EAPI Eina_List       *elm_widget_stringlist_get(const char *str);
 EAPI void             elm_widget_stringlist_free(Eina_List *list);
 EAPI void             elm_widget_focus_hide_handle(Evas_Object *obj);
@@ -461,9 +454,7 @@ EAPI void             _elm_widget_item_text_set_hook_set(Elm_Widget_Item *item,
 EAPI void             _elm_widget_item_text_get_hook_set(Elm_Widget_Item *item, Elm_Widget_On_Text_Get_Cb func);
 EAPI void             _elm_widget_item_signal_emit_hook_set(Elm_Widget_Item *it, Elm_Widget_On_Signal_Emit_Cb func);
 EAPI void             _elm_widget_item_access_info_set(Elm_Widget_Item *item, const char *txt);
-EAPI void             _elm_widget_item_disabled_set(Elm_Widget_Item *item, Eina_Bool disabled);
-EAPI Eina_Bool        _elm_widget_item_disabled_get(const Elm_Widget_Item *item);
-EAPI void             _elm_widget_item_disable_set_hook_set(Elm_Widget_Item *item, Elm_Widget_On_Disable_Set_Cb func);
+
 
 /* debug function. don't use it unless you are tracking parenting issues */
 EAPI void             elm_widget_tree_dump(const Evas_Object *top);
@@ -596,6 +587,42 @@ EAPI void             elm_widget_tree_dot_dump(const Evas_Object *top, FILE *out
 #define elm_widget_item_cursor_engine_only_get(item) \
   _elm_widget_item_cursor_engine_only_get((const Elm_Widget_Item *)item)
 /**
+ * Convenience function to query item's content part set.
+ * @see _elm_widget_item_content_part_set()
+ */
+#define elm_widget_item_content_part_set(item, part, content) \
+  _elm_widget_item_content_part_set((Elm_Widget_Item *)item, part, content)
+/**
+ * Convenience function to query item's content part get.
+ * @see _elm_widget_item_content_part_get()
+ */
+#define elm_widget_item_content_part_get(item, part) \
+  _elm_widget_item_content_part_get((const Elm_Widget_Item *)item, part)
+/**
+ * Convenience function to query item's content part unset.
+ * @see _elm_widget_item_content_part_unset()
+ */
+#define elm_widget_item_content_part_unset(item, part) \
+  _elm_widget_item_content_part_unset((Elm_Widget_Item *)item, part)
+/**
+ * Convenience function to query item's text part set.
+ * @see _elm_widget_item_text_part_set()
+ */
+#define elm_widget_item_text_part_set(item, part, label) \
+  _elm_widget_item_text_part_set((Elm_Widget_Item *)item, part, label)
+/**
+ * Convenience function to query item's text part get.
+ * @see _elm_widget_item_text_part_get()
+ */
+#define elm_widget_item_text_part_get(item, part) \
+  _elm_widget_item_text_part_get((const Elm_Widget_Item *)item, part)
+/**
+ * Convenience function to query item's signal emit.
+ * @see _elm_widget_item_signal_emit()
+ */
+#define elm_widget_item_signal_emit(item, emission, source) \
+  _elm_widget_item_signal_emit((Elm_Widget_Item *)item, emission, source)
+/**
  * Convenience function to query item's content set hook.
  * @see _elm_widget_item_content_set_hook_set()
  */
@@ -631,21 +658,7 @@ EAPI void             elm_widget_tree_dot_dump(const Evas_Object *top, FILE *out
  */
 #define elm_widget_item_signal_emit_hook_set(item, func) \
   _elm_widget_item_signal_emit_hook_set((Elm_Widget_Item *)item, (Elm_Widget_On_Signal_Emit_Cb)func)
-/**
- * Convenience function to query disable get hook.
- * @see _elm_widget_item_disabled_get()
- */
-#define elm_widget_item_disabled_get(item) \
-  _elm_widget_item_disabled_get((Elm_Widget_Item *)item)
-
-EAPI Eina_Bool        _elm_widget_item_disabled_get(const Elm_Widget_Item *item);
 
-/**
- * Convenience function to query disable set hook.
- * @see _elm_widget_item_disable_set_hook_set()
- */
-#define elm_widget_item_disable_set_hook_set(item, func) \
-  _elm_widget_item_disable_set_hook_set((Elm_Widget_Item *) item, (Elm_Widget_On_Disable_Set_Cb)func)
 
 #define ELM_WIDGET_ITEM_CHECK_OR_RETURN(item, ...) \
    do { \
@@ -683,7 +696,7 @@ EAPI Eina_Bool        _elm_widget_item_disabled_get(const Elm_Widget_Item *item)
    if (!elm_widget_is_check(obj)) return
 
 #define ELM_CHECK_WIDTYPE(obj, widtype) \
-   if (!obj || !elm_widget_type_check((obj), (widtype), __func__)) return
+   if (!elm_widget_type_check((obj), (widtype))) return
 
 #define ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it, ...)                \
    ELM_WIDGET_ITEM_CHECK_OR_RETURN((Elm_Widget_Item *)it, __VA_ARGS__); \
@@ -691,7 +704,7 @@ EAPI Eina_Bool        _elm_widget_item_disabled_get(const Elm_Widget_Item *item)
 
 #define ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_GOTO(it, label)                \
    ELM_WIDGET_ITEM_CHECK_OR_GOTO((Elm_Widget_Item *)it, label);         \
-   if (!elm_widget_type_check((it->base.widget), (widtype), __func__)) goto label;
+   if (!elm_widget_type_check((it->base.widget), (widtype))) goto label;
 
 #define ELM_WIDGET_STANDARD_SETUP(wdat, wdtype, par, evas, ob, ret) \
    do { \
@@ -732,7 +745,7 @@ typedef enum _Elm_Sel_Format
    /** Edje textblock markup, including inline images */
    ELM_SEL_FORMAT_MARKUP = 0x02,
    /** Images */
-   ELM_SEL_FORMAT_IMAGE = 0x04,
+   ELM_SEL_FORMAT_IMAGE         = 0x04,
    /** Vcards */
    ELM_SEL_FORMAT_VCARD =  0x08,
    /** Raw HTMLish things for widgets that want that stuff (hello webkit!) */
@@ -750,7 +763,6 @@ struct _Elm_Selection_Data
 Eina_Bool            elm_selection_set(Elm_Sel_Type selection, Evas_Object *widget, Elm_Sel_Format format, const char *buf);
 Eina_Bool            elm_selection_clear(Elm_Sel_Type selection, Evas_Object *widget);
 Eina_Bool            elm_selection_get(Elm_Sel_Type selection, Elm_Sel_Format format, Evas_Object *widget, Elm_Drop_Cb datacb, void *udata);
-Eina_Bool            elm_selection_selection_has_owner(void);
 Eina_Bool            elm_drop_target_add(Evas_Object *widget, Elm_Sel_Type, Elm_Drop_Cb, void *);
 Eina_Bool            elm_drop_target_del(Evas_Object *widget);
 Eina_Bool            elm_drag_start(Evas_Object *, Elm_Sel_Format, const char *, void (*)(void *,Evas_Object*),void*);
index 1a3cd34..fae74b7 100644 (file)
@@ -311,7 +311,7 @@ _elm_win_focus_in(Ecore_Evas *ee)
    _elm_widget_top_win_focused_set(win->win_obj, EINA_TRUE);
    if (win->show_count == 1)
      {
-        elm_object_focus_set(win->win_obj, EINA_TRUE);
+        elm_object_focus(win->win_obj);
         win->show_count++;
      }
    else
@@ -409,26 +409,6 @@ _elm_win_event_cb(Evas_Object *obj, Evas_Object *src __UNUSED__, Evas_Callback_T
              ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
              return EINA_TRUE;
           }
-        else if ((!strcmp(ev->keyname, "Left")) ||
-                 (!strcmp(ev->keyname, "KP_Left")))
-          {
-             //TODO : woohyun jung
-          }
-        else if ((!strcmp(ev->keyname, "Right")) ||
-                 (!strcmp(ev->keyname, "KP_Right")))
-          {
-             //TODO : woohyun jung
-          }
-        else if ((!strcmp(ev->keyname, "Up")) ||
-                 (!strcmp(ev->keyname, "KP_Up")))
-          {
-             //TODO : woohyun jung
-          }
-        else if ((!strcmp(ev->keyname, "Down")) ||
-                 (!strcmp(ev->keyname, "KP_Down")))
-          {
-             //TODO : woohyun jung
-          }
      }
 
    return EINA_FALSE;
@@ -1362,35 +1342,43 @@ elm_win_add(Evas_Object *parent, const char *name, Elm_Win_Type type)
 
 #define FALLBACK_TRY(engine)                                            \
    if (!win->ee)                                                        \
-      do {                                                              \
-         CRITICAL(engine " engine creation failed. Trying default.");   \
-         win->ee = ecore_evas_new(NULL, 0, 0, 1, 1, NULL);              \
-         if (win->ee)                                                   \
-            elm_engine_set(ecore_evas_engine_name_get(win->ee));        \
+   do {                                                               \
+        CRITICAL(engine " engine creation failed. Trying software X11."); \
+        win->ee = ecore_evas_software_x11_new(NULL, 0, 0, 0, 1, 1);      \
+        elm_engine_set(ELM_SOFTWARE_X11);      \
    } while (0)
 #define ENGINE_COMPARE(name) (!strcmp(_elm_config->engine, name))
 
    switch (type)
      {
       case ELM_WIN_INLINED_IMAGE:
-        if (!parent) break;
-        {
-           Evas *e = evas_object_evas_get(parent);
-           Ecore_Evas *ee;
-           if (!e) break;
-           ee = ecore_evas_ecore_evas_get(e);
-           if (!ee) break;
-           win->img_obj = ecore_evas_object_image_new(ee);
-           if (!win->img_obj) break;
-           win->ee = ecore_evas_object_ecore_evas_get(win->img_obj);
-           if (win->ee)
-             {
-                _win_inlined_image_set(win);
-                break;
-             }
-           evas_object_del(win->img_obj);
-           win->img_obj = NULL;
-        }
+          {
+             if (parent)
+               {
+                  Evas *e = evas_object_evas_get(parent);
+                  if (e)
+                    {
+                       Ecore_Evas *ee = ecore_evas_ecore_evas_get(e);
+                       if (ee)
+                         {
+                            win->img_obj = ecore_evas_object_image_new(ee);
+                            if (win->img_obj)
+                              {
+                                 win->ee = ecore_evas_object_ecore_evas_get(win->img_obj);
+                                 if (win->ee)
+                                   {
+                                      _win_inlined_image_set(win);
+                                   }
+                                 else
+                                   {
+                                      evas_object_del(win->img_obj);
+                                      win->img_obj = NULL;
+                                   }
+                              }
+                         }
+                    }
+               }
+          }
         break;
       default:
         if (ENGINE_COMPARE(ELM_SOFTWARE_X11))
@@ -1400,7 +1388,6 @@ elm_win_add(Evas_Object *parent, const char *name, Elm_Win_Type type)
              win->client_message_handler = ecore_event_handler_add
                 (ECORE_X_EVENT_CLIENT_MESSAGE, _elm_win_client_message, win);
 #endif
-             FALLBACK_TRY("Sofware X11");
           }
         else if (ENGINE_COMPARE(ELM_SOFTWARE_FB))
           {
@@ -1554,8 +1541,6 @@ 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 |
@@ -2166,16 +2151,6 @@ elm_win_screen_position_get(const Evas_Object *obj, int *x, int *y)
    if (y) *y = win->screen.y;
 }
 
-EAPI Eina_Bool
-elm_win_focus_get(const Evas_Object *obj)
-{
-   Elm_Win *win;
-   ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE;
-   win = elm_widget_data_get(obj);
-   if (!win) return EINA_FALSE;
-   return ecore_evas_focus_get(win->ee);
-}
-
 EAPI void
 elm_win_screen_size_get(const Evas_Object *obj, int *x, int *y, int *w, int *h)
 {
index 1c1daa2..12e7ef7 100644 (file)
@@ -300,8 +300,9 @@ _elm_cursor_cur_set(Elm_Cursor *cur)
    if (cur->use_engine)
      {
 #ifdef HAVE_ELEMENTARY_X
-        struct _Cursor_Id *cur_id;
+        struct _Cursor_Id cur_search, *cur_id;
 
+        cur_search.name = cur->cursor_name;
         cur_id = bsearch(&(cur->cursor_name), _cursors, _cursors_count,
                          sizeof(struct _Cursor_Id), _elm_cursor_strcmp);
 
index e4893ab..259fe8b 100755 (executable)
@@ -2,12 +2,6 @@
 #include "elm_priv.h"
 #include "els_icon.h"
 
-#ifdef _WIN32
-# define FMT_SIZE_T "%Iu"
-#else
-# define FMT_SIZE_T "%zu"
-#endif
-
 typedef struct _Smart_Data Smart_Data;
 
 struct _Smart_Data
@@ -82,21 +76,23 @@ _els_smart_icon_file_helper(Evas_Object *obj)
    /* smart code here */
    /* NOTE: Do not merge upstream for the if (sd->edje) { } statements
       But wonder whether the edje resource icons have no problem. */
-   if (!sd->edje) goto out;
-
-   if (sd->prev) evas_object_del(sd->prev);
-   pclip = evas_object_clip_get(sd->obj);
-   if (sd->obj) sd->prev = sd->obj;
-   sd->obj = evas_object_image_add(evas_object_evas_get(obj));
-   evas_object_event_callback_add(sd->obj, EVAS_CALLBACK_IMAGE_PRELOADED,
-                                  _preloaded, sd);
-   evas_object_smart_member_add(sd->obj, obj);
-   if (sd->prev) evas_object_smart_member_add(sd->prev, obj);
-   evas_object_image_scale_hint_set(sd->obj, EVAS_IMAGE_SCALE_HINT_STATIC);
-   evas_object_clip_set(sd->obj, pclip);
+   if (sd->edje)
+     {
+        if (sd->prev) evas_object_del(sd->prev);
+        pclip = evas_object_clip_get(sd->obj);
+        if (sd->obj) sd->prev = sd->obj;
+        sd->obj = evas_object_image_add(evas_object_evas_get(obj));
+        evas_object_event_callback_add(sd->obj,
+                                       EVAS_CALLBACK_IMAGE_PRELOADED,
+                                       _preloaded, sd);
+        evas_object_smart_member_add(sd->obj, obj);
+        if (sd->prev) evas_object_smart_member_add(sd->prev, obj);
+        evas_object_image_scale_hint_set(sd->obj,
+                                         EVAS_IMAGE_SCALE_HINT_STATIC);
+        evas_object_clip_set(sd->obj, pclip);
 
-   sd->edje = EINA_FALSE;
-out:
+        sd->edje = EINA_FALSE;
+     }
 
    if (!sd->size)
      evas_object_image_load_size_set(sd->obj, sd->size, sd->size);
@@ -118,7 +114,7 @@ _els_smart_icon_memfile_set(Evas_Object *obj, const void *img, size_t size, cons
    evas_object_image_preload(sd->obj, EINA_FALSE);
    if (evas_object_image_load_error_get(sd->obj) != EVAS_LOAD_ERROR_NONE)
      {
-        ERR("Things are going bad for some random " FMT_SIZE_T " byte chunk of memory (%p)", size, sd->obj);
+        ERR("Things are going bad for some random %zu byte chunk of memory (%p)", size, sd->obj);
         return EINA_FALSE;
      }
    _smart_reconfigure(sd);
index 99b6b07..832a8bc 100644 (file)
@@ -1,14 +1,6 @@
 #include <Elementary.h>
 #include "elm_priv.h"
 
-#ifdef ISCOMFITOR
-# define STR(X) #X
-# define STUPID(X) STR(X)
-# define TTDBG(x...) fprintf(stderr, STUPID(__LINE__)": " x)
-#else
-# define TTDBG(X...)
-#endif
-
 static const char _tooltip_key[] = "_elm_tooltip";
 
 #define ELM_TOOLTIP_GET_OR_RETURN(tt, obj, ...)         \
@@ -247,6 +239,9 @@ _elm_tooltip_reconfigure(Elm_Tooltip *tt)
    Evas_Coord eminw, eminh, ominw, ominh;
    double rel_x, rel_y;
    Eina_Bool inside_eventarea;
+#ifdef HAVE_ELEMENTARY_X
+   Ecore_X_Window xwin = 0;
+#endif
 
    _elm_tooltip_reconfigure_job_stop(tt);
 
@@ -342,7 +337,7 @@ _elm_tooltip_reconfigure(Elm_Tooltip *tt)
            _elm_tooltip_content_del_cb, tt);
 
      }
-   TTDBG("*******RECALC\n");
+
    evas_object_size_hint_min_get(tt->content, &ominw, &ominh);
    edje_object_size_min_get(tt->tooltip, &eminw, &eminh);
 
@@ -353,75 +348,61 @@ _elm_tooltip_reconfigure(Elm_Tooltip *tt)
    if (ominh < 1) ominh = 10; /* at least it is noticeable */
 
    edje_object_size_min_restricted_calc(tt->tooltip, &tw, &th, ominw, ominh);
-   TTDBG("TTSIZE:  tw=%d,th=%d,ominw=%d,ominh=%d\n", tw, th, ominw, ominh);
 
    if (tt->tt_win)
-     elm_win_screen_size_get(elm_object_top_widget_get(tt->owner), NULL, NULL, &cw, &ch);
+     elm_win_screen_size_get(elm_object_top_widget_get(tt->owner), &cw, &ch, NULL, NULL);
    if (!cw)
      evas_output_size_get(tt->tt_evas ?: tt->evas, &cw, &ch);
-   TTDBG("SCREEN:  cw=%d,ch=%d\n", cw, ch);
 
    evas_object_geometry_get(tt->eventarea, &ox, &oy, &ow, &oh);
-   TTDBG("EVENTAREA:  ox=%d,oy=%d,ow=%d,oh=%d\n", ox, oy, ow, oh);
 
    if (tt->tt_win)
      {
         int x, y;
-        Evas_Object *win = elm_object_top_widget_get(tt->owner);
 #ifdef HAVE_ELEMENTARY_X
-        Ecore_X_Window xwin = elm_win_xwindow_get(win);
         ecore_x_pointer_xy_get(xwin, &px, &py);
 #endif
-        elm_win_screen_position_get(win, &x, &y);
+        elm_win_screen_position_get(elm_object_top_widget_get(tt->owner), &x, &y);
         ox += x;
-        if (px) px += x;
         oy += y;
-        if (py) py += y;
      }
    else
      evas_pointer_canvas_xy_get(tt->evas, &px, &py);
-   TTDBG("POINTER:  px=%d,py=%d\n", px, py);
+
    inside_eventarea = ((px >= ox) && (py >= oy) &&
                        (px <= ox + ow) && (py <= oy + oh));
    if (inside_eventarea)
      {
-        /* try to position bottom right corner at pointer */
         tx = px - tw;
         ty = py - th;
-        TTDBG("INIT (EVENTAREA)\n");
      }
    else
      {
-        /* try centered on middle of eventarea */
         tx = ox + (ow / 2) - (tw / 2);
         if (0 > (th - oy - oh)) ty = oy + th;
         else ty = oy - oh;
-        TTDBG("INIT (INTERPRETED)\n");
      }
-   TTDBG("ADJUST (POINTER):  tx=%d,ty=%d\n", tx, ty);
+
    if (tx < 0)
      {
-        /* if we're offscreen, try to flip over the Y axis */
         if (abs((tx + 2 * tw) - cw) < abs(tx))
           tx += tw;
      }
-   else if ((tx > px) && (px > tw))
+   else if ((tx > px) && (px > tx))
      {
         if (tx + tw < cw)
           tx += tw;
      }
    if (ty < 0)
      {
-        /* if we're offscreen, try to flip over the X axis */
         if (abs((ty + 2 * th) - ch) < abs(ty))
           ty += th;
      }
-   else if ((ty > py) && (py > th))
+   else if ((ty > py) && (py > ty))
      {
         if (ty + th < ch)
           ty += th;
      }
-   TTDBG("ADJUST (FLIP):  tx=%d,ty=%d\n", tx, ty);
    if (inside_eventarea)
      {
         if ((tx == px) && ((tx + tw + tt->pad.x < cw) || (tx + tw > cw))) tx += tt->pad.x;
@@ -429,7 +410,6 @@ _elm_tooltip_reconfigure(Elm_Tooltip *tt)
         if ((ty == py) && ((ty + th + tt->pad.y < ch) || (ty + th > ch))) ty += tt->pad.y;
         else if ((ty - tt->pad.y > 0) || (ty < 0)) ty -= tt->pad.y;
      }
-   TTDBG("PAD:  tx=%d,ty=%d\n", tx, ty);
    if (tt->pad.bx * 2 + tw < cw)
      {
         if (tx < tt->pad.bx) tx = tt->pad.bx;
@@ -438,6 +418,7 @@ _elm_tooltip_reconfigure(Elm_Tooltip *tt)
      }
    else if (tx < 0) tx -= tt->pad.bx;
    else if (tx > cw) tx += tt->pad.bx;
+
    if (tt->pad.by * 2 + th < ch)
      {
         if (ty < tt->pad.by) ty = tt->pad.by;
@@ -446,12 +427,7 @@ _elm_tooltip_reconfigure(Elm_Tooltip *tt)
      }
    else if (ty < 0) ty -= tt->pad.by;
    else if (ty > ch) ty += tt->pad.by;
-   TTDBG("PAD (BORDER):  tx=%d,ty=%d\n", tx, ty);
-   if ((tx < 0) || (ty < 0))
-     {
-        TTDBG("POSITIONING FAILED! THIS IS A BUG SOMEWHERE!\n");
-        return;
-     }
+
    evas_object_move(tt->tt_win ? : tt->tooltip, tx, ty);
    evas_object_resize(tt->tt_win ? : tt->tooltip, tw, th);
    evas_object_show(tt->tooltip);
index 3956a40..5dbe3a6 100644 (file)
@@ -39,7 +39,7 @@ _exe_del(void *data __UNUSED__, int type __UNUSED__, void *event)
 EAPI int
 elm_modapi_init(void *m __UNUSED__)
 {
-   exe_exit_handler =
+   exe_exit_handler = 
       ecore_event_handler_add(ECORE_EXE_EVENT_DEL,
                               _exe_del, NULL);
    return 1; // succeed always
index 0831e37..6713104 100644 (file)
@@ -131,7 +131,7 @@ _clipboard_menu(void *data, Evas_Object *obj, void *event_info)
 #endif
    ext_mod->cnpinit(data,obj,event_info);
    elm_cbhm_helper_init(obj);
-   if (ext_mod->cnp_mode != ELM_CNP_MODE_MARKUP)
+   if (ext_mod->textonly)
      elm_cbhm_send_raw_data("show0");
    else
      elm_cbhm_send_raw_data("show1");
@@ -208,7 +208,6 @@ 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);
@@ -243,19 +242,14 @@ obj_longpress(Evas_Object *obj)
                {
                   if (!elm_entry_is_empty(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 );
+                       elm_ctxpopup_item_append(ext_mod->popup, "Select", NULL, _select, obj );
+                       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)
-                    added_item = elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj );
+                    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
@@ -268,7 +262,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);
-                  added_item = elm_ctxpopup_item_append(ext_mod->popup, NULL, icon, _clipboard_menu, obj);
+                  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
@@ -279,32 +273,24 @@ obj_longpress(Evas_Object *obj)
                {
                   if (ext_mod->have_selection)
                     {
-                       added_item = elm_ctxpopup_item_append(ext_mod->popup, "Copy", NULL, _copy, obj );
+                       elm_ctxpopup_item_append(ext_mod->popup, "Copy", NULL, _copy, obj );
                        if (ext_mod->editable)
-                         added_item = elm_ctxpopup_item_append(ext_mod->popup, "Cut", NULL, _cut, obj );
-#ifdef HAVE_ELEMENTARY_X
-                       if (ext_mod->editable && cbhm_count)
-#else
+                         elm_ctxpopup_item_append(ext_mod->popup, "Cut", NULL, _cut, obj );
                        if (ext_mod->editable)
-#endif
-                         added_item = elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj );
+                         elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj );
                     }
                   else
                     {
                        _cancel(obj,ext_mod->popup,NULL);
                        if (!elm_entry_is_empty(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 );
+                            elm_ctxpopup_item_append(ext_mod->popup, "Select", NULL, _select, obj );
+                            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)
-                              added_item = elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj );
+                              elm_ctxpopup_item_append(ext_mod->popup, "Paste", NULL, _paste, obj );
                          }
                     }
                   // start for cbhm
@@ -317,7 +303,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);
-                       added_item = elm_ctxpopup_item_append(ext_mod->popup, NULL, icon, _clipboard_menu, obj);
+                       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
@@ -325,9 +311,9 @@ obj_longpress(Evas_Object *obj)
           }
         EINA_LIST_FOREACH(ext_mod->items, l, it)
           {
-             added_item = elm_ctxpopup_item_append(ext_mod->popup, it->label, NULL, _item_clicked, it );
+             elm_ctxpopup_item_append(ext_mod->popup, it->label, NULL, _item_clicked, it );
           }
-        if (ext_mod->popup && added_item)
+        if (ext_mod->popup)
           {
              elm_object_scroll_freeze_push(ext_mod->popup);
              _ctxpopup_position(obj);
index 854857b..83c28df 100644 (file)
@@ -117,7 +117,7 @@ _clipboard_menu(void *data, Evas_Object *obj, void *event_info)
 #endif
        ext_mod->cnpinit(data,obj,event_info);
        elm_cbhm_helper_init(obj);
-       if (ext_mod->cnp_mode != ELM_CNP_MODE_MARKUP)
+       if (ext_mod->textonly)
                elm_cbhm_send_raw_data("show0");
        else
                elm_cbhm_send_raw_data("show1");
index 381f711..2a6ef7d 100644 (file)
@@ -54,18 +54,18 @@ _cancel(void *data, Evas_Object *obj, void *event_info)
 static void
 _clipboard_menu(void *data, Evas_Object *obj, void *event_info)
 {
-   // start for cbhm
+       // start for cbhm
 #ifdef HAVE_ELEMENTARY_X
-   ecore_x_selection_secondary_set(elm_win_xwindow_get(obj), "",1);
+       ecore_x_selection_secondary_set(elm_win_xwindow_get(obj), "",1);
 #endif
-   ext_mod->cnpinit(data,obj,event_info);
-   elm_cbhm_helper_init(obj);
-   if (ext_mod->cnp_mode != ELM_CNP_MODE_MARKUP)
-     elm_cbhm_send_raw_data("show0");
-   else
-     elm_cbhm_send_raw_data("show1");
-   evas_object_hide(ext_mod->popup);
-   // end for cbhm
+       ext_mod->cnpinit(data,obj,event_info);
+       elm_cbhm_helper_init(obj);
+        if (ext_mod->textonly)
+               elm_cbhm_send_raw_data("show0");
+       else
+               elm_cbhm_send_raw_data("show1");
+       evas_object_hide(ext_mod->popup);
+       // end for cbhm
 }
 
 static void