sd/uiconfig/simpress/ui/presentationdialog.ui |  545 +++++++++++++-------------
 vcl/qt5/QtInstanceWidget.cxx                  |   93 +---
 2 files changed, 312 insertions(+), 326 deletions(-)

New commits:
commit 33c9641db65d16f4ecf86709de008f0afa42a7d4
Author:     Michael Weghorn <[email protected]>
AuthorDate: Thu Feb 20 21:31:21 2025 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Fri Feb 21 08:42:57 2025 +0100

    tdf#130857: sd presentationsdialog.ui: Define widgets in order
    
    Switch the order in which the widgets in the dialog's .ui file
    are defined so that the order matches the visual appearance
    (and "left-attach"/"top-attach" properties order), which makes sure that 
tab focus
    order with the Qt-based VCL plugins is correct as well in that dialog when
    using native Qt widgets (SAL_VCL_QT_USE_WELDED_WIDGETS=1), where focus order
    is (by default) based on widget creation order.
    
    See
    
        commit 02692566ad9fc7c3484f8581ffa0004cd4e43987
        Author: Michael Weghorn <[email protected]>
        Date:   Thu Oct 24 17:43:35 2024 +0200
    
            tdf#130857 optnewdictionarydialog.ui: Define focusable widgets in 
order
    
    for more background.
    
    This is the Impress "Slide Show" -> "Slide Show Settings"
    dialog.
    
    Change-Id: I1324e5e5a410c49859eec14d6d4681a5a3339a65
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181969
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/sd/uiconfig/simpress/ui/presentationdialog.ui 
b/sd/uiconfig/simpress/ui/presentationdialog.ui
index 95c501e0710a..7cbd5eb15ec3 100644
--- a/sd/uiconfig/simpress/ui/presentationdialog.ui
+++ b/sd/uiconfig/simpress/ui/presentationdialog.ui
@@ -103,6 +103,26 @@
                     <property name="margin-start">12</property>
                     <property name="margin-top">6</property>
                     <property name="row-spacing">6</property>
+                    <child>
+                      <object class="GtkRadioButton" id="allslides">
+                        <property name="label" translatable="yes" 
context="presentationdialog|allslides">All _slides</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="active">True</property>
+                        <property name="draw-indicator">True</property>
+                        <child internal-child="accessible">
+                          <object class="AtkObject" id="allslides-atkobject">
+                            <property name="AtkObject::accessible-description" 
translatable="yes" context="presentationdialog|extended_tip|allslides">Includes 
all of the slides in your slide show.</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left-attach">0</property>
+                        <property name="top-attach">0</property>
+                      </packing>
+                    </child>
                     <child>
                       <!-- n-columns=2 n-rows=1 -->
                       <object class="GtkGrid" id="grid6">
@@ -158,26 +178,6 @@
                         <property name="top-attach">1</property>
                       </packing>
                     </child>
-                    <child>
-                      <object class="GtkRadioButton" id="allslides">
-                        <property name="label" translatable="yes" 
context="presentationdialog|allslides">All _slides</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="active">True</property>
-                        <property name="draw-indicator">True</property>
-                        <child internal-child="accessible">
-                          <object class="AtkObject" id="allslides-atkobject">
-                            <property name="AtkObject::accessible-description" 
translatable="yes" context="presentationdialog|extended_tip|allslides">Includes 
all of the slides in your slide show.</property>
-                          </object>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left-attach">0</property>
-                        <property name="top-attach">0</property>
-                      </packing>
-                    </child>
                     <child>
                       <!-- n-columns=2 n-rows=1 -->
                       <object class="GtkGrid" id="grid">
@@ -250,218 +250,6 @@
                 <property name="top-attach">0</property>
               </packing>
             </child>
