1.7.2 release
+2012-11-23 Carsten Haitzler (The Rasterman)
+
+ * Fix build on systems without clearenv() (eg bsd).
+
+2012-11-23 ChunEon Park (Hermet)
+
+ * Free the text parts of the naviframe item when item is deleted.
+
+2012-11-29 ChunEon Park (Hermet)
+
+ * Fix the mapbuf to update it's contents correctly, even if they go
+ outside of the buffer
+
+2012-11-30 ChunEon Park (Hermet)
+
+ * Fix the naviframe to resize it's items which are inserted.
+
+2012-11-30 WooHyun Jung
+
+ * Fix layout when content_set or text_set is called with NULL part name.
+
+2012-11-30 ChunEon Park (Hermet)
+
+ * emit the signals for content_set/unset text_set/unset one time!
+
+2012-12-02 Mike Blumenkrantz
+
+ * Fix case where tooltips could go offscreen unnecessarily
+
+2012-12-04 Cedric Bail
+
+ * Fix a possible divide by zero in els_scroller animator.
+
+2012-12-05 Cedric Bail
+
+ * Fix uninitialized data path in elm_flip, elm_gesture_layer,
+ elm_interface_scrollable, els_scroller.
+
+2012-12-05 Shilpa Onkar Singh (shilpa.singh@samsung.com)
+
+ * Fix naviframe to not send hide signals even before item doens't created
+ yet.
+
+2012-12-06 Cedric Bail
+
+ * Fix possible segv in elm_quicklaunch infrastructure.
+ * Make sure elm_conform always finish with at least one '\0'.
+ * Fix forgotten break in elm_map that would have thrown error when the
+ action was properly taken in fact.
+
+2012-12-06 ChunEon Park (Hermet)
+
+ * Fix the mapbuf to show the content always. Sometimes mapbuf couldn't show
+ the content properly.
+
+2012-12-07 Cedric Bail
+
+ * Safer call to mkstemp in elm_cnp.
+ * Simplify test in elm_entry_text_set.
+
+2012-12-06 Daniel Juyung Seo (SeoZ)
+
+ * Fix wheel scroll direction with shift.
+
+2012-12-07 WooHyun Jung
+
+ * Fix focus problem in multibuttonentry. Entry can get focus only when multibuttonentry is focused.
+
+2012-12-07 Luis Felipe Strano Moraes
+
+ * Release 1.7.3
+Elementary 1.7.3
+
+Changes since Elementary 1.7.2:
+-------------------------
+
+Fixes:
+
+ * Fix the naviframe to clear the text parts when it's item is deleted.
+ * Fix the mapbuf to update it's content correcltly evenif they go outside of the buffer.
+ * Fix the naviframe to resize it's items which are inserted.
+ * Fix layout when content_set or text_set is executed with NULL part name.
+ * Fix the naviframe to send signal emits one time for content show/hide, text show/hide.
+ * Fix case where tooltips could go offscreen unnecessarily
+ * Fix possible divide by zero in els_scroller animator.
+ * Fix uninitialized data path in elm_flip, elm_gesture_layer, elm_interface_scrollable, els_scroller.
+ * Fix possible segv in elm_quicklaunch infrastructure.
+ * Fix elm_conform buffer to always terminate with at least one '\0'.
+ * Fix forgotten break in elm_map that would have thrown error when the action was properly
+ taken in fact.
+ * Fix the mapbuf to show it's content properly, If the content doesn't
+ have resized, it wouldn't be showed up.
+ * Safer call to mkstemp in elm_cnp.
+ * Simplify test in elm_entry_text_set.
+ * Fix wheel scroll direction with shift.
+ * Fix focus problem in multibuttonentry. Entry can get focus only when multibuttonentry is focused.
+
Elementary 1.7.2
Changes since Elementary 1.7.1:
* Fix flip widget who show the two face at same time
* Fix the naviframe to delete contents which are preserved_on set if the naviframe is deleted.
* Fix the naviframe to clear the title contents when it's item is deleted.
+ * Fix the naviframe to clear the text parts when it's item is deleted.
Changes since Elementary 1.7.0:
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for elementary 1.7.2.
+# Generated by GNU Autoconf 2.68 for elementary 1.7.3.
#
# Report bugs to <enlightenment-devel@lists.sourceforge.net>.
#
# Identity of this package.
PACKAGE_NAME='elementary'
PACKAGE_TARNAME='elementary'
-PACKAGE_VERSION='1.7.2'
-PACKAGE_STRING='elementary 1.7.2'
+PACKAGE_VERSION='1.7.3'
+PACKAGE_STRING='elementary 1.7.3'
PACKAGE_BUGREPORT='enlightenment-devel@lists.sourceforge.net'
PACKAGE_URL=''
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures elementary 1.7.2 to adapt to many kinds of systems.
+\`configure' configures elementary 1.7.3 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of elementary 1.7.2:";;
+ short | recursive ) echo "Configuration of elementary 1.7.3:";;
esac
cat <<\_ACEOF
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-elementary configure 1.7.2
+elementary configure 1.7.3
generated by GNU Autoconf 2.68
Copyright (C) 2010 Free Software Foundation, Inc.
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by elementary $as_me 1.7.2, which was
+It was created by elementary $as_me 1.7.3, which was
generated by GNU Autoconf 2.68. Invocation command line was
$ $0 $@
# Define the identity of the package.
PACKAGE='elementary'
- VERSION='1.7.2'
+ VERSION='1.7.3'
cat >>confdefs.h <<_ACEOF
cat >>confdefs.h <<_ACEOF
-#define VMIC 2
+#define VMIC 3
_ACEOF
#define VREV 0
_ACEOF
-version_info="8:2:7"
+version_info="8:3:7"
release_info=""
MODULE_EDJE="$host_os-$host_cpu"
;;
*)
- MODULE_ARCH="$host_os-$host_cpu-1.7.2"
+ MODULE_ARCH="$host_os-$host_cpu-1.7.3"
MODULE_EDJE="$host_os-$host_cpu-${EDJE_VERSION}"
;;
esac
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by elementary $as_me 1.7.2, which was
+This file was extended by elementary $as_me 1.7.3, which was
generated by GNU Autoconf 2.68. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-elementary config.status 1.7.2
+elementary config.status 1.7.3
configured by $0, generated by GNU Autoconf 2.68,
with options \\"\$ac_cs_config\\"
##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
m4_define([v_maj], [1])
m4_define([v_min], [7])
-m4_define([v_mic], [2])
+m4_define([v_mic], [3])
m4_define([v_rev], m4_esyscmd([(svnversion "${SVN_REPO_PATH:-.}" | grep -v '\(export\|Unversioned directory\)' || echo 0) | awk -F : '{printf("%s\n", $1);}' | tr -d ' :MSP\n']))
m4_if(v_rev, [0], [m4_define([v_rev], m4_esyscmd([git log 2> /dev/null | (grep -m1 git-svn-id || echo 0) | sed -e 's/.*@\([0-9]*\).*/\1/' | tr -d '\n']))])
##-- When released, remove the dnl on the below line
Summary: EFL toolkit for small touchscreens
Name: elementary
-Version: 1.7.2
+Version: 1.7.3
Release: %{_rel}
License: Lesser GPL
Group: System Environment/Libraries
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2012-11-22 15:42-0800\n"
+"POT-Creation-Date: 2012-12-07 14:14-0200\n"
"PO-Revision-Date: 2010-12-26 10:05+0200\n"
"Last-Translator: Tom Hacohen <tom.hacohen@samsung.com>\n"
"Language-Team: General\n"
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2012-11-22 15:42-0800\n"
+"POT-Creation-Date: 2012-12-07 14:14-0200\n"
"PO-Revision-Date: 2010-12-26 10:05+0200\n"
"Last-Translator: Tom Hacohen <tom.hacohen@samsung.com>\n"
"Language-Team: General\n"
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2012-11-22 15:42-0800\n"
+"POT-Creation-Date: 2012-12-07 14:14-0200\n"
"PO-Revision-Date: 2011-10-23 01:31+0100\n"
"Last-Translator: Daniel Kolesa <quaker66@gmail.com>\n"
"Language-Team: Czech <kde-i18n-doc@kde.org>\n"
msgstr ""
"Project-Id-Version: elementary 0.7.0.57309\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2012-11-22 15:42-0800\n"
+"POT-Creation-Date: 2012-12-07 14:14-0200\n"
"PO-Revision-Date: 2011-02-25 20:22+0100\n"
"Last-Translator: Fabian Nowak <timystery@arcor.de>\n"
"Language-Team: German\n"
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: elementary 1.7.2\n"
+"Project-Id-Version: elementary 1.7.3\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2012-11-22 15:42-0800\n"
+"POT-Creation-Date: 2012-12-07 14:14-0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2012-11-22 15:42-0800\n"
+"POT-Creation-Date: 2012-12-07 14:14-0200\n"
"PO-Revision-Date: 2010-12-26 10:05+0200\n"
"Last-Translator: Tom Hacohen <tom.hacohen@samsung.com>\n"
"Language-Team: General\n"
msgstr ""
"Project-Id-Version: Elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2012-11-22 15:42-0800\n"
+"POT-Creation-Date: 2012-12-07 14:14-0200\n"
"PO-Revision-Date: 2011-11-08 07:57+0100\n"
"Last-Translator: dazibao <dazibao@sfr.fr>\n"
"Language-Team: French <sansgourou@gmail.com>\n"
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2012-11-22 15:42-0800\n"
+"POT-Creation-Date: 2012-12-07 14:14-0200\n"
"PO-Revision-Date: 2010-12-26 10:05+0200\n"
"Last-Translator: Aharon Hillel <a.hillel@samsung.com>\n"
"Language-Team: General\n"
msgstr ""
"Project-Id-Version: Elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2012-11-22 15:42-0800\n"
+"POT-Creation-Date: 2012-12-07 14:14-0200\n"
"PO-Revision-Date: 2012-08-14 23:01+0200\n"
"Last-Translator: Massimo Maiurana <maiurana@gmail.com>\n"
"Language-Team: none\n"
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2012-11-22 15:42-0800\n"
+"POT-Creation-Date: 2012-12-07 14:14-0200\n"
"PO-Revision-Date: 2011-02-22 09:09-0800\n"
"Last-Translator: Daniel Juyung Seo <seojuyung@gmail.com>\n"
"Language-Team: General\n"
msgstr ""
"Project-Id-Version: elementary 0.7.0.57309\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2012-11-22 15:42-0800\n"
+"POT-Creation-Date: 2012-12-07 14:14-0200\n"
"PO-Revision-Date: 2011-06-19 16:41+0100\n"
"Last-Translator: Heimen Stoffels <vistausss@gmail.com>\n"
"Language-Team: Dutch <vistausss@gmail.com>\n"
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2012-11-22 15:42-0800\n"
+"POT-Creation-Date: 2012-12-07 14:14-0200\n"
"PO-Revision-Date: 2010-12-26 10:05+0200\n"
"Last-Translator: Tom Hacohen <tom.hacohen@samsung.com>\n"
"Language-Team: General\n"
msgstr ""
"Project-Id-Version: Elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2012-11-22 15:42-0800\n"
+"POT-Creation-Date: 2012-12-07 14:14-0200\n"
"PO-Revision-Date: 2012-08-14 16:16-0000\n"
"Last-Translator: Sérgio Marques <smarquespt@gmail.com>\n"
"Language-Team: \n"
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2012-11-22 15:42-0800\n"
+"POT-Creation-Date: 2012-12-07 14:14-0200\n"
"PO-Revision-Date: 2010-12-26 10:05+0200\n"
"Last-Translator: Tom Hacohen <tom.hacohen@samsung.com>\n"
"Language-Team: General\n"
msgstr ""
"Project-Id-Version: elementary\n"
"Report-Msgid-Bugs-To: enlightenment-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2012-11-22 15:42-0800\n"
+"POT-Creation-Date: 2012-12-07 14:14-0200\n"
"PO-Revision-Date: 2010-12-26 10:05+0200\n"
"Last-Translator: Tom Hacohen <tom.hacohen@samsung.com>\n"
"Language-Team: General\n"
argc = ((unsigned long *)(buf))[0];
envnum = ((unsigned long *)(buf))[1];
+
+ if (argc <= 0)
+ {
+ CRITICAL("no executable specified");
+ close(fd);
+ return;
+ }
- if (argc > 0) argv = alloca(argc * sizeof(char *));
+ argv = alloca(argc * sizeof(char *));
if (envnum > 0) envir = alloca(envnum * sizeof(char *));
off = ((unsigned long *)(buf))[2 + argc + envnum] - sizeof(unsigned long);
cwd = (char *)(buf + off);
-
- if (argv)
+
+ for (i = 0; i < argc; i++)
{
- for (i = 0; i < argc; i++)
- {
- off = ((unsigned long *)(buf))[2 + i] - sizeof(unsigned long);
- argv[i] = (char *)(buf + off);
- }
+ off = ((unsigned long *)(buf))[2 + i] - sizeof(unsigned long);
+ argv[i] = (char *)(buf + off);
}
#ifdef HAVE_ENVIRON
wd->focused = EINA_TRUE;
_view_update(data);
- if (wd->editable)
+ if (elm_widget_focus_get(data) && wd->editable)
{
elm_entry_input_panel_show(wd->entry);
elm_object_focus_set(wd->entry, EINA_TRUE);
{
Eina_Inlist *l;
Elm_Naviframe_Content_Item_Pair *content_pair;
- Evas_Object *title_content;
+ Elm_Naviframe_Text_Item_Pair *text_pair;
ELM_NAVIFRAME_DATA_GET(WIDGET(it), sd);
eina_stringshare_del(it->title_label);
eina_stringshare_del(it->subtitle_label);
- if (it->title_prev_btn)
- evas_object_del(it->title_prev_btn);
- if (it->title_next_btn)
- evas_object_del(it->title_next_btn);
+ if (it->title_prev_btn) evas_object_del(it->title_prev_btn);
+ if (it->title_next_btn) evas_object_del(it->title_next_btn);
if (it->title_icon) evas_object_del(it->title_icon);
EINA_INLIST_FOREACH_SAFE(it->content_list, l, content_pair)
{
- title_content = edje_object_part_swallow_get(VIEW(it), content_pair->part);
- if (title_content)
+ if (content_pair->content)
{
- evas_object_event_callback_del(title_content,
+ evas_object_event_callback_del(content_pair->content,
EVAS_CALLBACK_DEL,
_title_content_del);
- evas_object_del(title_content);
+ evas_object_del(content_pair->content);
}
eina_stringshare_del(content_pair->part);
free(content_pair);
}
+ EINA_INLIST_FOREACH_SAFE(it->text_list, l, text_pair)
+ {
+ eina_stringshare_del(text_pair->part);
+ free(text_pair);
+ }
if (it->content)
{
EINA_INLIST_FOREACH(it->content_list, content_pair)
{
- if (edje_object_part_swallow_get(VIEW(it), content_pair->part))
- {
- snprintf(buf, sizeof(buf), "elm,state,%s,show", content_pair->part);
- edje_object_signal_emit(VIEW(it), buf, "elm");
- }
+ if (content_pair->content)
+ snprintf(buf, sizeof(buf), "elm,state,%s,show", content_pair->part);
else
- {
- snprintf(buf, sizeof(buf), "elm,state,%s,hide", content_pair->part);
- edje_object_signal_emit(VIEW(it), buf, "elm");
- }
+ snprintf(buf, sizeof(buf), "elm,state,%s,hide", content_pair->part);
+ edje_object_signal_emit(VIEW(it), buf, "elm");
}
}
char buf[1024];
if ((it->title_label) && (it->title_label[0]))
- edje_object_signal_emit(VIEW(it), "elm,state,title_label,show", "elm");
+ edje_object_signal_emit(VIEW(it), "elm,state,title,show", "elm");
else
- edje_object_signal_emit(VIEW(it), "elm,state,title_label,hide", "elm");
+ edje_object_signal_emit(VIEW(it), "elm,state,title,hide", "elm");
if ((it->subtitle_label) && (it->subtitle_label[0]))
edje_object_signal_emit(VIEW(it), "elm,state,subtitle,show", "elm");
EINA_INLIST_FOREACH(it->text_list, text_pair)
{
if (edje_object_part_text_get(VIEW(it), text_pair->part))
- {
- snprintf(buf, sizeof(buf), "elm,state,%s,show", text_pair->part);
- edje_object_signal_emit(VIEW(it), buf, "elm");
- }
+ snprintf(buf, sizeof(buf), "elm,state,%s,show", text_pair->part);
else
- {
- snprintf(buf, sizeof(buf), "elm,state,%s,hide", text_pair->part);
- edje_object_signal_emit(VIEW(it), buf, "elm");
- }
+ snprintf(buf, sizeof(buf), "elm,state,%s,hide", text_pair->part);
+ edje_object_signal_emit(VIEW(it), buf, "elm");
}
}
+static void
+_item_signals_emit(Elm_Naviframe_Item *it)
+{
+ _item_text_signals_emit(it);
+ _item_content_signals_emit(it);
+}
+
/* FIXME: we need to handle the case when this function is called
* during a transition */
static void
elm_widget_theme_object_set
(WIDGET(it), VIEW(it), "naviframe", buf, elm_widget_style_get(WIDGET(it)));
- _item_text_signals_emit(it);
- _item_content_signals_emit(it);
-
if (sd->freeze_events)
evas_object_freeze_events_set(VIEW(it), EINA_FALSE);
}
EINA_INLIST_FOREACH (sd->stack, it)
{
_item_style_set(it, it->style);
+ _item_signals_emit(it);
_item_title_visible_update(it);
}
{
eina_stringshare_replace(&nit->title_label, label);
snprintf(buf, sizeof(buf), "elm.text.title");
+ if (label)
+ edje_object_signal_emit(VIEW(it), "elm,state,title,show", "elm");
+ else
+ edje_object_signal_emit(VIEW(it), "elm,state,title,hide", "elm");
//XXX: ACCESS
if (_elm_config->access_mode == ELM_ACCESS_MODE_ON)
{
eina_stringshare_replace(&nit->subtitle_label, label);
snprintf(buf, sizeof(buf), "elm.text.subtitle");
+ if (label)
+ edje_object_signal_emit(VIEW(it), "elm,state,subtitle,show", "elm");
+ else
+ edje_object_signal_emit(VIEW(it), "elm,state,subtitle,hide", "elm");
//XXX: ACCESS
if (_elm_config->access_mode == ELM_ACCESS_MODE_ON)
eina_stringshare_replace(&pair->part, buf);
nit->text_list = eina_inlist_append(nit->text_list,
EINA_INLIST_GET(pair));
+ if (label)
+ snprintf(buf, sizeof(buf), "elm,state,%s,show", part);
+ else
+ snprintf(buf, sizeof(buf), "elm,state,%s,hide", part);
+ edje_object_signal_emit(VIEW(it), buf, "elm");
}
//XXX: ACCESS
}
edje_object_part_text_set(VIEW(nit), buf, label);
- _item_text_signals_emit(nit);
elm_layout_sizing_eval(WIDGET(nit));
}
if (!content) return;
edje_object_part_swallow(VIEW(it), CONTENT_PART, content);
+ edje_object_signal_emit(VIEW(it), "elm,state,content,show", "elm");
evas_object_event_callback_add
(content, EVAS_CALLBACK_DEL, _item_content_del_cb, it);
if (!btn) return;
edje_object_part_swallow(VIEW(it), PREV_BTN_PART, btn);
+ edje_object_signal_emit(VIEW(it), "elm,state,prev_btn,show", "elm");
evas_object_event_callback_add
(btn, EVAS_CALLBACK_DEL, _item_title_prev_btn_del_cb, it);
if (!btn) return;
edje_object_part_swallow(VIEW(it), NEXT_BTN_PART, btn);
+ edje_object_signal_emit(VIEW(it), "elm,state,next_btn,show", "elm");
evas_object_event_callback_add
(btn, EVAS_CALLBACK_DEL, _item_title_next_btn_del_cb, it);
if (!icon) return;
edje_object_part_swallow(VIEW(it), ICON_PART, icon);
+ edje_object_signal_emit(VIEW(it), "elm,state,icon,show", "elm");
evas_object_event_callback_add
(icon, EVAS_CALLBACK_DEL, _item_title_icon_del_cb, it);
if (!content) return NULL;
edje_object_part_unswallow(VIEW(it), it->content);
+ edje_object_signal_emit(VIEW(it), "elm,state,content,hide", "elm");
evas_object_event_callback_del
(content, EVAS_CALLBACK_DEL, _item_content_del_cb);
if (!content) return NULL;
edje_object_part_unswallow(VIEW(it), it->title_prev_btn);
+ edje_object_signal_emit(VIEW(it), "elm,state,prev_btn,hide", "elm");
evas_object_event_callback_del
(content, EVAS_CALLBACK_DEL, _item_title_prev_btn_del_cb);
if (!content) return NULL;
edje_object_part_unswallow(VIEW(it), it->title_next_btn);
+ edje_object_signal_emit(VIEW(it), "elm,state,next_btn,hide", "elm");
evas_object_event_callback_del
(content, EVAS_CALLBACK_DEL, _item_title_next_btn_del_cb);
if (!content) return NULL;
edje_object_part_unswallow(VIEW(it), it->title_icon);
+ edje_object_signal_emit(VIEW(it), "elm,state,icon,hide", "elm");
evas_object_event_callback_del
(content, EVAS_CALLBACK_DEL, _item_title_icon_del_cb);
Evas_Object *content)
{
Elm_Naviframe_Content_Item_Pair *pair = NULL;
- Evas_Object *prev_content = NULL;
char buf[1024];
EINA_INLIST_FOREACH(it->content_list, pair)
if (!strcmp(part, pair->part)) break;
if (pair)
{
- prev_content = edje_object_part_swallow_get(VIEW(it), part);
- if (prev_content != content)
+ if (pair->content == content) return;
+ if (content) edje_object_part_swallow(VIEW(it), part, content);
+ if (pair->content)
{
- if (content)
- {
- evas_object_event_callback_del(prev_content,
- EVAS_CALLBACK_DEL,
- _title_content_del);
- snprintf(buf, sizeof(buf), "elm,state,%s,hide", part);
- elm_object_signal_emit(VIEW(it), buf, "elm");
- }
- evas_object_del(prev_content);
- if (!content) return;
+ evas_object_event_callback_del(pair->content,
+ EVAS_CALLBACK_DEL,
+ _title_content_del);
+ evas_object_del(pair->content);
}
}
else
{
if (!content) return;
+
+ //Remove the pair if new content was swallowed into other part.
+ EINA_INLIST_FOREACH(it->content_list, pair)
+ {
+ if (pair->content == content)
+ {
+ eina_stringshare_del(pair->part);
+ it->content_list = eina_inlist_remove(it->content_list,
+ EINA_INLIST_GET(pair));
+ free(pair);
+ evas_object_event_callback_del(pair->content,
+ EVAS_CALLBACK_DEL,
+ _title_content_del);
+ break;
+ }
+ }
+
+ //New pair
pair = ELM_NEW(Elm_Naviframe_Content_Item_Pair);
if (!pair)
{
eina_stringshare_replace(&pair->part, part);
it->content_list = eina_inlist_append(it->content_list,
EINA_INLIST_GET(pair));
- }
- if (prev_content != content)
- {
- evas_object_event_callback_add(content,
- EVAS_CALLBACK_DEL,
- _title_content_del,
- pair);
- }
- edje_object_part_swallow(VIEW(it), part, content);
+ edje_object_part_swallow(VIEW(it), part, content);
+ snprintf(buf, sizeof(buf), "elm,state,%s,show", part);
+ edje_object_signal_emit(VIEW(it), buf, "elm");
+ }
+ pair->content = content;
+ evas_object_event_callback_add(content,
+ EVAS_CALLBACK_DEL,
+ _title_content_del,
+ pair);
}
static void
else
_title_content_set(nit, part, content);
- _item_content_signals_emit(nit);
-
elm_layout_sizing_eval(WIDGET(it));
}
{
if (!strcmp(part, pair->part))
{
- content = edje_object_part_swallow_get(VIEW(it), part);
+ content = pair->content;
eina_stringshare_del(pair->part);
it->content_list = eina_inlist_remove(it->content_list,
EINA_INLIST_GET(pair));
else
o = _title_content_unset(nit, part);
- _item_content_signals_emit(nit);
-
elm_layout_sizing_eval(WIDGET(it));
return o;
evas_object_size_hint_max_set(obj, -1, -1);
}
-static Eina_Bool
-_item_pop_idler(void *data)
-{
- elm_naviframe_item_pop(data);
-
- return ECORE_CALLBACK_CANCEL;
-}
-
static void
_on_item_back_btn_clicked(void *data,
Evas_Object *obj,
prevent those scenario and guarantee only one clicked for it's own
page. */
evas_object_smart_callback_del(obj, "clicked", _on_item_back_btn_clicked);
-
- ecore_idler_add(_item_pop_idler, data);
+ elm_naviframe_item_pop(data);
}
static Evas_Object *
(VIEW(it), "elm,action,title,clicked", "", _on_item_title_clicked, it);
_item_style_set(it, item_style);
- _item_text_set_hook((Elm_Object_Item *)it, "elm.text.title", title_label);
+
+ if (title_label)
+ _item_text_set_hook((Elm_Object_Item *)it, "elm.text.title", title_label);
//title buttons
if ((!prev_btn) && sd->auto_pushed && prev_it)
it = _item_new(obj, prev_it,
title_label, prev_btn, next_btn, content, item_style);
if (!it) return NULL;
+ elm_widget_resize_object_set(obj, VIEW(it));
sd->stack = eina_inlist_prepend_relative
(sd->stack, EINA_INLIST_GET(it),
it = _item_new(obj, (Elm_Naviframe_Item *)after,
title_label, prev_btn, next_btn, content, item_style);
if (!it) return NULL;
+ elm_widget_resize_object_set(obj, VIEW(it));
/* let's share that whole logic, if it goes to the top */
if (elm_naviframe_top_item_get(obj) == after)
if (!strcmp("basic", nit->style)) return;
_item_style_set(nit, item_style);
+ _item_signals_emit(nit);
_item_title_visible_update(nit);
}
#ifdef HAVE_MMAN_H
Tmp_Info *info;
const char *tmppath;
+ mode_t cur_umask;
int len;
info = malloc(sizeof(Tmp_Info));
return NULL;
}
snprintf(info->filename,len,"%s/%sXXXXXX", tmppath, "elmcnpitem-");
+ cur_umask = umask(S_IRWXO | S_IRWXG);
info->fd = mkstemp(info->filename);
+ umask(cur_umask);
# ifdef __linux__
{
char *tmp;
/* strtok would modify env var if not copied to a buffer */
strncpy(buf, env_val, sizeof(buf));
+ buf[PATH_MAX - 1] = '\0';
token = strtok(buf, delimiters);
if (!token) return EINA_FALSE;
{
edje_object_part_text_set(wd->ent, "elm.text", entry);
}
- if ((entry) && (entry[0]))
+ if (len > 0)
_elm_entry_update_guide(obj, EINA_TRUE);
else
_elm_entry_update_guide(obj, EINA_FALSE);
{
Vertex3 vo[4];
+ memset(vo, 0, sizeof (vo));
+
if (b > 0) nn = num + sd->slices_h - row - 1;
else nn = num + row;
Evas_Callback_Type event_type,
Elm_Gesture_Type g_type)
{
+ Evas_Event_Flags ev_flag = EVAS_EVENT_FLAG_NONE;
+ Gesture_Info *gesture;
+ Rotate_Type *st = NULL;
+
if (!_elm_config->glayer_rotate_finger_enable)
return;
if (!sd->gesture[g_type]) return;
- Gesture_Info *gesture = sd->gesture[g_type];
- Rotate_Type *st;
- if (gesture)
+ gesture = sd->gesture[g_type];
+ if (!gesture) return ;
+
+ st = gesture->data;
+ if (!st) /* Allocated once on first time */
{
- st = gesture->data;
- if (!st) /* Allocated once on first time */
- {
- st = calloc(1, sizeof(Rotate_Type));
- gesture->data = st;
- _rotate_test_reset(gesture);
- }
+ st = calloc(1, sizeof(Rotate_Type));
+ gesture->data = st;
+ _rotate_test_reset(gesture);
}
- Evas_Event_Flags ev_flag = EVAS_EVENT_FLAG_NONE;
switch (event_type)
{
case EVAS_CALLBACK_MOUSE_MOVE:
(evas_key_modifier_is_set(ev->modifiers, "Super")))
return;
else if (evas_key_modifier_is_set(ev->modifiers, "Shift"))
- direction = 1;
+ direction = !direction;
_elm_scroll_content_pos_get(sid->obj, &x, &y);
if ((sid->down.bounce_x_animator) || (sid->down.bounce_y_animator) ||
(sid->scrollto.x.animator) || (sid->scrollto.y.animator))
tdiff = sid->down.hist.est_timestamp_diff;
tnow = ecore_time_get() - tdiff;
+ memset(pos, 0, sizeof (pos));
+
for (i = 0; i < QUEUE_SIZE; i++)
{
x = sid->down.history[i].x;
#undef ALIAS_LIST
- if (!aliases) return EINA_TRUE;
-
- while (aliases->alias && aliases->real_part)
+ while (aliases && aliases->alias && aliases->real_part)
{
/* NULL matches the 1st */
if ((!*part) || (!strcmp(*part, aliases->alias)))
char **argv) = NULL;
EAPI Eina_Bool
-elm_quicklaunch_prepare(int argc __UNUSED__,
- char **argv)
+elm_quicklaunch_prepare(int argc,
+ char **argv)
{
#ifdef HAVE_FORK
- char *exe = elm_quicklaunch_exe_path_get(argv[0]);
+ char *exe;
+
+ if (argc <= 0 || argv == NULL) return EINA_FALSE;
+
+ exe = elm_quicklaunch_exe_path_get(argv[0]);
if (!exe)
{
ERR("requested quicklaunch binary '%s' does not exist\n", argv[0]);
case ELM_MAP_OVERLAY_TYPE_SCALE:
if (overlay->visible) _overlay_scale_show(overlay->ovl);
else _overlay_scale_hide(overlay->ovl);
+ break;
default:
ERR("Invalid overlay type to show: %d", overlay->type);
}
{
ELM_MAPBUF_DATA_GET(obj, sd);
- if (sd->content)
- {
- Evas_Coord x, y, w, h, x2, y2;
+ if (!sd->content) return;
+ Evas_Coord x, y, w, h, x2, y2, w2, h2;
+ evas_object_geometry_get(ELM_WIDGET_DATA(sd)->resize_obj, &x, &y, &w, &h);
+ evas_object_geometry_get(sd->content, &x2, &y2, &w2, &h2);
- evas_object_geometry_get
- (ELM_WIDGET_DATA(sd)->resize_obj, &x, &y, &w, &h);
- evas_object_geometry_get(sd->content, &x2, &y2, NULL, NULL);
- if ((x != x2) || (y != y2))
+ if ((x != x2) || (y != y2) || (w != w2) || (h != h2))
+ {
+ if (!sd->enabled)
+ evas_object_move(sd->content, x, y);
+ else
{
- if (!sd->enabled)
+ //Let give the chance to update the content whenever content is
+ //coming inside buffer from the outside. It means the content may
+ //have been changed when it is on the outside, but the surface
+ //may not be updated because contents would be outside of the
+ //viewport.
+ Evas_Coord output_w, output_h;
+ Evas *e = evas_object_evas_get(obj);
+ evas_output_size_get(e, &output_w, &output_h);
+ Eina_Bool update = EINA_FALSE;
+
+ if ((x2 >= output_w) || (y2 >= output_h) ||
+ ((x2 + w2) <= 0) || ((y2 + h2) <= 0))
+ sd->outside = EINA_TRUE;
+ else if (sd->outside)
+ {
+ sd->outside = EINA_FALSE;
+ update = EINA_TRUE;
+ }
+
+ if (update)
evas_object_move(sd->content, x, y);
else
{
- Evas *e = evas_object_evas_get(obj);
evas_smart_objects_calculate(e);
evas_nochange_push(e);
evas_object_move(sd->content, x, y);
Eina_Bool enabled : 1;
Eina_Bool smooth : 1;
Eina_Bool alpha : 1;
+ Eina_Bool outside : 1;
};
/**
{
EINA_INLIST;
const char *part;
+ Evas_Object *content;
Elm_Naviframe_Item *it;
};
tdiff = sd->down.hist.est_timestamp_diff;
tnow = ecore_time_get() - tdiff;
+ memset(pos, 0, sizeof (pos));
+
for(i = 0; i < queue_size; i++)
{
x = sd->down.history[i].x;
while ((pos[src_index].t < time_interval * i) && (src_index <= count))
{
src_index++;
- }
+ }
if (src_index <= count)
- {
+ {
xsum += pos[src_index].x;
ysum += pos[src_index].y;
dst_index++;
}
}
+ /* Prevent a potential divide by zero when count < 0 and src_index == 0 */
+ if (!dst_index) dst_index = 1;
fx = xsum / dst_index;
fy = ysum / dst_index;
}
TTDBG("INIT (INTERPRETED)\n");
}
TTDBG("ADJUST (POINTER): tx=%d,ty=%d\n", tx, ty);
- if (tx < 0)
+ if ((tx < 0) || (tx + tw > cw))
{
/* if we're offscreen, try to flip over the Y axis */
- if (abs((tx + 2 * tw) - cw) < abs(tx))
+ if ((tx < 0) && (abs((tx + 2 * tw) - cw) < abs(tx)))
tx += tw;
+ else if (tx + tw > cw)
+ {
+ int test_x = tx - tw;
+
+ if ((test_x >= 0) || (tx + tw - cw > abs(test_x)))
+ tx -= tw;
+ }
}
else if ((tx > px) && (px > tw))
{
if (tx + tw < cw)
tx += tw;
}
- if (ty < 0)
+ if ((ty < 0) || (ty + th > ch))
{
/* if we're offscreen, try to flip over the X axis */
- if (abs((ty + 2 * th) - ch) < abs(ty))
+ if ((ty < 0) && (abs((ty + 2 * th) - ch) < abs(ty)))
ty += th;
+ else if (ty + th > ch)
+ {
+ int test_y = ty - th;
+
+ if ((test_y >= 0) || (ty + th - ch > abs(test_y)))
+ ty -= th;
+ }
}
else if ((ty > py) && (py > th))
{