From 74e1c444fa4a66c1c5fe3091491665ea44e0b042 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 1 Dec 2021 02:42:20 +0100 Subject: [PATCH] Don't show bogus value when there are none in wxGTK wxDVC neither This is similar to the previous change to the generic version and simply applies the same logic to the cells for which GetValue() returns null value as for those for which HasValue() returns false. --- src/gtk/dataview.cpp | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/gtk/dataview.cpp b/src/gtk/dataview.cpp index 767334e004..7d8140d153 100644 --- a/src/gtk/dataview.cpp +++ b/src/gtk/dataview.cpp @@ -3171,6 +3171,14 @@ gtk_dataview_header_button_press_callback( GtkWidget *WXUNUSED(widget), return FALSE; } +// Helper for wxGtkTreeCellDataFunc() below. +static void wxGtkTreeSetVisibleProp(GtkCellRenderer *renderer, gboolean visible) +{ + wxGtkValue gvalue( G_TYPE_BOOLEAN ); + g_value_set_boolean( gvalue, visible ); + g_object_set_property( G_OBJECT(renderer), "visible", gvalue ); +} + extern "C" { @@ -3200,16 +3208,22 @@ static void wxGtkTreeCellDataFunc( GtkTreeViewColumn *WXUNUSED(column), if (!wx_model->IsVirtualListModel()) { gboolean visible = wx_model->HasValue(item, column); - wxGtkValue gvalue( G_TYPE_BOOLEAN ); - g_value_set_boolean( gvalue, visible ); - g_object_set_property( G_OBJECT(renderer), "visible", gvalue ); + wxGtkTreeSetVisibleProp(renderer, visible); if ( !visible ) return; } cell->GtkSetCurrentItem(item); - cell->PrepareForItem(wx_model, item, column); + + if (!cell->PrepareForItem(wx_model, item, column)) + { + // We don't have any value in this cell, after all, so hide it. + if (!wx_model->IsVirtualListModel()) + { + wxGtkTreeSetVisibleProp(renderer, FALSE); + } + } } } // extern "C"