-            <child>
-              <object class="GtkFrame" id="frame3">
-                <property name="visible">True</property>
-                <property name="can-focus">False</property>
-                <property name="hexpand">True</property>
-                <property name="vexpand">True</property>
-                <property name="label-xalign">0</property>
-                <property name="shadow-type">none</property>
-                <child>
-                  <!-- n-columns=1 n-rows=2 -->
-                  <object class="GtkGrid" id="grid7">
-                    <property name="visible">True</property>
-                    <property name="can-focus">False</property>
-                    <property name="margin-start">12</property>
-                    <property name="margin-top">6</property>
-                    <property name="hexpand">True</property>
-                    <property name="vexpand">True</property>
-                    <child>
-                      <!-- n-columns=2 n-rows=4 -->
-                      <object class="GtkGrid" id="grid8">
-                        <property name="visible">True</property>
-                        <property name="can-focus">False</property>
-                        <property name="hexpand">True</property>
-                        <property name="vexpand">True</property>
-                        <property name="row-spacing">6</property>
-                        <property name="column-spacing">12</property>
-                        <child>
-                          <object class="GtkComboBoxText" id="presdisplay_cb">
-                            <property name="visible">True</property>
-                            <property name="can-focus">False</property>
-                            <property name="hexpand">True</property>
-                            <child internal-child="accessible">
-                              <object class="AtkObject" 
id="presdisplay_cb-atkobject">
-                                <property 
name="AtkObject::accessible-description" translatable="yes" 
context="presentationdialog|extended_tip|presdisplay_cb">Select a display to 
use for full screen slide show mode.</property>
-                              </object>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="left-attach">1</property>
-                            <property name="top-attach">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" id="presdisplay_label">
-                            <property name="visible">True</property>
-                            <property name="can-focus">False</property>
-                            <property name="label" translatable="yes" 
context="presentationdialog|presdisplay_label">P_resentation display:</property>
-                            <property name="use-underline">True</property>
-                            <property 
name="mnemonic-widget">presdisplay_cb</property>
-                            <property name="xalign">0</property>
-                          </object>
-                          <packing>
-                            <property name="left-attach">0</property>
-                            <property name="top-attach">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkComboBoxText" id="console_cb">
-                            <property name="visible">True</property>
-                            <property name="can-focus">False</property>
-                            <property name="hexpand">True</property>
-                            <property name="active">0</property>
-                            <items>
-                              <item id="0" translatable="yes" 
context="presentationdialog|console_cb">Full screen</item>
-                              <item id="1" translatable="yes" 
context="presentationdialog|console_cb">Windowed</item>
-                              <item id="2" translatable="yes" 
context="presentationdialog|console_cb">Disabled</item>
-                            </items>
-                          </object>
-                          <packing>
-                            <property name="left-attach">1</property>
-                            <property name="top-attach">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" id="console_label">
-                            <property name="visible">True</property>
-                            <property name="can-focus">False</property>
-                            <property name="label" translatable="yes" 
context="presentationdialog|console_label">Presenter console:</property>
-                            <property name="use-underline">True</property>
-                            <property 
name="mnemonic-widget">console_cb</property>
-                            <property name="xalign">0</property>
-                          </object>
-                          <packing>
-                            <property name="left-attach">0</property>
-                            <property name="top-attach">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkCheckButton" 
id="shownavigationbutton">
-                            <property name="label" translatable="yes" 
context="presentationdialog|shownavigationbutton">Show navigation bar</property>
-                            <property name="visible">True</property>
-                            <property name="can-focus">True</property>
-                            <property name="receives-default">False</property>
-                            <property name="tooltip-text" translatable="yes" 
context="presentationdialog|shownavigationbutton|tooltip_text">Show navigation 
bar at the bottom of the presentation</property>
-                            <property name="use-underline">True</property>
-                            <property name="draw-indicator">True</property>
-                          </object>
-                          <packing>
-                            <property name="left-attach">0</property>
-                            <property name="top-attach">2</property>
-                            <property name="width">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" id="navbar_btn_size_label">
-                            <property name="visible">True</property>
-                            <property name="can-focus">False</property>
-                            <property name="halign">start</property>
-                            <property name="margin-start">24</property>
-                            <property name="label" translatable="yes" 
context="presentationdialog|navbar_btn_size_label">Buttons size:</property>
-                          </object>
-                          <packing>
-                            <property name="left-attach">0</property>
-                            <property name="top-attach">3</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkComboBoxText" 
id="navigation_buttons_size_cb">
-                            <property name="visible">True</property>
-                            <property name="can-focus">False</property>
-                            <property name="hexpand">True</property>
-                            <items>
-                              <item translatable="yes" 
context="presentationdialog|navigation_buttons_size_cb">Automatic</item>
-                              <item translatable="yes" 
context="presentationdialog|navigation_buttons_size_cb">Small</item>
-                              <item translatable="yes" 
context="presentationdialog|navigation_buttons_size_cb">Large</item>
-                              <item translatable="yes" 
context="presentationdialog|navigation_buttons_size_cb">Extra Large</item>
-                            </items>
-                            <child internal-child="accessible">
-                              <object class="AtkObject" 
id="navigation_buttons_size_cb-atkobject">
-                                <property 
name="AtkObject::accessible-description" translatable="yes" 
context="extended_tip | iconsize">Specifies the display size of navigation bar 
icons.</property>
-                              </object>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="left-attach">1</property>
-                            <property name="top-attach">3</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left-attach">0</property>
-                        <property name="top-attach">0</property>
-                      </packing>
-                    </child>
-                    <child>
-                      <!-- n-columns=1 n-rows=4 -->
-                      <object class="GtkGrid" id="grid9">
-                        <property name="can-focus">False</property>
-                        <child>
-                          <object class="GtkLabel" id="externalmonitor_str">
-                            <property name="can-focus">False</property>
-                            <property name="label" translatable="yes" 
context="presentationdialog|externalmonitor_str">Display %1 
(external)</property>
-                          </object>
-                          <packing>
-                            <property name="left-attach">0</property>
-                            <property name="top-attach">0</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" id="monitor_str">
-                            <property name="can-focus">False</property>
-                            <property name="label" translatable="yes" 
context="presentationdialog|monitor_str">Display %1</property>
-                          </object>
-                          <packing>
-                            <property name="left-attach">0</property>
-                            <property name="top-attach">1</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" id="allmonitors_str">
-                            <property name="can-focus">False</property>
-                            <property name="label" translatable="yes" 
context="presentationdialog|allmonitors_str">All displays</property>
-                          </object>
-                          <packing>
-                            <property name="left-attach">0</property>
-                            <property name="top-attach">2</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkLabel" id="external_str">
-                            <property name="can-focus">False</property>
-                            <property name="label" translatable="yes" 
context="presentationdialog|external_str">Auto External (Display %1)</property>
-                          </object>
-                          <packing>
-                            <property name="left-attach">0</property>
-                            <property name="top-attach">3</property>
-                          </packing>
-                        </child>
-                      </object>
-                      <packing>
-                        <property name="left-attach">0</property>
-                        <property name="top-attach">1</property>
-                      </packing>
-                    </child>
-                  </object>
-                </child>
-                <child type="label">
-                  <object class="GtkLabel" id="label3">
-                    <property name="visible">True</property>
-                    <property name="can-focus">False</property>
-                    <property name="label" translatable="yes" 
context="presentationdialog|label3">Display</property>
-                    <attributes>
-                      <attribute name="weight" value="bold"/>
-                    </attributes>
-                  </object>
-                </child>
-              </object>
-              <packing>
-                <property name="left-attach">0</property>
-                <property name="top-attach">2</property>
-              </packing>
-            </child>
             <child>
               <!-- n-columns=2 n-rows=1 -->
               <object class="GtkGrid" id="grid2">
