diff --git a/app/widgets/gimpcontainericonview.c b/app/widgets/gimpcontainericonview.c index 06b8216b95..2d604539c6 100644 --- a/app/widgets/gimpcontainericonview.c +++ b/app/widgets/gimpcontainericonview.c @@ -38,6 +38,7 @@ #include "gimpcontainertreestore.h" #include "gimpcontainericonview.h" #include "gimpcontainerview.h" +#include "gimpcontainerview-cruft.h" #include "gimpdnd.h" #include "gimpviewrenderer.h" #include "gimpwidgets-utils.h" diff --git a/app/widgets/gimpcontainertreestore.c b/app/widgets/gimpcontainertreestore.c index 93fb0eadbb..c92bdc009d 100644 --- a/app/widgets/gimpcontainertreestore.c +++ b/app/widgets/gimpcontainertreestore.c @@ -35,6 +35,7 @@ #include "gimpcellrendererviewable.h" #include "gimpcontainertreestore.h" #include "gimpcontainerview.h" +#include "gimpcontainerview-cruft.h" #include "gimpviewrenderer.h" diff --git a/app/widgets/gimpcontainertreeview.c b/app/widgets/gimpcontainertreeview.c index 7cd5a98f4f..c9f7b32a34 100644 --- a/app/widgets/gimpcontainertreeview.c +++ b/app/widgets/gimpcontainertreeview.c @@ -43,6 +43,7 @@ #include "gimpcontainertreeview.h" #include "gimpcontainertreeview-private.h" #include "gimpcontainerview.h" +#include "gimpcontainerview-cruft.h" #include "gimpdnd.h" #include "gimpviewrenderer.h" #include "gimpwidgets-utils.h" diff --git a/app/widgets/gimpcontainerview-cruft.c b/app/widgets/gimpcontainerview-cruft.c index 65d7917f77..2fbe9eff80 100644 --- a/app/widgets/gimpcontainerview-cruft.c +++ b/app/widgets/gimpcontainerview-cruft.c @@ -113,6 +113,45 @@ _gimp_container_view_real_clear_items (GimpContainerView *view) g_hash_table_remove_all (private->item_hash); } +gpointer +_gimp_container_view_lookup (GimpContainerView *view, + GimpViewable *viewable) +{ + GimpContainerViewPrivate *private; + + g_return_val_if_fail (GIMP_IS_CONTAINER_VIEW (view), NULL); + g_return_val_if_fail (viewable == NULL || GIMP_IS_VIEWABLE (viewable), NULL); + + /* we handle the NULL viewable here as a workaround for bug #149906 */ + if (! viewable) + return NULL; + + private = GIMP_CONTAINER_VIEW_GET_PRIVATE (view); + + return g_hash_table_lookup (private->item_hash, viewable); +} + +gboolean +_gimp_container_view_contains (GimpContainerView *view, + GList *viewables) +{ + GimpContainerViewPrivate *private; + GList *iter; + + g_return_val_if_fail (GIMP_IS_CONTAINER_VIEW (view), FALSE); + g_return_val_if_fail (viewables, FALSE); + + private = GIMP_CONTAINER_VIEW_GET_PRIVATE (view); + + for (iter = viewables; iter; iter = iter->next) + { + if (! g_hash_table_contains (private->item_hash, iter->data)) + return FALSE; + } + + return TRUE; +} + /* private functions */ diff --git a/app/widgets/gimpcontainerview-cruft.h b/app/widgets/gimpcontainerview-cruft.h index 89302684d9..60936d8bb8 100644 --- a/app/widgets/gimpcontainerview-cruft.h +++ b/app/widgets/gimpcontainerview-cruft.h @@ -21,7 +21,12 @@ #pragma once -void _gimp_container_view_connect_cruft (GimpContainerView *view); -void _gimp_container_view_disconnect_cruft (GimpContainerView *view); +void _gimp_container_view_connect_cruft (GimpContainerView *view); +void _gimp_container_view_disconnect_cruft (GimpContainerView *view); -void _gimp_container_view_real_clear_items (GimpContainerView *view); +void _gimp_container_view_real_clear_items (GimpContainerView *view); + +gpointer _gimp_container_view_lookup (GimpContainerView *view, + GimpViewable *viewable); +gboolean _gimp_container_view_contains (GimpContainerView *view, + GList *viewables); diff --git a/app/widgets/gimpcontainerview-private.c b/app/widgets/gimpcontainerview-private.c index 05e8dc40d1..92e181e5e0 100644 --- a/app/widgets/gimpcontainerview-private.c +++ b/app/widgets/gimpcontainerview-private.c @@ -81,10 +81,11 @@ _gimp_container_view_get_private (GimpContainerView *view) private->view_border_width = 1; - private->item_hash = g_hash_table_new_full (g_direct_hash, - g_direct_equal, - NULL, - view_iface->insert_data_free); + if (! GIMP_CONTAINER_VIEW_GET_IFACE (view)->use_list_model) + private->item_hash = g_hash_table_new_full (g_direct_hash, + g_direct_equal, + NULL, + view_iface->insert_data_free); g_object_set_qdata_full ((GObject *) view, private_key, private, (GDestroyNotify) diff --git a/app/widgets/gimpcontainerview-private.h b/app/widgets/gimpcontainerview-private.h index c9d689538f..8b1eb0272b 100644 --- a/app/widgets/gimpcontainerview-private.h +++ b/app/widgets/gimpcontainerview-private.h @@ -32,8 +32,6 @@ struct _GimpContainerViewPrivate GimpContainer *container; GimpContext *context; - GHashTable *item_hash; - gint view_size; gint view_border_width; gboolean reorderable; @@ -42,6 +40,8 @@ struct _GimpContainerViewPrivate /* initialized by subclass */ GtkWidget *dnd_widget; + /* cruft */ + GHashTable *item_hash; GimpTreeHandler *name_changed_handler; GimpTreeHandler *expanded_changed_handler; }; diff --git a/app/widgets/gimpcontainerview.c b/app/widgets/gimpcontainerview.c index cd4a253ef6..28d11cf36e 100644 --- a/app/widgets/gimpcontainerview.c +++ b/app/widgets/gimpcontainerview.c @@ -488,45 +488,6 @@ gimp_container_view_is_item_selected (GimpContainerView *view, /* protected functions, only to be used by implementors */ -gpointer -_gimp_container_view_lookup (GimpContainerView *view, - GimpViewable *viewable) -{ - GimpContainerViewPrivate *private; - - g_return_val_if_fail (GIMP_IS_CONTAINER_VIEW (view), NULL); - g_return_val_if_fail (viewable == NULL || GIMP_IS_VIEWABLE (viewable), NULL); - - /* we handle the NULL viewable here as a workaround for bug #149906 */ - if (! viewable) - return NULL; - - private = GIMP_CONTAINER_VIEW_GET_PRIVATE (view); - - return g_hash_table_lookup (private->item_hash, viewable); -} - -gboolean -_gimp_container_view_contains (GimpContainerView *view, - GList *viewables) -{ - GimpContainerViewPrivate *private; - GList *iter; - - g_return_val_if_fail (GIMP_IS_CONTAINER_VIEW (view), FALSE); - g_return_val_if_fail (viewables, FALSE); - - private = GIMP_CONTAINER_VIEW_GET_PRIVATE (view); - - for (iter = viewables; iter; iter = iter->next) - { - if (! g_hash_table_contains (private->item_hash, iter->data)) - return FALSE; - } - - return TRUE; -} - void _gimp_container_view_selection_changed (GimpContainerView *view) { @@ -734,11 +695,6 @@ gimp_container_view_real_set_container (GimpContainerView *view, if (private->context) gimp_container_view_disconnect_context (view); -#if 0 - /* needed? */ - gimp_container_view_set_selected (view, NULL); -#endif - if (! GIMP_CONTAINER_VIEW_GET_IFACE (view)->use_list_model) _gimp_container_view_disconnect_cruft (view); } @@ -892,10 +848,8 @@ gimp_container_view_button_viewables_dropped (GtkWidget *widget, { GimpContainerView *view = GIMP_CONTAINER_VIEW (data); - if (viewables) + if (viewables && gimp_container_view_set_selected (view, viewables)) { - gimp_container_view_set_selected (view, viewables); - gtk_button_clicked (GTK_BUTTON (widget)); } } @@ -909,10 +863,8 @@ gimp_container_view_button_viewable_dropped (GtkWidget *widget, { GimpContainerView *view = GIMP_CONTAINER_VIEW (data); - if (viewable && _gimp_container_view_lookup (view, viewable)) + if (viewable && gimp_container_view_set_1_selected (view, viewable)) { - gimp_container_view_set_1_selected (view, viewable); - gtk_button_clicked (GTK_BUTTON (widget)); } } diff --git a/app/widgets/gimpcontainerview.h b/app/widgets/gimpcontainerview.h index 6ea1b6d48f..c69d2d8c21 100644 --- a/app/widgets/gimpcontainerview.h +++ b/app/widgets/gimpcontainerview.h @@ -137,12 +137,6 @@ gboolean gimp_container_view_is_item_selected (GimpContainerView *v /* protected */ -gpointer _gimp_container_view_lookup (GimpContainerView *view, - GimpViewable *viewable); -gboolean _gimp_container_view_contains (GimpContainerView *view, - GList *viewables); - - void _gimp_container_view_selection_changed (GimpContainerView *view); void _gimp_container_view_item_activated (GimpContainerView *view, GimpViewable *item); diff --git a/app/widgets/gimpdeviceeditor.c b/app/widgets/gimpdeviceeditor.c index 0d22cc2a74..3aaf3deb0c 100644 --- a/app/widgets/gimpdeviceeditor.c +++ b/app/widgets/gimpdeviceeditor.c @@ -34,6 +34,7 @@ #include "core/gimplist.h" #include "gimpcontainerview.h" +#include "gimpcontainerview-cruft.h" #include "gimpcontainertreestore.h" #include "gimpcontainertreeview.h" #include "gimpdeviceeditor.h" diff --git a/app/widgets/gimpdrawabletreeview-filters.c b/app/widgets/gimpdrawabletreeview-filters.c index d416161193..871ab88bc4 100644 --- a/app/widgets/gimpdrawabletreeview-filters.c +++ b/app/widgets/gimpdrawabletreeview-filters.c @@ -48,6 +48,7 @@ #include "gimpcontainertreestore.h" #include "gimpcontainerview.h" +#include "gimpcontainerview-cruft.h" #include "gimpdrawabletreeview.h" #include "gimpdrawabletreeview-filters.h" #include "gimpviewrenderer.h" diff --git a/app/widgets/gimpdrawabletreeview.c b/app/widgets/gimpdrawabletreeview.c index 070afc73d9..06c0740549 100644 --- a/app/widgets/gimpdrawabletreeview.c +++ b/app/widgets/gimpdrawabletreeview.c @@ -47,6 +47,7 @@ #include "gimpcontainertreestore.h" #include "gimpcontainerview.h" +#include "gimpcontainerview-cruft.h" #include "gimpdnd.h" #include "gimpdrawabletreeview.h" #include "gimpdrawabletreeview-filters.h" diff --git a/app/widgets/gimpitemtreeview.c b/app/widgets/gimpitemtreeview.c index f15afcc0eb..b52d312d05 100644 --- a/app/widgets/gimpitemtreeview.c +++ b/app/widgets/gimpitemtreeview.c @@ -48,6 +48,7 @@ #include "gimpaction.h" #include "gimpcontainertreestore.h" #include "gimpcontainerview.h" +#include "gimpcontainerview-cruft.h" #include "gimpdnd.h" #include "gimpdocked.h" #include "gimpitemtreeview.h" diff --git a/app/widgets/gimplayertreeview.c b/app/widgets/gimplayertreeview.c index 9ef6b8f376..a3679e9db9 100644 --- a/app/widgets/gimplayertreeview.c +++ b/app/widgets/gimplayertreeview.c @@ -58,6 +58,7 @@ #include "gimpcellrendererviewable.h" #include "gimpcontainertreestore.h" #include "gimpcontainerview.h" +#include "gimpcontainerview-cruft.h" #include "gimpdnd.h" #include "gimphelp-ids.h" #include "gimplayermodebox.h" diff --git a/app/widgets/gimptooleditor.c b/app/widgets/gimptooleditor.c index cc033a693d..1b2b1b5738 100644 --- a/app/widgets/gimptooleditor.c +++ b/app/widgets/gimptooleditor.c @@ -39,6 +39,7 @@ #include "gimpcontainertreestore.h" #include "gimpcontainerview.h" +#include "gimpcontainerview-cruft.h" #include "gimpdnd.h" #include "gimpviewrenderer.h" #include "gimptooleditor.h"