diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-02-18 10:16:40 +0000 |
---|---|---|
committer | Michael Stahl <michael.stahl@allotropia.de> | 2022-08-19 15:06:10 +0200 |
commit | dccf8b6977504000551f69671c2f074d816d63fb (patch) | |
tree | cc4b74006973ebc84986b4f3bd597b0b08f4c171 /vcl | |
parent | 3d43b8e56a2555a458ba44d5d80fb73ccf1111e5 (diff) |
weld WatchWindow panel [only set_column_editables]
Change-Id: Idb43d7bd168ce37fce8694946be6c7de7ca5a2c3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88930
Tested-by: Caolán McNamara <caolanm@redhat.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
(cherry picked from commit 4e07b178f58b1dabbb48bc9f26155b8270a4a72d)
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/app/salvtables.cxx | 7 | ||||
-rw-r--r-- | vcl/source/treelist/svtabbx.cxx | 12 | ||||
-rw-r--r-- | vcl/unx/gtk3/gtk3gtkinst.cxx | 27 |
3 files changed, 46 insertions, 0 deletions
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index ea0120524027..f87d3e2facca 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -3474,6 +3474,13 @@ public: m_xTreeView->Resize(); } + virtual void set_column_editables(const std::vector<bool>& rEditables) override + { + size_t nTabCount = rEditables.size(); + for (size_t i = 0 ; i < nTabCount; ++i) + m_xTreeView->SetTabEditable(i, rEditables[i]); + } + virtual void set_centered_column(int nCol) override { m_xTreeView->SetTabJustify(nCol, SvTabJustify::AdjustCenter); diff --git a/vcl/source/treelist/svtabbx.cxx b/vcl/source/treelist/svtabbx.cxx index c7e17fe66f4b..add7452e3cd7 100644 --- a/vcl/source/treelist/svtabbx.cxx +++ b/vcl/source/treelist/svtabbx.cxx @@ -429,6 +429,18 @@ void SvTabListBox::SetTabJustify( sal_uInt16 nTab, SvTabJustify eJustify) Invalidate(); } +void SvTabListBox::SetTabEditable(sal_uInt16 nTab, bool bEditable) +{ + DBG_ASSERT(nTab<mvTabList.size(),"GetTabPos:Invalid Tab"); + if( nTab >= mvTabList.size() ) + return; + SvLBoxTab& rTab = mvTabList[ nTab ]; + if (bEditable) + rTab.nFlags |= SvLBoxTabFlags::EDITABLE; + else + rTab.nFlags &= ~SvLBoxTabFlags::EDITABLE; +} + long SvTabListBox::GetLogicTab( sal_uInt16 nTab ) { if( SvTreeListBox::nTreeFlags & SvTreeFlags::RECALCTABS ) diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx index c9d66e1ac7f7..47c848c79596 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -8339,6 +8339,26 @@ private: return m_aModelColToViewCol[modelcol]; } + void set_column_editable(int nCol, bool bEditable) + { + for (GList* pEntry = g_list_first(m_pColumns); pEntry; pEntry = g_list_next(pEntry)) + { + GtkTreeViewColumn* pColumn = GTK_TREE_VIEW_COLUMN(pEntry->data); + GList *pRenderers = gtk_cell_layout_get_cells(GTK_CELL_LAYOUT(pColumn)); + for (GList* pRenderer = g_list_first(pRenderers); pRenderer; pRenderer = g_list_next(pRenderer)) + { + GtkCellRenderer* pCellRenderer = GTK_CELL_RENDERER(pRenderer->data); + void* pData = g_object_get_data(G_OBJECT(pCellRenderer), "g-lo-CellIndex"); + if (reinterpret_cast<sal_IntPtr>(pData) == nCol) + { + g_object_set(G_OBJECT(pCellRenderer), "editable", bEditable, "editable-set", true, nullptr); + break; + } + } + g_list_free(pRenderers); + } + } + static void signalRowDeleted(GtkTreeModel*, GtkTreePath*, gpointer widget) { GtkInstanceTreeView* pThis = static_cast<GtkInstanceTreeView*>(widget); @@ -8513,6 +8533,13 @@ public: } } + virtual void set_column_editables(const std::vector<bool>& rEditables) override + { + size_t nTabCount = rEditables.size(); + for (size_t i = 0 ; i < nTabCount; ++i) + set_column_editable(i, rEditables[i]); + } + virtual void set_centered_column(int nCol) override { for (GList* pEntry = g_list_first(m_pColumns); pEntry; pEntry = g_list_next(pEntry)) |