@@ -549,48 +337,48 @@
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkCheckButton" id="showlogo">
-                            <property name="label" translatable="yes" 
context="presentationdialog|showlogo">Show _logo during pause</property>
+                          <object class="GtkSpinButton" id="pauseduration">
                             <property name="visible">True</property>
+                            <property name="sensitive">False</property>
                             <property name="can-focus">True</property>
-                            <property name="receives-default">False</property>
+                            <property name="tooltip-text" translatable="yes" 
context="presentationdialog|pauseduration|tooltip_text">Duration of 
pause</property>
                             <property name="margin-start">12</property>
-                            <property name="use-underline">True</property>
-                            <property name="draw-indicator">True</property>
+                            <property name="activates-default">True</property>
+                            <property name="truncate-multiline">True</property>
+                            <property name="adjustment">adjustment1</property>
+                            <accessibility>
+                              <relation type="labelled-by" target="auto"/>
+                            </accessibility>
                             <child internal-child="accessible">
-                              <object class="AtkObject" 
id="showlogo-atkobject">
-                                <property 
name="AtkObject::accessible-description" translatable="yes" 
context="presentationdialog|extended_tip|showlogo">Displays the application 
logo on the pause slide.</property>
+                              <object class="AtkObject" 
id="pauseduration-atkobject">
+                                <property name="AtkObject::accessible-name" 
translatable="yes" context="presentationdialog|pauseduration-atkobject">Pause 
Duration</property>
+                                <property 
name="AtkObject::accessible-description" translatable="yes" 
context="presentationdialog|extended_tip|pauseduration">Enter the duration of 
the pause before the slide show is repeated. If you enter zero, the show 
restarts immediately without showing a pause slide.</property>
                               </object>
                             </child>
                           </object>
                           <packing>
                             <property name="left-attach">0</property>
-                            <property name="top-attach">4</property>
+                            <property name="top-attach">3</property>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkSpinButton" id="pauseduration">
+                          <object class="GtkCheckButton" id="showlogo">
+                            <property name="label" translatable="yes" 
context="presentationdialog|showlogo">Show _logo during pause</property>
                             <property name="visible">True</property>
-                            <property name="sensitive">False</property>
                             <property name="can-focus">True</property>
-                            <property name="tooltip-text" translatable="yes" 
context="presentationdialog|pauseduration|tooltip_text">Duration of 
pause</property>
+                            <property name="receives-default">False</property>
                             <property name="margin-start">12</property>
-                            <property name="activates-default">True</property>
-                            <property name="truncate-multiline">True</property>
-                            <property name="adjustment">adjustment1</property>
-                            <accessibility>
-                              <relation type="labelled-by" target="auto"/>
-                            </accessibility>
+                            <property name="use-underline">True</property>
+                            <property name="draw-indicator">True</property>
                             <child internal-child="accessible">
-                              <object class="AtkObject" 
id="pauseduration-atkobject">
-                                <property name="AtkObject::accessible-name" 
translatable="yes" context="presentationdialog|pauseduration-atkobject">Pause 
Duration</property>
-                                <property 
name="AtkObject::accessible-description" translatable="yes" 
context="presentationdialog|extended_tip|pauseduration">Enter the duration of 
the pause before the slide show is repeated. If you enter zero, the show 
restarts immediately without showing a pause slide.</property>
+                              <object class="AtkObject" 
id="showlogo-atkobject">
+                                <property 
name="AtkObject::accessible-description" translatable="yes" 
context="presentationdialog|extended_tip|showlogo">Displays the application 
logo on the pause slide.</property>
                               </object>
                             </child>
                           </object>
                           <packing>
                             <property name="left-attach">0</property>
-                            <property name="top-attach">3</property>
+                            <property name="top-attach">4</property>
                           </packing>
                         </child>
                       </object>
@@ -649,60 +437,60 @@
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkCheckButton" id="pointervisible">
-                            <property name="label" translatable="yes" 
context="presentationdialog|pointervisible">Mouse pointer _visible</property>
+                          <object class="GtkCheckButton" 
id="changeslidesbyclick">
+                            <property name="label" translatable="yes" 
context="presentationdialog|changeslidesbyclick">Change slides by clic_king on 
background</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>
                             <child internal-child="accessible">
-                              <object class="AtkObject" 
id="pointervisible-atkobject">
-                                <property 
name="AtkObject::accessible-description" translatable="yes" 
context="presentationdialog|extended_tip|pointervisible">Shows the mouse 
pointer during a slide show.</property>
+                              <object class="AtkObject" 
id="changeslidesbyclick-atkobject">
+                                <property 
name="AtkObject::accessible-description" translatable="yes" 
context="presentationdialog|extended_tip|changeslidesbyclick">Advances to the 
next slide when you click on the background of a slide.</property>
                               </object>
                             </child>
                           </object>
                           <packing>
                             <property name="left-attach">0</property>
