| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 "views/widget/widget_gtk.h" | 5 #include "views/widget/widget_gtk.h" |
| 6 | 6 |
| 7 #include "app/drag_drop_types.h" | 7 #include "app/drag_drop_types.h" |
| 8 #include "app/gfx/path.h" | 8 #include "app/gfx/path.h" |
| 9 #include "app/os_exchange_data.h" | 9 #include "app/os_exchange_data.h" |
| 10 #include "app/os_exchange_data_provider_gtk.h" | 10 #include "app/os_exchange_data_provider_gtk.h" |
| (...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 177 gtk_widget_set_size_request(child, w, h); | 177 gtk_widget_set_size_request(child, w, h); |
| 178 gtk_fixed_move(GTK_FIXED(window_contents_), child, x, y); | 178 gtk_fixed_move(GTK_FIXED(window_contents_), child, x, y); |
| 179 } | 179 } |
| 180 | 180 |
| 181 void WidgetGtk::DoDrag(const OSExchangeData& data, int operation) { | 181 void WidgetGtk::DoDrag(const OSExchangeData& data, int operation) { |
| 182 const OSExchangeDataProviderGtk& data_provider = | 182 const OSExchangeDataProviderGtk& data_provider = |
| 183 static_cast<const OSExchangeDataProviderGtk&>(data.provider()); | 183 static_cast<const OSExchangeDataProviderGtk&>(data.provider()); |
| 184 GtkTargetList* targets = data_provider.GetTargetList(); | 184 GtkTargetList* targets = data_provider.GetTargetList(); |
| 185 GdkEvent* current_event = gtk_get_current_event(); | 185 GdkEvent* current_event = gtk_get_current_event(); |
| 186 DCHECK(current_event); | 186 DCHECK(current_event); |
| 187 gtk_drag_begin(window_contents_, targets, | 187 const OSExchangeDataProviderGtk& provider( |
| 188 static_cast<GdkDragAction>( | 188 static_cast<const OSExchangeDataProviderGtk&>(data.provider())); |
| 189 DragDropTypes::DragOperationToGdkDragAction(operation)), | 189 |
| 190 1, current_event); | 190 GdkDragContext* context = gtk_drag_begin( |
| 191 window_contents_, |
| 192 targets, |
| 193 static_cast<GdkDragAction>( |
| 194 DragDropTypes::DragOperationToGdkDragAction(operation)), |
| 195 1, |
| 196 current_event); |
| 197 |
| 198 // Set the drag image if one was supplied. |
| 199 if (provider.get_drag_image()) |
| 200 gtk_drag_set_icon_pixbuf(context, |
| 201 provider.get_drag_image(), |
| 202 provider.cursor_offset_x(), |
| 203 provider.cursor_offset_y()); |
| 191 gdk_event_free(current_event); | 204 gdk_event_free(current_event); |
| 192 gtk_target_list_unref(targets); | 205 gtk_target_list_unref(targets); |
| 193 | 206 |
| 194 drag_data_ = &data_provider; | 207 drag_data_ = &data_provider; |
| 195 | 208 |
| 196 // Block the caller until drag is done by running a nested message loop. | 209 // Block the caller until drag is done by running a nested message loop. |
| 197 MessageLoopForUI::current()->Run(NULL); | 210 MessageLoopForUI::current()->Run(NULL); |
| 198 | 211 |
| 199 drag_data_ = NULL; | 212 drag_data_ = NULL; |
| 200 } | 213 } |
| (...skipping 995 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1196 | 1209 |
| 1197 // static | 1210 // static |
| 1198 Widget* Widget::CreateTransparentPopupWidget(bool delete_on_destroy) { | 1211 Widget* Widget::CreateTransparentPopupWidget(bool delete_on_destroy) { |
| 1199 WidgetGtk* popup = new WidgetGtk(WidgetGtk::TYPE_POPUP); | 1212 WidgetGtk* popup = new WidgetGtk(WidgetGtk::TYPE_POPUP); |
| 1200 popup->set_delete_on_destroy(delete_on_destroy); | 1213 popup->set_delete_on_destroy(delete_on_destroy); |
| 1201 popup->MakeTransparent(); | 1214 popup->MakeTransparent(); |
| 1202 return popup; | 1215 return popup; |
| 1203 } | 1216 } |
| 1204 | 1217 |
| 1205 } // namespace views | 1218 } // namespace views |
| OLD | NEW |