OLD | NEW |
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/tab_contents/web_drag_source_gtk.h" | 5 #include "content/browser/tab_contents/web_drag_source_gtk.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
10 #include "base/nix/mime_util_xdg.h" | 10 #include "base/nix/mime_util_xdg.h" |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 // No-op. | 158 // No-op. |
159 } | 159 } |
160 | 160 |
161 void WebDragSourceGtk::DidProcessEvent(GdkEvent* event) { | 161 void WebDragSourceGtk::DidProcessEvent(GdkEvent* event) { |
162 if (event->type != GDK_MOTION_NOTIFY) | 162 if (event->type != GDK_MOTION_NOTIFY) |
163 return; | 163 return; |
164 | 164 |
165 GdkEventMotion* event_motion = reinterpret_cast<GdkEventMotion*>(event); | 165 GdkEventMotion* event_motion = reinterpret_cast<GdkEventMotion*>(event); |
166 gfx::Point client = ui::ClientPoint(GetContentNativeView()); | 166 gfx::Point client = ui::ClientPoint(GetContentNativeView()); |
167 | 167 |
168 if (web_contents_->GetRenderViewHost()) { | 168 if (GetRenderViewHost()) { |
169 web_contents_->GetRenderViewHost()->DragSourceMovedTo( | 169 GetRenderViewHost()->DragSourceMovedTo( |
170 client.x(), client.y(), | 170 client.x(), client.y(), |
171 static_cast<int>(event_motion->x_root), | 171 static_cast<int>(event_motion->x_root), |
172 static_cast<int>(event_motion->y_root)); | 172 static_cast<int>(event_motion->y_root)); |
173 } | 173 } |
174 } | 174 } |
175 | 175 |
176 void WebDragSourceGtk::OnDragDataGet(GtkWidget* sender, | 176 void WebDragSourceGtk::OnDragDataGet(GtkWidget* sender, |
177 GdkDragContext* context, | 177 GdkDragContext* context, |
178 GtkSelectionData* selection_data, | 178 GtkSelectionData* selection_data, |
179 guint target_type, | 179 guint target_type, |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
293 } | 293 } |
294 | 294 |
295 gboolean WebDragSourceGtk::OnDragFailed(GtkWidget* sender, | 295 gboolean WebDragSourceGtk::OnDragFailed(GtkWidget* sender, |
296 GdkDragContext* context, | 296 GdkDragContext* context, |
297 GtkDragResult result) { | 297 GtkDragResult result) { |
298 drag_failed_ = true; | 298 drag_failed_ = true; |
299 | 299 |
300 gfx::Point root = ui::ScreenPoint(GetContentNativeView()); | 300 gfx::Point root = ui::ScreenPoint(GetContentNativeView()); |
301 gfx::Point client = ui::ClientPoint(GetContentNativeView()); | 301 gfx::Point client = ui::ClientPoint(GetContentNativeView()); |
302 | 302 |
303 if (web_contents_->GetRenderViewHost()) { | 303 if (GetRenderViewHost()) { |
304 web_contents_->GetRenderViewHost()->DragSourceEndedAt( | 304 GetRenderViewHost()->DragSourceEndedAt( |
305 client.x(), client.y(), root.x(), root.y(), | 305 client.x(), client.y(), root.x(), root.y(), |
306 WebDragOperationNone); | 306 WebDragOperationNone); |
307 } | 307 } |
308 | 308 |
309 // Let the native failure animation run. | 309 // Let the native failure animation run. |
310 return FALSE; | 310 return FALSE; |
311 } | 311 } |
312 | 312 |
313 void WebDragSourceGtk::OnDragBegin(GtkWidget* sender, | 313 void WebDragSourceGtk::OnDragBegin(GtkWidget* sender, |
314 GdkDragContext* drag_context) { | 314 GdkDragContext* drag_context) { |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
365 | 365 |
366 if (!download_url_.is_empty()) { | 366 if (!download_url_.is_empty()) { |
367 gdk_property_delete(drag_context->source_window, | 367 gdk_property_delete(drag_context->source_window, |
368 ui::GetAtomForTarget(ui::DIRECT_SAVE_FILE)); | 368 ui::GetAtomForTarget(ui::DIRECT_SAVE_FILE)); |
369 } | 369 } |
370 | 370 |
371 if (!drag_failed_) { | 371 if (!drag_failed_) { |
372 gfx::Point root = ui::ScreenPoint(GetContentNativeView()); | 372 gfx::Point root = ui::ScreenPoint(GetContentNativeView()); |
373 gfx::Point client = ui::ClientPoint(GetContentNativeView()); | 373 gfx::Point client = ui::ClientPoint(GetContentNativeView()); |
374 | 374 |
375 if (web_contents_->GetRenderViewHost()) { | 375 if (GetRenderViewHost()) { |
376 web_contents_->GetRenderViewHost()->DragSourceEndedAt( | 376 GetRenderViewHost()->DragSourceEndedAt( |
377 client.x(), client.y(), root.x(), root.y(), | 377 client.x(), client.y(), root.x(), root.y(), |
378 content::GdkDragActionToWebDragOp(drag_context->action)); | 378 content::GdkDragActionToWebDragOp(drag_context->action)); |
379 } | 379 } |
380 } | 380 } |
381 | 381 |
382 web_contents_->SystemDragEnded(); | 382 web_contents_->SystemDragEnded(); |
383 | 383 |
384 drop_data_.reset(); | 384 drop_data_.reset(); |
385 drag_context_ = NULL; | 385 drag_context_ = NULL; |
386 } | 386 } |
387 | 387 |
| 388 RenderViewHostImpl* WebDragSourceGtk::GetRenderViewHost() const { |
| 389 return static_cast<RenderViewHostImpl*>(web_contents_->GetRenderViewHost()); |
| 390 } |
| 391 |
388 gfx::NativeView WebDragSourceGtk::GetContentNativeView() const { | 392 gfx::NativeView WebDragSourceGtk::GetContentNativeView() const { |
389 return web_contents_->GetView()->GetContentNativeView(); | 393 return web_contents_->GetView()->GetContentNativeView(); |
390 } | 394 } |
391 | 395 |
392 gboolean WebDragSourceGtk::OnDragIconExpose(GtkWidget* sender, | 396 gboolean WebDragSourceGtk::OnDragIconExpose(GtkWidget* sender, |
393 GdkEventExpose* event) { | 397 GdkEventExpose* event) { |
394 cairo_t* cr = gdk_cairo_create(event->window); | 398 cairo_t* cr = gdk_cairo_create(event->window); |
395 gdk_cairo_rectangle(cr, &event->area); | 399 gdk_cairo_rectangle(cr, &event->area); |
396 cairo_clip(cr); | 400 cairo_clip(cr); |
397 cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE); | 401 cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE); |
398 gdk_cairo_set_source_pixbuf(cr, drag_pixbuf_, 0, 0); | 402 gdk_cairo_set_source_pixbuf(cr, drag_pixbuf_, 0, 0); |
399 cairo_paint(cr); | 403 cairo_paint(cr); |
400 cairo_destroy(cr); | 404 cairo_destroy(cr); |
401 | 405 |
402 return TRUE; | 406 return TRUE; |
403 } | 407 } |
404 | 408 |
405 } // namespace content | 409 } // namespace content |
OLD | NEW |