-                            <property name="top-attach">2</property>
+                            <property name="top-attach">1</property>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkCheckButton" id="pointeraspen">
-                            <property name="label" translatable="yes" 
context="presentationdialog|pointeraspen">Mouse pointer as _pen</property>
+                          <object class="GtkCheckButton" id="pointervisible">
+                            <property name="label" translatable="yes" 
context="presentationdialog|pointervisible">Mouse pointer _visible</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>
                             <child internal-child="accessible">
-                              <object class="AtkObject" 
id="pointeraspen-atkobject">
-                                <property 
name="AtkObject::accessible-description" translatable="yes" 
context="presentationdialog|extended_tip|pointeraspen">Changes the mouse 
pointer to a pen which you can use to draw on slides during the 
presentation.</property>
+                              <object class="AtkObject" 
id="pointervisible-atkobject">
+                                <property 
name="AtkObject::accessible-description" translatable="yes" 
context="presentationdialog|extended_tip|pointervisible">Shows the mouse 
pointer during a slide show.</property>
                               </object>
                             </child>
                           </object>
                           <packing>
                             <property name="left-attach">0</property>
-                            <property name="top-attach">3</property>
+                            <property name="top-attach">2</property>
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkCheckButton" 
id="changeslidesbyclick">
-                            <property name="label" translatable="yes" 
context="presentationdialog|changeslidesbyclick">Change slides by clic_king on 
background</property>
+                          <object class="GtkCheckButton" id="pointeraspen">
+                            <property name="label" translatable="yes" 
context="presentationdialog|pointeraspen">Mouse pointer as _pen</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>
                             <child internal-child="accessible">
-                              <object class="AtkObject" 
id="changeslidesbyclick-atkobject">
-                                <property 
name="AtkObject::accessible-description" translatable="yes" 
context="presentationdialog|extended_tip|changeslidesbyclick">Advances to the 
next slide when you click on the background of a slide.</property>
+                              <object class="AtkObject" 
id="pointeraspen-atkobject">
+                                <property 
name="AtkObject::accessible-description" translatable="yes" 
context="presentationdialog|extended_tip|pointeraspen">Changes the mouse 
pointer to a pen which you can use to draw on slides during the 
presentation.</property>
                               </object>
                             </child>
                           </object>
                           <packing>
                             <property name="left-attach">0</property>
-                            <property name="top-attach">1</property>
+                            <property name="top-attach">3</property>
                           </packing>
                         </child>
                         <child>
@@ -786,6 +574,218 @@
                 <property name="top-attach">1</property>
               </packing>
             </child>
+            <child>
+              <object class="GtkFrame" id="frame3">
+                <property name="visible">True</property>
+                <property name="can-focus">False</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
+                <property name="label-xalign">0</property>
+                <property name="shadow-type">none</property>
+                <child>
+                  <!-- n-columns=1 n-rows=2 -->
+                  <object class="GtkGrid" id="grid7">
+                    <property name="visible">True</property>
+                    <property name="can-focus">False</property>
+                    <property name="margin-start">12</property>
+                    <property name="margin-top">6</property>
+                    <property name="hexpand">True</property>
+                    <property name="vexpand">True</property>
+                    <child>
+                      <!-- n-columns=2 n-rows=4 -->
+                      <object class="GtkGrid" id="grid8">
+                        <property name="visible">True</property>
+                        <property name="can-focus">False</property>
+                        <property name="hexpand">True</property>
+                        <property name="vexpand">True</property>
+                        <property name="row-spacing">6</property>
+                        <property name="column-spacing">12</property>
+                        <child>
+                          <object class="GtkComboBoxText" id="presdisplay_cb">
+                            <property name="visible">True</property>
+                            <property name="can-focus">False</property>
+                            <property name="hexpand">True</property>
+                            <child internal-child="accessible">
+                              <object class="AtkObject" 
id="presdisplay_cb-atkobject">
+                                <property 
name="AtkObject::accessible-description" translatable="yes" 
context="presentationdialog|extended_tip|presdisplay_cb">Select a display to 
use for full screen slide show mode.</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="left-attach">1</property>
+                            <property name="top-attach">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="presdisplay_label">
+                            <property name="visible">True</property>
+                            <property name="can-focus">False</property>
+                            <property name="label" translatable="yes" 
context="presentationdialog|presdisplay_label">P_resentation display:</property>
+                            <property name="use-underline">True</property>
+                            <property 
name="mnemonic-widget">presdisplay_cb</property>
+                            <property name="xalign">0</property>
+                          </object>
+                          <packing>
+                            <property name="left-attach">0</property>
+                            <property name="top-attach">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkComboBoxText" id="console_cb">
+                            <property name="visible">True</property>
+                            <property name="can-focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="active">0</property>
+                            <items>
+                              <item id="0" translatable="yes" 
context="presentationdialog|console_cb">Full screen</item>
+                              <item id="1" translatable="yes" 
context="presentationdialog|console_cb">Windowed</item>
+                              <item id="2" translatable="yes" 
context="presentationdialog|console_cb">Disabled</item>
+                            </items>
+                          </object>
+                          <packing>
+                            <property name="left-attach">1</property>
+                            <property name="top-attach">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="console_label">
+                            <property name="visible">True</property>
+                            <property name="can-focus">False</property>
+                            <property name="label" translatable="yes" 
context="presentationdialog|console_label">Presenter console:</property>
+                            <property name="use-underline">True</property>
+                            <property 
name="mnemonic-widget">console_cb</property>
+                            <property name="xalign">0</property>
+                          </object>
+                          <packing>
+                            <property name="left-attach">0</property>
+                            <property name="top-attach">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkCheckButton" 
id="shownavigationbutton">
+                            <property name="label" translatable="yes" 
context="presentationdialog|shownavigationbutton">Show navigation bar</property>
+                            <property name="visible">True</property>
+                            <property name="can-focus">True</property>
+                            <property name="receives-default">False</property>
+                            <property name="tooltip-text" translatable="yes" 
context="presentationdialog|shownavigationbutton|tooltip_text">Show navigation 
bar at the bottom of the presentation</property>
+                            <property name="use-underline">True</property>
+                            <property name="draw-indicator">True</property>
+                          </object>
+                          <packing>
+                            <property name="left-attach">0</property>
+                            <property name="top-attach">2</property>
+                            <property name="width">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="navbar_btn_size_label">
+                            <property name="visible">True</property>
+                            <property name="can-focus">False</property>
+                            <property name="halign">start</property>
+                            <property name="margin-start">24</property>
+                            <property name="label" translatable="yes" 
context="presentationdialog|navbar_btn_size_label">Buttons size:</property>
+                          </object>
+                          <packing>
+                            <property name="left-attach">0</property>
+                            <property name="top-attach">3</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkComboBoxText" 
id="navigation_buttons_size_cb">
+                            <property name="visible">True</property>
+                            <property name="can-focus">False</property>
+                            <property name="hexpand">True</property>
+                            <items>
+                              <item translatable="yes" 
context="presentationdialog|navigation_buttons_size_cb">Automatic</item>
+                              <item translatable="yes" 
context="presentationdialog|navigation_buttons_size_cb">Small</item>
+                              <item translatable="yes" 
context="presentationdialog|navigation_buttons_size_cb">Large</item>
+                              <item translatable="yes" 
context="presentationdialog|navigation_buttons_size_cb">Extra Large</item>
+                            </items>
+                            <child internal-child="accessible">
+                              <object class="AtkObject" 
id="navigation_buttons_size_cb-atkobject">
+                                <property 
name="AtkObject::accessible-description" translatable="yes" 
context="extended_tip | iconsize">Specifies the display size of navigation bar 
icons.</property>
+                              </object>
+                            </child>
+                          </object>
+                          <packing>
+                            <property name="left-attach">1</property>
+                            <property name="top-attach">3</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left-attach">0</property>
+                        <property name="top-attach">0</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <!-- n-columns=1 n-rows=4 -->
+                      <object class="GtkGrid" id="grid9">
+                        <property name="can-focus">False</property>
+                        <child>
+                          <object class="GtkLabel" id="externalmonitor_str">
+                            <property name="can-focus">False</property>
+                            <property name="label" translatable="yes" 
context="presentationdialog|externalmonitor_str">Display %1 
(external)</property>
+                          </object>
+                          <packing>
+                            <property name="left-attach">0</property>
+                            <property name="top-attach">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="monitor_str">
+                            <property name="can-focus">False</property>
+                            <property name="label" translatable="yes" 
context="presentationdialog|monitor_str">Display %1</property>
+                          </object>
+                          <packing>
+                            <property name="left-attach">0</property>
+                            <property name="top-attach">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="allmonitors_str">
+                            <property name="can-focus">False</property>
+                            <property name="label" translatable="yes" 
context="presentationdialog|allmonitors_str">All displays</property>
+                          </object>
+                          <packing>
+                            <property name="left-attach">0</property>
+                            <property name="top-attach">2</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <object class="GtkLabel" id="external_str">
+                            <property name="can-focus">False</property>
+                            <property name="label" translatable="yes" 
context="presentationdialog|external_str">Auto External (Display %1)</property>
+                          </object>
+                          <packing>
+                            <property name="left-attach">0</property>
+                            <property name="top-attach">3</property>
+                          </packing>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left-attach">0</property>
+                        <property name="top-attach">1</property>
+                      </packing>
+                    </child>
+                  </object>
+                </child>
+                <child type="label">
+                  <object class="GtkLabel" id="label3">
+                    <property name="visible">True</property>
+                    <property name="can-focus">False</property>
+                    <property name="label" translatable="yes" 
context="presentationdialog|label3">Display</property>
+                    <attributes>
+                      <attribute name="weight" value="bold"/>
+                    </attributes>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="left-attach">0</property>
+                <property name="top-attach">2</property>
+              </packing>
+            </child>
             <child>
               <object class="GtkFrame" id="frameremote">
                 <property name="visible">True</property>
commit c516f6da693d9d5d5ea1d1bb2af2cf964694e86c
Author:     Michael Weghorn <[email protected]>
AuthorDate: Thu Feb 20 21:16:56 2025 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Fri Feb 21 08:42:50 2025 +0100

    sd: Resave presentationdialog.ui with glade 3.40
    
    This is the Impress "Slide Show" -> "Slide Show Settings"
    dialog.
    
    Change-Id: Iad8aa7892c1cd41121df2fe0a489aed85bd0021b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181968
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <[email protected]>

diff --git a/sd/uiconfig/simpress/ui/presentationdialog.ui 
b/sd/uiconfig/simpress/ui/presentationdialog.ui
index 33bfc4f9d64a..95c501e0710a 100644
--- a/sd/uiconfig/simpress/ui/presentationdialog.ui
+++ b/sd/uiconfig/simpress/ui/presentationdialog.ui
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.38.2 -->
+<!-- Generated with glade 3.40.0 -->
 <interface domain="sd">
   <requires lib="gtk+" version="3.20"/>
   <object class="GtkAdjustment" id="adjustment1">
@@ -849,6 +849,9 @@
                         <property name="top-attach">1</property>
                       </packing>
                     </child>
+                    <child>
+                      <placeholder/>
+                    </child>
                   </object>
                 </child>
                 <child type="label">
commit 6ca50428779b24e39e172efc5acaac7213f510be
Author:     Michael Weghorn <[email protected]>
AuthorDate: Thu Feb 20 21:02:21 2025 +0100
Commit:     Michael Weghorn <[email protected]>
CommitDate: Fri Feb 21 08:42:44 2025 +0100

    tdf#130857 qt weld: Use QSpinBox in SpinButton's weld::Widget methods
    
    In the implementation of the QtInstanceWidget methods,
    don't use the `m_pWidget` member directly, but instead
    call the virtual `getQWidget()` method to get the
    widget to work with.
    
    This ensures that the QSpinBox is used for QtInstanceSpinButton
    and QtInstanceFormattedSpinButton, which pass the QSpinBox's
    QLineEdit into the QtInstanceEntry base class ctor in
    order to be able to implement the weld::Entry interface, see
    
        commit 12fb40fd7bc771813b825806cb4151833d7cd789
        Author: Michael Weghorn <[email protected]>
        Date:   Wed Nov 27 23:40:16 2024 +0100
    
            tdf#130857 qt weld: Let SpinButton derive from Entry
    
    Using the actual QSpinBox (i.e. the "main widget") e.g. makes
    disabling the spinbox in the Impress "Slide Show" -> "Slide Show Settings"
    dialog work as expected.
    
    (Without this commit in place, it wasn't possible to type into
    the "Loop and repeat after" SpinButton, but it was still possible
    to change the value using the "up/down" buttons of the SpinButton
    even if the checkbox was not checked.
    
    Change-Id: I561a662830203b20db4d247fcc90416c13950e7e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181967
    Reviewed-by: Michael Weghorn <[email protected]>
    Tested-by: Jenkins

diff --git a/vcl/qt5/QtInstanceWidget.cxx b/vcl/qt5/QtInstanceWidget.cxx
index 7b4a1c79128e..9c4e60b29bff 100644
--- a/vcl/qt5/QtInstanceWidget.cxx
+++ b/vcl/qt5/QtInstanceWidget.cxx
@@ -36,8 +36,7 @@ void QtInstanceWidget::set_sensitive(bool bSensitive)
         return;
     }
 
-    assert(m_pWidget);
-    m_pWidget->setEnabled(bSensitive);
+    getQWidget()->setEnabled(bSensitive);
 }
 
 bool QtInstanceWidget::get_sensitive() const
@@ -51,8 +50,7 @@ bool QtInstanceWidget::get_sensitive() const
         return bSensitive;
     }
 
-    assert(m_pWidget);
-    return m_pWidget->isEnabled();
+    return getQWidget()->isEnabled();
 }
 
 bool QtInstanceWidget::get_visible() const
@@ -66,8 +64,7 @@ bool QtInstanceWidget::get_visible() const
         return bVisible;
     }
 
-    assert(m_pWidget);
-    return m_pWidget->isVisible();
+    return getQWidget()->isVisible();
 }
 
 bool QtInstanceWidget::is_visible() const
@@ -81,11 +78,9 @@ bool QtInstanceWidget::is_visible() const
         return bVisible;
     }
 
-    assert(m_pWidget);
-
-    QWidget* pTopLevel = m_pWidget->topLevelWidget();
+    QWidget* pTopLevel = getQWidget()->topLevelWidget();
     assert(pTopLevel);
-    return m_pWidget->isVisibleTo(pTopLevel) && pTopLevel->isVisible();
+    return getQWidget()->isVisibleTo(pTopLevel) && pTopLevel->isVisible();
 }
 
 void QtInstanceWidget::set_can_focus(bool bCanFocus)
@@ -98,11 +93,10 @@ void QtInstanceWidget::set_can_focus(bool bCanFocus)
         return;
     }
 
-    assert(m_pWidget);
     if (bCanFocus)
-        m_pWidget->setFocusPolicy(Qt::FocusPolicy::StrongFocus);
+        getQWidget()->setFocusPolicy(Qt::FocusPolicy::StrongFocus);
     else
-        m_pWidget->setFocusPolicy(Qt::FocusPolicy::NoFocus);
+        getQWidget()->setFocusPolicy(Qt::FocusPolicy::NoFocus);
 }
 
 void QtInstanceWidget::grab_focus()
@@ -115,8 +109,7 @@ void QtInstanceWidget::grab_focus()
         return;
     }
 
-    assert(m_pWidget);
-    m_pWidget->setFocus();
+    getQWidget()->setFocus();
 }
 
 bool QtInstanceWidget::has_focus() const
@@ -130,8 +123,7 @@ bool QtInstanceWidget::has_focus() const
         return bFocus;
     }
 
-    assert(m_pWidget);
-    return m_pWidget->hasFocus();
+    return getQWidget()->hasFocus();
 }
 
 bool QtInstanceWidget::is_active() const { return has_focus(); }
