[Pkg-e-commits] [SCM] Enlightenment DR17 graphical layout and animation library branch, new-svn-snapshot, updated. debian/0.9.9.050+svn20081206-1-1175-g3a95c7f
Albin Tonnerre
albin.tonnerre at gmail.com
Fri Jun 19 14:13:22 UTC 2009
The following commit has been merged in the new-svn-snapshot branch:
commit 145319820690a450b186b0b66a3615346c9dab21
Author: Albin Tonnerre <albin.tonnerre at gmail.com>
Date: Thu Jun 18 09:32:28 2009 +0200
Import upstream release 0.9.92.061
diff --git a/Makefile.in b/Makefile.in
index e2d60e2..d4938c7 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -116,6 +116,8 @@ ECORE_EVAS_CFLAGS = @ECORE_EVAS_CFLAGS@
ECORE_EVAS_LIBS = @ECORE_EVAS_LIBS@
ECORE_FILE_CFLAGS = @ECORE_FILE_CFLAGS@
ECORE_FILE_LIBS = @ECORE_FILE_LIBS@
+ECORE_IMF_CFLAGS = @ECORE_IMF_CFLAGS@
+ECORE_IMF_LIBS = @ECORE_IMF_LIBS@
EDJE_CC_PRG = @EDJE_CC_PRG@
EDJE_CFLAGS = @EDJE_CFLAGS@
EDJE_DECC_PRG = @EDJE_DECC_PRG@
diff --git a/config.h.in b/config.h.in
index 61cbc51..a91d3e9 100644
--- a/config.h.in
+++ b/config.h.in
@@ -22,6 +22,9 @@
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
+/* Input Method Support for Edje Entry */
+#undef HAVE_ECORE_IMF
+
/* Set to 1 if Evil library is installed */
#undef HAVE_EVIL
diff --git a/configure b/configure
index d890e83..29a303e 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for edje 0.9.92.060.
+# Generated by GNU Autoconf 2.61 for edje 0.9.92.061.
#
# Report bugs to <enlightenment-devel at lists.sourceforge.net>.
#
@@ -723,8 +723,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='edje'
PACKAGE_TARNAME='edje'
-PACKAGE_VERSION='0.9.92.060'
-PACKAGE_STRING='edje 0.9.92.060'
+PACKAGE_VERSION='0.9.92.061'
+PACKAGE_STRING='edje 0.9.92.061'
PACKAGE_BUGREPORT='enlightenment-devel at lists.sourceforge.net'
ac_unique_file="configure.ac"
@@ -902,6 +902,8 @@ EVIL_LIBS
EFL_EDJE_BUILD
EDJE_CFLAGS
EDJE_LIBS
+ECORE_IMF_CFLAGS
+ECORE_IMF_LIBS
ECORE_FILE_CFLAGS
ECORE_FILE_LIBS
ECORE_EVAS_CFLAGS
@@ -926,6 +928,8 @@ EVIL_CFLAGS
EVIL_LIBS
EDJE_CFLAGS
EDJE_LIBS
+ECORE_IMF_CFLAGS
+ECORE_IMF_LIBS
ECORE_FILE_CFLAGS
ECORE_FILE_LIBS
ECORE_EVAS_CFLAGS
@@ -1432,7 +1436,7 @@ if test "$ac_init_help" = "long"; then
# 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 edje 0.9.92.060 to adapt to many kinds of systems.
+\`configure' configures edje 0.9.92.061 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1502,7 +1506,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of edje 0.9.92.060:";;
+ short | recursive ) echo "Configuration of edje 0.9.92.061:";;
esac
cat <<\_ACEOF
@@ -1545,6 +1549,10 @@ Some influential environment variables:
EVIL_LIBS linker flags for EVIL, overriding pkg-config
EDJE_CFLAGS C compiler flags for EDJE, overriding pkg-config
EDJE_LIBS linker flags for EDJE, overriding pkg-config
+ ECORE_IMF_CFLAGS
+ C compiler flags for ECORE_IMF, overriding pkg-config
+ ECORE_IMF_LIBS
+ linker flags for ECORE_IMF, overriding pkg-config
ECORE_FILE_CFLAGS
C compiler flags for ECORE_FILE, overriding pkg-config
ECORE_FILE_LIBS
@@ -1618,7 +1626,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-edje configure 0.9.92.060
+edje configure 0.9.92.061
generated by GNU Autoconf 2.61
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1632,7 +1640,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by edje $as_me 0.9.92.060, which was
+It was created by edje $as_me 0.9.92.061, which was
generated by GNU Autoconf 2.61. Invocation command line was
$ $0 $@
@@ -3474,7 +3482,7 @@ fi
# Define the identity of the package.
PACKAGE='edje'
- VERSION='0.9.92.060'
+ VERSION='0.9.92.061'
cat >>confdefs.h <<_ACEOF
@@ -4724,13 +4732,13 @@ if test "${lt_cv_nm_interface+set}" = set; then
else
lt_cv_nm_interface="BSD nm"
echo "int some_variable = 0;" > conftest.$ac_ext
- (eval echo "\"\$as_me:4727: $ac_compile\"" >&5)
+ (eval echo "\"\$as_me:4735: $ac_compile\"" >&5)
(eval "$ac_compile" 2>conftest.err)
cat conftest.err >&5
- (eval echo "\"\$as_me:4730: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+ (eval echo "\"\$as_me:4738: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
(eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
cat conftest.err >&5
- (eval echo "\"\$as_me:4733: output\"" >&5)
+ (eval echo "\"\$as_me:4741: output\"" >&5)
cat conftest.out >&5
if $GREP 'External.*some_variable' conftest.out > /dev/null; then
lt_cv_nm_interface="MS dumpbin"
@@ -5840,7 +5848,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 5843 "configure"' > conftest.$ac_ext
+ echo '#line 5851 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -7689,11 +7697,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7692: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7700: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:7696: \$? = $ac_status" >&5
+ echo "$as_me:7704: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -8013,11 +8021,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:8016: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:8024: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:8020: \$? = $ac_status" >&5
+ echo "$as_me:8028: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -8118,11 +8126,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:8121: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:8129: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:8125: \$? = $ac_status" >&5
+ echo "$as_me:8133: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -8173,11 +8181,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:8176: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:8184: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:8180: \$? = $ac_status" >&5
+ echo "$as_me:8188: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -10934,7 +10942,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 10937 "configure"
+#line 10945 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11034,7 +11042,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11037 "configure"
+#line 11045 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11271,10 +11279,17 @@ VMIN=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $2);}'`
VMIC=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $3);}'`
SNAP=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $4);}'`
version_info=`expr $VMAJ + $VMIN`":$VMIC:$VMIN"
-release="ver-pre-01"
-release_info="-release $release"
+release="ver-svn-02"
+case "$host_os" in
+ mingw32ce* | cegcc*)
+ ;;
+ *)
+ release_info="-release $release"
+ ;;
+esac
+
### Default options with respect to host
@@ -12100,10 +12115,14 @@ if test "${enable_doc+set}" = set; then
else
efl_enable_doc="yes"
-
fi
+{ echo "$as_me:$LINENO: checking whether to build documentation" >&5
+echo $ECHO_N "checking whether to build documentation... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: ${efl_enable_doc}" >&5
+echo "${ECHO_T}${efl_enable_doc}" >&6; }
+
if test "x${efl_enable_doc}" = "xyes" ; then
@@ -12154,11 +12173,11 @@ fi
if test "x${efl_have_doxygen}" = "xno" ; then
echo "WARNING:"
echo "The doxygen program you specified:"
- echo "$efl_doxygen"
+ echo "${efl_doxygen}"
echo "was not found. Please check the path and make sure "
echo "the program exists and is executable."
- { echo "$as_me:$LINENO: WARNING: Warning: no doxygen detected. Documentation will not be built" >&5
-echo "$as_me: WARNING: Warning: no doxygen detected. Documentation will not be built" >&2;}
+ { echo "$as_me:$LINENO: WARNING: no doxygen detected. Documentation will not be built" >&5
+echo "$as_me: WARNING: no doxygen detected. Documentation will not be built" >&2;}
fi
else
@@ -12202,18 +12221,17 @@ fi
if test "x${efl_have_doxygen}" = "xno" ; then
echo "WARNING:"
- echo "The doxygen program was not found in your execute"
+ echo "The doxygen program was not found in your execute path."
echo "You may have doxygen installed somewhere not covered by your path."
echo ""
echo "If this is the case make sure you have the packages installed, AND"
echo "that the doxygen program is in your execute path (see your"
echo "shell manual page on setting the \$PATH environment variable), OR"
echo "alternatively, specify the program to use with --with-doxygen."
- { echo "$as_me:$LINENO: WARNING: Warning: no doxygen detected. Documentation will not be built" >&5
-echo "$as_me: WARNING: Warning: no doxygen detected. Documentation will not be built" >&2;}
+ { echo "$as_me:$LINENO: WARNING: no doxygen detected. Documentation will not be built" >&5
+echo "$as_me: WARNING: no doxygen detected. Documentation will not be built" >&2;}
fi
-
fi
fi
@@ -12436,8 +12454,7 @@ else
fi
-
-### Checks for libraries
+# pkg-config
@@ -12560,6 +12577,9 @@ echo "${ECHO_T}no" >&6; }
fi
+
+### Checks for libraries
+
# Evil library for compilation on Windows
EFL_EDJE_BUILD=""
@@ -12706,8 +12726,7 @@ if test -n "$PKG_CONFIG"; then
ecore >= 0.9.9
ecore-job >= 0.9.9
embryo >= 0.9.1
-
-\"") >&5
+ \"") >&5
($PKG_CONFIG --exists --print-errors "
eina-0
eet >= 1.0.1
@@ -12715,8 +12734,7 @@ if test -n "$PKG_CONFIG"; then
ecore >= 0.9.9
ecore-job >= 0.9.9
embryo >= 0.9.1
-
-") 2>&5
+ ") 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; then
@@ -12727,8 +12745,7 @@ if test -n "$PKG_CONFIG"; then
ecore >= 0.9.9
ecore-job >= 0.9.9
embryo >= 0.9.1
-
-" 2>/dev/null`
+ " 2>/dev/null`
else
pkg_failed=yes
fi
@@ -12748,8 +12765,7 @@ if test -n "$PKG_CONFIG"; then
ecore >= 0.9.9
ecore-job >= 0.9.9
embryo >= 0.9.1
-
-\"") >&5
+ \"") >&5
($PKG_CONFIG --exists --print-errors "
eina-0
eet >= 1.0.1
@@ -12757,8 +12773,7 @@ if test -n "$PKG_CONFIG"; then
ecore >= 0.9.9
ecore-job >= 0.9.9
embryo >= 0.9.1
-
-") 2>&5
+ ") 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; then
@@ -12769,8 +12784,7 @@ if test -n "$PKG_CONFIG"; then
ecore >= 0.9.9
ecore-job >= 0.9.9
embryo >= 0.9.1
-
-" 2>/dev/null`
+ " 2>/dev/null`
else
pkg_failed=yes
fi
@@ -12796,8 +12810,7 @@ fi
ecore >= 0.9.9
ecore-job >= 0.9.9
embryo >= 0.9.1
-
-"`
+ "`
else
EDJE_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "
eina-0
@@ -12806,8 +12819,7 @@ fi
ecore >= 0.9.9
ecore-job >= 0.9.9
embryo >= 0.9.1
-
-"`
+ "`
fi
# Put the nasty error message in config.log where it belongs
echo "$EDJE_PKG_ERRORS" >&5
@@ -12819,8 +12831,7 @@ fi
ecore >= 0.9.9
ecore-job >= 0.9.9
embryo >= 0.9.1
-
-) were not met:
+ ) were not met:
$EDJE_PKG_ERRORS
@@ -12838,8 +12849,7 @@ echo "$as_me: error: Package requirements (
ecore >= 0.9.9
ecore-job >= 0.9.9
embryo >= 0.9.1
-
-) were not met:
+ ) were not met:
$EDJE_PKG_ERRORS
@@ -12883,6 +12893,111 @@ fi
requirement_edje="embryo ecore-job ecore evas eet eina-0 ${requirement_edje}"
+have_ecore_imf="no"
+
+pkg_failed=no
+{ echo "$as_me:$LINENO: checking for ECORE_IMF" >&5
+echo $ECHO_N "checking for ECORE_IMF... $ECHO_C" >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$ECORE_IMF_CFLAGS"; then
+ pkg_cv_ECORE_IMF_CFLAGS="$ECORE_IMF_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"
+ ecore-imf >= 0.9.9
+ ecore-imf-evas >= 0.9.9
+ \"") >&5
+ ($PKG_CONFIG --exists --print-errors "
+ ecore-imf >= 0.9.9
+ ecore-imf-evas >= 0.9.9
+ ") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_ECORE_IMF_CFLAGS=`$PKG_CONFIG --cflags "
+ ecore-imf >= 0.9.9
+ ecore-imf-evas >= 0.9.9
+ " 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$ECORE_IMF_LIBS"; then
+ pkg_cv_ECORE_IMF_LIBS="$ECORE_IMF_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"
+ ecore-imf >= 0.9.9
+ ecore-imf-evas >= 0.9.9
+ \"") >&5
+ ($PKG_CONFIG --exists --print-errors "
+ ecore-imf >= 0.9.9
+ ecore-imf-evas >= 0.9.9
+ ") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_ECORE_IMF_LIBS=`$PKG_CONFIG --libs "
+ ecore-imf >= 0.9.9
+ ecore-imf-evas >= 0.9.9
+ " 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ ECORE_IMF_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "
+ ecore-imf >= 0.9.9
+ ecore-imf-evas >= 0.9.9
+ "`
+ else
+ ECORE_IMF_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "
+ ecore-imf >= 0.9.9
+ ecore-imf-evas >= 0.9.9
+ "`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$ECORE_IMF_PKG_ERRORS" >&5
+
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+ have_ecore_imf="no"
+elif test $pkg_failed = untried; then
+ have_ecore_imf="no"
+else
+ ECORE_IMF_CFLAGS=$pkg_cv_ECORE_IMF_CFLAGS
+ ECORE_IMF_LIBS=$pkg_cv_ECORE_IMF_LIBS
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ECORE_IMF 1
+_ACEOF
+
+ have_ecore_imf="yes"
+ requirement_edje="ecore-imf ecore-imf-evas ${requirement_edje}"
+
+fi
+
# Dependencies for the binaries
if test "x$have_edje_cc" = "xyes"; then
@@ -15039,7 +15154,7 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by edje $as_me 0.9.92.060, which was
+This file was extended by edje $as_me 0.9.92.061, which was
generated by GNU Autoconf 2.61. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -15092,7 +15207,7 @@ Report bugs to <bug-autoconf at gnu.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-edje config.status 0.9.92.060
+edje config.status 0.9.92.061
configured by $0, generated by GNU Autoconf 2.61,
with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
@@ -15717,6 +15832,8 @@ EVIL_LIBS!$EVIL_LIBS$ac_delim
EFL_EDJE_BUILD!$EFL_EDJE_BUILD$ac_delim
EDJE_CFLAGS!$EDJE_CFLAGS$ac_delim
EDJE_LIBS!$EDJE_LIBS$ac_delim
+ECORE_IMF_CFLAGS!$ECORE_IMF_CFLAGS$ac_delim
+ECORE_IMF_LIBS!$ECORE_IMF_LIBS$ac_delim
ECORE_FILE_CFLAGS!$ECORE_FILE_CFLAGS$ac_delim
ECORE_FILE_LIBS!$ECORE_FILE_LIBS$ac_delim
ECORE_EVAS_CFLAGS!$ECORE_EVAS_CFLAGS$ac_delim
@@ -15728,7 +15845,7 @@ LIBOBJS!$LIBOBJS$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 50; then
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 52; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
@@ -16982,11 +17099,13 @@ echo "------------------------------------------------------------------------"
echo
echo "Configuration Options Summary:"
echo
+echo " Ecore IMF............: $have_ecore_imf"
+echo
echo " EDJE_PROGRAM_CACHE...: $want_edje_program_cache"
echo
echo " Build binaries.......: $have_edje_cc"
echo
-echo " Documentation........: ${enable_doc}"
+echo " Documentation........: ${build_doc}"
echo
echo " Compilation..........: make"
echo
diff --git a/configure.ac b/configure.ac
index 93a4b3f..74e01a4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3,8 +3,8 @@ dnl Process this file with autoconf to produce a configure script.
# get rid of that stupid cache mechanism
rm -f config.cache
-AC_INIT([edje], 0.9.92.060, [enlightenment-devel at lists.sourceforge.net])
-AC_PREREQ(2.52)
+AC_INIT([edje], [0.9.92.061], [enlightenment-devel at lists.sourceforge.net])
+AC_PREREQ([2.52])
AC_CONFIG_SRCDIR([configure.ac])
AC_CONFIG_MACRO_DIR([m4])
AC_CANONICAL_BUILD
@@ -24,9 +24,16 @@ VMIN=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $2);}'`
VMIC=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $3);}'`
SNAP=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $4);}'`
version_info=`expr $VMAJ + $VMIN`":$VMIC:$VMIN"
-release="ver-pre-01"
-release_info="-release $release"
AC_SUBST(version_info)
+
+release="ver-svn-02"
+case "$host_os" in
+ mingw32ce* | cegcc*)
+ ;;
+ *)
+ release_info="-release $release"
+ ;;
+esac
AC_SUBST(release_info)
@@ -138,11 +145,13 @@ EFL_CHECK_DOXYGEN([build_doc="yes"], [build_doc="no"])
AM_PATH_PYTHON([2.5], , [:])
AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != : ])
-
-### Checks for libraries
+# pkg-config
PKG_PROG_PKG_CONFIG
+
+### Checks for libraries
+
# Evil library for compilation on Windows
EFL_EDJE_BUILD=""
@@ -166,11 +175,23 @@ PKG_CHECK_MODULES([EDJE],
ecore >= 0.9.9
ecore-job >= 0.9.9
embryo >= 0.9.1
- ]
-)
+ ])
requirement_edje="embryo ecore-job ecore evas eet eina-0 ${requirement_edje}"
+have_ecore_imf="no"
+PKG_CHECK_MODULES([ECORE_IMF],
+ [
+ ecore-imf >= 0.9.9
+ ecore-imf-evas >= 0.9.9
+ ],
+ [
+ AC_DEFINE(HAVE_ECORE_IMF, 1, [Input Method Support for Edje Entry])
+ have_ecore_imf="yes"
+ requirement_edje="ecore-imf ecore-imf-evas ${requirement_edje}"
+ ],
+ [have_ecore_imf="no"])
+
# Dependencies for the binaries
if test "x$have_edje_cc" = "xyes"; then
@@ -259,11 +280,13 @@ echo "------------------------------------------------------------------------"
echo
echo "Configuration Options Summary:"
echo
+echo " Ecore IMF............: $have_ecore_imf"
+echo
echo " EDJE_PROGRAM_CACHE...: $want_edje_program_cache"
echo
echo " Build binaries.......: $have_edje_cc"
echo
-echo " Documentation........: ${enable_doc}"
+echo " Documentation........: ${build_doc}"
echo
echo " Compilation..........: make"
echo
diff --git a/data/Makefile.in b/data/Makefile.in
index 44d1558..4936b4e 100644
--- a/data/Makefile.in
+++ b/data/Makefile.in
@@ -86,6 +86,8 @@ ECORE_EVAS_CFLAGS = @ECORE_EVAS_CFLAGS@
ECORE_EVAS_LIBS = @ECORE_EVAS_LIBS@
ECORE_FILE_CFLAGS = @ECORE_FILE_CFLAGS@
ECORE_FILE_LIBS = @ECORE_FILE_LIBS@
+ECORE_IMF_CFLAGS = @ECORE_IMF_CFLAGS@
+ECORE_IMF_LIBS = @ECORE_IMF_LIBS@
EDJE_CC_PRG = @EDJE_CC_PRG@
EDJE_CFLAGS = @EDJE_CFLAGS@
EDJE_DECC_PRG = @EDJE_DECC_PRG@
diff --git a/data/include/Makefile.in b/data/include/Makefile.in
index d4fbf98..7799199 100644
--- a/data/include/Makefile.in
+++ b/data/include/Makefile.in
@@ -84,6 +84,8 @@ ECORE_EVAS_CFLAGS = @ECORE_EVAS_CFLAGS@
ECORE_EVAS_LIBS = @ECORE_EVAS_LIBS@
ECORE_FILE_CFLAGS = @ECORE_FILE_CFLAGS@
ECORE_FILE_LIBS = @ECORE_FILE_LIBS@
+ECORE_IMF_CFLAGS = @ECORE_IMF_CFLAGS@
+ECORE_IMF_LIBS = @ECORE_IMF_LIBS@
EDJE_CC_PRG = @EDJE_CC_PRG@
EDJE_CFLAGS = @EDJE_CFLAGS@
EDJE_DECC_PRG = @EDJE_DECC_PRG@
diff --git a/doc/Makefile.in b/doc/Makefile.in
index ebdcfd6..133d056 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -75,6 +75,8 @@ ECORE_EVAS_CFLAGS = @ECORE_EVAS_CFLAGS@
ECORE_EVAS_LIBS = @ECORE_EVAS_LIBS@
ECORE_FILE_CFLAGS = @ECORE_FILE_CFLAGS@
ECORE_FILE_LIBS = @ECORE_FILE_LIBS@
+ECORE_IMF_CFLAGS = @ECORE_IMF_CFLAGS@
+ECORE_IMF_LIBS = @ECORE_IMF_LIBS@
EDJE_CC_PRG = @EDJE_CC_PRG@
EDJE_CFLAGS = @EDJE_CFLAGS@
EDJE_DECC_PRG = @EDJE_DECC_PRG@
diff --git a/edje.pc.in b/edje.pc.in
index d589e9a..7d2d4bf 100644
--- a/edje.pc.in
+++ b/edje.pc.in
@@ -10,5 +10,5 @@ Description: Enlightened graphical design and layout engine.
Requires: @requirement_edje@
Version: @VERSION@
Libs: -L${libdir} -ledje
-Libs.private: @EDJE_LIBS@ @EVIL_LIBS@
+Libs.private: @EDJE_LIBS@ @EVIL_LIBS@ @ECORE_IMF_LIBS@
Cflags: -I${includedir}
diff --git a/edje.spec b/edje.spec
index 2f13828..b957711 100644
--- a/edje.spec
+++ b/edje.spec
@@ -2,7 +2,7 @@
Summary: Complex Graphical Design/Layout Engine
Name: edje
-Version: 0.9.92.060
+Version: 0.9.92.061
Release: 0.%(date '+%Y%m%d')
License: BSD
Group: System Environment/Libraries
diff --git a/m4/efl_doxygen.m4 b/m4/efl_doxygen.m4
index 0c1452f..dd6bc3e 100644
--- a/m4/efl_doxygen.m4
+++ b/m4/efl_doxygen.m4
@@ -25,13 +25,15 @@ AC_ARG_ENABLE([doc],
efl_enable_doc="no"
fi
],
- [efl_enable_doc="yes"]
-)
+ [efl_enable_doc="yes"])
+
+AC_MSG_CHECKING([whether to build documentation])
+AC_MSG_RESULT([${efl_enable_doc}])
if test "x${efl_enable_doc}" = "xyes" ; then
dnl
-dnl Specify the full file name, with path
+dnl Specify the file name, without path
dnl
efl_doxygen="doxygen"
@@ -51,10 +53,10 @@ dnl
if test "x${efl_have_doxygen}" = "xno" ; then
echo "WARNING:"
echo "The doxygen program you specified:"
- echo "$efl_doxygen"
+ echo "${efl_doxygen}"
echo "was not found. Please check the path and make sure "
echo "the program exists and is executable."
- AC_MSG_WARN([Warning: no doxygen detected. Documentation will not be built])
+ AC_MSG_WARN([no doxygen detected. Documentation will not be built])
fi
],
[AC_CHECK_PROG([efl_have_doxygen],
@@ -63,17 +65,16 @@ dnl
[no])
if test "x${efl_have_doxygen}" = "xno" ; then
echo "WARNING:"
- echo "The doxygen program was not found in your execute"
+ echo "The doxygen program was not found in your execute path."
echo "You may have doxygen installed somewhere not covered by your path."
echo ""
echo "If this is the case make sure you have the packages installed, AND"
echo "that the doxygen program is in your execute path (see your"
echo "shell manual page on setting the \$PATH environment variable), OR"
echo "alternatively, specify the program to use with --with-doxygen."
- AC_MSG_WARN([Warning: no doxygen detected. Documentation will not be built])
+ AC_MSG_WARN([no doxygen detected. Documentation will not be built])
fi
- ]
- )
+ ])
fi
dnl
@@ -88,9 +89,9 @@ fi
AM_CONDITIONAL(EFL_BUILD_DOC, test "x${efl_enable_doc}" = "xyes")
if test "x${efl_enable_doc}" = "xyes" ; then
- ifelse([$1], , :, [$1])
+ m4_default([$1], [:])
else
- ifelse([$2], , :, [$2])
+ m4_default([$2], [:])
fi
])
diff --git a/src/Makefile.in b/src/Makefile.in
index 3c9cacf..7c35f20 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -86,6 +86,8 @@ ECORE_EVAS_CFLAGS = @ECORE_EVAS_CFLAGS@
ECORE_EVAS_LIBS = @ECORE_EVAS_LIBS@
ECORE_FILE_CFLAGS = @ECORE_FILE_CFLAGS@
ECORE_FILE_LIBS = @ECORE_FILE_LIBS@
+ECORE_IMF_CFLAGS = @ECORE_IMF_CFLAGS@
+ECORE_IMF_LIBS = @ECORE_IMF_LIBS@
EDJE_CC_PRG = @EDJE_CC_PRG@
EDJE_CFLAGS = @EDJE_CFLAGS@
EDJE_DECC_PRG = @EDJE_DECC_PRG@
diff --git a/src/bin/Makefile.in b/src/bin/Makefile.in
index 4c730e5..7391432 100644
--- a/src/bin/Makefile.in
+++ b/src/bin/Makefile.in
@@ -118,6 +118,8 @@ ECORE_EVAS_CFLAGS = @ECORE_EVAS_CFLAGS@
ECORE_EVAS_LIBS = @ECORE_EVAS_LIBS@
ECORE_FILE_CFLAGS = @ECORE_FILE_CFLAGS@
ECORE_FILE_LIBS = @ECORE_FILE_LIBS@
+ECORE_IMF_CFLAGS = @ECORE_IMF_CFLAGS@
+ECORE_IMF_LIBS = @ECORE_IMF_LIBS@
EDJE_CC_PRG = @EDJE_CC_PRG@
EDJE_CFLAGS = @EDJE_CFLAGS@
EDJE_DECC_PRG = @EDJE_DECC_PRG@
diff --git a/src/bin/edje_cc_handlers.c b/src/bin/edje_cc_handlers.c
index 97a4731..c68a4e3 100644
--- a/src/bin/edje_cc_handlers.c
+++ b/src/bin/edje_cc_handlers.c
@@ -154,6 +154,7 @@ static void st_collections_group_parts_part_description_image_normal(void);
static void st_collections_group_parts_part_description_image_tween(void);
static void st_collections_group_parts_part_description_image_border(void);
static void st_collections_group_parts_part_description_image_middle(void);
+static void st_collections_group_parts_part_description_image_scale_hint(void);
static void st_collections_group_parts_part_description_fill_smooth(void);
static void st_collections_group_parts_part_description_fill_origin_relative(void);
static void st_collections_group_parts_part_description_fill_origin_offset(void);
@@ -349,6 +350,7 @@ New_Statement_Handler statement_handlers[] =
{"collections.group.parts.part.description.image.images.image", st_images_image}, /* dup */
{"collections.group.parts.part.description.image.border", st_collections_group_parts_part_description_image_border},
{"collections.group.parts.part.description.image.middle", st_collections_group_parts_part_description_image_middle},
+ {"collections.group.parts.part.description.image.scale_hint", st_collections_group_parts_part_description_image_scale_hint},
{"collections.group.parts.part.description.fill.smooth", st_collections_group_parts_part_description_fill_smooth},
{"collections.group.parts.part.description.fill.origin.relative", st_collections_group_parts_part_description_fill_origin_relative},
{"collections.group.parts.part.description.fill.origin.offset", st_collections_group_parts_part_description_fill_origin_offset},
@@ -3903,6 +3905,47 @@ st_collections_group_parts_part_description_image_middle(void)
/**
@page edcref
+ @property
+ scale_hint
+ @parameters
+ 0, NONE, DYNAMIC, STATIC
+ @effect
+ Sets the evas image scale hint letting the engine more efectively save
+ cached copies of the scaled image if it maks sense
+ @endproperty
+*/
+static void
+st_collections_group_parts_part_description_image_scale_hint(void)
+{
+ Edje_Part_Collection *pc;
+ Edje_Part *ep;
+ Edje_Part_Description *ed;
+
+ check_arg_count(1);
+
+ pc = eina_list_data_get(eina_list_last(edje_collections));
+ ep = eina_list_data_get(eina_list_last(pc->parts));
+
+ if (ep->type != EDJE_PART_TYPE_IMAGE)
+ {
+ fprintf(stderr, "%s: Error. parse error %s:%i. "
+ "image attributes in non-IMAGE part.\n",
+ progname, file_in, line - 1);
+ exit(-1);
+ }
+
+ ed = ep->default_desc;
+ if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc));
+ ed->image.scale_hint = parse_enum(0,
+ "NONE", EVAS_IMAGE_SCALE_HINT_NONE,
+ "DYNAMIC", EVAS_IMAGE_SCALE_HINT_DYNAMIC,
+ "STATIC", EVAS_IMAGE_SCALE_HINT_STATIC,
+ "0", EVAS_IMAGE_SCALE_HINT_NONE,
+ NULL);
+}
+
+/**
+ @page edcref
@block
fill
@context
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index 8b738a4..0e6b159 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -11,6 +11,7 @@ AM_CPPFLAGS = \
-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
@EVIL_CFLAGS@ \
@EDJE_CFLAGS@ \
+ at ECORE_IMF_CFLAGS@ \
@EFL_EDJE_BUILD@
lib_LTLIBRARIES = libedje.la
@@ -41,5 +42,5 @@ edje_edit.c \
edje_script_only.c \
edje_entry.c
-libedje_la_LIBADD = @EDJE_LIBS@ -lm
+libedje_la_LIBADD = @EDJE_LIBS@ @ECORE_IMF_LIBS@ -lm
libedje_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -version-info @version_info@ @release_info@
diff --git a/src/lib/Makefile.in b/src/lib/Makefile.in
index 687265e..496f3dd 100644
--- a/src/lib/Makefile.in
+++ b/src/lib/Makefile.in
@@ -113,6 +113,8 @@ ECORE_EVAS_CFLAGS = @ECORE_EVAS_CFLAGS@
ECORE_EVAS_LIBS = @ECORE_EVAS_LIBS@
ECORE_FILE_CFLAGS = @ECORE_FILE_CFLAGS@
ECORE_FILE_LIBS = @ECORE_FILE_LIBS@
+ECORE_IMF_CFLAGS = @ECORE_IMF_CFLAGS@
+ECORE_IMF_LIBS = @ECORE_IMF_LIBS@
EDJE_CC_PRG = @EDJE_CC_PRG@
EDJE_CFLAGS = @EDJE_CFLAGS@
EDJE_DECC_PRG = @EDJE_DECC_PRG@
@@ -238,6 +240,7 @@ AM_CPPFLAGS = \
-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
@EVIL_CFLAGS@ \
@EDJE_CFLAGS@ \
+ at ECORE_IMF_CFLAGS@ \
@EFL_EDJE_BUILD@
lib_LTLIBRARIES = libedje.la
@@ -266,7 +269,7 @@ edje_edit.c \
edje_script_only.c \
edje_entry.c
-libedje_la_LIBADD = @EDJE_LIBS@ -lm
+libedje_la_LIBADD = @EDJE_LIBS@ @ECORE_IMF_LIBS@ -lm
libedje_la_LDFLAGS = -no-undefined @lt_enable_auto_import@ -version-info @version_info@ @release_info@
all: all-am
diff --git a/src/lib/edje_cache.c b/src/lib/edje_cache.c
index f74abf8..ed6ddb3 100644
--- a/src/lib/edje_cache.c
+++ b/src/lib/edje_cache.c
@@ -222,11 +222,11 @@ _edje_cache_file_coll_open(const char *file, const char *coll, int *error_ret, E
return edf;
}
+ if (!coll) return edf;
+
if (!edf->collection_hash)
edf->collection_hash = eina_hash_string_small_new(NULL);
- if (!coll) return edf;
-
edc = eina_hash_find(edf->collection_hash, coll);
if (edc)
{
@@ -321,6 +321,11 @@ _edje_cache_file_coll_open(const char *file, const char *coll, int *error_ret, E
}
if (edc_ret) *edc_ret = edc;
+ if (eina_hash_population(edf->collection_hash) == 0)
+ {
+ eina_hash_free(edf->collection_hash);
+ edf->collection_hash = NULL;
+ }
return edf;
}
@@ -360,7 +365,7 @@ _edje_cache_coll_unref(Edje_File *edf, Edje_Part_Collection *edc)
edc->references--;
if (edc->references != 0) return;
eina_hash_del(edf->collection_hash, edc->part, edc);
- if (!eina_hash_population(edf->collection_hash))
+ if (eina_hash_population(edf->collection_hash) == 0)
{
eina_hash_free(edf->collection_hash);
edf->collection_hash = NULL;
diff --git a/src/lib/edje_calc.c b/src/lib/edje_calc.c
index e650990..342d51a 100644
--- a/src/lib/edje_calc.c
+++ b/src/lib/edje_calc.c
@@ -56,7 +56,7 @@ _edje_part_description_find(Edje *ed, Edje_Real_Part *rp, const char *name,
Edje_Part_Description *ret = NULL;
Edje_Part_Description *d;
Eina_List *l;
- double min_dst = 999.0;
+ double min_dst = 99999.0;
if (!strcmp(name, "default") && val == 0.0)
return ep->default_desc;
@@ -180,7 +180,6 @@ _edje_recalc_do(Edje *ed)
_edje_part_recalc(ed, ep, (~ep->calculated) & FLAG_XY);
}
if (!ed->calc_only) ed->recalc = 0;
- ed->calc_only = 0;
}
int
@@ -655,7 +654,7 @@ _edje_part_recalc_single(Edje *ed,
if (ep->part->scale)
evas_object_scale_set(ep->object, sc);
-
+
if (stl)
{
const char *ptxt;
@@ -690,11 +689,11 @@ _edje_part_recalc_single(Edje *ed,
evas_object_textblock_style_insets_get(ep->object, &ins_l, &ins_r, &ins_t, &ins_b);
mw = ins_l + tw + ins_r;
mh = ins_t + th + ins_b;
- if (chosen_desc->text.min_x)
+// if (chosen_desc->text.min_x)
{
if (mw > minw) minw = mw;
}
- if (chosen_desc->text.min_y)
+// if (chosen_desc->text.min_y)
{
if (mh > minh) minh = mh;
}
@@ -882,7 +881,6 @@ _edje_part_recalc_single(Edje *ed,
free(sfont);
params->text.size = size;
}
-
/* rememebr what our size is BEFORE we go limit it */
params->req.x = params->x;
params->req.y = params->y;
@@ -1256,6 +1254,11 @@ _edje_table_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edj
evas_object_table_homogeneous_set(ep->object, chosen_desc->table.homogeneous);
evas_object_table_align_set(ep->object, chosen_desc->table.align.x, chosen_desc->table.align.y);
evas_object_table_padding_set(ep->object, chosen_desc->table.padding.x, chosen_desc->table.padding.y);
+ if (evas_object_smart_need_recalculate_get(ep->object))
+ {
+ evas_object_smart_need_recalculate_set(ep->object, 0);
+ evas_object_smart_calculate(ep->object);
+ }
}
static void
@@ -1267,7 +1270,6 @@ _edje_image_recalc_apply(Edje *ed, Edje_Real_Part *ep, Edje_Calc_Params *p3, Edj
evas_object_image_fill_set(ep->object, p3->fill.x, p3->fill.y,
p3->fill.w, p3->fill.h);
evas_object_image_smooth_scale_set(ep->object, p3->smooth);
-
evas_object_image_border_set(ep->object, p3->border.l, p3->border.r,
p3->border.t, p3->border.b);
if (chosen_desc->border.no_fill == 0)
@@ -1546,8 +1548,10 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags)
/* Common move, resize and color_set for all part. */
switch (ep->part->type)
{
- case EDJE_PART_TYPE_RECTANGLE:
case EDJE_PART_TYPE_IMAGE:
+ evas_object_image_scale_hint_set(ep->object,
+ chosen_desc->image.scale_hint);
+ case EDJE_PART_TYPE_RECTANGLE:
case EDJE_PART_TYPE_TEXTBLOCK:
case EDJE_PART_TYPE_GRADIENT:
case EDJE_PART_TYPE_BOX:
diff --git a/src/lib/edje_entry.c b/src/lib/edje_entry.c
index c61a6b3..a44e8d3 100644
--- a/src/lib/edje_entry.c
+++ b/src/lib/edje_entry.c
@@ -27,6 +27,13 @@ void *alloca (size_t);
#include "edje_private.h"
+#ifdef HAVE_ECORE_IMF
+static int _edje_entry_imf_retrieve_surrounding_cb(void *data, Ecore_IMF_Context *ctx, char **text, int *cursor_pos);
+static int _edje_entry_imf_event_commit_cb(void *data, int type, void *event);
+static int _edje_entry_imf_event_changed_cb(void *data, int type, void *event);
+static int _edje_entry_imf_event_delete_surrounding_cb(void *data, int type, void *event);
+#endif
+
typedef struct _Entry Entry;
typedef struct _Sel Sel;
typedef struct _Anchor Anchor;
@@ -49,6 +56,16 @@ struct _Entry
Evas_Bool select_mod_start : 1;
Evas_Bool select_mod_end : 1;
Evas_Bool had_sel : 1;
+
+#ifdef HAVE_ECORE_IMF
+ int comp_len;
+ Evas_Bool have_composition : 1;
+ Ecore_IMF_Context *imf_context;
+
+ Ecore_Event_Handler *imf_ee_handler_commit;
+ Ecore_Event_Handler *imf_ee_handler_delete;
+ Ecore_Event_Handler *imf_ee_handler_changed;
+#endif
};
struct _Sel
@@ -65,18 +82,96 @@ struct _Anchor
Eina_List *sel;
};
+#ifdef HAVE_ECORE_IMF
+static void
+_edje_entry_focus_in_cb(void *data, Evas_Object *o, const char *emission, const char *source)
+{
+ Edje_Real_Part *rp = data;
+ if (!rp) return;
+ Entry *en = rp->entry_data;
+
+ if (!en) return;
+
+ if (!rp->edje || !rp->edje->obj) return;
+
+ if (!en->imf_context) return;
+
+ if (evas_object_focus_get(rp->edje->obj))
+ {
+ ecore_imf_context_reset(en->imf_context);
+ ecore_imf_context_focus_in(en->imf_context);
+ }
+}
+
+static void
+_edje_entry_focus_out_cb(void *data, Evas_Object *o, const char *emission, const char *source)
+{
+ Edje_Real_Part *rp = data;
+ if (!rp) return;
+ Entry *en = rp->entry_data;
+ if (!en) return;
+
+ if (!en->imf_context) return;
+
+ ecore_imf_context_reset(en->imf_context);
+ ecore_imf_context_cursor_position_set(en->imf_context, evas_textblock_cursor_pos_get(en->cursor));
+ ecore_imf_context_focus_out(en->imf_context);
+}
+#endif
+
static void
_edje_focus_in_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
{
Edje *ed = data;
+#ifdef HAVE_ECORE_IMF
+ Edje_Real_Part *rp;
+ Entry *en;
+#endif
+
_edje_emit(ed, "focus,in", "");
+#ifdef HAVE_ECORE_IMF
+ rp = ed->focused_part;
+ if (rp == NULL) return;
+
+ en = rp->entry_data;
+ if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) ||
+ (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_EDITABLE))
+ return;
+
+ if (en->imf_context)
+ {
+ ecore_imf_context_reset(en->imf_context);
+ ecore_imf_context_focus_in(en->imf_context);
+ }
+#endif
}
static void
_edje_focus_out_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
{
Edje *ed = data;
+#ifdef HAVE_ECORE_IMF
+ Edje_Real_Part *rp = ed->focused_part;
+ Entry *en;
+#endif
+
_edje_emit(ed, "focus,out", "");
+
+#ifdef HAVE_ECORE_IMF
+ if (!rp) return;
+ en = rp->entry_data;
+ if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) ||
+ (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_EDITABLE))
+ return;
+
+ if (en->imf_context)
+ {
+ ecore_imf_context_reset(en->imf_context);
+ ecore_imf_context_cursor_position_set(en->imf_context,
+ evas_textblock_cursor_pos_get(en->cursor));
+ ecore_imf_context_focus_out(en->imf_context);
+ }
+#endif
}
static void
@@ -108,8 +203,24 @@ _curs_back(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
static void
_curs_next(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
{
+ int ln, ln2;
+ Eina_Bool eol;
+
+ ln = evas_textblock_cursor_line_geometry_get(c, NULL, NULL, NULL, NULL);
+ eol = evas_textblock_cursor_eol_get(c);
if (!evas_textblock_cursor_char_next(c))
{
+ if (!eol)
+ {
+ ln2 = evas_textblock_cursor_line_geometry_get(c, NULL, NULL, NULL, NULL);
+ if (ln2 != ln)
+ {
+ evas_textblock_cursor_char_prev(c);
+ evas_textblock_cursor_eol_set(c, 1);
+ return;
+ }
+ }
+ evas_textblock_cursor_eol_set(c, 0);
if (evas_textblock_cursor_node_next(c))
{
while (evas_textblock_cursor_node_format_get(c))
@@ -128,7 +239,33 @@ _curs_next(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
len = evas_textblock_cursor_node_text_length_get(c);
pos = evas_textblock_cursor_pos_get(c);
if (pos == len)
- evas_textblock_cursor_node_next(c);
+ {
+ evas_textblock_cursor_node_next(c);
+ if (!eol)
+ {
+ ln2 = evas_textblock_cursor_line_geometry_get(c, NULL, NULL, NULL, NULL);
+ if (ln2 != ln)
+ {
+ evas_textblock_cursor_node_prev(c);
+ evas_textblock_cursor_line_last(c);
+ return;
+ }
+ }
+ }
+ else
+ {
+ if (!eol)
+ {
+ ln2 = evas_textblock_cursor_line_geometry_get(c, NULL, NULL, NULL, NULL);
+ if (ln2 != ln)
+ {
+ evas_textblock_cursor_char_prev(c);
+ evas_textblock_cursor_eol_set(c, 1);
+ return;
+ }
+ }
+ }
+ evas_textblock_cursor_eol_set(c, 0);
}
_curs_update_from_curs(c, o, en);
}
@@ -198,8 +335,8 @@ static void
_curs_lin_end(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
{
evas_textblock_cursor_line_last(c);
- if (!evas_textblock_cursor_node_format_get(c))
- _curs_next(c, o, en);
+// if (!evas_textblock_cursor_node_format_get(c))
+// _curs_next(c, o, en);
_curs_update_from_curs(c, o, en);
}
@@ -229,6 +366,7 @@ _sel_start(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
evas_textblock_cursor_copy(c, en->sel_start);
en->sel_end = evas_object_textblock_cursor_new(o);
evas_textblock_cursor_copy(c, en->sel_end);
+
en->have_selection = 0;
if (en->selection)
{
@@ -657,6 +795,7 @@ _anchors_clear(Evas_Textblock_Cursor *c, Evas_Object *o, Entry *en)
free(sel);
an->sel = eina_list_remove_list(an->sel, an->sel);
}
+ free(an->name);
free(an);
en->anchors = eina_list_remove_list(en->anchors, en->anchors);
}
@@ -801,6 +940,20 @@ _edje_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
(rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_EDITABLE))
return;
if (!ev->key) return;
+
+#ifdef HAVE_ECORE_IMF
+#if 0 // FIXME -- keyboard activated IMF
+ if (en->imf_context)
+ {
+ Ecore_IMF_Event_Key_Down ecore_ev;
+ ecore_imf_evas_event_key_down_wrap(ev, &ecore_ev);
+ if (ecore_imf_context_filter_event(en->imf_context,
+ ECORE_IMF_EVENT_KEY_DOWN,
+ (Ecore_IMF_Event *)&ecore_ev))
+ return;
+ }
+#endif
+#endif
tc = evas_object_textblock_cursor_new(rp->object);
evas_textblock_cursor_copy(en->cursor, tc);
@@ -874,6 +1027,11 @@ _edje_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
_range_del(en->cursor, rp->object, en);
else
_backspace(en->cursor, rp->object, en);
+
+#ifdef HAVE_ECORE_IMF
+ if (en->have_composition)
+ _backspace(en->cursor, rp->object, en);
+#endif
}
_sel_clear(en->cursor, rp->object, en);
_curs_update_from_curs(en->cursor, rp->object, en);
@@ -1029,6 +1187,8 @@ _edje_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
_curs_update_from_curs(en->cursor, rp->object, en);
_anchors_get(en->cursor, rp->object, en);
_edje_emit(ed, "entry,changed", rp->part->name);
+ _edje_emit(ed, "cursor,changed", rp->part->name);
+ cursor_changed = 1;
ev->event_flags |= EVAS_EVENT_FLAG_ON_HOLD;
}
_edje_emit(ed, "entry,key,enter", rp->part->name);
@@ -1063,6 +1223,16 @@ _edje_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
}
if ((evas_textblock_cursor_compare(tc, en->cursor)) && (!cursor_changed))
_edje_emit(ed, "cursor,changed", rp->part->name);
+
+#ifdef HAVE_ECORE_IMF
+ if (en->imf_context)
+ {
+ ecore_imf_context_reset(en->imf_context);
+ ecore_imf_context_cursor_position_set(en->imf_context,
+ evas_textblock_cursor_pos_get(en->cursor));
+ }
+#endif
+
evas_textblock_cursor_free(tc);
_edje_entry_real_part_configure(rp);
}
@@ -1078,6 +1248,21 @@ _edje_key_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) ||
(rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_EDITABLE))
return;
+
+#ifdef HAVE_ECORE_IMF
+#if 0 // FIXME key activation imf
+ if (en->imf_context)
+ {
+ Ecore_IMF_Event_Key_Up ecore_ev;
+ ecore_imf_evas_event_key_down_wrap(ev, &ecore_ev);
+ if (ecore_imf_context_filter_event(en->imf_context,
+ ECORE_IMF_EVENT_KEY_UP,
+ (Ecore_IMF_Event *)&ecore_ev))
+ return;
+ }
+#endif
+#endif
+
}
static void
@@ -1091,6 +1276,7 @@ _edje_part_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info
Evas_Textblock_Cursor *tc;
Evas_Bool dosel = 0;
if (!rp) return;
+ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
en = rp->entry_data;
if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) ||
(rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_SELECTABLE))
@@ -1124,7 +1310,7 @@ _edje_part_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info
{
Evas_Coord lx, ly, lw, lh;
int line;
-
+
line = evas_textblock_cursor_line_coord_set(en->cursor, en->cy);
if (line == -1)
_curs_end(en->cursor, rp->object, en);
@@ -1136,6 +1322,14 @@ _edje_part_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info
else
_curs_lin_end(en->cursor, rp->object, en);
}
+ line = evas_textblock_cursor_line_geometry_get(en->cursor, &lx, &ly, &lw, &lh);
+ }
+ else
+ {
+ Evas_Coord lx, ly, lw, lh;
+ int line;
+
+ line = evas_textblock_cursor_line_geometry_get(en->cursor, &lx, &ly, &lw, &lh);
}
if (dosel)
{
@@ -1193,6 +1387,16 @@ _edje_part_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info
}
if (evas_textblock_cursor_compare(tc, en->cursor))
_edje_emit(rp->edje, "cursor,changed", rp->part->name);
+
+#ifdef HAVE_ECORE_IMF
+ if (en->imf_context)
+ {
+ ecore_imf_context_reset(en->imf_context);
+ ecore_imf_context_cursor_position_set(en->imf_context,
+ evas_textblock_cursor_pos_get(en->cursor));
+ }
+#endif
+
evas_textblock_cursor_free(tc);
_edje_entry_real_part_configure(rp);
}
@@ -1209,6 +1413,7 @@ _edje_part_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
Evas_Bool dosel = 0;
if (ev->button != 1) return;
if (!rp) return;
+ if (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD) return;
en = rp->entry_data;
if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) ||
(rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_SELECTABLE))
@@ -1342,6 +1547,11 @@ void
_edje_entry_real_part_init(Edje_Real_Part *rp)
{
Entry *en;
+#ifdef HAVE_ECORE_IMF
+ const char *ctx_id;
+ const Ecore_IMF_Context_Info *ctx_info;
+ Evas *evas;
+#endif
en = calloc(1, sizeof(Entry));
if (!en) return;
@@ -1381,8 +1591,51 @@ _edje_entry_real_part_init(Edje_Real_Part *rp)
{
evas_object_show(en->cursor_bg);
evas_object_show(en->cursor_fg);
+#ifdef HAVE_ECORE_IMF
+ ecore_imf_init();
+
+ edje_object_signal_callback_add(rp->edje->obj, "focus,part,in", rp->part->name, _edje_entry_focus_in_cb, rp);
+ edje_object_signal_callback_add(rp->edje->obj, "focus,part,out", rp->part->name, _edje_entry_focus_out_cb, rp);
+
+ ctx_id = ecore_imf_context_default_id_get();
+ if (ctx_id)
+ {
+ ctx_info = ecore_imf_context_info_by_id_get(ctx_id);
+ if (!ctx_info->canvas_type ||
+ strcmp(ctx_info->canvas_type, "evas") == 0)
+ {
+ en->imf_context = ecore_imf_context_add(ctx_id);
+ }
+
+ else
+ {
+ ctx_id = ecore_imf_context_default_id_by_canvas_type_get("evas");
+ if (ctx_id)
+ {
+ en->imf_context = ecore_imf_context_add(ctx_id);
+ }
+ }
+ }
+ else
+ en->imf_context = NULL;
+
+ if (!en->imf_context) goto done;
+
+ ecore_imf_context_client_window_set(en->imf_context, rp->object);
+ ecore_imf_context_client_canvas_set(en->imf_context, rp->edje->evas);
+
+ ecore_imf_context_retrieve_surrounding_callback_set(en->imf_context, _edje_entry_imf_retrieve_surrounding_cb, rp);
+ en->imf_ee_handler_commit = ecore_event_handler_add(ECORE_IMF_EVENT_COMMIT, _edje_entry_imf_event_commit_cb, rp->edje);
+ en->imf_ee_handler_delete = ecore_event_handler_add(ECORE_IMF_EVENT_DELETE_SURROUNDING, _edje_entry_imf_event_delete_surrounding_cb, rp);
+ en->imf_ee_handler_changed = ecore_event_handler_add(ECORE_IMF_EVENT_PREEDIT_CHANGED, _edje_entry_imf_event_changed_cb, rp->edje);
+ ecore_imf_context_input_mode_set(en->imf_context,
+ rp->part->entry_mode == EDJE_ENTRY_EDIT_MODE_PASSWORD ?
+ ECORE_IMF_INPUT_MODE_INVISIBLE : ECORE_IMF_INPUT_MODE_FULL);
+#endif
}
+ done:
en->cursor = evas_object_textblock_cursor_get(rp->object);
+
}
void
@@ -1397,6 +1650,40 @@ _edje_entry_real_part_shutdown(Edje_Real_Part *rp)
rp->edje->subobjs = eina_list_remove(rp->edje->subobjs, en->cursor_fg);
evas_object_del(en->cursor_bg);
evas_object_del(en->cursor_fg);
+
+#ifdef HAVE_ECORE_IMF
+ if (rp->part->entry_mode >= EDJE_ENTRY_EDIT_MODE_EDITABLE)
+ {
+ if (en->imf_context)
+ {
+ if (en->imf_ee_handler_commit)
+ {
+ ecore_event_handler_del(en->imf_ee_handler_commit);
+ en->imf_ee_handler_commit = NULL;
+ }
+
+ if (en->imf_ee_handler_delete)
+ {
+ ecore_event_handler_del(en->imf_ee_handler_delete);
+ en->imf_ee_handler_delete = NULL;
+ }
+
+ if (en->imf_ee_handler_changed)
+ {
+ ecore_event_handler_del(en->imf_ee_handler_changed);
+ en->imf_ee_handler_changed = NULL;
+ }
+
+ ecore_imf_context_del(en->imf_context);
+ en->imf_context = NULL;
+ }
+
+ edje_object_signal_callback_del(rp->edje->obj, "focus,part,in", rp->part->name, _edje_entry_focus_in_cb);
+ edje_object_signal_callback_del(rp->edje->obj, "focus,part,out", rp->part->name, _edje_entry_focus_out_cb);
+ ecore_imf_shutdown();
+ }
+#endif
+
free(en);
}
@@ -1596,3 +1883,156 @@ _edje_entry_select_abort(Edje_Real_Part *rp)
_edje_entry_real_part_configure(rp);
}
}
+
+#ifdef HAVE_ECORE_IMF
+static int
+_edje_entry_imf_retrieve_surrounding_cb(void *data, Ecore_IMF_Context *ctx, char **text, int *cursor_pos)
+{
+ Edje_Real_Part *rp = data;
+ Entry *en;
+ const char *str;
+
+ if (!rp) return 0;
+ en = rp->entry_data;
+ if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) ||
+ (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_SELECTABLE))
+ return 0;
+
+ if (text)
+ {
+ str = _edje_entry_text_get(rp);
+ *text = str ? strdup(str) : strdup("");
+ }
+
+ if (cursor_pos)
+ {
+ *cursor_pos = evas_textblock_cursor_pos_get(en->cursor);
+ }
+
+ return 1;
+}
+
+static int
+_edje_entry_imf_event_commit_cb(void *data, int type, void *event)
+{
+ Edje* ed = data;
+ Edje_Real_Part *rp = ed->focused_part;
+ Entry *en;
+ Ecore_IMF_Event_Commit *ev = event;
+ int cursor_pos, composition_pos;
+ int start_pos, end_pos;
+ Evas_Bool selecting;
+ Evas_Bool changed = 0;
+ int i;
+
+ if (!rp) return 1;
+
+ en = rp->entry_data;
+ if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) ||
+ (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_SELECTABLE))
+ return 1;
+
+ if (en->imf_context != ev->ctx) return 1;
+
+ if (en->have_composition)
+ {
+ for (i = 0; i < en->comp_len; i++)
+ _backspace(en->cursor, rp->object, en);
+ _sel_clear(en->cursor, rp->object, en);
+ en->have_composition = 0;
+ }
+
+ evas_textblock_cursor_text_prepend(en->cursor, ev->str);
+
+ _curs_update_from_curs(en->cursor, rp->object, en);
+ _anchors_get(en->cursor, rp->object, en);
+ _edje_emit(rp->edje, "entry,changed", rp->part->name);
+ _edje_emit(ed, "cursor,changed", rp->part->name);
+
+ return 0;
+}
+
+static int
+_edje_entry_imf_event_changed_cb(void *data, int type, void *event)
+{
+ Edje* ed = data;
+ Edje_Real_Part *rp = ed->focused_part;
+ Entry *en;
+ int cursor_pos;
+ int composition_pos, length;
+ int start_pos, end_pos;
+ Evas_Bool selecting = 0;
+ Evas_Bool changed = 0;
+ Ecore_IMF_Event_Commit *ev = event;
+ Evas_Textblock_Cursor *start_cur, *end_cur;
+ int i;
+ char *preedit_string;
+
+ if (!rp) return 1;
+
+ en = rp->entry_data;
+ if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) ||
+ (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_SELECTABLE))
+ return 1;
+
+ if (!en->imf_context) return 1;
+
+ if (en->imf_context != ev->ctx) return 1;
+
+ ecore_imf_context_preedit_string_get(en->imf_context, &preedit_string, &length);
+
+ // FIXME : check the maximum length of evas_textblock
+ if ( 0 /* check the maximum length of evas_textblock */ )
+ return 1;
+
+ cursor_pos = evas_textblock_cursor_pos_get(en->cursor);
+
+ if (en->have_composition)
+ {
+ // delete the composing characters
+ for (i = 0;i < en->comp_len; i++)
+ _backspace(en->cursor, rp->object, en);
+ }
+
+ en->comp_len = length;
+
+ _sel_clear(en->cursor, rp->object, en);
+ _sel_enable(en->cursor, rp->object, en);
+ _sel_start(en->cursor, rp->object, en);
+
+ en->have_composition = 1;
+
+ evas_textblock_cursor_text_prepend(en->cursor, preedit_string);
+
+ _sel_extend(en->cursor, rp->object, en);
+
+ _curs_update_from_curs(en->cursor, rp->object, en);
+ _anchors_get(en->cursor, rp->object, en);
+ _edje_emit(rp->edje, "entry,changed", rp->part->name);
+ _edje_emit(ed, "cursor,changed", rp->part->name);
+
+ return 0;
+}
+
+static int
+_edje_entry_imf_event_delete_surrounding_cb(void *data, int type, void *event)
+{
+ Edje *ed = data;
+ Edje_Real_Part *rp = ed->focused_part;
+ Entry *en;
+ Ecore_IMF_Event_Delete_Surrounding *ev = event;
+ int cursor_pos;
+
+ if (!rp) return 1;
+ en = rp->entry_data;
+ if ((!en) || (rp->part->type != EDJE_PART_TYPE_TEXTBLOCK) ||
+ (rp->part->entry_mode < EDJE_ENTRY_EDIT_MODE_SELECTABLE))
+ return 1;
+
+ if (en->imf_context != ev->ctx) return 1;
+
+ cursor_pos = evas_textblock_cursor_pos_get(en->cursor);
+
+ return 0;
+}
+#endif
diff --git a/src/lib/edje_load.c b/src/lib/edje_load.c
index 34ebc65..738b4b5 100644
--- a/src/lib/edje_load.c
+++ b/src/lib/edje_load.c
@@ -72,14 +72,16 @@ edje_object_file_get(const Evas_Object *obj, const char **file, const char **gro
* @param obj A valid Evas_Object handle
*
* @return The Edje load error:\n
- * 0: No Error\n
- * 1: Generic Error\n
- * 2: Does not Exist\n
- * 3: Permission Denied\n
- * 4: Resource Allocation Failed\n
- * 5: Corrupt File\n
- * 6: Unknown Format\n
- * 7: Incompatible File
+ * EDJE_LOAD_ERROR_NONE: No Error\n
+ * EDJE_LOAD_ERROR_GENERIC: Generic Error\n
+ * EDJE_LOAD_ERROR_DOES_NOT_EXIST: Does not Exist\n
+ * EDJE_LOAD_ERROR_PERMISSION_DENIED: Permission Denied\n
+ * EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED: Resource Allocation Failed\n
+ * EDJE_LOAD_ERROR_CORRUPT_FILE: Corrupt File\n
+ * EDJE_LOAD_ERROR_UNKNOWN_FORMAT: Unknown Format\n
+ * EDJE_LOAD_ERROR_INCOMPATIBLE_FILE: Incompatible File\n
+ * EDJE_LOAD_ERROR_UNKNOWN_COLLECTION: Unknown Collection\n
+ * EDJE_LOAD_ERROR_RECURSIVE_REFERENCE: Recursive Reference\n
*/
EAPI int
edje_object_load_error_get(const Evas_Object *obj)
diff --git a/src/lib/edje_private.h b/src/lib/edje_private.h
index 6d24e0c..80d77bb 100644
--- a/src/lib/edje_private.h
+++ b/src/lib/edje_private.h
@@ -14,14 +14,15 @@
#include <Ecore.h>
#include <Ecore_Str.h>
#include <Ecore_Job.h>
+#ifdef HAVE_ECORE_IMF
+# include <Ecore_IMF.h>
+#endif
#include <Eet.h>
#include <Embryo.h>
-#include <eina_stringshare.h>
#include "Edje.h"
#include "Edje_Edit.h"
-
#ifdef __GNUC__
# if __GNUC__ >= 4
// BROKEN in gcc 4 on amd64
@@ -524,6 +525,7 @@ struct _Edje_Part_Description
struct {
Eina_List *tween_list; /* list of Edje_Part_Image_Id */
int id; /* the image id to use */
+ int scale_hint; /* evas scale hint */
} image;
struct {
@@ -581,24 +583,24 @@ struct _Edje_Part_Description
unsigned char min_y; /* if text size should be part min size */
unsigned char max_x; /* if text size should be part max size */
unsigned char max_y; /* if text size should be part max size */
-
} text;
struct {
char *layout, *alt_layout;
Edje_Alignment align;
struct {
- int x, y;
+ int x, y;
} padding;
struct {
- Eina_Bool h, v;
+ Eina_Bool h, v;
} min;
} box;
+
struct {
unsigned char homogeneous;
Edje_Alignment align;
struct {
- int x, y;
+ int x, y;
} padding;
} table;
@@ -722,78 +724,79 @@ struct _Edje
struct _Edje_Real_Part
{
- Edje *edje;
- Evas_Object *object;
- Eina_List *extra_objects;
- Evas_Object *swallowed_object;
- Eina_List *items;
- void *entry_data;
- Evas_Object *cursorbg_object;
- Evas_Object *cursorfg_object;
- // FIXME: add selection objects
- Edje_Part *part;
- int x, y, w, h;
- Edje_Rectangle req;
- Edje_Position offset;
+ Edje *edje; // 4
+ Edje_Part *part; // 4
+ Evas_Object *object; // 4
+ Eina_List *extra_objects; // 4
+ Evas_Object *swallowed_object; // 4 // FIXME: move with swallow_params data
+ Eina_List *items; // 4 //FIXME: only if table/box
+ void *entry_data; // 4 // FIXME: move to entry section
+ Evas_Object *cursorbg_object; // 4 // FIXME: move to entry section
+ Evas_Object *cursorfg_object; // 4 // FIXME: move to entry section
+ int x, y, w, h; // 16
+ Edje_Rectangle req; // 16
+ Edje_Position offset; // 8 // FIXME: move to text section
struct {
- Edje_Size min, max;
- Edje_Aspect aspect;
- } swallow_params;
+ Edje_Size min, max; // 16
+ Edje_Aspect aspect; // 12
+ } swallow_params; // 28 // FIXME: only if type SWALLOW
struct {
- double x, y;
- Edje_Position_Scale val, size, step, page;
+ double x, y; // 16
+ Edje_Position_Scale val, size, step, page; // 64
struct {
- unsigned int count;
- int x, y;
+ unsigned int count; // 4
+ int x, y; // 8
} down;
struct {
- int x, y;
+ int x, y; // 8
} tmp;
- unsigned char need_reset : 1;
- } drag;
+ unsigned char need_reset : 1; // 4
+ } drag; // 104 // FIME: make drag pointer to struct optional
struct {
- Edje_Real_Part *source;
- Edje_Real_Part *text_source;
- const char *text;
- const char *font;
- const char *style;
- int size;
+ Edje_Real_Part *source; // 4
+ Edje_Real_Part *text_source; // 4
+ const char *text; // 4
+ const char *font; // 4 text only
+ const char *style; // 4 text only
+ int size; // 4 text only
struct {
- double in_w, in_h;
- int in_size;
- const char *in_str;
- const char *out_str;
- int out_size;
- double align_x, align_y;
- double elipsis;
- int fit_x, fit_y;
- } cache;
- } text;
-
- double description_pos;
- Edje_Part_Description *chosen_description;
+ double in_w, in_h; // 16 text only
+ int in_size; // 4 text only
+ const char *in_str; // 4 text only
+ const char *out_str; // 4 text only
+ int out_size; // 4 text only
+ double align_x, align_y; // 16 text only
+ double elipsis; // 8 text only
+ int fit_x, fit_y; // 8 text only
+ } cache; // 64
+ } text; // 86 // FIXME make text a potiner to struct and alloc at end
+ // if part type is TEXT move common members textblock +
+ // text to front and have smaller struct for textblock
+
+ double description_pos; // 8
+ Edje_Part_Description *chosen_description; // 4
struct {
- Edje_Part_Description *description;
- Edje_Real_Part *rel1_to_x;
- Edje_Real_Part *rel1_to_y;
- Edje_Real_Part *rel2_to_x;
- Edje_Real_Part *rel2_to_y;
- } param1, param2, custom;
+ Edje_Part_Description *description; // 4
+ Edje_Real_Part *rel1_to_x; // 4
+ Edje_Real_Part *rel1_to_y; // 4
+ Edje_Real_Part *rel2_to_x; // 4
+ Edje_Real_Part *rel2_to_y; // 4
+ } param1, param2, custom; // 60 // FIXME: custom should be alloced on demand - 20--
- Edje_Real_Part *confine_to;
- Edje_Real_Part *clip_to;
+ Edje_Real_Part *confine_to; // 4 // fixme - make part of drag
+ Edje_Real_Part *clip_to; // 4
- Edje_Running_Program *program;
- Edje_Real_Part *events_to;
+ Edje_Running_Program *program; // 4
+ Edje_Real_Part *events_to; // 4
- int clicked_button;
- int gradient_id;
+ int clicked_button; // 4
+ int gradient_id; // 4
- unsigned char calculated;
- unsigned char calculating;
+ unsigned char calculated; // 1
+ unsigned char calculating; // 1
- unsigned char still_in : 1;
-};
+ unsigned char still_in : 1; // 2
+}; // 394
struct _Edje_Running_Program
{
diff --git a/src/lib/edje_program.c b/src/lib/edje_program.c
index 2c6e518..a04c4b0 100644
--- a/src/lib/edje_program.c
+++ b/src/lib/edje_program.c
@@ -2,6 +2,7 @@
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
*/
+#define _GNU_SOURCE
#include <string.h>
#include "edje_private.h"
@@ -814,8 +815,49 @@ _edje_emit(Edje *ed, const char *sig, const char *src)
Edje_Message_Signal emsg;
Eina_List *l;
Evas_Object *obj;
-
+ const char *sep;
+
if (ed->delete_me) return;
+
+ sep = strchr(sig, ':');
+ if (sep)
+ {
+ size_t length;
+ char *part;
+ /* the signal contains a colon, split the signal into "group:signal",
+ * and deliver it to "group"
+ */
+ length = strlen(sig) + 1;
+ part = alloca(length);
+ if (part)
+ {
+ char *newsig;
+ int i;
+
+ memcpy(part, sig, length);
+ newsig = part + (sep - sig);
+ *newsig = '\0';
+ newsig++;
+
+ for (i = 0; i < ed->table_parts_size; i++)
+ {
+ Edje_Real_Part *rp = ed->table_parts[i];
+ if ((rp->part->type == EDJE_PART_TYPE_GROUP) &&
+ (rp->swallowed_object) &&
+ (rp->part) && (rp->part->name) &&
+ (strcmp(rp->part->name, part) == 0))
+ {
+ Edje *ed2 = _edje_fetch(rp->swallowed_object);
+ if (ed2) _edje_emit(ed2, newsig, src);
+ return; /* stop processing.
+ * XXX maybe let signal be processed anyway?
+ * XXX in this case, just comment this line
+ */
+ }
+ }
+ }
+ }
+
emsg.sig = sig;
emsg.src = src;
_edje_message_send(ed, EDJE_QUEUE_SCRIPT, EDJE_MESSAGE_SIGNAL, 0, &emsg);
diff --git a/src/lib/edje_util.c b/src/lib/edje_util.c
index 367d16e..2b27bb2 100644
--- a/src/lib/edje_util.c
+++ b/src/lib/edje_util.c
@@ -2617,6 +2617,34 @@ edje_object_part_box_remove_all(Evas_Object *obj, const char *part, Evas_Bool cl
}
+static void
+_edje_box_child_del_cb(void *data, Evas *e __UNUSED__, Evas_Object *child __UNUSED__, void *einfo __UNUSED__)
+{
+ Edje_Real_Part *rp = data;
+ rp->edje->dirty = 1;
+ _edje_recalc(rp->edje);
+}
+
+static void
+_edje_box_child_add(Edje_Real_Part *rp, Evas_Object *child)
+{
+ evas_object_event_callback_add
+ (child, EVAS_CALLBACK_DEL, _edje_box_child_del_cb, rp);
+
+ rp->edje->dirty = 1;
+ _edje_recalc(rp->edje);
+}
+
+static void
+_edje_box_child_remove(Edje_Real_Part *rp, Evas_Object *child)
+{
+ evas_object_event_callback_del_full
+ (child, EVAS_CALLBACK_DEL, _edje_box_child_del_cb, rp);
+
+ rp->edje->dirty = 1;
+ _edje_recalc(rp->edje);
+}
+
Evas_Bool
_edje_real_part_box_append(Edje_Real_Part *rp, Evas_Object *child_obj)
{
@@ -2625,6 +2653,8 @@ _edje_real_part_box_append(Edje_Real_Part *rp, Evas_Object *child_obj)
opt = evas_object_box_append(rp->object, child_obj);
if (!opt) return 0;
+ _edje_box_child_add(rp, child_obj);
+
return 1;
}
@@ -2636,6 +2666,8 @@ _edje_real_part_box_prepend(Edje_Real_Part *rp, Evas_Object *child_obj)
opt = evas_object_box_prepend(rp->object, child_obj);
if (!opt) return 0;
+ _edje_box_child_add(rp, child_obj);
+
return 1;
}
@@ -2647,6 +2679,8 @@ _edje_real_part_box_insert_before(Edje_Real_Part *rp, Evas_Object *child_obj, co
opt = evas_object_box_insert_before(rp->object, child_obj, ref);
if (!opt) return 0;
+ _edje_box_child_add(rp, child_obj);
+
return 1;
}
@@ -2658,6 +2692,8 @@ _edje_real_part_box_insert_at(Edje_Real_Part *rp, Evas_Object *child_obj, unsign
opt = evas_object_box_insert_at(rp->object, child_obj, pos);
if (!opt) return 0;
+ _edje_box_child_add(rp, child_obj);
+
return 1;
}
@@ -2665,9 +2701,9 @@ Evas_Object *
_edje_real_part_box_remove(Edje_Real_Part *rp, Evas_Object *child_obj)
{
if (evas_object_data_get(child_obj, "\377 edje.box_item")) return NULL;
- if (evas_object_box_remove(rp->object, child_obj))
- return child_obj;
- return NULL;
+ if (!evas_object_box_remove(rp->object, child_obj)) return NULL;
+ _edje_box_child_remove(rp, child_obj);
+ return child_obj;
}
Evas_Object *
@@ -2682,9 +2718,9 @@ _edje_real_part_box_remove_at(Edje_Real_Part *rp, unsigned int pos)
if (!opt) return NULL;
child_obj = opt->obj;
if (evas_object_data_get(child_obj, "\377 edje.box_item")) return NULL;
- if (evas_object_box_remove_at(rp->object, pos))
- return child_obj;
- return NULL;
+ if (!evas_object_box_remove_at(rp->object, pos)) return NULL;
+ _edje_box_child_remove(rp, child_obj);
+ return child_obj;
}
Evas_Bool
@@ -2693,13 +2729,12 @@ _edje_real_part_box_remove_all(Edje_Real_Part *rp, Evas_Bool clear)
Eina_List *children;
int i;
- if (eina_list_count(rp->items) == 0)
- return evas_object_box_remove_all(rp->object, clear);
i = 0;
children = evas_object_box_children_get(rp->object);
while (children)
{
Evas_Object *child_obj = children->data;
+ _edje_box_child_remove(rp, child_obj);
if (evas_object_data_get(child_obj, "\377 edje.box_item"))
i++;
else
@@ -2714,6 +2749,34 @@ _edje_real_part_box_remove_all(Edje_Real_Part *rp, Evas_Bool clear)
return 1;
}
+static void
+_edje_table_child_del_cb(void *data, Evas *e __UNUSED__, Evas_Object *child __UNUSED__, void *einfo __UNUSED__)
+{
+ Edje_Real_Part *rp = data;
+ rp->edje->dirty = 1;
+ _edje_recalc(rp->edje);
+}
+
+static void
+_edje_table_child_add(Edje_Real_Part *rp, Evas_Object *child)
+{
+ evas_object_event_callback_add
+ (child, EVAS_CALLBACK_DEL, _edje_table_child_del_cb, rp);
+
+ rp->edje->dirty = 1;
+ _edje_recalc(rp->edje);
+}
+
+static void
+_edje_table_child_remove(Edje_Real_Part *rp, Evas_Object *child)
+{
+ evas_object_event_callback_del_full
+ (child, EVAS_CALLBACK_DEL, _edje_table_child_del_cb, rp);
+
+ rp->edje->dirty = 1;
+ _edje_recalc(rp->edje);
+}
+
/** Packs an object into the table
* @param obj A valid Evas_Object handle
* @param part The part name
@@ -2829,13 +2892,22 @@ edje_object_part_table_clear(Evas_Object *obj, const char *part, Evas_Bool clear
Evas_Bool
_edje_real_part_table_pack(Edje_Real_Part *rp, Evas_Object *child_obj, unsigned short col, unsigned short row, unsigned short colspan, unsigned short rowspan)
{
- return evas_object_table_pack(rp->object, child_obj, col, row, colspan, rowspan);
+ Evas_Bool ret = evas_object_table_pack(rp->object, child_obj, col, row, colspan, rowspan);
+
+ _edje_table_child_add(rp, child_obj);
+
+ return ret;
}
Evas_Bool
_edje_real_part_table_unpack(Edje_Real_Part *rp, Evas_Object *child_obj)
{
- return evas_object_table_unpack(rp->object, child_obj);
+ Evas_Bool ret = evas_object_table_unpack(rp->object, child_obj);
+
+ if (ret)
+ _edje_table_child_remove(rp, child_obj);
+
+ return ret;
}
void
@@ -2843,15 +2915,11 @@ _edje_real_part_table_clear(Edje_Real_Part *rp, Evas_Bool clear)
{
Eina_List *children;
- if (eina_list_count(rp->items) == 0)
- {
- evas_object_table_clear(rp->object, clear);
- return;
- }
children = evas_object_table_children_get(rp->object);
while (children)
{
Evas_Object *child_obj = children->data;
+ _edje_table_child_remove(rp, child_obj);
if (!evas_object_data_get(child_obj, "\377 edje.table_item"))
{
evas_object_table_unpack(rp->object, child_obj);
diff --git a/utils/Makefile.in b/utils/Makefile.in
index ba88c70..a0f62e8 100644
--- a/utils/Makefile.in
+++ b/utils/Makefile.in
@@ -78,6 +78,8 @@ ECORE_EVAS_CFLAGS = @ECORE_EVAS_CFLAGS@
ECORE_EVAS_LIBS = @ECORE_EVAS_LIBS@
ECORE_FILE_CFLAGS = @ECORE_FILE_CFLAGS@
ECORE_FILE_LIBS = @ECORE_FILE_LIBS@
+ECORE_IMF_CFLAGS = @ECORE_IMF_CFLAGS@
+ECORE_IMF_LIBS = @ECORE_IMF_LIBS@
EDJE_CC_PRG = @EDJE_CC_PRG@
EDJE_CFLAGS = @EDJE_CFLAGS@
EDJE_DECC_PRG = @EDJE_DECC_PRG@
--
Enlightenment DR17 graphical layout and animation library
More information about the Pkg-e-commits
mailing list