vcl/inc/jsdialog/jsdialogbuilder.hxx | 5 +++-- vcl/jsdialog/jsdialogbuilder.cxx | 33 +++++++++++++++++---------------- 2 files changed, 20 insertions(+), 18 deletions(-)
New commits: commit abd08df65e278eb91c83051d07b459d2e7f420ca Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Tue Dec 29 09:03:14 2020 +0100 Commit: Szymon Kłos <szymon.k...@collabora.com> CommitDate: Tue Jan 5 09:39:13 2021 +0100 jsdialog: direct updates for treeview We should use only weld:: interfaces methods to detect moment of control's updates as all the modifications goes through weld:: API. Let's use higher abstraction layer and not use vcl implementation details. this reverts partially: 32bfa0e1c7e859aedc3988d5bfdf86f5d7bab98a Change-Id: I2dd25c08dae3f5a95d077e2715788d636be47fe4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108433 Tested-by: Jenkins Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx b/vcl/inc/jsdialog/jsdialogbuilder.hxx index 8574124d7de4..26fd022b1485 100644 --- a/vcl/inc/jsdialog/jsdialogbuilder.hxx +++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx @@ -394,8 +394,6 @@ public: class JSTreeView : public JSWidget<SalInstanceTreeView, ::SvTabListBox> { - DECL_LINK(on_window_event, VclWindowEvent&, void); - public: JSTreeView(VclPtr<vcl::Window> aNotifierWindow, VclPtr<vcl::Window> aContentWindow, ::SvTabListBox* pTextView, SalInstanceBuilder* pBuilder, bool bTakeOwnership, @@ -420,6 +418,9 @@ public: virtual void set_text(int row, const OUString& rText, int col = -1) override; virtual void set_text(const weld::TreeIter& rIter, const OUString& rStr, int col = -1) override; + virtual void expand_row(const weld::TreeIter& rIter) override; + virtual void collapse_row(const weld::TreeIter& rIter) override; + void drag_start(); void drag_end(); }; diff --git a/vcl/jsdialog/jsdialogbuilder.cxx b/vcl/jsdialog/jsdialogbuilder.cxx index f0fb911d8f23..8fba06677b74 100644 --- a/vcl/jsdialog/jsdialogbuilder.cxx +++ b/vcl/jsdialog/jsdialogbuilder.cxx @@ -980,8 +980,6 @@ JSTreeView::JSTreeView(VclPtr<vcl::Window> aNotifierWindow, VclPtr<vcl::Window> : JSWidget<SalInstanceTreeView, ::SvTabListBox>(aNotifierWindow, aContentWindow, pTreeView, pBuilder, bTakeOwnership, sTypeOfJSON) { - if (aNotifierWindow && aNotifierWindow->IsDisableIdleNotify()) - pTreeView->AddEventListener(LINK(this, JSTreeView, on_window_event)); } void JSTreeView::set_toggle(int pos, TriState eState, int col) @@ -996,7 +994,7 @@ void JSTreeView::set_toggle(int pos, TriState eState, int col) SalInstanceTreeView::set_toggle(pEntry, eState, col); signal_toggled(iter_col(SalInstanceTreeIter(pEntry), col)); - notifyDialogState(); + sendUpdate(m_xTreeView); } } @@ -1042,21 +1040,12 @@ void JSTreeView::drag_end() m_xDropTarget->fire_drop(aEvent); - notifyDialogState(); + sendUpdate(m_xTreeView); } g_DragSource = nullptr; } -IMPL_LINK(JSTreeView, on_window_event, VclWindowEvent&, rEvent, void) -{ - if (rEvent.GetId() == VclEventId::WindowPaint && get_visible() && m_xTreeView->IsDirtyModel()) - { - sendUpdate(m_xTreeView); - m_xTreeView->SetDirtyModel(false); - } -} - void JSTreeView::insert(const weld::TreeIter* pParent, int pos, const OUString* pStr, const OUString* pId, const OUString* pIconName, VirtualDevice* pImageSurface, bool bChildrenOnDemand, weld::TreeIter* pRet) @@ -1064,19 +1053,31 @@ void JSTreeView::insert(const weld::TreeIter* pParent, int pos, const OUString* SalInstanceTreeView::insert(pParent, pos, pStr, pId, pIconName, pImageSurface, bChildrenOnDemand, pRet); - notifyDialogState(); + sendUpdate(m_xTreeView); } void JSTreeView::set_text(int row, const OUString& rText, int col) { SalInstanceTreeView::set_text(row, rText, col); - notifyDialogState(); + sendUpdate(m_xTreeView); } void JSTreeView::set_text(const weld::TreeIter& rIter, const OUString& rStr, int col) { SalInstanceTreeView::set_text(rIter, rStr, col); - notifyDialogState(); + sendUpdate(m_xTreeView); +} + +void JSTreeView::expand_row(const weld::TreeIter& rIter) +{ + SalInstanceTreeView::expand_row(rIter); + sendUpdate(m_xTreeView); +} + +void JSTreeView::collapse_row(const weld::TreeIter& rIter) +{ + SalInstanceTreeView::collapse_row(rIter); + sendUpdate(m_xTreeView); } JSExpander::JSExpander(VclPtr<vcl::Window> aNotifierWindow, VclPtr<vcl::Window> aContentWindow, _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits