From 3ac52488785f896f9c52cc818f8df335a9c8a365 Mon Sep 17 00:00:00 2001 From: Sungmin Kwak Date: Wed, 8 Apr 2015 19:15:40 +0900 Subject: [PATCH] Add update_preedit_string() with attrs parameter Change-Id: I38991dabf2431a73d2ee63a8f2dfa5a514c312c3 --- src/sclconnection-isf.cpp | 17 +++++++++++++++++ src/sclconnection-isf.h | 1 + src/sclconnection.cpp | 7 +++++++ src/sclconnection.h | 4 ++++ src/sclcore.cpp | 7 +++++++ src/sclcore.h | 20 ++++++++++++++++---- src/sclcoreimpl.cpp | 5 +++++ src/sclcoreimpl.h | 2 +- 8 files changed, 58 insertions(+), 5 deletions(-) diff --git a/src/sclconnection-isf.cpp b/src/sclconnection-isf.cpp index 39db979..f665df2 100644 --- a/src/sclconnection-isf.cpp +++ b/src/sclconnection-isf.cpp @@ -848,6 +848,23 @@ void CSCLConnectionISF::update_preedit_string(sclint ic, const sclchar *ic_uuid, } } +void CSCLConnectionISF::update_preedit_string(sclint ic, const sclchar *ic_uuid, const sclchar *str, const scim::AttributeList &attrs) +{ + if (m_initialized) { + scim::String uuid; + if (ic_uuid) { + uuid = scim::String(ic_uuid); + } + m_helper_agent.update_preedit_string(ic, uuid, scim::utf8_mbstowcs(str), attrs); + + if (str && strlen(str) > 0) { + show_preedit_string(ic, ic_uuid); + } else { + hide_preedit_string(ic, ic_uuid); + } + } +} + void CSCLConnectionISF::update_aux_string(const sclchar *str) { if (m_initialized) { diff --git a/src/sclconnection-isf.h b/src/sclconnection-isf.h index 3a6808c..632ae4e 100644 --- a/src/sclconnection-isf.h +++ b/src/sclconnection-isf.h @@ -69,6 +69,7 @@ public: void hide_candidate_string(void); void hide_associate_string(void); void update_preedit_string(sclint ic, const sclchar *ic_uuid, const sclchar *str); + void update_preedit_string(sclint ic, const sclchar *ic_uuid, const sclchar *str, const scim::AttributeList &attrs); void update_aux_string(const sclchar *str); void update_input_context(sclu32 type, sclu32 value); void get_surrounding_text(const sclchar *ic_uuid, sclint maxlen_before, sclint maxlen_after) const; diff --git a/src/sclconnection.cpp b/src/sclconnection.cpp index 68464ed..b63c028 100644 --- a/src/sclconnection.cpp +++ b/src/sclconnection.cpp @@ -229,6 +229,13 @@ void CSCLConnection::update_preedit_string(sclint ic, const sclchar *ic_uuid, co } } +void CSCLConnection::update_preedit_string(sclint ic, const sclchar *ic_uuid, const sclchar *str, const scim::AttributeList &attrs) +{ + if (m_impl) { + m_impl->update_preedit_string(ic, ic_uuid, str, attrs); + } +} + void CSCLConnection::update_aux_string(const sclchar *str) { if (m_impl) { diff --git a/src/sclconnection.h b/src/sclconnection.h index 5eec308..58cc7a3 100644 --- a/src/sclconnection.h +++ b/src/sclconnection.h @@ -18,7 +18,10 @@ #ifndef __SCL_CONNECTION_H__ #define __SCL_CONNECTION_H__ +#define Uses_SCIM_ATTRIBUTE + #include +#include #include "scltypes.h" //SCL_BEGIN_DECLS @@ -66,6 +69,7 @@ public: virtual void hide_candidate_string(void); virtual void hide_associate_string(void); virtual void update_preedit_string(sclint ic, const sclchar *ic_uuid, const sclchar *str); + virtual void update_preedit_string(sclint ic, const sclchar *ic_uuid, const sclchar *str, const scim::AttributeList &attrs); virtual void update_aux_string(const sclchar *str); virtual void update_input_context(sclu32 type, sclu32 value); virtual void get_surrounding_text(const sclchar *ic_uuid, sclint maxlen_before, sclint maxlen_after) const; diff --git a/src/sclcore.cpp b/src/sclcore.cpp index 13fa0e8..1e5f5ff 100644 --- a/src/sclcore.cpp +++ b/src/sclcore.cpp @@ -198,6 +198,13 @@ void CSCLCore::update_preedit_string(sclint ic, const sclchar *ic_uuid, const sc } } +void CSCLCore::update_preedit_string(sclint ic, const sclchar *ic_uuid, const sclchar *str, const scim::AttributeList &attrs) +{ + if (m_impl) { + m_impl->update_preedit_string(ic, ic_uuid, str, attrs); + } +} + void CSCLCore::update_aux_string(const sclchar *str) { if (m_impl) { diff --git a/src/sclcore.h b/src/sclcore.h index 4319a7a..7c446d2 100644 --- a/src/sclcore.h +++ b/src/sclcore.h @@ -20,8 +20,10 @@ //SCL_BEGIN_DECLS -#include +#define Uses_SCIM_ATTRIBUTE +#include +#include #include #include "sclcoretypes.h" #include "sclcorecallback.h" @@ -176,19 +178,29 @@ public: void hide_associate_string(void); /** - * @brief Update a new WideString for preedit. + * @brief Update a new string for preedit. * * @param[in] ic The handle of the client Input Context to receive the WideString. * -1 means the currently focused Input Context. * @param[in] ic_uuid The UUID of the IMEngine used by the Input Context. * NULL means don't match. * @param[in] str The UTF-8 string to be updated. - * @param[in] attrs The attribute list for preedit string. */ - /*void update_preedit_string (int ic, const sclchar *ic_uuid, const sclchar *str, const AttributeList &attrs) const;*/ void update_preedit_string(sclint ic, const sclchar *ic_uuid, const sclchar *str); /** + * @brief Update a new string for preedit. + * + * @param[in] ic The handle of the client Input Context to receive the WideString. + * -1 means the currently focused Input Context. + * @param[in] ic_uuid The UUID of the IMEngine used by the Input Context. + * NULL means don't match. + * @param[in] str The UTF-8 string to be updated. + * @param[in] attrs The attribute list for preedit string. + */ + void update_preedit_string(sclint ic, const sclchar *ic_uuid, const sclchar *str, const scim::AttributeList &attrs); + + /** * @brief Update a new string for aux. * * @param[in] str The string to be updated. diff --git a/src/sclcoreimpl.cpp b/src/sclcoreimpl.cpp index 259ea1f..16d179b 100644 --- a/src/sclcoreimpl.cpp +++ b/src/sclcoreimpl.cpp @@ -200,6 +200,11 @@ void CSCLCoreImpl::update_preedit_string(sclint ic, const sclchar *ic_uuid, cons m_connection.update_preedit_string(ic, ic_uuid, str); } +void CSCLCoreImpl::update_preedit_string(sclint ic, const sclchar *ic_uuid, const sclchar *str, const scim::AttributeList &attrs) +{ + m_connection.update_preedit_string(ic, ic_uuid, str, attrs); +} + void CSCLCoreImpl::update_aux_string(const sclchar *str) { m_connection.update_aux_string(str); diff --git a/src/sclcoreimpl.h b/src/sclcoreimpl.h index 57db893..62d2c56 100644 --- a/src/sclcoreimpl.h +++ b/src/sclcoreimpl.h @@ -73,8 +73,8 @@ public: void hide_aux_string(void); void hide_candidate_string(void); void hide_associate_string(void); - /*void update_preedit_string (int ic, const sclchar *ic_uuid, const sclchar *str, const AttributeList &attrs) const;*/ void update_preedit_string(sclint ic, const sclchar *ic_uuid, const sclchar *str); + void update_preedit_string(sclint ic, const sclchar *ic_uuid, const sclchar *str, const scim::AttributeList &attrs); //void update_aux_string (const sclchar *str, const AttributeList &attrs) const; void update_aux_string(const sclchar *str); //void update_candidate_string (const LookupTable &table) const; -- 2.7.4