| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/mime_util.h" | 10 #include "base/nix/mime_util_xdg.h" |
| 11 #include "base/threading/thread_restrictions.h" | 11 #include "base/threading/thread_restrictions.h" |
| 12 #include "base/utf_string_conversions.h" | 12 #include "base/utf_string_conversions.h" |
| 13 #include "content/browser/download/drag_download_file.h" | 13 #include "content/browser/download/drag_download_file.h" |
| 14 #include "content/browser/download/drag_download_util.h" | 14 #include "content/browser/download/drag_download_util.h" |
| 15 #include "content/browser/renderer_host/render_view_host.h" | 15 #include "content/browser/renderer_host/render_view_host.h" |
| 16 #include "content/browser/renderer_host/render_view_host_delegate.h" | 16 #include "content/browser/renderer_host/render_view_host_delegate.h" |
| 17 #include "content/browser/tab_contents/drag_utils_gtk.h" | 17 #include "content/browser/tab_contents/drag_utils_gtk.h" |
| 18 #include "content/browser/tab_contents/tab_contents.h" | 18 #include "content/browser/tab_contents/tab_contents.h" |
| 19 #include "content/browser/tab_contents/tab_contents_view.h" | 19 #include "content/browser/tab_contents/tab_contents_view.h" |
| 20 #include "content/public/browser/content_browser_client.h" | 20 #include "content/public/browser/content_browser_client.h" |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 // bad on non-compositing WMs. Fall back to the default drag icon. | 107 // bad on non-compositing WMs. Fall back to the default drag icon. |
| 108 if (!image.isNull() && ui::IsScreenComposited()) | 108 if (!image.isNull() && ui::IsScreenComposited()) |
| 109 drag_pixbuf_ = gfx::GdkPixbufFromSkBitmap(&image); | 109 drag_pixbuf_ = gfx::GdkPixbufFromSkBitmap(&image); |
| 110 image_offset_ = image_offset; | 110 image_offset_ = image_offset; |
| 111 | 111 |
| 112 GtkTargetList* list = ui::GetTargetListFromCodeMask(targets_mask); | 112 GtkTargetList* list = ui::GetTargetListFromCodeMask(targets_mask); |
| 113 if (targets_mask & ui::CHROME_WEBDROP_FILE_CONTENTS) { | 113 if (targets_mask & ui::CHROME_WEBDROP_FILE_CONTENTS) { |
| 114 // Looking up the mime type can hit the disk. http://crbug.com/84896 | 114 // Looking up the mime type can hit the disk. http://crbug.com/84896 |
| 115 base::ThreadRestrictions::ScopedAllowIO allow_io; | 115 base::ThreadRestrictions::ScopedAllowIO allow_io; |
| 116 drag_file_mime_type_ = gdk_atom_intern( | 116 drag_file_mime_type_ = gdk_atom_intern( |
| 117 mime_util::GetDataMimeType(drop_data.file_contents).c_str(), FALSE); | 117 base::nix::GetDataMimeType(drop_data.file_contents).c_str(), FALSE); |
| 118 gtk_target_list_add(list, drag_file_mime_type_, | 118 gtk_target_list_add(list, drag_file_mime_type_, |
| 119 0, ui::CHROME_WEBDROP_FILE_CONTENTS); | 119 0, ui::CHROME_WEBDROP_FILE_CONTENTS); |
| 120 } | 120 } |
| 121 | 121 |
| 122 drag_failed_ = false; | 122 drag_failed_ = false; |
| 123 // If we don't pass an event, GDK won't know what event time to start grabbing | 123 // If we don't pass an event, GDK won't know what event time to start grabbing |
| 124 // mouse events. Technically it's the mouse motion event and not the mouse | 124 // mouse events. Technically it's the mouse motion event and not the mouse |
| 125 // down event that causes the drag, but there's no reliable way to know | 125 // down event that causes the drag, but there's no reliable way to know |
| 126 // *which* motion event initiated the drag, so this will have to do. | 126 // *which* motion event initiated the drag, so this will have to do. |
| 127 // TODO(estade): This can sometimes be very far off, e.g. if the user clicks | 127 // TODO(estade): This can sometimes be very far off, e.g. if the user clicks |
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 375 cairo_clip(cr); | 375 cairo_clip(cr); |
| 376 cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE); | 376 cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE); |
| 377 gdk_cairo_set_source_pixbuf(cr, drag_pixbuf_, 0, 0); | 377 gdk_cairo_set_source_pixbuf(cr, drag_pixbuf_, 0, 0); |
| 378 cairo_paint(cr); | 378 cairo_paint(cr); |
| 379 cairo_destroy(cr); | 379 cairo_destroy(cr); |
| 380 | 380 |
| 381 return TRUE; | 381 return TRUE; |
| 382 } | 382 } |
| 383 | 383 |
| 384 } // namespace content | 384 } // namespace content |
| OLD | NEW |