Index: third_party/WebKit/Source/web/ContextMenuClientImpl.cpp |
diff --git a/third_party/WebKit/Source/web/ContextMenuClientImpl.cpp b/third_party/WebKit/Source/web/ContextMenuClientImpl.cpp |
index d2fd4a6de6115178e09157762b20c26d02c5802a..06d8e4543400138ec9533fad8a70d772e57b9074 100644 |
--- a/third_party/WebKit/Source/web/ContextMenuClientImpl.cpp |
+++ b/third_party/WebKit/Source/web/ContextMenuClientImpl.cpp |
@@ -48,6 +48,7 @@ |
#include "core/html/HTMLInputElement.h" |
#include "core/html/HTMLMediaElement.h" |
#include "core/html/HTMLPlugInElement.h" |
+#include "core/input/ContextMenuAllowedScope.h" |
#include "core/input/EventHandler.h" |
#include "core/layout/HitTestResult.h" |
#include "core/layout/LayoutPart.h" |
@@ -75,7 +76,6 @@ |
#include "public/web/WebSearchableFormData.h" |
#include "public/web/WebTextCheckClient.h" |
#include "public/web/WebViewClient.h" |
-#include "web/ContextMenuAllowedScope.h" |
#include "web/WebDataSourceImpl.h" |
#include "web/WebLocalFrameImpl.h" |
#include "web/WebPluginContainerImpl.h" |
@@ -168,7 +168,7 @@ bool ContextMenuClientImpl::ShouldShowContextMenuFromTouch( |
!data.link_url.IsEmpty() || |
data.media_type == WebContextMenuData::kMediaTypeImage || |
data.media_type == WebContextMenuData::kMediaTypeVideo || |
- data.is_editable; |
+ data.is_editable || !data.selected_text.IsEmpty(); |
} |
bool ContextMenuClientImpl::ShowContextMenu(const ContextMenu* default_menu, |
@@ -400,6 +400,13 @@ bool ContextMenuClientImpl::ShowContextMenu(const ContextMenu* default_menu, |
data.input_field_type = WebContextMenuData::kInputFieldTypeNone; |
} |
+ WebRect focus_webrect; |
+ WebRect anchor_webrect; |
+ web_view_->SelectionBounds(focus_webrect, anchor_webrect); |
+ data.selection_rect = WebRect(focus_webrect.x, focus_webrect.y, |
+ anchor_webrect.x + anchor_webrect.width, |
+ anchor_webrect.y + anchor_webrect.height); |
+ data.from_touch = from_touch; |
if (from_touch && !ShouldShowContextMenuFromTouch(data)) |
return false; |