summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-04-26 15:43:25 +0100
committerCaolán McNamara <caolanm@redhat.com>2020-04-29 09:46:08 +0200
commitfe9a13dc0e6d1384416c2a2343223b33925fc925 (patch)
treea43a8ea0cc46407b8932dced64cf34d595f3b3e9 /vcl
parentcf36fe5eb41910c26d58fb25e54ccf2e0ee01365 (diff)
weld SfxTemplatePanelControl
Change-Id: Ib3f6d01ddec37afc3987423dc15ab84ad6475f37 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92942 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/source/app/salvtables.cxx8
-rw-r--r--vcl/source/app/weldutils.cxx19
-rw-r--r--vcl/unx/gtk3/gtk3gtkinst.cxx28
3 files changed, 44 insertions, 11 deletions
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 5ec6794ab2dd..f513a44c4d98 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -3433,9 +3433,13 @@ public:
}
}
- virtual void set_column_custom_renderer(int nColumn) override
+ virtual void set_column_custom_renderer(int nColumn, bool bEnable) override
{
- m_aCustomRenders.insert(nColumn);
+ assert(n_children() == 0 && "tree must be empty");
+ if (bEnable)
+ m_aCustomRenders.insert(nColumn);
+ else
+ m_aCustomRenders.erase(nColumn);
}
virtual void show() override
diff --git a/vcl/source/app/weldutils.cxx b/vcl/source/app/weldutils.cxx
index dea707be3c5e..19f6464052d6 100644
--- a/vcl/source/app/weldutils.cxx
+++ b/vcl/source/app/weldutils.cxx
@@ -105,6 +105,25 @@ void TriStateEnabled::ButtonToggled(weld::ToggleButton& rToggle)
}
eState = rToggle.get_state();
}
+
+void RemoveParentKeepChildren(weld::TreeView& rTreeView, weld::TreeIter& rParent)
+{
+ if (rTreeView.iter_has_child(rParent))
+ {
+ std::unique_ptr<weld::TreeIter> xNewParent(rTreeView.make_iterator(&rParent));
+ if (!rTreeView.iter_parent(*xNewParent))
+ xNewParent.reset();
+
+ while (true)
+ {
+ std::unique_ptr<weld::TreeIter> xChild(rTreeView.make_iterator(&rParent));
+ if (!rTreeView.iter_children(*xChild))
+ break;
+ rTreeView.move_subtree(*xChild, xNewParent.get(), -1);
+ }
+ }
+ rTreeView.remove(rParent);
+}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index dde9c77521f9..42a97247beb2 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -9767,19 +9767,29 @@ public:
gtk_tree_view_column_set_title(pColumn, OUStringToOString(rTitle, RTL_TEXTENCODING_UTF8).getStr());
}
- virtual void set_column_custom_renderer(int nColumn) override
+ virtual void set_column_custom_renderer(int nColumn, bool bEnable) override
{
+ assert(n_children() == 0 && "tree must be empty");
GtkTreeViewColumn* pColumn = GTK_TREE_VIEW_COLUMN(g_list_nth_data(m_pColumns, nColumn));
assert(pColumn && "wrong count");
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 (bEnable)
+ {
+ 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);
+ }
}
virtual void insert(const weld::TreeIter* pParent, int pos, const OUString* pText, const OUString* pId, const OUString* pIconName,