vcl/jsdialog/executor.cxx |   48 ++++++++++++++++++++++++++++++++--------------
 1 file changed, 34 insertions(+), 14 deletions(-)

New commits:
commit 58c02b478df89dfd46f1b2a5a7c509f3a9ea4635
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Mon Oct 16 10:47:05 2023 +0100
Commit:     Caolán McNamara <caolan.mcnam...@collabora.com>
CommitDate: Wed Oct 18 09:29:48 2023 +0200

    check return of get_iter_abs_pos
    
    Change-Id: Ifdabd65dc9fa5bc6d0c5c6eee1318f99bf918cd2
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158034
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Attila Szűcs <attila.sz...@collabora.com>

diff --git a/vcl/jsdialog/executor.cxx b/vcl/jsdialog/executor.cxx
index ed424912f377..6ab4f9d35d2c 100644
--- a/vcl/jsdialog/executor.cxx
+++ b/vcl/jsdialog/executor.cxx
@@ -471,9 +471,14 @@ bool ExecuteAction(const std::string& nWindowId, const 
OString& rWidget, StringM
                     pTreeView->unselect_all();
 
                     std::unique_ptr<weld::TreeIter> 
itEntry(pTreeView->make_iterator());
-                    pTreeView->get_iter_abs_pos(*itEntry, nAbsPos);
-                    pTreeView->select(*itEntry);
-                    pTreeView->set_cursor_without_notify(*itEntry);
+                    if (pTreeView->get_iter_abs_pos(*itEntry, nAbsPos))
+                    {
+                        pTreeView->select(*itEntry);
+                        pTreeView->set_cursor_without_notify(*itEntry);
+                    }
+                    else
+                        SAL_WARN("vcl",
+                                 "No absolute position found for " << nAbsPos 
<< " in treeview");
                     pTreeView->grab_focus();
                     LOKTrigger::trigger_changed(*pTreeView);
                     return true;
@@ -484,9 +489,14 @@ bool ExecuteAction(const std::string& nWindowId, const 
OString& rWidget, StringM
 
                     pTreeView->unselect_all();
                     std::unique_ptr<weld::TreeIter> 
itEntry(pTreeView->make_iterator());
-                    pTreeView->get_iter_abs_pos(*itEntry, nRow);
-                    pTreeView->select(nRow);
-                    pTreeView->set_cursor_without_notify(*itEntry);
+                    if (pTreeView->get_iter_abs_pos(*itEntry, nRow))
+                    {
+                        pTreeView->select(nRow);
+                        pTreeView->set_cursor_without_notify(*itEntry);
+                    }
+                    else
+                        SAL_WARN("vcl",
+                                 "No absolute position found for " << nRow << 
" in treeview");
                     pTreeView->grab_focus();
                     LOKTrigger::trigger_changed(*pTreeView);
                     LOKTrigger::trigger_row_activated(*pTreeView);
@@ -496,20 +506,30 @@ bool ExecuteAction(const std::string& nWindowId, const 
OString& rWidget, StringM
                 {
                     sal_Int32 nAbsPos = o3tl::toInt32(rData["data"]);
                     std::unique_ptr<weld::TreeIter> 
itEntry(pTreeView->make_iterator());
-                    pTreeView->get_iter_abs_pos(*itEntry, nAbsPos);
-                    pTreeView->set_cursor_without_notify(*itEntry);
-                    pTreeView->grab_focus();
-                    pTreeView->expand_row(*itEntry);
+                    if (pTreeView->get_iter_abs_pos(*itEntry, nAbsPos))
+                    {
+                        pTreeView->set_cursor_without_notify(*itEntry);
+                        pTreeView->grab_focus();
+                        pTreeView->expand_row(*itEntry);
+                    }
+                    else
+                        SAL_WARN("vcl",
+                                 "No absolute position found for " << nAbsPos 
<< " in treeview");
                     return true;
                 }
                 else if (sAction == "collapse")
                 {
                     sal_Int32 nAbsPos = o3tl::toInt32(rData["data"]);
                     std::unique_ptr<weld::TreeIter> 
itEntry(pTreeView->make_iterator());
-                    pTreeView->get_iter_abs_pos(*itEntry, nAbsPos);
-                    pTreeView->set_cursor_without_notify(*itEntry);
-                    pTreeView->grab_focus();
-                    pTreeView->collapse_row(*itEntry);
+                    if (pTreeView->get_iter_abs_pos(*itEntry, nAbsPos))
+                    {
+                        pTreeView->set_cursor_without_notify(*itEntry);
+                        pTreeView->grab_focus();
+                        pTreeView->collapse_row(*itEntry);
+                    }
+                    else
+                        SAL_WARN("vcl",
+                                 "No absolute position found for " << nAbsPos 
<< " in treeview");
                     return true;
                 }
                 else if (sAction == "dragstart")

Reply via email to