@@ -154,7 +146,7 @@ bool QtInstanceWidget::has_child_focus() const
     QWidget* pParent = pFocusWidget->parentWidget();
     while (pParent)
     {
-        if (pParent == m_pWidget)
+        if (pParent == getQWidget())
             return true;
         pParent = pParent->parentWidget();
     }
@@ -171,8 +163,7 @@ void QtInstanceWidget::show()
         return;
     }
 
-    assert(m_pWidget);
-    m_pWidget->show();
+    getQWidget()->show();
 }
 
 void QtInstanceWidget::hide()
@@ -185,15 +176,14 @@ void QtInstanceWidget::hide()
         return;
     }
 
-    assert(m_pWidget);
-    m_pWidget->hide();
+    getQWidget()->hide();
 }
 
 void QtInstanceWidget::set_size_request(int nWidth, int nHeight)
 {
     SolarMutexGuard g;
     GetQtInstance().RunInMainThread(
-        [&] { m_pWidget->setMinimumSize(std::max(0, nWidth), std::max(0, 
nHeight)); });
+        [&] { getQWidget()->setMinimumSize(std::max(0, nWidth), std::max(0, 
nHeight)); });
 }
 
 Size QtInstanceWidget::get_size_request() const
@@ -201,7 +191,7 @@ Size QtInstanceWidget::get_size_request() const
     SolarMutexGuard g;
 
     Size aSize;
-    GetQtInstance().RunInMainThread([&] { aSize = 
toSize(m_pWidget->minimumSize()); });
+    GetQtInstance().RunInMainThread([&] { aSize = 
toSize(getQWidget()->minimumSize()); });
     return aSize;
 }
 
@@ -210,7 +200,7 @@ Size QtInstanceWidget::get_preferred_size() const
     SolarMutexGuard g;
 
     Size aPreferredSize;
-    GetQtInstance().RunInMainThread([&] { aPreferredSize = 
toSize(m_pWidget->sizeHint()); });
+    GetQtInstance().RunInMainThread([&] { aPreferredSize = 
toSize(getQWidget()->sizeHint()); });
 
     return aPreferredSize;
 }
@@ -221,7 +211,7 @@ float QtInstanceWidget::get_approximate_digit_width() const
 
     float fWidth = 0;
     GetQtInstance().RunInMainThread(
-        [&] { fWidth = 
m_pWidget->fontMetrics().horizontalAdvance("0123456789") / 10.0; });
+        [&] { fWidth = 
getQWidget()->fontMetrics().horizontalAdvance("0123456789") / 10.0; });
     return fWidth;
 }
 
@@ -230,7 +220,7 @@ int QtInstanceWidget::get_text_height() const
     SolarMutexGuard g;
 
     int nHeight = 0;
-    GetQtInstance().RunInMainThread([&] { nHeight = 
m_pWidget->fontMetrics().height(); });
+    GetQtInstance().RunInMainThread([&] { nHeight = 
getQWidget()->fontMetrics().height(); });
     return nHeight;
 }
 
@@ -240,7 +230,7 @@ Size QtInstanceWidget::get_pixel_size(const OUString& 
rText) const
 
     Size aSize;
     GetQtInstance().RunInMainThread(
-        [&] { aSize = 
toSize(m_pWidget->fontMetrics().boundingRect(toQString(rText)).size()); });
+        [&] { aSize = 
toSize(getQWidget()->fontMetrics().boundingRect(toQString(rText)).size()); });
 
     return aSize;
 }
@@ -262,7 +252,7 @@ void QtInstanceWidget::setHelpId(QWidget& rWidget, const 
OUString& rHelpId)
         [&] { rWidget.setProperty(PROPERTY_HELP_ID, toQString(rHelpId)); });
 }
 
-void QtInstanceWidget::set_help_id(const OUString& rHelpId) { 
setHelpId(*m_pWidget, rHelpId); }
+void QtInstanceWidget::set_help_id(const OUString& rHelpId) { 
setHelpId(*getQWidget(), rHelpId); }
 
 OUString QtInstanceWidget::get_help_id() const
 {
@@ -275,7 +265,7 @@ OUString QtInstanceWidget::get_help_id() const
         return sHelpId;
     }
 
-    const QVariant aHelpIdVariant = m_pWidget->property(PROPERTY_HELP_ID);
+    const QVariant aHelpIdVariant = getQWidget()->property(PROPERTY_HELP_ID);
     if (!aHelpIdVariant.isValid())
         return OUString();
 
@@ -341,8 +331,7 @@ void QtInstanceWidget::set_accessible_name(const OUString& 
rName)
         return;
     }
 
-    assert(m_pWidget);
-    m_pWidget->setAccessibleName(toQString(rName));
+    getQWidget()->setAccessibleName(toQString(rName));
 }
 
 void QtInstanceWidget::set_accessible_description(const OUString& rDescription)
@@ -355,8 +344,7 @@ void QtInstanceWidget::set_accessible_description(const 
OUString& rDescription)
         return;
     }
 
-    assert(m_pWidget);
-    m_pWidget->setAccessibleDescription(toQString(rDescription));
+    getQWidget()->setAccessibleDescription(toQString(rDescription));
 }
 
 OUString QtInstanceWidget::get_accessible_name() const
@@ -370,8 +358,7 @@ OUString QtInstanceWidget::get_accessible_name() const
         return sName;
     }
 
