| Index: chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.cc
|
| diff --git a/chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.cc b/chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.cc
|
| index 05033223f3a4d5445d129fa0e2c86113de016f25..23c11d544534a5beceb3668c98518d642a3c3279 100644
|
| --- a/chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.cc
|
| +++ b/chrome/browser/ui/gtk/bookmarks/bookmark_bar_gtk.cc
|
| @@ -644,12 +644,15 @@ void BookmarkBarGtk::UpdateDetachedState(BookmarkBar::State old_state) {
|
| UpdateEventBoxPaintability();
|
| // |window_| can be NULL during testing.
|
| // Listen for parent size allocations. Only connect once.
|
| - if (window_ && detached && widget()->parent &&
|
| - g_signal_handler_find(widget()->parent, G_SIGNAL_MATCH_FUNC,
|
| - 0, 0, NULL, reinterpret_cast<gpointer>(OnParentSizeAllocateThunk),
|
| - NULL) == 0) {
|
| - g_signal_connect(widget()->parent, "size-allocate",
|
| - G_CALLBACK(OnParentSizeAllocateThunk), this);
|
| + if (window_ && detached) {
|
| + GtkWidget* parent = gtk_widget_get_parent(widget());
|
| + if (parent &&
|
| + g_signal_handler_find(parent, G_SIGNAL_MATCH_FUNC,
|
| + 0, 0, NULL, reinterpret_cast<gpointer>(OnParentSizeAllocateThunk),
|
| + NULL) == 0) {
|
| + g_signal_connect(parent, "size-allocate",
|
| + G_CALLBACK(OnParentSizeAllocateThunk), this);
|
| + }
|
| }
|
| }
|
|
|
| @@ -818,8 +821,9 @@ int BookmarkBarGtk::GetToolbarIndexForDragOverFolder(GtkWidget* button,
|
| if (x > margin && x < (allocation.width - margin))
|
| return -1;
|
|
|
| + GtkWidget* parent = gtk_widget_get_parent(button);
|
| gint index = gtk_toolbar_get_item_index(GTK_TOOLBAR(bookmark_toolbar_.get()),
|
| - GTK_TOOL_ITEM(button->parent));
|
| + GTK_TOOL_ITEM(parent));
|
| if (x > margin)
|
| index++;
|
| return index;
|
| @@ -1146,9 +1150,11 @@ void BookmarkBarGtk::OnClicked(GtkWidget* sender) {
|
|
|
| void BookmarkBarGtk::OnButtonDragBegin(GtkWidget* button,
|
| GdkDragContext* drag_context) {
|
| + GtkWidget* button_parent = gtk_widget_get_parent(button);
|
| +
|
| // The parent tool item might be removed during the drag. Ref it so |button|
|
| // won't get destroyed.
|
| - g_object_ref(button->parent);
|
| + g_object_ref(button_parent);
|
|
|
| const BookmarkNode* node = GetNodeForToolButton(button);
|
| DCHECK(!dragged_node_);
|
| @@ -1172,7 +1178,7 @@ void BookmarkBarGtk::OnButtonDragBegin(GtkWidget* button,
|
|
|
| // Hide our node, but reserve space for it on the toolbar.
|
| int index = gtk_toolbar_get_item_index(GTK_TOOLBAR(bookmark_toolbar_.get()),
|
| - GTK_TOOL_ITEM(button->parent));
|
| + GTK_TOOL_ITEM(button_parent));
|
| gtk_widget_hide(button);
|
| toolbar_drop_item_ = CreateBookmarkToolItem(dragged_node_);
|
| g_object_ref_sink(GTK_OBJECT(toolbar_drop_item_));
|
| @@ -1196,7 +1202,7 @@ void BookmarkBarGtk::OnButtonDragEnd(GtkWidget* button,
|
| gtk_widget_destroy(drag_icon_);
|
| drag_icon_ = NULL;
|
|
|
| - g_object_unref(button->parent);
|
| + g_object_unref(gtk_widget_get_parent(button));
|
| }
|
|
|
| void BookmarkBarGtk::OnButtonDragGet(GtkWidget* widget,
|
| @@ -1280,8 +1286,9 @@ void BookmarkBarGtk::OnDragReceived(GtkWidget* widget,
|
|
|
| switch (target_type) {
|
| case ui::CHROME_BOOKMARK_ITEM: {
|
| - Pickle pickle(reinterpret_cast<char*>(selection_data->data),
|
| - selection_data->length);
|
| + gint length = gtk_selection_data_get_length(selection_data);
|
| + Pickle pickle(reinterpret_cast<const char*>(
|
| + gtk_selection_data_get_data(selection_data)), length);
|
| BookmarkNodeData drag_data;
|
| if (drag_data.ReadFromPickle(&pickle)) {
|
| dnd_success = bookmark_utils::PerformBookmarkDrop(
|
| @@ -1383,7 +1390,7 @@ gboolean BookmarkBarGtk::OnEventBoxExpose(GtkWidget* widget,
|
| return FALSE;
|
|
|
| if (bookmark_bar_state_ != BookmarkBar::DETACHED) {
|
| - cairo_t* cr = gdk_cairo_create(GDK_DRAWABLE(widget->window));
|
| + cairo_t* cr = gdk_cairo_create(gtk_widget_get_window(widget));
|
| gdk_cairo_rectangle(cr, &event->area);
|
| cairo_clip(cr);
|
|
|
|
|