From 55956c5311009d1b15b059a8db1a219d41bedcfa Mon Sep 17 00:00:00 2001 From: Li Zhang Date: Fri, 24 Jul 2015 18:59:44 +0800 Subject: [PATCH] Update ISE geometry to ISF Change-Id: Ifbdd45404f4141299f07fa8d1583a85aa864c4a2 --- src/sclconnection-isf.cpp | 7 +++++++ src/sclconnection-isf.h | 1 + src/sclconnection.cpp | 7 +++++++ src/sclconnection.h | 1 + src/sclcoreimpl.cpp | 5 +++++ 5 files changed, 21 insertions(+) diff --git a/src/sclconnection-isf.cpp b/src/sclconnection-isf.cpp index 7dc2569..2a32322 100644 --- a/src/sclconnection-isf.cpp +++ b/src/sclconnection-isf.cpp @@ -934,6 +934,13 @@ void CSCLConnectionISF::get_keyboard_ise(const sclchar *uuid) } } +void CSCLConnectionISF::update_geometry(int x, int y, int width, int height) +{ + if (m_initialized) { + m_helper_agent.update_geometry(x, y, width, height); + } +} + extern "C" { void scim_module_init (void) { diff --git a/src/sclconnection-isf.h b/src/sclconnection-isf.h index 632ae4e..9a3f020 100644 --- a/src/sclconnection-isf.h +++ b/src/sclconnection-isf.h @@ -78,6 +78,7 @@ public: void candidate_hide(void); void set_keyboard_ise_by_uuid(const sclchar *uuid); void get_keyboard_ise(const sclchar *uuid); + void update_geometry(int x, int y, int width, int height); private: sclboolean m_initialized; diff --git a/src/sclconnection.cpp b/src/sclconnection.cpp index b63c028..c8bb36d 100644 --- a/src/sclconnection.cpp +++ b/src/sclconnection.cpp @@ -291,3 +291,10 @@ void CSCLConnection::get_keyboard_ise(const sclchar *uuid) m_impl->get_keyboard_ise(uuid); } } + +void CSCLConnection::update_geometry(int x, int y, int width, int height) +{ + if (m_impl) { + m_impl->update_geometry(x, y, width, height); + } +} diff --git a/src/sclconnection.h b/src/sclconnection.h index d4c5642..efadd1e 100644 --- a/src/sclconnection.h +++ b/src/sclconnection.h @@ -78,6 +78,7 @@ public: virtual void candidate_hide(void); virtual void set_keyboard_ise_by_uuid(const sclchar *uuid); virtual void get_keyboard_ise(const sclchar *uuid); + virtual void update_geometry(int x, int y, int width, int height); protected: std::string m_backend_identifier; diff --git a/src/sclcoreimpl.cpp b/src/sclcoreimpl.cpp index 16d179b..99c4a77 100644 --- a/src/sclcoreimpl.cpp +++ b/src/sclcoreimpl.cpp @@ -287,6 +287,11 @@ int CSCLCoreImpl::get_screen_rotation_degree() void CSCLCoreImpl::set_keyboard_size_hints(SclSize portrait, SclSize landscape) { + int degree = m_core_ui.get_screen_rotation_degree(); + if (degree == 90 || degree == 270) + m_connection.update_geometry(0, 0, landscape.width, landscape.height); + else + m_connection.update_geometry(0, 0, portrait.width, portrait.height); m_core_ui.set_keyboard_size_hints(portrait, landscape); } -- 2.7.4