From 02f0c0f3639cde7e48eac1ea56b57b8ed9609f38 Mon Sep 17 00:00:00 2001 From: Ji-hoon Lee Date: Thu, 4 Apr 2013 23:37:52 +0900 Subject: [PATCH] Modified to decide whether to display candidate window according to layout style Change-Id: I1f08a3f1b71d39cee868ab7628b1da6287a97057 --- configure.ac | 1 + packaging/sunpinyin.spec | 1 + wrapper/scim/src/Makefile.am | 4 ++-- wrapper/scim/src/sunpinyin_imengine.cpp | 31 +++++++++++++++++++++++++++++-- wrapper/scim/src/sunpinyin_imengine.h | 5 +++++ 5 files changed, 38 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index 77017c4..d7304f2 100755 --- a/configure.ac +++ b/configure.ac @@ -51,6 +51,7 @@ ISF_VERSION=1.0.0 PKG_CHECK_MODULES(ISF,[isf >= $ISF_VERSION]) PKG_CHECK_MODULES(SQLITE, [sqlite3 >= 0.0]) PKG_CHECK_MODULES(GLIB, [glib-2.0 >= 2.0]) +PKG_CHECK_MODULES(ECORE, [ecore >= 0.0]) # Check if we should build setup module PKG_CHECK_MODULES(ISF_GTKUTILS,[isf-gtkutils >= $ISF_VERSION], diff --git a/packaging/sunpinyin.spec b/packaging/sunpinyin.spec index 8cfbdd5..b8f6465 100755 --- a/packaging/sunpinyin.spec +++ b/packaging/sunpinyin.spec @@ -10,6 +10,7 @@ BuildRequires: gettext-tools BuildRequires: pkgconfig(isf) BuildRequires: pkgconfig(glib-2.0) BuildRequires: pkgconfig(sqlite3) +BuildRequires: pkgconfig(ecore) Requires(post): /sbin/ldconfig Requires(postun): /sbin/ldconfig diff --git a/wrapper/scim/src/Makefile.am b/wrapper/scim/src/Makefile.am index 5c295a1..c14cec3 100755 --- a/wrapper/scim/src/Makefile.am +++ b/wrapper/scim/src/Makefile.am @@ -30,7 +30,6 @@ noinst_HEADERS = imi_scimwin.h\ sunpinyin_utils.h -############### ise-engine-xt9.la ################### moduledir = @SUNPINYIN_MODULE_DIR@/IMEngine module_LTLIBRARIES = ise-engine-sunpinyin.la @@ -39,12 +38,13 @@ ise_engine_sunpinyin_la_SOURCES =imi_scimwin.cpp\ sunpinyin_lookup_table.cpp\ sunpinyin_utils.cpp -ise_engine_sunpinyin_la_CXXFLAGS = @ISF_CFLAGS@ ${ise_engine_sunpinyin_DEFINES} +ise_engine_sunpinyin_la_CXXFLAGS = @ISF_CFLAGS@ @ECORE_CFLAGS@ ${ise_engine_sunpinyin_DEFINES} ise_engine_sunpinyin_la_LDFLAGS = -avoid-version \ -module \ -export-dynamic\ @ISF_LIBS@\ + @ECORE_LIBS@\ -lstdc++ ise_engine_sunpinyin_la_LIBADD = $(top_builddir)/src/libsunpinyin.la diff --git a/wrapper/scim/src/sunpinyin_imengine.cpp b/wrapper/scim/src/sunpinyin_imengine.cpp index aa40557..1fec43b 100644 --- a/wrapper/scim/src/sunpinyin_imengine.cpp +++ b/wrapper/scim/src/sunpinyin_imengine.cpp @@ -61,6 +61,8 @@ #include #include +#include + #include #include #include @@ -395,7 +397,11 @@ SunPyInstance::reset () //hide_aux_string (); //m_pv->updateWindows(m_pv->clearIC()); //refresh_all_properties (); - show_lookup_table (); + if (m_lookup_table_always_on) { + show_lookup_table (); + } else { + hide_lookup_table (); + } m_pv->updateWindows(CIMIView::PREEDIT_MASK | CIMIView::CANDIDATE_MASK); } @@ -404,7 +410,7 @@ SunPyInstance::focus_in () { SCIM_DEBUG_IMENGINE(3) << get_id() << ": focus_in ()\n"; m_focused = true; - show_lookup_table (); + //show_lookup_table (); initialize_all_properties (); hide_preedit_string (); @@ -448,6 +454,27 @@ SunPyInstance::trigger_property (const String &property) } } +void +SunPyInstance::set_layout (unsigned int layout) +{ + switch (layout) + { + case ECORE_IMF_INPUT_PANEL_LAYOUT_NORMAL: + case ECORE_IMF_INPUT_PANEL_LAYOUT_NUMBER: + case ECORE_IMF_INPUT_PANEL_LAYOUT_EMAIL: + case ECORE_IMF_INPUT_PANEL_LAYOUT_URL: + show_lookup_table (); + m_lookup_table_always_on = true; + break; + case ECORE_IMF_INPUT_PANEL_LAYOUT_PHONENUMBER: + case ECORE_IMF_INPUT_PANEL_LAYOUT_IP: + case ECORE_IMF_INPUT_PANEL_LAYOUT_MONTH: + case ECORE_IMF_INPUT_PANEL_LAYOUT_NUMBERONLY: + hide_lookup_table (); + m_lookup_table_always_on = false; + break; + } +} void SunPyInstance::init_lookup_table_labels () diff --git a/wrapper/scim/src/sunpinyin_imengine.h b/wrapper/scim/src/sunpinyin_imengine.h index 9024a53..299e425 100755 --- a/wrapper/scim/src/sunpinyin_imengine.h +++ b/wrapper/scim/src/sunpinyin_imengine.h @@ -89,6 +89,7 @@ class SunPyInstance : public IMEngineInstanceBase CommonLookupTable *m_common_lookup_table; Connection m_reload_signal_connection; bool m_focused; + bool m_lookup_table_always_on; public: SunPyInstance(SunPyFactory *factory, @@ -119,6 +120,10 @@ class SunPyInstance : public IMEngineInstanceBase * update the configuration of the input method */ virtual void trigger_property (const String &property); + /** + * decide whether to display candidate window according to layout + */ + virtual void set_layout (unsigned int layout); public: /** -- 2.7.4