Merge branch 'wip/otte/for-main' into 'main'
Fix infinite loop in zenity See merge request GNOME/gtk!6767
This commit is contained in:
@@ -269,11 +269,12 @@ gtk_column_view_cell_widget_size_allocate (GtkWidget *widget,
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_column_view_cell_widget_unroot (GtkWidget *widget)
|
||||
/* This should be to be called when unsetting the parent, but we have no
|
||||
* set_parent vfunc().
|
||||
*/
|
||||
void
|
||||
gtk_column_view_cell_widget_unset_column (GtkColumnViewCellWidget *self)
|
||||
{
|
||||
GtkColumnViewCellWidget *self = GTK_COLUMN_VIEW_CELL_WIDGET (widget);
|
||||
|
||||
if (self->column)
|
||||
{
|
||||
gtk_column_view_column_remove_cell (self->column, self);
|
||||
@@ -288,8 +289,17 @@ gtk_column_view_cell_widget_unroot (GtkWidget *widget)
|
||||
|
||||
g_clear_object (&self->column);
|
||||
}
|
||||
}
|
||||
|
||||
GTK_WIDGET_CLASS (gtk_column_view_cell_widget_parent_class)->unroot (widget);
|
||||
static void
|
||||
gtk_column_view_cell_widget_dispose (GObject *object)
|
||||
{
|
||||
GtkColumnViewCellWidget *self = GTK_COLUMN_VIEW_CELL_WIDGET (object);
|
||||
|
||||
/* unset_parent() forgot to call this. Be very angry. */
|
||||
g_warn_if_fail (self->column == NULL);
|
||||
|
||||
G_OBJECT_CLASS (gtk_column_view_cell_widget_parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
static GtkSizeRequestMode
|
||||
@@ -308,6 +318,7 @@ gtk_column_view_cell_widget_class_init (GtkColumnViewCellWidgetClass *klass)
|
||||
{
|
||||
GtkListFactoryWidgetClass *factory_class = GTK_LIST_FACTORY_WIDGET_CLASS (klass);
|
||||
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
|
||||
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
|
||||
|
||||
factory_class->create_object = gtk_column_view_cell_widget_create_object;
|
||||
factory_class->setup_object = gtk_column_view_cell_widget_setup_object;
|
||||
@@ -319,8 +330,8 @@ gtk_column_view_cell_widget_class_init (GtkColumnViewCellWidgetClass *klass)
|
||||
widget_class->measure = gtk_column_view_cell_widget_measure;
|
||||
widget_class->size_allocate = gtk_column_view_cell_widget_size_allocate;
|
||||
widget_class->get_request_mode = gtk_column_view_cell_widget_get_request_mode;
|
||||
widget_class->unroot = gtk_column_view_cell_widget_unroot;
|
||||
|
||||
gobject_class->dispose = gtk_column_view_cell_widget_dispose;
|
||||
|
||||
gtk_widget_class_set_css_name (widget_class, I_("cell"));
|
||||
gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_GRID_CELL);
|
||||
|
||||
@@ -46,5 +46,6 @@ void gtk_column_view_cell_widget_remove (
|
||||
GtkColumnViewCellWidget * gtk_column_view_cell_widget_get_next (GtkColumnViewCellWidget *self);
|
||||
GtkColumnViewCellWidget * gtk_column_view_cell_widget_get_prev (GtkColumnViewCellWidget *self);
|
||||
GtkColumnViewColumn * gtk_column_view_cell_widget_get_column (GtkColumnViewCellWidget *self);
|
||||
void gtk_column_view_cell_widget_unset_column (GtkColumnViewCellWidget *self);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
@@ -592,6 +592,9 @@ void
|
||||
gtk_column_view_row_widget_remove_child (GtkColumnViewRowWidget *self,
|
||||
GtkWidget *child)
|
||||
{
|
||||
if (GTK_IS_COLUMN_VIEW_CELL_WIDGET (child))
|
||||
gtk_column_view_cell_widget_unset_column (GTK_COLUMN_VIEW_CELL_WIDGET (child));
|
||||
|
||||
gtk_widget_unparent (child);
|
||||
}
|
||||
|
||||
|
||||
@@ -119,10 +119,15 @@ row_data_update_info (RowData *data,
|
||||
icon = g_file_icon_new (thumbnail_file);
|
||||
g_object_unref (thumbnail_file);
|
||||
}
|
||||
else
|
||||
else if (g_file_info_has_attribute (info, G_FILE_ATTRIBUTE_STANDARD_ICON))
|
||||
{
|
||||
icon = g_file_info_get_icon (info);
|
||||
}
|
||||
else
|
||||
{
|
||||
icon = NULL;
|
||||
}
|
||||
|
||||
|
||||
gtk_widget_set_visible (data->icon, icon != NULL);
|
||||
gtk_image_set_from_gicon (GTK_IMAGE (data->icon), icon);
|
||||
|
||||
@@ -376,10 +376,14 @@ row_data_update_info (RowData *data,
|
||||
icon = g_file_icon_new (thumbnail_file);
|
||||
g_object_unref (thumbnail_file);
|
||||
}
|
||||
else
|
||||
else if (g_file_info_has_attribute (info, G_FILE_ATTRIBUTE_STANDARD_ICON))
|
||||
{
|
||||
icon = g_file_info_get_icon (info);
|
||||
}
|
||||
else
|
||||
{
|
||||
icon = NULL;
|
||||
}
|
||||
|
||||
gtk_widget_set_visible (data->icon, icon != NULL);
|
||||
gtk_image_set_from_gicon (GTK_IMAGE (data->icon), icon);
|
||||
|
||||
Reference in New Issue
Block a user