diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-07-04 18:00:52 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2020-07-04 19:55:29 +0200 |
commit | f9d86399e92d9c734fdffc6a7c83a2007877ba93 (patch) | |
tree | a3f511ff9734e2c9e688bfa74d64f609e3aedd52 /vcl/unx | |
parent | d70da0b9e24991f8d58e83f53dbbf5b58c721f43 (diff) |
tdf#134479 allow disable font preview to work on existing font comboboxes
not just newly created one.
you can only restore back to a text-only view, not a text+(icon/whatever) view
Change-Id: Ic3becd7a942ee6b1dbabb57eebf1e25d1b626fdb
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/97972
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl/unx')
-rw-r--r-- | vcl/unx/gtk3/gtk3gtkinst.cxx | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx index 144cb6b66563..a7d8a9cd30a7 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -12949,6 +12949,7 @@ private: bool m_bAutoComplete; bool m_bAutoCompleteCaseSensitive; bool m_bChangedByMenu; + bool m_bCustomRenderer; bool m_bActivateCalled; gint m_nTextCol; gint m_nIdCol; @@ -13950,6 +13951,7 @@ public: , m_bAutoComplete(false) , m_bAutoCompleteCaseSensitive(false) , m_bChangedByMenu(false) + , m_bCustomRenderer(false) , m_bActivateCalled(false) , m_nTextCol(gtk_combo_box_get_entry_text_column(pComboBox)) , m_nIdCol(gtk_combo_box_get_id_column(pComboBox)) @@ -14472,22 +14474,34 @@ public: return m_bChangedByMenu; } - virtual void set_custom_renderer() override + virtual void set_custom_renderer(bool bOn) override { + if (bOn == m_bCustomRenderer) + return; GList* pColumns = gtk_tree_view_get_columns(m_pTreeView); // keep the original height around for optimal popup height calculation - m_nNonCustomLineHeight = ::get_height_row(m_pTreeView, pColumns); + m_nNonCustomLineHeight = bOn ? ::get_height_row(m_pTreeView, pColumns) : -1; GtkTreeViewColumn* pColumn = GTK_TREE_VIEW_COLUMN(pColumns->data); gtk_cell_layout_clear(GTK_CELL_LAYOUT(pColumn)); - GtkCellRenderer *pRenderer = custom_cell_renderer_surface_new(); - GValue value = G_VALUE_INIT; - g_value_init(&value, G_TYPE_POINTER); - g_value_set_pointer(&value, static_cast<gpointer>(this)); - g_object_set_property(G_OBJECT(pRenderer), "instance", &value); - gtk_tree_view_column_pack_start(pColumn, pRenderer, true); - gtk_tree_view_column_add_attribute(pColumn, pRenderer, "text", m_nTextCol); - gtk_tree_view_column_add_attribute(pColumn, pRenderer, "id", m_nIdCol); + if (bOn) + { + GtkCellRenderer *pRenderer = custom_cell_renderer_surface_new(); + GValue value = G_VALUE_INIT; + g_value_init(&value, G_TYPE_POINTER); + g_value_set_pointer(&value, static_cast<gpointer>(this)); + g_object_set_property(G_OBJECT(pRenderer), "instance", &value); + gtk_tree_view_column_pack_start(pColumn, pRenderer, true); + gtk_tree_view_column_add_attribute(pColumn, pRenderer, "text", m_nTextCol); + gtk_tree_view_column_add_attribute(pColumn, pRenderer, "id", m_nIdCol); + } + else + { + GtkCellRenderer *pRenderer = gtk_cell_renderer_text_new(); + gtk_tree_view_column_pack_start(pColumn, pRenderer, true); + gtk_tree_view_column_add_attribute(pColumn, pRenderer, "text", m_nTextCol); + } g_list_free(pColumns); + m_bCustomRenderer = bOn; } void call_signal_custom_render(VirtualDevice& rOutput, const tools::Rectangle& rRect, bool bSelected, const OUString& rId) @@ -14960,7 +14974,7 @@ public: return m_bTreeChange; } - virtual void set_custom_renderer() override + virtual void set_custom_renderer(bool /*bOn*/) override { assert(false && "not implemented"); } |