app: move more API to gimpcontainerview-cruft.[ch] and make

gimpcontainerview.c cruft-free.
This commit is contained in:
Michael Natterer 2025-08-07 10:16:16 +02:00
parent d58b17cb10
commit 8766a228af
15 changed files with 65 additions and 65 deletions

View file

@ -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"

View file

@ -35,6 +35,7 @@
#include "gimpcellrendererviewable.h"
#include "gimpcontainertreestore.h"
#include "gimpcontainerview.h"
#include "gimpcontainerview-cruft.h"
#include "gimpviewrenderer.h"

View file

@ -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"

View file

@ -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 */

View file

@ -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);

View file

@ -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)

View file

@ -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;
};

View file

@ -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));
}
}

View file

@ -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);

View file

@ -34,6 +34,7 @@
#include "core/gimplist.h"
#include "gimpcontainerview.h"
#include "gimpcontainerview-cruft.h"
#include "gimpcontainertreestore.h"
#include "gimpcontainertreeview.h"
#include "gimpdeviceeditor.h"

View file

@ -48,6 +48,7 @@
#include "gimpcontainertreestore.h"
#include "gimpcontainerview.h"
#include "gimpcontainerview-cruft.h"
#include "gimpdrawabletreeview.h"
#include "gimpdrawabletreeview-filters.h"
#include "gimpviewrenderer.h"

View file

@ -47,6 +47,7 @@
#include "gimpcontainertreestore.h"
#include "gimpcontainerview.h"
#include "gimpcontainerview-cruft.h"
#include "gimpdnd.h"
#include "gimpdrawabletreeview.h"
#include "gimpdrawabletreeview-filters.h"

View file

@ -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"

View file

@ -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"

View file

@ -39,6 +39,7 @@
#include "gimpcontainertreestore.h"
#include "gimpcontainerview.h"
#include "gimpcontainerview-cruft.h"
#include "gimpdnd.h"
#include "gimpviewrenderer.h"
#include "gimptooleditor.h"