Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(263)

Unified Diff: ui/base/ime/input_method_ibus.cc

Issue 10823141: Support reverse conversion for ChromeOS (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Simplify Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« ui/base/ime/input_method_ibus.h ('K') | « ui/base/ime/input_method_ibus.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/base/ime/input_method_ibus.cc
diff --git a/ui/base/ime/input_method_ibus.cc b/ui/base/ime/input_method_ibus.cc
index 333dfaf0153c13e2ed670dde5c789eaf56a35f24..e11e717892352c98f9248c66ef414f3925d0a51c 100644
--- a/ui/base/ime/input_method_ibus.cc
+++ b/ui/base/ime/input_method_ibus.cc
@@ -43,6 +43,7 @@ const char kClientName[] = "chrome";
// http://ibus.googlecode.com/svn/docs/ibus-1.4/ibus-ibustypes.html#IBusCapabilite
const uint32 kIBusCapabilityPreeditText = 1U;
const uint32 kIBusCapabilityFocus = 8U;
+const uint32 kIBusCapabilitySurroundingText = 32U;
XKeyEvent* GetKeyEvent(XEvent* event) {
DCHECK(event && (event->type == KeyPress || event->type == KeyRelease));
@@ -354,6 +355,33 @@ void InputMethodIBus::OnCaretBoundsChanged(const TextInputClient* client) {
// This function runs asynchronously.
ibus_client_->SetCursorLocation(rect, composition_head);
+
+ string16 selection_text;
Yusuke Sato 2012/08/03 05:46:10 nit: move to L.366
Seigo Nonaka 2012/08/03 07:12:44 Done.
+ ui::Range selection_range;
+
+ if (!GetTextInputClient()->GetSelectionRange(&selection_range)) {
+ previous_selected_text_.clear();
+ return;
+ }
+ if (!GetTextInputClient()->GetTextFromRange(selection_range,
+ &selection_text)) {
+ previous_selected_text_.clear();
+ return;
+ }
+
+ if (previous_selected_text_ == selection_text)
+ return;
+
+ previous_selected_text_ = selection_text;
+
+ // In the original meaning of SetSurroundingText is not just selection text,
+ // but currently there are no way to retrieve surrdounding text in
Yusuke Sato 2012/08/03 05:46:10 surrounding
Seigo Nonaka 2012/08/03 07:12:44 Done.
+ // TextInputClient.
+ // TODO(nona): Implement fully surrounding text retrieval.
+ GetInputContextClient()->SetSurroundingText(UTF16ToUTF8(selection_text),
+ 0UL,
Yusuke Sato 2012/08/03 05:46:10 is this a caret pos? add /* parameter_name */
Seigo Nonaka 2012/08/03 07:12:44 Done.
+ selection_range.length());
+ LOG(ERROR) << selection_text;
Yusuke Sato 2012/08/03 05:46:10 remove
Seigo Nonaka 2012/08/03 07:12:44 Done.
}
void InputMethodIBus::CancelComposition(const TextInputClient* client) {
@@ -438,7 +466,8 @@ void InputMethodIBus::SetUpSignalHandlers() {
weak_ptr_factory_.GetWeakPtr()));
GetInputContextClient()->SetCapabilities(
- kIBusCapabilityPreeditText | kIBusCapabilityFocus);
+ kIBusCapabilityPreeditText | kIBusCapabilityFocus |
+ kIBusCapabilitySurroundingText);
UpdateContextFocusState();
// Since ibus-daemon is launched in an on-demand basis on Chrome OS, RWHVA (or
@@ -535,7 +564,7 @@ void InputMethodIBus::UpdateContextFocusState() {
GetInputContextClient()->FocusIn();
if (context_focused_) {
- uint32 capability = kIBusCapabilityFocus;
+ uint32 capability = kIBusCapabilityFocus | kIBusCapabilitySurroundingText;
if (CanComposeInline())
capability |= kIBusCapabilityPreeditText;
GetInputContextClient()->SetCapabilities(capability);
« ui/base/ime/input_method_ibus.h ('K') | « ui/base/ime/input_method_ibus.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698