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

Unified Diff: content/browser/web_contents/web_drag_source_win.cc

Issue 14122008: Enable touch-initiated drag-drop work on Windows (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 7 years, 8 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/web_contents/web_drag_source_win.cc
diff --git a/content/browser/web_contents/web_drag_source_win.cc b/content/browser/web_contents/web_drag_source_win.cc
index 18c18819da7ffdd4d85c4a5e9f853005dda425f5..c4fd776823c668e9d7722c32a7866526e385b551 100644
--- a/content/browser/web_contents/web_drag_source_win.cc
+++ b/content/browser/web_contents/web_drag_source_win.cc
@@ -6,6 +6,7 @@
#include "base/bind.h"
#include "content/browser/renderer_host/render_view_host_impl.h"
+#include "content/browser/renderer_host/render_widget_host_view_win.h"
#include "content/browser/web_contents/web_drag_utils_win.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/notification_source.h"
@@ -64,6 +65,7 @@ void WebDragSource::OnDragSourceCancel() {
render_view_host_->DragSourceEndedAt(client.x(), client.y(),
screen.x(), screen.y(),
WebDragOperationNone);
+ OnDragSourceEnded();
}
void WebDragSource::OnDragSourceDrop() {
@@ -80,13 +82,23 @@ void WebDragSource::OnDragSourceDrop() {
void WebDragSource::DelayedOnDragSourceDrop() {
if (!render_view_host_)
return;
-
gfx::Point client;
gfx::Point screen;
GetCursorPositions(source_wnd_, &client, &screen);
render_view_host_->DragSourceEndedAt(
client.x(), client.y(), screen.x(), screen.y(),
WinDragOpToWebDragOp(effect_));
+ OnDragSourceEnded();
+}
+
+void WebDragSource::OnDragSourceEnded() {
+ if (!render_view_host_)
+ return;
+
+ RenderWidgetHostViewWin* rwhv =
+ static_cast<RenderWidgetHostViewWin*>(render_view_host_->GetView());
+ if (rwhv->has_valid_long_press_gesture())
+ rwhv->CancelLongPressGesture();
}
void WebDragSource::OnDragSourceMove() {
@@ -100,7 +112,6 @@ void WebDragSource::OnDragSourceMove() {
if (!render_view_host_)
return;
-
gfx::Point client;
gfx::Point screen;
GetCursorPositions(source_wnd_, &client, &screen);
@@ -108,6 +119,13 @@ void WebDragSource::OnDragSourceMove() {
screen.x(), screen.y());
}
+bool WebDragSource::ShouldDropDragSource(
+ BOOL escape_pressed, DWORD key_state) {
+ // We also care about right mouse button state since long press gesture is
+ // simulated as right mouse button down/up.
+ return !(key_state & MK_LBUTTON) && !(key_state & MK_RBUTTON);
+}
+
void WebDragSource::Observe(int type,
const NotificationSource& source,
const NotificationDetails& details) {

Powered by Google App Engine
This is Rietveld 408576698