svx/uiconfig/ui/redlinecontrol.ui    |   18 +-
 svx/uiconfig/ui/redlinefilterpage.ui |  214 +++++++++++++++++------------------
 sw/source/uibase/misc/redlndlg.cxx   |    3 
 3 files changed, 118 insertions(+), 117 deletions(-)

New commits:
commit 189ac50fc10bd9d24e62fa175d9a8bd735c3e99a
Author:     Michael Weghorn <[email protected]>
AuthorDate: Sun Feb 1 10:43:15 2026 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Mon Feb 2 07:29:38 2026 +0100

    tdf#130857 sw: Avoid invalid tree view indices in redline dialog
    
    Ensure to not use a row index larger than the current
    number of top-level children when inserting a new entry into
    the tree view. The new entry can at most be inserted at the
    very end, where it will have an index matching the child count
    before the insertion happened.
    
    This prevents a crash seen with the native Qt implementation
    in a WIP branch where support for native Qt widgets is declared
    for that dialog, seen in the following scenario:
    
    * start Writer
    * type "Hello"
    * enable "Edit" -> "Track Changes" -> "Record"
    * select "Hello" in the document
    * type "Something else" in the document
    * "Edit" -> "Track Changes" -> "Manage"
    * switch to "Filter" tab
    * check the "Date" checkbox, select "since" and set some date in the 
future, e.g. 2027-01-01
    * switch to the "List" tab
    
    (The call to SwRedlineAcceptDlg::InsertChildren later
    in the loop can result in the new entry to get removed
    again, so the treeview is empty again in the next
    loop iteration.)
    
    Change-Id: Ie7c80faa71b577deb62766290b1cabc6759e245b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198481
    Reviewed-by: Michael Weghorn <[email protected]>
    Tested-by: Jenkins

