diff options
author | Marco Pesenti Gritti <marco@gnome.org> | 2004-03-14 09:01:03 +0800 |
---|---|---|
committer | Marco Pesenti Gritti <marco@src.gnome.org> | 2004-03-14 09:01:03 +0800 |
commit | 473bd44d6460ff9e71844a5d7a5895e547be26b5 (patch) | |
tree | 55808cce66cdf0ccb9554d7defc7e0c32c0a18e7 /lib/egg | |
parent | 2384f5872c8a4f3f400b3be011bcaa5e9a77cfac (diff) | |
download | gsoc2013-epiphany-473bd44d6460ff9e71844a5d7a5895e547be26b5.tar gsoc2013-epiphany-473bd44d6460ff9e71844a5d7a5895e547be26b5.tar.gz gsoc2013-epiphany-473bd44d6460ff9e71844a5d7a5895e547be26b5.tar.bz2 gsoc2013-epiphany-473bd44d6460ff9e71844a5d7a5895e547be26b5.tar.lz gsoc2013-epiphany-473bd44d6460ff9e71844a5d7a5895e547be26b5.tar.xz gsoc2013-epiphany-473bd44d6460ff9e71844a5d7a5895e547be26b5.tar.zst gsoc2013-epiphany-473bd44d6460ff9e71844a5d7a5895e547be26b5.zip |
Deal with the case where data_received signal is emitted asyncrounously.
2004-03-14 Marco Pesenti Gritti <marco@gnome.org>
* lib/egg/egg-editable-toolbar.c: (drag_data_received_cb),
(toolbar_drag_motion_cb), (egg_editable_toolbar_init):
Deal with the case where data_received signal is emitted
asyncrounously.
Diffstat (limited to 'lib/egg')
-rwxr-xr-x | lib/egg/egg-editable-toolbar.c | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/lib/egg/egg-editable-toolbar.c b/lib/egg/egg-editable-toolbar.c index aa8e2d8cb..57c2681a8 100755 --- a/lib/egg/egg-editable-toolbar.c +++ b/lib/egg/egg-editable-toolbar.c @@ -450,6 +450,8 @@ drag_data_received_cb (GtkWidget *widget, etoolbar->priv->pending = FALSE; etoolbar->priv->dragged_item = create_item_from_action (etoolbar, id, data_is_separator (id), NULL); + g_object_ref (etoolbar->priv->dragged_item); + gtk_object_sink (GTK_OBJECT (etoolbar->priv->dragged_item)); } else { @@ -595,23 +597,16 @@ toolbar_drag_motion_cb (GtkWidget *widget, etoolbar->priv->target_toolbar = toolbar; - /* The handler will make sure the item is created */ gtk_drag_get_data (widget, context, target, time); - - g_assert (!etoolbar->priv->pending); - - if (etoolbar->priv->dragged_item == NULL) { - return TRUE; - } - - g_object_ref (etoolbar->priv->dragged_item); - gtk_object_sink (GTK_OBJECT (etoolbar->priv->dragged_item)); } - item = GTK_TOOL_ITEM (etoolbar->priv->dragged_item); + if (etoolbar->priv->dragged_item != NULL) + { + item = GTK_TOOL_ITEM (etoolbar->priv->dragged_item); - index = gtk_toolbar_get_drop_index (toolbar, x, y); - gtk_toolbar_set_drop_highlight_item (toolbar, item, index); + index = gtk_toolbar_get_drop_index (toolbar, x, y); + gtk_toolbar_set_drop_highlight_item (toolbar, item, index); + } gdk_drag_status (context, context->suggested_action, time); @@ -1053,6 +1048,7 @@ egg_editable_toolbar_init (EggEditableToolbar *t) t->priv->merge = NULL; t->priv->edit_mode = FALSE; + t->priv->dragged_item = NULL; } static void |