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

Side by Side Diff: content/renderer/render_widget.cc

Issue 1995333002: Handle newCursorPosition correctly for Android's commitText() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Move caret within composing text. Created 4 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/render_widget.h" 5 #include "content/renderer/render_widget.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 1395 matching lines...) Expand 10 before | Expand all | Expand 10 after
1406 // If we failed to set the composition text, then we need to let the browser 1406 // If we failed to set the composition text, then we need to let the browser
1407 // process to cancel the input method's ongoing composition session, to make 1407 // process to cancel the input method's ongoing composition session, to make
1408 // sure we are in a consistent state. 1408 // sure we are in a consistent state.
1409 Send(new InputHostMsg_ImeCancelComposition(routing_id())); 1409 Send(new InputHostMsg_ImeCancelComposition(routing_id()));
1410 } 1410 }
1411 UpdateCompositionInfo(false /* not an immediate request */); 1411 UpdateCompositionInfo(false /* not an immediate request */);
1412 } 1412 }
1413 1413
1414 void RenderWidget::OnImeConfirmComposition(const base::string16& text, 1414 void RenderWidget::OnImeConfirmComposition(const base::string16& text,
1415 const gfx::Range& replacement_range, 1415 const gfx::Range& replacement_range,
1416 bool keep_selection) { 1416 bool keep_selection,
1417 int relative_cursor_pos) {
1417 #if defined(ENABLE_PLUGINS) 1418 #if defined(ENABLE_PLUGINS)
1418 if (focused_pepper_plugin_) { 1419 if (focused_pepper_plugin_) {
1419 focused_pepper_plugin_->render_frame()->OnImeConfirmComposition( 1420 focused_pepper_plugin_->render_frame()->OnImeConfirmComposition(
1420 text, replacement_range, keep_selection); 1421 text, replacement_range, keep_selection, relative_cursor_pos);
1421 return; 1422 return;
1422 } 1423 }
1423 #endif 1424 #endif
1424 if (replacement_range.IsValid()) { 1425 if (replacement_range.IsValid()) {
1425 webwidget_->applyReplacementRange(replacement_range.start(), 1426 webwidget_->applyReplacementRange(replacement_range.start(),
1426 replacement_range.length()); 1427 replacement_range.length());
1427 } 1428 }
1428 1429
1429 if (!ShouldHandleImeEvent()) 1430 if (!ShouldHandleImeEvent())
1430 return; 1431 return;
1431 ImeEventGuard guard(this); 1432 ImeEventGuard guard(this);
1432 input_handler_->set_handling_input_event(true); 1433 input_handler_->set_handling_input_event(true);
1433 if (text.length()) 1434 if (text.length())
1434 webwidget_->confirmComposition(text); 1435 webwidget_->confirmComposition(text, relative_cursor_pos);
1435 else if (keep_selection) 1436 else if (keep_selection)
1436 webwidget_->confirmComposition(WebWidget::KeepSelection); 1437 webwidget_->confirmComposition(WebWidget::KeepSelection);
1437 else 1438 else
1438 webwidget_->confirmComposition(WebWidget::DoNotKeepSelection); 1439 webwidget_->confirmComposition(WebWidget::DoNotKeepSelection);
1439 input_handler_->set_handling_input_event(false); 1440 input_handler_->set_handling_input_event(false);
1440 UpdateCompositionInfo(false /* not an immediate request */); 1441 UpdateCompositionInfo(false /* not an immediate request */);
1441 } 1442 }
1442 1443
1443 void RenderWidget::OnDeviceScaleFactorChanged() { 1444 void RenderWidget::OnDeviceScaleFactorChanged() {
1444 if (!compositor_) 1445 if (!compositor_)
(...skipping 655 matching lines...) Expand 10 before | Expand all | Expand 10 after
2100 void RenderWidget::requestPointerUnlock() { 2101 void RenderWidget::requestPointerUnlock() {
2101 mouse_lock_dispatcher_->UnlockMouse(webwidget_mouse_lock_target_.get()); 2102 mouse_lock_dispatcher_->UnlockMouse(webwidget_mouse_lock_target_.get());
2102 } 2103 }
2103 2104
2104 bool RenderWidget::isPointerLocked() { 2105 bool RenderWidget::isPointerLocked() {
2105 return mouse_lock_dispatcher_->IsMouseLockedTo( 2106 return mouse_lock_dispatcher_->IsMouseLockedTo(
2106 webwidget_mouse_lock_target_.get()); 2107 webwidget_mouse_lock_target_.get());
2107 } 2108 }
2108 2109
2109 } // namespace content 2110 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698