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

Unified Diff: content/browser/renderer_host/render_widget_host_view_mac.mm

Issue 2213503002: Tracking SelectionBounds for all RenderWidgets on the Browser Side (Mac) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 4 years, 4 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
Index: content/browser/renderer_host/render_widget_host_view_mac.mm
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm
index e7978584a18548cc410cf9318251b552831f4110..555afc49097a38f4c9c23e4084a4b8394d1e1da8 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
@@ -543,7 +543,7 @@ cc::SurfaceId RenderWidgetHostViewMac::SurfaceIdForTesting() const {
}
ui::TextInputType RenderWidgetHostViewMac::GetTextInputType() {
- if (!GetTextInputManager() || !GetTextInputManager()->GetActiveWidget())
+ if (!GetActiveWidget())
return ui::TEXT_INPUT_TYPE_NONE;
return GetTextInputManager()->GetTextInputState()->type;
}
@@ -1058,13 +1058,6 @@ void RenderWidgetHostViewMac::StopSpeaking() {
// which implements NSServicesRequests protocol.
//
-void RenderWidgetHostViewMac::SelectionBoundsChanged(
- const ViewHostMsg_SelectionBounds_Params& params) {
- if (params.anchor_rect == params.focus_rect)
- caret_rect_ = params.anchor_rect;
- first_selection_rect_ = params.anchor_rect;
-}
-
void RenderWidgetHostViewMac::SetShowingContextMenu(bool showing) {
RenderWidgetHostViewBase::SetShowingContextMenu(showing);
@@ -1250,6 +1243,9 @@ bool RenderWidgetHostViewMac::GetCachedFirstRectForCharacterRange(
NSRange range,
NSRect* rect,
NSRange* actual_range) {
+ if (!GetTextInputManager())
+ return false;
+
DCHECK(rect);
// This exists to make IMEs more responsive, see http://crbug.com/115920
TRACE_EVENT0("browser",
@@ -1258,18 +1254,26 @@ bool RenderWidgetHostViewMac::GetCachedFirstRectForCharacterRange(
const gfx::Range requested_range(range);
// If requested range is same as caret location, we can just return it.
if (selection_range_.is_empty() && requested_range == selection_range_) {
+ DCHECK(GetFocusedWidget());
if (actual_range)
*actual_range = range;
- *rect = NSRectFromCGRect(caret_rect_.ToCGRect());
+ *rect =
+ NSRectFromCGRect(GetTextInputManager()
+ ->GetSelectionRegion(GetFocusedWidget()->GetView())
+ ->caret_rect.ToCGRect());
return true;
}
if (composition_range_.is_empty()) {
if (!selection_range_.Contains(requested_range))
return false;
+ DCHECK(GetFocusedWidget());
if (actual_range)
*actual_range = selection_range_.ToNSRange();
- *rect = NSRectFromCGRect(first_selection_rect_.ToCGRect());
+ *rect =
+ NSRectFromCGRect(GetTextInputManager()
+ ->GetSelectionRegion(GetFocusedWidget()->GetView())
+ ->first_selection_rect.ToCGRect());
return true;
}
@@ -2819,7 +2823,7 @@ extern NSString *NSTextInputReplacementRangeAttributeName;
&rect,
actualRange)) {
rect = TextInputClientMac::GetInstance()->GetFirstRectForRange(
- renderWidgetHostView_->render_widget_host_, theRange);
+ renderWidgetHostView_->GetFocusedWidget(), theRange);
// TODO(thakis): Pipe |actualRange| through TextInputClientMac machinery.
if (actualRange)
@@ -2837,7 +2841,7 @@ extern NSString *NSTextInputReplacementRangeAttributeName;
actualRange:(NSRangePointer)actualRange {
// During tab closure, events can arrive after RenderWidgetHostViewMac::
// Destroy() is called, which will have set |render_widget_host_| to null.
- if (!renderWidgetHostView_->render_widget_host_) {
+ if (!renderWidgetHostView_->GetFocusedWidget()) {
[self cancelComposition];
return NSZeroRect;
}

Powered by Google App Engine
This is Rietveld 408576698