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

Unified Diff: chrome/browser/tab_contents/tab_contents_view_gtk.cc

Issue 174364: Plumb the DragOperation through all the layers between the platform DnD code ... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/tab_contents/tab_contents_view_gtk.cc
===================================================================
--- chrome/browser/tab_contents/tab_contents_view_gtk.cc (revision 25321)
+++ chrome/browser/tab_contents/tab_contents_view_gtk.cc (working copy)
@@ -36,6 +36,11 @@
#include "chrome/common/notification_type.h"
#include "webkit/glue/webdropdata.h"
+using WebKit::WebDragOperation;
+using WebKit::WebDragOperationCopy;
+using WebKit::WebDragOperationNone;
+using WebKit::WebDragOperationsMask;
+
namespace {
// TODO(erg): I have no idea how to programatically figure out how wide the
@@ -139,15 +144,16 @@
// This is called when the renderer responds to a drag motion event. We must
// update the system drag cursor.
- void UpdateDragStatus(bool is_drop_target) {
+ void UpdateDragStatus(WebDragOperation operation) {
if (context_) {
// TODO(estade): we might want to support other actions besides copy,
// but that would increase the cost of getting our drag success guess
// wrong.
- gdk_drag_status(context_, is_drop_target ? GDK_ACTION_COPY :
+ is_drop_target_ = operation != WebDragOperationNone;
+ // TODO(snej): Pass appropriate GDK action instead of hardcoding COPY
+ gdk_drag_status(context_, is_drop_target_ ? GDK_ACTION_COPY :
static_cast<GdkDragAction>(0),
drag_over_time_);
- is_drop_target_ = false;
}
}
@@ -203,7 +209,9 @@
} else if (data_requests_ == 0) {
tab_contents_->render_view_host()->
DragTargetDragOver(gtk_util::ClientPoint(widget_),
- gtk_util::ScreenPoint(widget_));
+ gtk_util::ScreenPoint(widget_),
+ WebDragOperationCopy);
+ // TODO(snej): Pass appropriate DragOperation instead of hardcoding
drag_over_time_ = time;
}
@@ -266,7 +274,9 @@
tab_contents_->render_view_host()->
DragTargetDragEnter(*drop_data_.get(),
gtk_util::ClientPoint(widget_),
- gtk_util::ScreenPoint(widget_));
+ gtk_util::ScreenPoint(widget_),
+ WebDragOperationCopy);
+ // TODO(snej): Pass appropriate DragOperation instead of hardcoding
drag_over_time_ = time;
}
}
@@ -533,8 +543,8 @@
SetInitialFocus();
}
-void TabContentsViewGtk::UpdateDragCursor(bool is_drop_target) {
- drag_dest_->UpdateDragStatus(is_drop_target);
+void TabContentsViewGtk::UpdateDragCursor(WebDragOperation operation) {
+ drag_dest_->UpdateDragStatus(operation);
}
void TabContentsViewGtk::GotFocus() {
@@ -598,10 +608,12 @@
// Render view DnD -------------------------------------------------------------
-void TabContentsViewGtk::StartDragging(const WebDropData& drop_data) {
+void TabContentsViewGtk::StartDragging(const WebDropData& drop_data,
+ WebDragOperationsMask ops) {
DCHECK(GetContentNativeView());
drag_source_->StartDragging(drop_data, &last_mouse_down_);
+ // TODO(snej): Make use of the WebDragOperationsMask somehow
}
// -----------------------------------------------------------------------------
« no previous file with comments | « chrome/browser/tab_contents/tab_contents_view_gtk.h ('k') | chrome/browser/tab_contents/tab_contents_view_mac.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698