listview: Make inertness not depend on factory
The inertness concept introduced in 62e9d1e470 assumed a listview was
inert when no factory was set. This has 2 problems:
1. columnview uses a listview without factories.
2. header factory being set but factory not being set technically makes
the listiew inert - but should it?
So for now, make inertness only depend on visibility and root.
A side benefit is that this matches columnview semantics.
This commit is contained in:
@@ -264,8 +264,7 @@ gtk_grid_view_is_inert (GtkGridView *self)
|
||||
GtkWidget *widget = GTK_WIDGET (self);
|
||||
|
||||
return !gtk_widget_get_visible (widget) ||
|
||||
gtk_widget_get_root (widget) == NULL ||
|
||||
self->factory == NULL;
|
||||
gtk_widget_get_root (widget) == NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1330,19 +1329,12 @@ void
|
||||
gtk_grid_view_set_factory (GtkGridView *self,
|
||||
GtkListItemFactory *factory)
|
||||
{
|
||||
gboolean was_inert;
|
||||
|
||||
g_return_if_fail (GTK_IS_GRID_VIEW (self));
|
||||
g_return_if_fail (factory == NULL || GTK_IS_LIST_ITEM_FACTORY (factory));
|
||||
|
||||
was_inert = gtk_grid_view_is_inert (self);
|
||||
|
||||
if (!g_set_object (&self->factory, factory))
|
||||
return;
|
||||
|
||||
if (!was_inert || !gtk_grid_view_is_inert (self))
|
||||
gtk_grid_view_update_factories (self);
|
||||
|
||||
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_FACTORY]);
|
||||
}
|
||||
|
||||
|
||||
@@ -208,8 +208,7 @@ gtk_list_view_is_inert (GtkListView *self)
|
||||
GtkWidget *widget = GTK_WIDGET (self);
|
||||
|
||||
return !gtk_widget_get_visible (widget) ||
|
||||
gtk_widget_get_root (widget) == NULL ||
|
||||
self->factory == NULL;
|
||||
gtk_widget_get_root (widget) == NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1101,18 +1100,13 @@ void
|
||||
gtk_list_view_set_factory (GtkListView *self,
|
||||
GtkListItemFactory *factory)
|
||||
{
|
||||
gboolean was_inert;
|
||||
|
||||
g_return_if_fail (GTK_IS_LIST_VIEW (self));
|
||||
g_return_if_fail (factory == NULL || GTK_IS_LIST_ITEM_FACTORY (factory));
|
||||
|
||||
was_inert = gtk_list_view_is_inert (self);
|
||||
|
||||
if (!g_set_object (&self->factory, factory))
|
||||
return;
|
||||
|
||||
if (!was_inert || !gtk_list_view_is_inert (self))
|
||||
gtk_list_view_update_factories (self);
|
||||
gtk_list_view_update_factories (self);
|
||||
|
||||
g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_FACTORY]);
|
||||
}
|
||||
@@ -1163,7 +1157,8 @@ gtk_list_view_set_header_factory (GtkListView *self,
|
||||
|
||||
gtk_list_item_manager_set_has_sections (self->item_manager, factory != NULL);
|
||||
|
||||
if (had_sections && gtk_list_item_manager_get_has_sections (self->item_manager))
|
||||
if (!gtk_list_view_is_inert (self) &&
|
||||
had_sections && gtk_list_item_manager_get_has_sections (self->item_manager))
|
||||
{
|
||||
GtkListTile *tile;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user