diff --git a/sw/source/uibase/misc/redlndlg.cxx 
b/sw/source/uibase/misc/redlndlg.cxx
index 74c8314b8cc9..0923cf31a979 100644
--- a/sw/source/uibase/misc/redlndlg.cxx
+++ b/sw/source/uibase/misc/redlndlg.cxx
@@ -1053,7 +1053,8 @@ void 
SwRedlineAcceptDlg::InsertParents(SwRedlineTable::size_type nStart, SwRedli
 
         if ( !bChange || aTableParents.back() == i )
         {
-            rTreeView.insert(nullptr, i - nSkipRedlines, nullptr, &sId, 
nullptr, nullptr, false, xParent.get());
+            const int nPos = std::min(int(i - nSkipRedlines), 
rTreeView.n_children());
+            rTreeView.insert(nullptr, nPos, nullptr, &sId, nullptr, nullptr, 
false, xParent.get());
             // before this was a tracked table change with more than a single 
redline
             if ( nSkipRedline > 0 )
             {
commit f2cb68df4446b00bb92b95c1c15c9f5b08a11044
Author:     Michael Weghorn <[email protected]>
AuthorDate: Sun Feb 1 10:30:04 2026 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Mon Feb 2 07:29:29 2026 +0100

    svx: Resave .ui files for Manage Changes dialog with glade 3.40
    
    Resave those .ui files with glade 3.40, but
    manually restore the
    
        <property name="label" translatable="no"></property>
    
    that would get lost on resave, to avoid any potential
    unwanted side effects.
    
    These .ui files are used by the dialog that can be
    triggered like this:
    
    * start Writer
    * enable "Edit" -> "Track Changes" -> "Record"
    * type something in the document
    * "Edit" -> "Track Changes" -> "Manage"
    
    Change-Id: I6f08d61e58e9635d624cc2195f17bb3205baaf2c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/198480
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/svx/uiconfig/ui/redlinecontrol.ui 
b/svx/uiconfig/ui/redlinecontrol.ui
index 5f3cfe3769a3..47bcdb60fac2 100644
--- a/svx/uiconfig/ui/redlinecontrol.ui
+++ b/svx/uiconfig/ui/redlinecontrol.ui
@@ -1,19 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.20.0 -->
+<!-- Generated with glade 3.40.0 -->
 <interface domain="svx">
   <requires lib="gtk+" version="3.24"/>
   <object class="GtkNotebook" id="tabcontrol">
     <property name="visible">True</property>
-    <property name="can_focus">True</property>
+    <property name="can-focus">True</property>
     <property name="hexpand">True</property>
     <property name="vexpand">True</property>
     <property name="scrollable">True</property>
-    <property name="enable_popup">True</property>
+    <property name="enable-popup">True</property>
     <child>
       <!-- n-columns=1 n-rows=1 -->
       <object class="GtkGrid">
         <property name="visible">True</property>
-        <property name="can_focus">False</property>
+        <property name="can-focus">False</property>
         <child>
           <placeholder/>
         </child>
@@ -22,18 +22,18 @@
     <child type="tab">
       <object class="GtkLabel" id="view">
         <property name="visible">True</property>
-        <property name="can_focus">False</property>
+        <property name="can-focus">False</property>
         <property name="label" translatable="yes" 
context="redlinecontrol|view">List</property>
       </object>
       <packing>
-        <property name="tab_fill">False</property>
+        <property name="tab-fill">False</property>
       </packing>
     </child>
     <child>
       <!-- n-columns=1 n-rows=1 -->
       <object class="GtkGrid">
         <property name="visible">True</property>
-        <property name="can_focus">False</property>
+        <property name="can-focus">False</property>
         <child>
           <placeholder/>
         </child>
@@ -45,12 +45,12 @@
     <child type="tab">
       <object class="GtkLabel" id="filter">
         <property name="visible">True</property>
-        <property name="can_focus">False</property>
+        <property name="can-focus">False</property>
         <property name="label" translatable="yes" 
context="redlinecontrol|filter">Filter</property>
       </object>
       <packing>
         <property name="position">1</property>
-        <property name="tab_fill">False</property>
+        <property name="tab-fill">False</property>
       </packing>
     </child>
   </object>
diff --git a/svx/uiconfig/ui/redlinefilterpage.ui 
b/svx/uiconfig/ui/redlinefilterpage.ui
index ab8f9ab2ca3a..87b97e64eae0 100644
--- a/svx/uiconfig/ui/redlinefilterpage.ui
+++ b/svx/uiconfig/ui/redlinefilterpage.ui
@@ -1,45 +1,45 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.36.0 -->
+<!-- Generated with glade 3.40.0 -->
 <interface domain="svx">
   <requires lib="gtk+" version="3.24"/>
   <object class="GtkAdjustment" id="adjustment1">
     <property name="upper">86400000</property>
-    <property name="step_increment">1000</property>
-    <property name="page_increment">60000</property>
+    <property name="step-increment">1000</property>
+    <property name="page-increment">60000</property>
   </object>
   <object class="GtkAdjustment" id="adjustment2">
     <property name="upper">86400000</property>
-    <property name="step_increment">1000</property>
-    <property name="page_increment">60000</property>
+    <property name="step-increment">1000</property>
+    <property name="page-increment">60000</property>
   </object>
   <object class="GtkImage" id="image1">
     <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="icon_name">cmd/sc_timefield.png</property>
+    <property name="can-focus">False</property>
+    <property name="icon-name">cmd/sc_timefield.png</property>
   </object>
   <object class="GtkImage" id="image2">
     <property name="visible">True</property>
-    <property name="can_focus">False</property>
-    <property name="icon_name">cmd/sc_timefield.png</property>
+    <property name="can-focus">False</property>
+    <property name="icon-name">cmd/sc_timefield.png</property>
   </object>
-  <!-- n-columns=1 n-rows=1 -->
+  <!-- n-columns=1 n-rows=10 -->
   <object class="GtkGrid" id="RedlineFilterPage">
     <property name="visible">True</property>
-    <property name="can_focus">False</property>
+    <property name="can-focus">False</property>
     <property name="valign">start</property>
     <property name="hexpand">True</property>
     <property name="vexpand">True</property>
-    <property name="border_width">6</property>
-    <property name="row_spacing">6</property>
-    <property name="column_spacing">6</property>
+    <property name="border-width">6</property>
+    <property name="row-spacing">6</property>
+    <property name="column-spacing">6</property>
     <child>
       <object class="GtkCheckButton" id="date">
         <property name="label" translatable="yes" 
context="redlinefilterpage|date">_Date:</property>
         <property name="visible">True</property>
-        <property name="can_focus">True</property>
-        <property name="receives_default">False</property>
-        <property name="use_underline">True</property>
-        <property name="draw_indicator">True</property>
+        <property name="can-focus">True</property>
+        <property name="receives-default">False</property>
+        <property name="use-underline">True</property>
+        <property name="draw-indicator">True</property>
         <child internal-child="accessible">
           <object class="AtkObject" id="date-atkobject">
             <property name="AtkObject::accessible-description" 
translatable="yes" context="redlinefilterpage|extended_tip|date">Filters the 
list of changes according to the date and the time that you specify.</property>
@@ -47,18 +47,18 @@
         </child>
       </object>
       <packing>
-        <property name="left_attach">0</property>
-        <property name="top_attach">0</property>
+        <property name="left-attach">0</property>
+        <property name="top-attach">0</property>
       </packing>
     </child>
     <child>
       <object class="GtkCheckButton" id="author">
         <property name="label" translatable="yes" 
context="redlinefilterpage|author">_Author:</property>
         <property name="visible">True</property>
-        <property name="can_focus">True</property>
-        <property name="receives_default">False</property>
-        <property name="use_underline">True</property>
-        <property name="draw_indicator">True</property>
+        <property name="can-focus">True</property>
+        <property name="receives-default">False</property>
+        <property name="use-underline">True</property>
+        <property name="draw-indicator">True</property>
         <child internal-child="accessible">
           <object class="AtkObject" id="author-atkobject">
             <property name="AtkObject::accessible-description" 
translatable="yes" context="redlinefilterpage|extended_tip|author">Filters the 
list of changes according to the name of the author that you select from the 
list.</property>
@@ -66,18 +66,18 @@
         </child>
       </object>
       <packing>
-        <property name="left_attach">0</property>
-        <property name="top_attach">2</property>
+        <property name="left-attach">0</property>
+        <property name="top-attach">2</property>
       </packing>
     </child>
     <child>
       <object class="GtkCheckButton" id="comment">
         <property name="label" translatable="yes" 
context="redlinefilterpage|comment">C_omment:</property>
         <property name="visible">True</property>
-        <property name="can_focus">True</property>
-        <property name="receives_default">False</property>
-        <property name="use_underline">True</property>
-        <property name="draw_indicator">True</property>
+        <property name="can-focus">True</property>
+        <property name="receives-default">False</property>
+        <property name="use-underline">True</property>
+        <property name="draw-indicator">True</property>
         <accessibility>
           <relation type="label-for" target="commentedit"/>
         </accessibility>
@@ -88,18 +88,18 @@
         </child>
       </object>
       <packing>
-        <property name="left_attach">0</property>
-        <property name="top_attach">8</property>
+        <property name="left-attach">0</property>
+        <property name="top-attach">8</property>
       </packing>
     </child>
     <child>
       <object class="GtkEntry" id="commentedit">
         <property name="visible">True</property>
         <property name="sensitive">False</property>
-        <property name="can_focus">True</property>
+        <property name="can-focus">True</property>
         <property name="margin-start">24</property>
         <property name="hexpand">True</property>
-        <property name="activates_default">True</property>
+        <property name="activates-default">True</property>
         <property name="truncate-multiline">True</property>
         <child internal-child="accessible">
           <object class="AtkObject" id="commentedit-atkobject">
@@ -109,18 +109,18 @@
         </child>
       </object>
       <packing>
-        <property name="left_attach">0</property>
-        <property name="top_attach">9</property>
+        <property name="left-attach">0</property>
+        <property name="top-attach">9</property>
       </packing>
     </child>
     <child>
       <object class="GtkCheckButton" id="range">
         <property name="label" translatable="yes" 
context="redlinefilterpage|range">_Range:</property>
         <property name="visible">True</property>
-        <property name="can_focus">True</property>
-        <property name="receives_default">False</property>
-        <property name="use_underline">True</property>
-        <property name="draw_indicator">True</property>
+        <property name="can-focus">True</property>
+        <property name="receives-default">False</property>
+        <property name="use-underline">True</property>
+        <property name="draw-indicator">True</property>
         <child internal-child="accessible">
           <object class="AtkObject" id="range-atkobject">
             <property name="AtkObject::accessible-description" 
translatable="yes" context="redlinefilterpage|extended_tip|range">Filters the 
list of changes according to the range of cells that you specify. To select a 
range of cells in your sheet, click the Set Reference button (...).</property>
@@ -128,15 +128,15 @@
         </child>
       </object>
       <packing>
-        <property name="left_attach">0</property>
-        <property name="top_attach">6</property>
+        <property name="left-attach">0</property>
+        <property name="top-attach">6</property>
       </packing>
     </child>
     <child>
       <object class="GtkComboBoxText" id="actionlist">
         <property name="visible">True</property>
         <property name="sensitive">False</property>
-        <property name="can_focus">False</property>
+        <property name="can-focus">False</property>
         <property name="margin-start">24</property>
         <property name="hexpand">True</property>
         <accessibility>
@@ -150,18 +150,18 @@
         </child>
       </object>
       <packing>
-        <property name="left_attach">0</property>
-        <property name="top_attach">5</property>
+        <property name="left-attach">0</property>
+        <property name="top-attach">5</property>
       </packing>
     </child>
     <child>
       <object class="GtkCheckButton" id="action">
         <property name="label" translatable="yes" 
context="redlinefilterpage|action">A_ction:</property>
         <property name="visible">True</property>
-        <property name="can_focus">True</property>
-        <property name="receives_default">False</property>
-        <property name="use_underline">True</property>
-        <property name="draw_indicator">True</property>
+        <property name="can-focus">True</property>
+        <property name="receives-default">False</property>
+        <property name="use-underline">True</property>
+        <property name="draw-indicator">True</property>
         <child internal-child="accessible">
           <object class="AtkObject" id="action-atkobject">
             <property name="AtkObject::accessible-description" 
translatable="yes" context="redlinefilterpage|extended_tip|action">Filters the 
list of changes according to the type of change that you select in the Action 
box.</property>
@@ -169,15 +169,15 @@
         </child>
       </object>
       <packing>
-        <property name="left_attach">0</property>
-        <property name="top_attach">4</property>
+        <property name="left-attach">0</property>
+        <property name="top-attach">4</property>
       </packing>
     </child>
     <child>
       <object class="GtkComboBoxText" id="authorlist">
         <property name="visible">True</property>
         <property name="sensitive">False</property>
-        <property name="can_focus">False</property>
+        <property name="can-focus">False</property>
         <property name="margin-start">24</property>
         <property name="hexpand">True</property>
         <accessibility>
@@ -191,27 +191,27 @@
         </child>
       </object>
       <packing>
-        <property name="left_attach">0</property>
-        <property name="top_attach">3</property>
+        <property name="left-attach">0</property>
+        <property name="top-attach">3</property>
       </packing>
     </child>
     <child>
       <object class="GtkBox" id="box2">
         <property name="visible">True</property>
-        <property name="can_focus">False</property>
+        <property name="can-focus">False</property>
         <property name="margin-start">24</property>
         <property name="spacing">6</property>
         <child>
           <object class="GtkEntry" id="rangeedit">
             <property name="visible">True</property>
             <property name="sensitive">False</property>
-            <property name="can_focus">True</property>
+            <property name="can-focus">True</property>
             <property name="hexpand">True</property>
-            <property name="activates_default">True</property>
+            <property name="activates-default">True</property>
+            <property name="truncate-multiline">True</property>
             <accessibility>
               <relation type="labelled-by" target="range"/>
             </accessibility>
-            <property name="truncate-multiline">True</property>
             <child internal-child="accessible">
               <object class="AtkObject" id="rangeedit-atkobject">
                 <property name="AtkObject::accessible-name" translatable="yes" 
context="redlinefilterpage|rangeedit-atkobject">Range</property>
@@ -230,9 +230,9 @@
             <property name="label">...</property>
             <property name="visible">True</property>
             <property name="sensitive">False</property>
-            <property name="can_focus">True</property>
-            <property name="receives_default">True</property>
-            <property name="tooltip_text" translatable="yes" 
context="redlinefilterpage|dotdotdot|tooltip_text">Set reference</property>
+            <property name="can-focus">True</property>
+            <property name="receives-default">True</property>
+            <property name="tooltip-text" translatable="yes" 
context="redlinefilterpage|dotdotdot|tooltip_text">Set reference</property>
           </object>
           <packing>
             <property name="expand">False</property>
@@ -242,14 +242,14 @@
         </child>
       </object>
       <packing>
-        <property name="left_attach">0</property>
-        <property name="top_attach">7</property>
+        <property name="left-attach">0</property>
+        <property name="top-attach">7</property>
       </packing>
     </child>
     <child>
       <object class="GtkBox" id="box3">
         <property name="visible">True</property>
-        <property name="can_focus">False</property>
+        <property name="can-focus">False</property>
         <property name="margin-start">24</property>
         <property name="orientation">vertical</property>
         <property name="spacing">6</property>
@@ -257,7 +257,7 @@
           <object class="GtkComboBoxText" id="datecond">
             <property name="visible">True</property>
             <property name="sensitive">False</property>
-            <property name="can_focus">False</property>
+            <property name="can-focus">False</property>
             <property name="hexpand">True</property>
             <items>
               <item translatable="yes" 
context="redlinefilterpage|datecond">earlier than</item>
@@ -284,33 +284,33 @@
           </packing>
         </child>
         <child>
-          <!-- n-columns=1 n-rows=1 -->
+          <!-- n-columns=4 n-rows=2 -->
           <object class="GtkGrid" id="grid3">
             <property name="visible">True</property>
-            <property name="can_focus">False</property>
+            <property name="can-focus">False</property>
             <property name="hexpand">True</property>
-            <property name="row_spacing">6</property>
-            <property name="column_spacing">6</property>
+            <property name="row-spacing">6</property>
+            <property name="column-spacing">6</property>
             <child>
               <object class="GtkLabel" id="and">
                 <property name="visible">True</property>
                 <property name="sensitive">False</property>
-                <property name="can_focus">False</property>
+                <property name="can-focus">False</property>
                 <property name="label" translatable="yes" 
context="redlinefilterpage|and">a_nd</property>
-                <property name="use_underline">True</property>
+                <property name="use-underline">True</property>
                 <property name="xalign">1</property>
               </object>
               <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">1</property>
+                <property name="left-attach">0</property>
+                <property name="top-attach">1</property>
               </packing>
             </child>
             <child>
               <object class="GtkMenuButton" id="startdate">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">False</property>
-                <property name="draw_indicator">True</property>
+                <property name="can-focus">True</property>
+                <property name="receives-default">False</property>
+                <property name="draw-indicator">True</property>
                 <property name="label" translatable="no"></property>
                 <child>
                   <placeholder/>
@@ -323,20 +323,20 @@
                 </child>
               </object>
               <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">0</property>
+                <property name="left-attach">1</property>
+                <property name="top-attach">0</property>
               </packing>
             </child>
             <child>
               <object class="GtkSpinButton" id="starttime">
-                <property name="width_request">70</property>
+                <property name="width-request">70</property>
                 <property name="visible">True</property>
                 <property name="sensitive">False</property>
-                <property name="can_focus">True</property>
+                <property name="can-focus">True</property>
                 <property name="hexpand">True</property>
-                <property name="activates_default">True</property>
-                <property name="adjustment">adjustment1</property>
+                <property name="activates-default">True</property>
                 <property name="truncate-multiline">True</property>
+                <property name="adjustment">adjustment1</property>
                 <child internal-child="accessible">
                   <object class="AtkObject" id="starttime-atkobject">
                     <property name="AtkObject::accessible-name" 
translatable="yes" context="redlinefilterpage|starttime-atkobject">Start 
Time</property>
@@ -345,31 +345,31 @@
                 </child>
               </object>
               <packing>
-                <property name="left_attach">2</property>
-                <property name="top_attach">0</property>
+                <property name="left-attach">2</property>
+                <property name="top-attach">0</property>
               </packing>
             </child>
             <child>
               <object class="GtkButton" id="startclock">
                 <property name="visible">True</property>
                 <property name="sensitive">False</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="tooltip_text" translatable="yes" 
context="redlinefilterpage|startclock|tooltip_text">Set current time and 
date</property>
+                <property name="can-focus">True</property>
+                <property name="receives-default">True</property>
+                <property name="tooltip-text" translatable="yes" 
context="redlinefilterpage|startclock|tooltip_text">Set current time and 
date</property>
                 <property name="image">image1</property>
                 <property name="always-show-image">True</property>
               </object>
               <packing>
-                <property name="left_attach">3</property>
-                <property name="top_attach">0</property>
+                <property name="left-attach">3</property>
+                <property name="top-attach">0</property>
               </packing>
             </child>
             <child>
               <object class="GtkMenuButton" id="enddate">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">False</property>
-                <property name="draw_indicator">True</property>
+                <property name="can-focus">True</property>
+                <property name="receives-default">False</property>
+                <property name="draw-indicator">True</property>
                 <property name="label" translatable="no"></property>
                 <child>
                   <placeholder/>
@@ -382,20 +382,20 @@
                 </child>
               </object>
               <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">1</property>
+                <property name="left-attach">1</property>
+                <property name="top-attach">1</property>
               </packing>
             </child>
             <child>
               <object class="GtkSpinButton" id="endtime">
-                <property name="width_request">75</property>
+                <property name="width-request">75</property>
                 <property name="visible">True</property>
                 <property name="sensitive">False</property>
-                <property name="can_focus">True</property>
+                <property name="can-focus">True</property>
                 <property name="hexpand">True</property>
-                <property name="activates_default">True</property>
-                <property name="adjustment">adjustment2</property>
+                <property name="activates-default">True</property>
                 <property name="truncate-multiline">True</property>
+                <property name="adjustment">adjustment2</property>
                 <child internal-child="accessible">
                   <object class="AtkObject" id="endtime-atkobject">
                     <property name="AtkObject::accessible-name" 
translatable="yes" context="redlinefilterpage|endtime-atkobject">End 
Time</property>
@@ -404,23 +404,23 @@
                 </child>
               </object>
               <packing>
-                <property name="left_attach">2</property>
-                <property name="top_attach">1</property>
+                <property name="left-attach">2</property>
+                <property name="top-attach">1</property>
               </packing>
             </child>
             <child>
               <object class="GtkButton" id="endclock">
                 <property name="visible">True</property>
                 <property name="sensitive">False</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="tooltip_text" translatable="yes" 
context="redlinefilterpage|endclock|tooltip_text">Set current time and 
date</property>
+                <property name="can-focus">True</property>
+                <property name="receives-default">True</property>
+                <property name="tooltip-text" translatable="yes" 
context="redlinefilterpage|endclock|tooltip_text">Set current time and 
date</property>
                 <property name="image">image2</property>
                 <property name="always-show-image">True</property>
               </object>
               <packing>
-                <property name="left_attach">3</property>
-                <property name="top_attach">1</property>
+                <property name="left-attach">3</property>
+                <property name="top-attach">1</property>
               </packing>
             </child>
             <child>
@@ -435,8 +435,8 @@
         </child>
       </object>
       <packing>
-        <property name="left_attach">0</property>
-        <property name="top_attach">1</property>
+        <property name="left-attach">0</property>
+        <property name="top-attach">1</property>
       </packing>
     </child>
     <child internal-child="accessible">

Reply via email to