[Libreoffice-commits] core.git: vcl/inc vcl/jsdialog

Szymon KÅ‚os (via logerrit) logerrit at kemper.freedesktop.org
Tue Jan 5 08:40:01 UTC 2021


 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.klos at collabora.com>
AuthorDate: Tue Dec 29 09:03:14 2020 +0100
Commit:     Szymon Kłos <szymon.klos at 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.klos at 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,


More information about the Libreoffice-commits mailing list