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

Side by Side Diff: content/browser/web_contents/web_drag_dest_gtk.cc

Issue 10377119: Plumb event flags (shift/alt/ctrl modifiers) for drag/drop events to WebKit. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/web_contents/web_drag_dest_gtk.h" 5 #include "content/browser/web_contents/web_drag_dest_gtk.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/file_path.h" 10 #include "base/file_path.h"
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 } 114 }
115 115
116 if (delegate()) { 116 if (delegate()) {
117 gtk_drag_get_data(widget_, context, delegate()->GetBookmarkTargetAtom(), 117 gtk_drag_get_data(widget_, context, delegate()->GetBookmarkTargetAtom(),
118 time); 118 time);
119 } 119 }
120 } else if (data_requests_ == 0) { 120 } else if (data_requests_ == 0) {
121 GetRenderViewHost()->DragTargetDragOver( 121 GetRenderViewHost()->DragTargetDragOver(
122 ui::ClientPoint(widget_), 122 ui::ClientPoint(widget_),
123 ui::ScreenPoint(widget_), 123 ui::ScreenPoint(widget_),
124 content::GdkDragActionToWebDragOp(context->actions)); 124 content::GdkDragActionToWebDragOp(context->actions),
125 0 /* shift/ctrl/alt flags */);
125 126
126 if (delegate()) 127 if (delegate())
127 delegate()->OnDragOver(); 128 delegate()->OnDragOver();
128 129
129 drag_over_time_ = time; 130 drag_over_time_ = time;
130 } 131 }
131 132
132 // Pretend we are a drag destination because we don't want to wait for 133 // Pretend we are a drag destination because we don't want to wait for
133 // the renderer to tell us if we really are or not. 134 // the renderer to tell us if we really are or not.
134 return TRUE; 135 return TRUE;
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 } 223 }
223 } 224 }
224 225
225 if (data_requests_ == 0) { 226 if (data_requests_ == 0) {
226 // Tell the renderer about the drag. 227 // Tell the renderer about the drag.
227 // |x| and |y| are seemingly arbitrary at this point. 228 // |x| and |y| are seemingly arbitrary at this point.
228 GetRenderViewHost()->DragTargetDragEnter( 229 GetRenderViewHost()->DragTargetDragEnter(
229 *drop_data_.get(), 230 *drop_data_.get(),
230 ui::ClientPoint(widget_), 231 ui::ClientPoint(widget_),
231 ui::ScreenPoint(widget_), 232 ui::ScreenPoint(widget_),
232 content::GdkDragActionToWebDragOp(context->actions)); 233 content::GdkDragActionToWebDragOp(context->actions),
234 0 /* shift/ctrl/alt flags */);
233 235
234 if (delegate()) 236 if (delegate())
235 delegate()->OnDragEnter(); 237 delegate()->OnDragEnter();
236 238
237 drag_over_time_ = time; 239 drag_over_time_ = time;
238 } 240 }
239 } 241 }
240 242
241 // The drag has left our widget; forward this information to the renderer. 243 // The drag has left our widget; forward this information to the renderer.
242 void WebDragDestGtk::OnDragLeave(GtkWidget* sender, GdkDragContext* context, 244 void WebDragDestGtk::OnDragLeave(GtkWidget* sender, GdkDragContext* context,
(...skipping 10 matching lines...) Expand all
253 base::Bind(&WebDragDestGtk::DragLeave, method_factory_.GetWeakPtr())); 255 base::Bind(&WebDragDestGtk::DragLeave, method_factory_.GetWeakPtr()));
254 } 256 }
255 257
256 // Called by GTK when the user releases the mouse, executing a drop. 258 // Called by GTK when the user releases the mouse, executing a drop.
257 gboolean WebDragDestGtk::OnDragDrop(GtkWidget* sender, GdkDragContext* context, 259 gboolean WebDragDestGtk::OnDragDrop(GtkWidget* sender, GdkDragContext* context,
258 gint x, gint y, guint time) { 260 gint x, gint y, guint time) {
259 // Cancel that drag leave! 261 // Cancel that drag leave!
260 method_factory_.InvalidateWeakPtrs(); 262 method_factory_.InvalidateWeakPtrs();
261 263
262 GetRenderViewHost()-> 264 GetRenderViewHost()->
263 DragTargetDrop(ui::ClientPoint(widget_), ui::ScreenPoint(widget_)); 265 DragTargetDrop(ui::ClientPoint(widget_), ui::ScreenPoint(widget_),
266 0 /* shift/ctrl/alt flags */);
264 267
265 if (delegate()) 268 if (delegate())
266 delegate()->OnDrop(); 269 delegate()->OnDrop();
267 270
268 // The second parameter is just an educated guess as to whether or not the 271 // The second parameter is just an educated guess as to whether or not the
269 // drag succeeded, but at least we will get the drag-end animation right 272 // drag succeeded, but at least we will get the drag-end animation right
270 // sometimes. 273 // sometimes.
271 gtk_drag_finish(context, is_drop_target_, FALSE, time); 274 gtk_drag_finish(context, is_drop_target_, FALSE, time);
272 275
273 return TRUE; 276 return TRUE;
274 } 277 }
275 278
276 RenderViewHostImpl* WebDragDestGtk::GetRenderViewHost() const { 279 RenderViewHostImpl* WebDragDestGtk::GetRenderViewHost() const {
277 return static_cast<RenderViewHostImpl*>(web_contents_->GetRenderViewHost()); 280 return static_cast<RenderViewHostImpl*>(web_contents_->GetRenderViewHost());
278 } 281 }
279 282
280 } // namespace content 283 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698