From 72fd88db46bb931630e6364de9aadb5199e66507 Mon Sep 17 00:00:00 2001 From: Haifeng Deng Date: Tue, 27 Nov 2012 16:15:55 +0800 Subject: [PATCH] Add update_cursor_position () for keyboard ISE Change-Id: I1536a9549f2c6e159ed6f8dc35be37ecd2d51bbc --- configure.ac | 2 +- debian/changelog | 12 +++--------- ism/extras/efl_immodule/isf_imf_context.cpp | 1 + ism/modules/frontend/scim_socket_frontend.cpp | 24 ++++++++++++++++++++++++ ism/modules/frontend/scim_socket_frontend.h | 4 +++- ism/modules/imengine/scim_socket_imengine.cpp | 16 ++++++++++++++++ ism/modules/imengine/scim_socket_imengine.h | 3 ++- ism/src/scim_frontend.cpp | 8 ++++++++ ism/src/scim_frontend.h | 21 ++++++++++++++------- ism/src/scim_imengine.cpp | 5 +++++ ism/src/scim_imengine.h | 7 +++++++ packaging/isf.spec | 2 +- releasenote.txt | 7 +++++-- 13 files changed, 90 insertions(+), 22 deletions(-) diff --git a/configure.ac b/configure.ac index 158ab0c..190b93c 100755 --- a/configure.ac +++ b/configure.ac @@ -11,7 +11,7 @@ m4_pattern_allow([^AS_]) # ISF version ISF_MAJOR_VERSION=2 ISF_MINOR_VERSION=3 -ISF_MICRO_VERSION=5926 +ISF_MICRO_VERSION=5927 ISF_VERSION=$ISF_MAJOR_VERSION.$ISF_MINOR_VERSION.$ISF_MICRO_VERSION diff --git a/debian/changelog b/debian/changelog index 9c75efa..3c66cdd 100755 --- a/debian/changelog +++ b/debian/changelog @@ -1,18 +1,12 @@ isf (2.3.5927-1slp2+1) unstable; urgency=low + * Add update_cursor_position () for keyboard ISE + * Fix issue N_SE-13248 candiate show inproperly when keyboard is connected * Fix issue N_SE-13430: Disable check datasum feature for socket to reduce socket transmission delay * Git: framework/uifw/isf * Tag: isf_2.3.5927-1slp2+1 - -- Li Zhang Tue, 27 Nov 2012 01:44:00 +0900 - -isf (2.3.5926-1slp2+2) unstable; urgency=low - - * Fix issue N_SE-13248 candiate show inproperly when keyboard is connected. - * Git: framework/uifw/isf - * Tag: isf_2.3.5926-1slp2+2 - - -- Li Zhang Mon, 26 Nov 2012 23:30:00 +0900 + -- Haifeng Deng Tue, 27 Nov 2012 17:12:00 +0900 isf (2.3.5926-1slp2+1) unstable; urgency=low diff --git a/ism/extras/efl_immodule/isf_imf_context.cpp b/ism/extras/efl_immodule/isf_imf_context.cpp index af05c14..4e805d9 100644 --- a/ism/extras/efl_immodule/isf_imf_context.cpp +++ b/ism/extras/efl_immodule/isf_imf_context.cpp @@ -1266,6 +1266,7 @@ isf_imf_context_cursor_position_set (Ecore_IMF_Context *ctx, int cursor_pos) if (context_scim->impl->preedit_updating) return; _panel_client.prepare (context_scim->id); + context_scim->impl->si->update_cursor_position (cursor_pos); panel_req_update_cursor_position (context_scim, cursor_pos); _panel_client.send (); } diff --git a/ism/modules/frontend/scim_socket_frontend.cpp b/ism/modules/frontend/scim_socket_frontend.cpp index 05ca375..01984ce 100644 --- a/ism/modules/frontend/scim_socket_frontend.cpp +++ b/ism/modules/frontend/scim_socket_frontend.cpp @@ -733,6 +733,8 @@ SocketFrontEnd::socket_receive_callback (SocketServer *server, const Socket &cli socket_set_prediction_allow (id); else if (cmd == ISM_TRANS_CMD_UPDATE_CANDIDATE_ITEM_LAYOUT) socket_update_candidate_item_layout (id); + else if (cmd == ISM_TRANS_CMD_UPDATE_CURSOR_POSITION) + socket_update_cursor_position (id); else if (cmd == ISM_TRANS_CMD_SET_LAYOUT) socket_set_layout (id); else if (cmd == ISM_TRANS_CMD_RESET_ISE_OPTION) @@ -1361,6 +1363,28 @@ SocketFrontEnd::socket_update_candidate_item_layout (int /*client_id*/) } void +SocketFrontEnd::socket_update_cursor_position (int /*client_id*/) +{ + uint32 siid; + unsigned int cursor_pos; + + SCIM_DEBUG_FRONTEND (2) << __func__ << "\n"; + + if (m_receive_trans.get_data (siid) && + m_receive_trans.get_data (cursor_pos)) { + + SCIM_DEBUG_FRONTEND (3) << " SI (" << siid << ") New cursor (" << cursor_pos << ").\n"; + + m_current_instance = (int) siid; + + update_cursor_position ((int) siid, cursor_pos); + m_send_trans.put_command (SCIM_TRANS_CMD_OK); + + m_current_instance = -1; + } +} + +void SocketFrontEnd::socket_reset_option (int /*client_id*/) { uint32 siid; diff --git a/ism/modules/frontend/scim_socket_frontend.h b/ism/modules/frontend/scim_socket_frontend.h index c25403e..a7a4b2d 100644 --- a/ism/modules/frontend/scim_socket_frontend.h +++ b/ism/modules/frontend/scim_socket_frontend.h @@ -172,7 +172,6 @@ private: void socket_lookup_table_page_down (int client_id); void socket_set_prediction_allow (int client_id); void socket_set_layout (int client_id); - void socket_update_candidate_item_layout (int client_id); void socket_reset_option (int client_id); void socket_reset (int client_id); void socket_focus_in (int client_id); @@ -203,6 +202,9 @@ private: void socket_turn_on_log (int client_id); void reload_config_callback (const ConfigPointer &config); + + void socket_update_candidate_item_layout (int client_id); + void socket_update_cursor_position (int client_id); }; #endif diff --git a/ism/modules/imengine/scim_socket_imengine.cpp b/ism/modules/imengine/scim_socket_imengine.cpp index bef8100..f1d975d 100644 --- a/ism/modules/imengine/scim_socket_imengine.cpp +++ b/ism/modules/imengine/scim_socket_imengine.cpp @@ -759,6 +759,22 @@ SocketInstance::update_candidate_item_layout (const std::vector &r } void +SocketInstance::update_cursor_position (unsigned int cursor_pos) +{ + Transaction trans; + + global->init_transaction (trans); + + SCIM_DEBUG_IMENGINE(1) << __func__ << " (" << m_peer_id << ")\n"; + + trans.put_command (ISM_TRANS_CMD_UPDATE_CURSOR_POSITION); + trans.put_data (m_peer_id); + trans.put_data (cursor_pos); + + commit_transaction (trans); +} + +void SocketInstance::reset_option () { Transaction trans; diff --git a/ism/modules/imengine/scim_socket_imengine.h b/ism/modules/imengine/scim_socket_imengine.h index 4f81583..66b171c 100644 --- a/ism/modules/imengine/scim_socket_imengine.h +++ b/ism/modules/imengine/scim_socket_imengine.h @@ -92,7 +92,6 @@ public: virtual void lookup_table_page_down (); virtual void set_prediction_allow (bool allow); virtual void set_layout (unsigned int layout); - virtual void update_candidate_item_layout (const std::vector &row_items); virtual void reset_option (); virtual void reset (); virtual void focus_in (); @@ -100,6 +99,8 @@ public: virtual void trigger_property (const String &property); virtual void process_helper_event (const String &helper_uuid, const Transaction &trans); virtual void update_client_capabilities (unsigned int cap); + virtual void update_candidate_item_layout (const std::vector &row_items); + virtual void update_cursor_position (unsigned int cursor_pos); private: bool commit_transaction (Transaction &trans); diff --git a/ism/src/scim_frontend.cpp b/ism/src/scim_frontend.cpp index 4769c9a..715419e 100644 --- a/ism/src/scim_frontend.cpp +++ b/ism/src/scim_frontend.cpp @@ -680,6 +680,14 @@ FrontEndBase::update_candidate_item_layout (int id, const std::vectorfind_instance (id); + + if (!si.null ()) si->update_cursor_position (cursor_pos); +} + +void FrontEndBase::reset_option (int id) const { IMEngineInstancePointer si = m_impl->find_instance (id); diff --git a/ism/src/scim_frontend.h b/ism/src/scim_frontend.h index 848c2ff..79b4f06 100644 --- a/ism/src/scim_frontend.h +++ b/ism/src/scim_frontend.h @@ -403,13 +403,6 @@ protected: void set_layout (int id, unsigned int layout) const; /** - * @brief update candidate items layout. - * @param id the IMEngine instance id. - * @param row_items the items of each row. - */ - void update_candidate_item_layout (int id, const std::vector &row_items) const; - - /** * @brief reset a specific IMEngine option. * @param id the id of the IMEngine instance to be reset. */ @@ -456,6 +449,20 @@ protected: void update_client_capabilities (int id, unsigned int cap) const; /** + * @brief update candidate items layout. + * @param id the IMEngine instance id. + * @param row_items the items of each row. + */ + void update_candidate_item_layout (int id, const std::vector &row_items) const; + + /** + * @brief update cursor position. + * @param id the IMEngine instance id. + * @param cursor_pos the new cursor position. + */ + void update_cursor_position (int id, unsigned int cursor_pos) const; + + /** * @} */ diff --git a/ism/src/scim_imengine.cpp b/ism/src/scim_imengine.cpp index 191058b..a1caf3f 100644 --- a/ism/src/scim_imengine.cpp +++ b/ism/src/scim_imengine.cpp @@ -386,6 +386,11 @@ IMEngineInstanceBase::update_candidate_item_layout (const std::vector &row_items); + /** + * @brief When cursor position is changed, this function will be called. + * + * @param cursor_pos - the new cursor position. + */ + virtual void update_cursor_position (unsigned int cursor_pos); + protected: /** * @name Signal activation functions diff --git a/packaging/isf.spec b/packaging/isf.spec index 4d49da1..19ba5dd 100755 --- a/packaging/isf.spec +++ b/packaging/isf.spec @@ -1,4 +1,4 @@ -#sbs-git:framework/uifw/isf isf 2.3.5926 07f2b65224e6cef5cd6799065bb01fa656bc115e +#sbs-git:framework/uifw/isf isf 2.3.5927 07f2b65224e6cef5cd6799065bb01fa656bc115e %define _usrdir /usr %define _ugdir %{_usrdir}/ug diff --git a/releasenote.txt b/releasenote.txt index cd1b4db..f781fea 100755 --- a/releasenote.txt +++ b/releasenote.txt @@ -1,10 +1,13 @@ ISF 2.3.5927 : - 1. Disable check datasum feature for socket to reduce socket transmission delay + 1. Add update_cursor_position () for keyboard ISE + 2. Disable check datasum feature for socket to reduce socket transmission delay + 3. Fix issue N_SE-13248 candiate show inproperly when keyboard is connected + ISF 2.3.5926 : 1. Donot create candidate window when focus in 2. [immodule] reduce time to process autocapital - 3. Fix issue N_SE-13248 candiate show inproperly when keyboard is connected + ISF 2.3.5923 : 1. Add expand_candidate (), contract_candidate () and update_candidate_item_layout () for keyboard ISE; -- 2.7.4