[Libreoffice-commits] core.git: Branch 'libreoffice-7-0-2' - vcl/unx

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Wed Sep 30 14:34:47 UTC 2020


 vcl/unx/gtk3/gtk3gtkinst.cxx |   42 ++++++++++++++++++++++++++++--------------
 1 file changed, 28 insertions(+), 14 deletions(-)

New commits:
commit 7f34bbc45eac8212da46b10406c0a2627fb21cc7
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Fri Sep 18 10:09:54 2020 +0100
Commit:     Adolfo Jayme Barrientos <fitojb at ubuntu.com>
CommitDate: Wed Sep 30 16:34:13 2020 +0200

    Related: tdf#136559 set multiple columns in model at the same time
    
    reduces time from 40s to 13s
    
    Change-Id: I01d6a4fcaa5a868f9b9f9292f4a7e99e216ea23b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103156
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.stahl at cib.de>
    (cherry picked from commit 4475895d1b1da285bfe5bd73e383f1356d5e01b2)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103570
    Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>
    Reviewed-by: Xisco Fauli <xiscofauli at libreoffice.org>
    Reviewed-by: Adolfo Jayme Barrientos <fitojb at ubuntu.com>
    Tested-by: Adolfo Jayme Barrientos <fitojb at ubuntu.com>

diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 2c77a4a4e9bf..caafbff7f538 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -9263,6 +9263,26 @@ private:
         return bRet;
     }
 
+    void set_toggle(const GtkTreeIter& iter, TriState eState, int col)
+    {
+        col = get_model_col(col);
+        if (eState == TRISTATE_INDET)
+        {
+            gtk_tree_store_set(m_pTreeStore, const_cast<GtkTreeIter*>(&iter),
+                m_aToggleVisMap[col], true, // checkbuttons are invisible until toggled on or off
+                m_aToggleTriStateMap[col], true, // tristate on
+                -1);
+        }
+        else
+        {
+            gtk_tree_store_set(m_pTreeStore, const_cast<GtkTreeIter*>(&iter),
+                m_aToggleVisMap[col], true, // checkbuttons are invisible until toggled on or off
+                m_aToggleTriStateMap[col], false, // tristate off
+                col, eState == TRISTATE_TRUE, // set toggle state
+                -1);
+        }
+    }
+
     void set(const GtkTreeIter& iter, int col, const OUString& rText)
     {
         OString aStr(OUStringToOString(rText, RTL_TEXTENCODING_UTF8));
@@ -10351,20 +10371,6 @@ public:
         return get_bool(rGtkIter.iter, col) ? TRISTATE_TRUE : TRISTATE_FALSE;
     }
 
-    virtual void set_toggle(int pos, TriState eState, int col) override
-    {
-        col = get_model_col(col);
-        // checkbuttons are invisible until toggled on or off
-        set(pos, m_aToggleVisMap[col], true);
-        if (eState == TRISTATE_INDET)
-            set(pos, m_aToggleTriStateMap[col], true);
-        else
-        {
-            set(pos, m_aToggleTriStateMap[col], false);
-            set(pos, col, eState == TRISTATE_TRUE);
-        }
-    }
-
     virtual void set_toggle(const weld::TreeIter& rIter, TriState eState, int col) override
     {
         const GtkInstanceTreeIter& rGtkIter = static_cast<const GtkInstanceTreeIter&>(rIter);
@@ -10380,6 +10386,14 @@ public:
         }
     }
 
+    virtual void set_toggle(int pos, TriState eState, int col) override
+    {
+        GtkTreeModel *pModel = GTK_TREE_MODEL(m_pTreeStore);
+        GtkTreeIter iter;
+        if (gtk_tree_model_iter_nth_child(pModel, &iter, nullptr, pos))
+            set_toggle(iter, eState, col);
+    }
+
     virtual void set_extra_row_indent(const weld::TreeIter& rIter, int nIndentLevel) override
     {
         const GtkInstanceTreeIter& rGtkIter = static_cast<const GtkInstanceTreeIter&>(rIter);


More information about the Libreoffice-commits mailing list