-    assert(m_pWidget);
-    return toOUString(m_pWidget->accessibleName());
+    return toOUString(getQWidget()->accessibleName());
 }
 
 OUString QtInstanceWidget::get_accessible_description() const
@@ -385,8 +372,7 @@ OUString QtInstanceWidget::get_accessible_description() 
const
         return sDescription;
     }
 
-    assert(m_pWidget);
-    return toOUString(m_pWidget->accessibleDescription());
+    return toOUString(getQWidget()->accessibleDescription());
 }
 
 OUString QtInstanceWidget::get_accessible_id() const
@@ -400,9 +386,8 @@ OUString QtInstanceWidget::get_accessible_id() const
         return sId;
     }
 
-    assert(m_pWidget);
 #if QT_VERSION >= QT_VERSION_CHECK(6, 9, 0)
-    return toOUString(m_pWidget->accessibleIdentifier());
+    return toOUString(getQWidget()->accessibleIdentifier());
 #else
     return OUString();
 #endif
@@ -423,8 +408,7 @@ void QtInstanceWidget::set_tooltip_text(const OUString& 
rTip)
         return;
     }
 
-    assert(m_pWidget);
-    m_pWidget->setToolTip(toQString(rTip));
+    getQWidget()->setToolTip(toQString(rTip));
 }
 
 OUString QtInstanceWidget::get_tooltip_text() const
@@ -438,8 +422,7 @@ OUString QtInstanceWidget::get_tooltip_text() const
         return sToolTipText;
     }
 
-    assert(m_pWidget);
-    return toOUString(m_pWidget->toolTip());
+    return toOUString(getQWidget()->toolTip());
 }
 
 void QtInstanceWidget::set_cursor_data(void*) { assert(false && "Not 
implemented yet"); }
@@ -461,14 +444,14 @@ bool QtInstanceWidget::get_extents_relative_to(const 
Widget& rRelative, int& rX,
 
     bool bRet = false;
     GetQtInstance().RunInMainThread([&] {
-        QRect aGeometry = m_pWidget->geometry();
+        QRect aGeometry = getQWidget()->geometry();
         rWidth = aGeometry.width();
         rHeight = aGeometry.height();
         const QtInstanceWidget* pRelativeWidget = dynamic_cast<const 
QtInstanceWidget*>(&rRelative);
         if (!pRelativeWidget)
             return;
 
-        QPoint aRelativePos = m_pWidget->mapTo(pRelativeWidget->getQWidget(), 
QPoint(0, 0));
+        QPoint aRelativePos = 
getQWidget()->mapTo(pRelativeWidget->getQWidget(), QPoint(0, 0));
         rX = aRelativePos.x();
         rY = aRelativePos.y();
         bRet = true;
@@ -483,7 +466,7 @@ bool QtInstanceWidget::get_direction() const
 
     bool bRTL = false;
     GetQtInstance().RunInMainThread(
-        [&] { bRTL = m_pWidget->layoutDirection() == 
Qt::LayoutDirection::RightToLeft; });
+        [&] { bRTL = getQWidget()->layoutDirection() == 
Qt::LayoutDirection::RightToLeft; });
     return bRTL;
 }
 
@@ -492,8 +475,8 @@ void QtInstanceWidget::set_direction(bool bRTL)
     SolarMutexGuard g;
 
     GetQtInstance().RunInMainThread([&] {
-        m_pWidget->setLayoutDirection(bRTL ? Qt::LayoutDirection::RightToLeft
-                                           : Qt::LayoutDirection::LeftToRight);
+        getQWidget()->setLayoutDirection(bRTL ? 
Qt::LayoutDirection::RightToLeft
+                                              : 
Qt::LayoutDirection::LeftToRight);
     });
 }
 
@@ -513,15 +496,15 @@ void QtInstanceWidget::set_busy_cursor(bool bBusy)
         assert(m_nBusyCount >= 0);
 
         if (m_nBusyCount == 1)
-            m_pWidget->setCursor(Qt::BusyCursor);
+            getQWidget()->setCursor(Qt::BusyCursor);
         else if (m_nBusyCount == 0)
-            m_pWidget->unsetCursor();
+            getQWidget()->unsetCursor();
     });
 }
 
 std::unique_ptr<weld::Container> QtInstanceWidget::weld_parent() const
 {
-    QWidget* pParentWidget = m_pWidget->parentWidget();
+    QWidget* pParentWidget = getQWidget()->parentWidget();
     if (!pParentWidget)
         return nullptr;
 
@@ -532,7 +515,7 @@ void QtInstanceWidget::queue_resize()
 {
     SolarMutexGuard g;
 
-    GetQtInstance().RunInMainThread([&] { m_pWidget->adjustSize(); });
+    GetQtInstance().RunInMainThread([&] { getQWidget()->adjustSize(); });
 }
 
 void QtInstanceWidget::help_hierarchy_foreach(const std::function<bool(const 
OUString&)>&)
@@ -622,9 +605,9 @@ void QtInstanceWidget::applicationFocusChanged(QWidget* 
pOldFocus, QWidget* pNew
 {
     SolarMutexGuard g;
 
-    if (pOldFocus == m_pWidget)
+    if (pOldFocus == getQWidget())
         signal_focus_out();
-    else if (pNewFocus == m_pWidget)
+    else if (pNewFocus == getQWidget())
         signal_focus_in();
 }
 

Reply via email to