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 f918d1320043865700e576de13764d527da4925b..9880d16d8a2e2cd90019c4b36252092c0db8837f 100644 |
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm |
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm |
@@ -60,6 +60,7 @@ |
#include "content/public/browser/browser_plugin_guest_manager.h" |
#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/native_web_keyboard_event.h" |
+#include "content/public/browser/render_widget_host.h" |
Charlie Reis
2016/09/02 21:57:47
Stale? (Do we need the impl file?)
EhsanK
2016/09/08 17:10:40
impl file is already included on line 46. I think
Charlie Reis
2016/09/09 22:23:32
Ah, I missed the other uses of RenderWidgetHost in
|
#include "content/public/browser/render_widget_host_view_frame_subscriber.h" |
#import "content/public/browser/render_widget_host_view_mac_delegate.h" |
#include "content/public/browser/web_contents.h" |
@@ -96,6 +97,7 @@ using content::NativeWebKeyboardEvent; |
using content::RenderFrameHost; |
using content::RenderViewHost; |
using content::RenderViewHostImpl; |
+using content::RenderWidgetHost; |
Charlie Reis
2016/09/02 21:57:47
Stale?
EhsanK
2016/09/08 17:10:40
Same discussion as the .h file. For the override R
Charlie Reis
2016/09/09 22:23:32
I don't think you need this. This file is already
EhsanK
2016/09/13 18:52:15
Acknowledged.
|
using content::RenderWidgetHostImpl; |
using content::RenderWidgetHostViewMac; |
using content::RenderWidgetHostViewMacEditCommandHelper; |
@@ -553,6 +555,20 @@ RenderWidgetHostImpl* RenderWidgetHostViewMac::GetActiveWidget() { |
: nullptr; |
} |
+RenderWidgetHostImpl* RenderWidgetHostViewMac::GetRenderWidgetHostAtPoint( |
+ const gfx::Point& point, |
+ gfx::Point* transformed_point) { |
+ if (!render_widget_host_) |
+ return nullptr; |
+ |
+ if (!render_widget_host_->delegate() || |
+ !render_widget_host_->delegate()->GetInputEventRouter()) |
+ return render_widget_host_; |
+ |
+ return render_widget_host_->delegate() |
+ ->GetInputEventRouter() |
+ ->GetRenderWidgetHostAtPoint(this, point, transformed_point); |
+} |
/////////////////////////////////////////////////////////////////////////////// |
// RenderWidgetHostViewMac, RenderWidgetHostView implementation: |
@@ -2286,15 +2302,27 @@ void RenderWidgetHostViewMac::OnDisplayMetricsChanged( |
} |
- (void)showLookUpDictionaryOverlayAtPoint:(NSPoint)point { |
+ gfx::Point rootPoint(point.x, NSHeight([self frame]) - point.y); |
+ gfx::Point transformedPoint; |
+ RenderWidgetHost* widgetHost = |
Charlie Reis
2016/09/02 21:57:47
RenderWidgetHostImpl
EhsanK
2016/09/08 17:10:40
Done.
|
+ renderWidgetHostView_->GetRenderWidgetHostAtPoint(rootPoint, |
+ &transformedPoint); |
+ if (!widgetHost) |
+ return; |
+ |
+ gfx::Rect root_box = renderWidgetHostView_->GetViewBounds(); |
+ gfx::Rect view_box = widgetHost->GetView()->GetViewBounds(); |
+ |
TextInputClientMac::GetInstance()->GetStringAtPoint( |
- renderWidgetHostView_->render_widget_host_, |
- gfx::Point(point.x, NSHeight([self frame]) - point.y), |
+ widgetHost, transformedPoint, |
^(NSAttributedString* string, NSPoint baselinePoint) { |
+ baselinePoint.x += view_box.origin().x() - root_box.origin().x(); |
+ baselinePoint.y += |
+ root_box.bottom_left().y() - view_box.bottom_left().y(); |
kenrb
2016/09/06 18:14:48
I don't really understand why this point gets shif
EhsanK
2016/09/08 17:10:40
The return coordinate is:
1) With respect to topmo
kenrb
2016/09/12 17:28:13
I am surprised to hear about a threading problem,
EhsanK
2016/09/13 18:52:15
Following our offline conversation, I am leaving a
|
[self showLookUpDictionaryOverlayInternal:string |
baselinePoint:baselinePoint |
targetView:self]; |
- } |
- ); |
+ }); |
} |
// This is invoked only on 10.8 or newer when the user taps a word using |
@@ -2810,10 +2838,16 @@ extern NSString *NSTextInputReplacementRangeAttributeName; |
thePoint = [self convertPoint:thePoint fromView:nil]; |
thePoint.y = NSHeight([self frame]) - thePoint.y; |
+ gfx::Point transformedPoint; |
+ RenderWidgetHost* widgetHost = |
Charlie Reis
2016/09/02 21:57:47
RenderWidgetHostImpl
EhsanK
2016/09/08 17:10:40
Done.
|
+ renderWidgetHostView_->GetRenderWidgetHostAtPoint( |
+ gfx::Point(thePoint.x, thePoint.y), &transformedPoint); |
+ if (!widgetHost) |
+ return NSNotFound; |
+ |
NSUInteger index = |
TextInputClientMac::GetInstance()->GetCharacterIndexAtPoint( |
- renderWidgetHostView_->render_widget_host_, |
- gfx::Point(thePoint.x, thePoint.y)); |
+ widgetHost, transformedPoint); |
return index; |
} |