diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-02-18 10:16:40 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2020-02-19 09:52:51 +0100 |
commit | 4e07b178f58b1dabbb48bc9f26155b8270a4a72d (patch) | |
tree | ba1621d37c2c901698948f68af4de9d5377188e4 /vcl | |
parent | c214ad383d5e7dc0a18dbe6cbfc1e32fea934fd9 (diff) |
weld WatchWindow panel
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>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/app/salvtables.cxx | 23 | ||||
-rw-r--r-- | vcl/source/treelist/svtabbx.cxx | 12 | ||||
-rw-r--r-- | vcl/unx/gtk3/gtk3gtkinst.cxx | 48 |
3 files changed, 83 insertions, 0 deletions
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index de67f950cdfb..06dab9d22380 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -3757,6 +3757,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); @@ -4539,6 +4546,22 @@ public: return GetPlaceHolderChild(rVclIter.iter) != nullptr; } + virtual void set_children_on_demand(const weld::TreeIter& rIter, bool bChildrenOnDemand) override + { + disable_notify_events(); + + const SalInstanceTreeIter& rVclIter = static_cast<const SalInstanceTreeIter&>(rIter); + + SvTreeListEntry* pPlaceHolder = GetPlaceHolderChild(rVclIter.iter); + + if (bChildrenOnDemand && !pPlaceHolder) + m_xTreeView->InsertEntry("<dummy>", rVclIter.iter, false, 0, nullptr); + else if (!bChildrenOnDemand && pPlaceHolder) + m_xTreeView->RemoveEntry(pPlaceHolder); + + enable_notify_events(); + } + virtual void expand_row(const weld::TreeIter& rIter) override { assert(m_xTreeView->IsUpdateMode() && "don't expand when frozen"); diff --git a/vcl/source/treelist/svtabbx.cxx b/vcl/source/treelist/svtabbx.cxx index ab4e5ba70fa1..52ade983e94a 100644 --- a/vcl/source/treelist/svtabbx.cxx +++ b/vcl/source/treelist/svtabbx.cxx @@ -426,6 +426,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 9e023d4b2c3a..bdfe4fe1ced0 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -8909,6 +8909,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); @@ -9099,6 +9119,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)) @@ -10060,6 +10087,27 @@ public: return child_is_placeholder(aIter); } + virtual void set_children_on_demand(const weld::TreeIter& rIter, bool bChildrenOnDemand) override + { + disable_notify_events(); + + const GtkInstanceTreeIter& rGtkIter = static_cast<const GtkInstanceTreeIter&>(rIter); + GtkInstanceTreeIter aPlaceHolderIter(&rGtkIter); + + bool bPlaceHolder = child_is_placeholder(aPlaceHolderIter); + + if (bChildrenOnDemand && !bPlaceHolder) + { + GtkTreeIter subiter; + OUString sDummy("<dummy>"); + insert_row(subiter, &rGtkIter.iter, -1, nullptr, &sDummy, nullptr, nullptr, nullptr); + } + else if (!bChildrenOnDemand && bPlaceHolder) + remove(aPlaceHolderIter); + + enable_notify_events(); + } + virtual void expand_row(const weld::TreeIter& rIter) override { assert(gtk_tree_view_get_model(m_pTreeView) && "don't expand when frozen"); |