cui/inc/strings.hrc | 3 cui/source/inc/chardlg.hxx | 3 cui/source/tabpages/chardlg.cxx | 9 -- cui/uiconfig/ui/positionpage.ui | 39 +-------- solenv/sanitizers/ui/cui.suppr | 2 sw/uiconfig/swriter/ui/mailmerge.ui | 115 +++++++++++++++-------------- sw/uiconfig/swriter/ui/printmergedialog.ui | 36 ++++----- 7 files changed, 92 insertions(+), 115 deletions(-)
New commits: commit dc900d108b48f2954e66746a10ce0a2d4ddae700 Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Fri Aug 8 08:56:46 2025 +0200 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Sat Aug 9 01:00:28 2025 +0200 sw: Resave printmergedialog.ui with glade 3.40 The dialog can be triggered as follows: * start Writer * "Insert" -> "Field" -> "More Fields" * switch to "Database" tab * select "Mail merge fields" for the type * click "Browse" button next to the "Add database file" label and select any database file * in the "Database Selection" treeview, select any column of the database * press the "Insert" button * close the "Fields" dialog * press Ctrl+P to trigger the print dialog, which triggers the dialog asking whether to print a form letter Change-Id: I8eee2cb3c9ea5bd2cc342aa43222552d65168803 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189149 Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> Tested-by: Jenkins diff --git a/sw/uiconfig/swriter/ui/printmergedialog.ui b/sw/uiconfig/swriter/ui/printmergedialog.ui index 4f3bc074fe1f..7f9f98784c1f 100644 --- a/sw/uiconfig/swriter/ui/printmergedialog.ui +++ b/sw/uiconfig/swriter/ui/printmergedialog.ui @@ -1,32 +1,32 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.36.0 --> +<!-- Generated with glade 3.40.0 --> <interface domain="sw"> <requires lib="gtk+" version="3.20"/> <object class="GtkMessageDialog" id="PrintMergeDialog"> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="resizable">False</property> <property name="modal">True</property> - <property name="type_hint">dialog</property> - <property name="skip_taskbar_hint">True</property> - <property name="message_type">question</property> + <property name="type-hint">dialog</property> + <property name="skip-taskbar-hint">True</property> + <property name="message-type">question</property> <property name="text" translatable="yes" context="printmergedialog|PrintMergeDialog">Your document contains address database fields. Do you want to print a form letter?</property> <child internal-child="vbox"> <object class="GtkBox" id="messagedialog-vbox"> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="orientation">vertical</property> <property name="spacing">12</property> <child internal-child="action_area"> <object class="GtkButtonBox" id="messagedialog-action_area"> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <child> <object class="GtkButton" id="yes"> <property name="label" translatable="yes" context="stock">_Yes</property> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="can_default">True</property> - <property name="has_default">True</property> - <property name="receives_default">True</property> - <property name="use_underline">True</property> + <property name="can-focus">True</property> + <property name="can-default">True</property> + <property name="has-default">True</property> + <property name="receives-default">True</property> + <property name="use-underline">True</property> </object> <packing> <property name="expand">False</property> @@ -38,9 +38,9 @@ <object class="GtkButton" id="no"> <property name="label" translatable="yes" context="stock">_No</property> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> - <property name="use_underline">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> + <property name="use-underline">True</property> </object> <packing> <property name="expand">False</property> @@ -52,8 +52,8 @@ <object class="GtkButton" id="cancel"> <property name="label" translatable="yes" context="stock">_Cancel</property> <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="receives_default">True</property> + <property name="can-focus">True</property> + <property name="receives-default">True</property> <property name="use-underline">True</property> </object> <packing> @@ -66,7 +66,7 @@ <packing> <property name="expand">False</property> <property name="fill">True</property> - <property name="pack_type">end</property> + <property name="pack-type">end</property> <property name="position">0</property> </packing> </child> commit 4dea4ceb8772cc1745c89e03daebbccac9cdf0ed Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Fri Aug 8 08:34:17 2025 +0200 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Sat Aug 9 01:00:21 2025 +0200 tdf#130857 sw mailmerge: Use GtkBox instead of GtkFrame I cannot see any reason why this was using a GtkFrame and the GtkBox containing the "Save as single document" and "Save as individual documents" radiobuttons was set as the GtkFrame's label child. This breaks the assumption that the label child is always a GtkLabel object, see commit 82308d6a6853463f660dc6d6a11a2c12d198c4ed Author: Michael Weghorn <m.wegh...@posteo.de> Date: Thu Aug 7 16:15:12 2025 +0200 tdf#130857 svx: Don't use GtkBox as GtkFrame label child for more background. Replace that unusual approach by using a GtkBox instead of the GtkFrame, and simply have the GtkBox containing the radio buttons as the first child of the GtkBox. No change in behavior seen in a quick test. The dialog can be triggered as follows: * start Writer * "Insert" -> "Field" -> "More Fields" * switch to "Database" tab * select "Mail merge fields" for the type * click "Browse" button next to the "Add database file" label and select any database file * in the "Database Selection" treeview, select any column of the database * press the "Insert" button * close the "Fields" dialog * press Ctrl+P to trigger the print dialog * in the dialog asking whether to print a form letter, press the "Yes" button Change-Id: I49b57c556ab81045e199ac0579bc886f0654c520 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189148 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> diff --git a/sw/uiconfig/swriter/ui/mailmerge.ui b/sw/uiconfig/swriter/ui/mailmerge.ui index 0f5fe76f0bf0..ef7f2d3d87b9 100644 --- a/sw/uiconfig/swriter/ui/mailmerge.ui +++ b/sw/uiconfig/swriter/ui/mailmerge.ui @@ -369,13 +369,67 @@ <property name="label-xalign">0</property> <property name="shadow-type">none</property> <child> - <object class="GtkFrame" id="frame4"> + <object class="GtkBox"> <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="label-xalign">0</property> - <property name="shadow-type">none</property> + <property name="orientation">vertical</property> + <child> + <object class="GtkBox" id="box7"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="orientation">vertical</property> + <property name="spacing">6</property> + <child> + <object class="GtkRadioButton" id="singledocument"> + <property name="label" translatable="yes" context="mailmerge|singledocument">S_ave as single document</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="singledocument-atkobject"> + <property name="AtkObject::accessible-description" translatable="yes" context="mailmerge|extended_tip|singledocument">Create one big document containing all data records.</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">0</property> + </packing> + </child> + <child> + <object class="GtkRadioButton" id="individualdocuments"> + <property name="label" translatable="yes" context="mailmerge|individualdocuments">Sa_ve as individual documents</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="group">singledocument</property> + <child internal-child="accessible"> + <object class="AtkObject" id="individualdocuments-atkobject"> + <property name="AtkObject::accessible-description" translatable="yes" context="mailmerge|extended_tip|individualdocuments">Create one document for each data record.</property> + </object> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">1</property> + </packing> + </child> <child> <!-- n-columns=3 n-rows=12 --> <object class="GtkGrid" id="grid1"> @@ -726,56 +780,11 @@ <placeholder/> </child> </object> - </child> - <child type="label"> - <object class="GtkBox" id="box7"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="orientation">vertical</property> - <property name="spacing">6</property> - <child> - <object class="GtkRadioButton" id="singledocument"> - <property name="label" translatable="yes" context="mailmerge|singledocument">S_ave as single document</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="singledocument-atkobject"> - <property name="AtkObject::accessible-description" translatable="yes" context="mailmerge|extended_tip|singledocument">Create one big document containing all data records.</property> - </object> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkRadioButton" id="individualdocuments"> - <property name="label" translatable="yes" context="mailmerge|individualdocuments">Sa_ve as individual documents</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="group">singledocument</property> - <child internal-child="accessible"> - <object class="AtkObject" id="individualdocuments-atkobject"> - <property name="AtkObject::accessible-description" translatable="yes" context="mailmerge|extended_tip|individualdocuments">Create one document for each data record.</property> - </object> - </child> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">1</property> - </packing> - </child> - </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> </child> </object> </child> commit 87e27e402edab3a231682626b6a65fa076d9ab08 Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Fri Aug 8 08:19:08 2025 +0200 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Sat Aug 9 01:00:14 2025 +0200 tdf#130857 cui: Don't use GtkBox as GtkFrame label child This is a similar change to previous commit commit 82308d6a6853463f660dc6d6a11a2c12d198c4ed Author: Michael Weghorn <m.wegh...@posteo.de> Date: Thu Aug 7 16:15:12 2025 +0200 tdf#130857 svx: Don't use GtkBox as GtkFrame label child , but for a different dialog. See the commit message of the above-mentioned commit for more background. A dialog using this "Position" tab page can be triggered in Writer using "Format" -> "Character". Change-Id: I3d0c41c365b5f992cafc455dbe9fe3719425f09e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189147 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> diff --git a/cui/inc/strings.hrc b/cui/inc/strings.hrc index 1e7bd1944f55..3bd7fe4d0bc7 100644 --- a/cui/inc/strings.hrc +++ b/cui/inc/strings.hrc @@ -395,6 +395,9 @@ #define RID_CUISTR_SAVED NC_("RID_CUISTR_SAVED", "The results have been successfully saved in the file 'GraphicTestResults.zip'!") #define RID_CUISTR_OPT_READONLY NC_("RID_CUISTR_OPT_READONLY", "This property is locked for editing.") +#define RID_CUISTR_ROTATION_SCALING NC_("RID_CUISTR_ROTATION_SCALING", "Rotation / Scaling") +#define RID_CUISTR_SCALING NC_("RID_CUISTR_SCALING", "Scaling") + #define RID_LANGUAGETOOL_LEAVE_EMPTY NC_("RID_LANGUAGETOOL_LEAVE_EMPTY", "Leave this field empty to use the free version") #define RID_LANGUAGETOOL_REST_LEAVE_EMPTY NC_("RID_LANGUAGETOOL_REST_LEAVE_EMPTY", "Leave this field empty to use LanguageTool protocol") diff --git a/cui/source/inc/chardlg.hxx b/cui/source/inc/chardlg.hxx index 03567a7f5ba4..4c2b0505e4ea 100644 --- a/cui/source/inc/chardlg.hxx +++ b/cui/source/inc/chardlg.hxx @@ -258,8 +258,7 @@ private: std::unique_ptr<weld::Widget> m_xRotationContainer; - std::unique_ptr<weld::Label> m_xScalingFT; - std::unique_ptr<weld::Label> m_xScalingAndRotationFT; + std::unique_ptr<weld::Frame> m_xRotationAndScalingFrame; std::unique_ptr<weld::RadioButton> m_x0degRB; std::unique_ptr<weld::RadioButton> m_x90degRB; std::unique_ptr<weld::RadioButton> m_x270degRB; diff --git a/cui/source/tabpages/chardlg.cxx b/cui/source/tabpages/chardlg.cxx index 978ed42ee460..d0d293822fb7 100644 --- a/cui/source/tabpages/chardlg.cxx +++ b/cui/source/tabpages/chardlg.cxx @@ -2421,8 +2421,7 @@ SvxCharPositionPage::SvxCharPositionPage(weld::Container* pPage, weld::DialogCon , m_xFontSizeFT(m_xBuilder->weld_label(u"relativefontsize"_ustr)) , m_xFontSizeMF(m_xBuilder->weld_metric_spin_button(u"fontsizesb"_ustr, FieldUnit::PERCENT)) , m_xRotationContainer(m_xBuilder->weld_widget(u"rotationcontainer"_ustr)) - , m_xScalingFT(m_xBuilder->weld_label(u"scale"_ustr)) - , m_xScalingAndRotationFT(m_xBuilder->weld_label(u"rotateandscale"_ustr)) + , m_xRotationAndScalingFrame(m_xBuilder->weld_frame(u"rotationandscalingframe"_ustr)) , m_x0degRB(m_xBuilder->weld_radio_button(u"0deg"_ustr)) , m_x90degRB(m_xBuilder->weld_radio_button(u"90deg"_ustr)) , m_x270degRB(m_xBuilder->weld_radio_button(u"270deg"_ustr)) @@ -2826,14 +2825,12 @@ void SvxCharPositionPage::Reset( const SfxItemSet* rSet ) if( SfxItemState::UNKNOWN == eState ) { m_xRotationContainer->hide(); - m_xScalingAndRotationFT->hide(); - m_xScalingFT->show(); + m_xRotationAndScalingFrame->set_label(CuiResId(RID_CUISTR_SCALING)); } else { m_xRotationContainer->show(); - m_xScalingAndRotationFT->show(); - m_xScalingFT->hide(); + m_xRotationAndScalingFrame->set_label(CuiResId(RID_CUISTR_ROTATION_SCALING)); if( eState >= SfxItemState::DEFAULT ) { diff --git a/cui/uiconfig/ui/positionpage.ui b/cui/uiconfig/ui/positionpage.ui index 839fb45c5b33..865667496d2b 100644 --- a/cui/uiconfig/ui/positionpage.ui +++ b/cui/uiconfig/ui/positionpage.ui @@ -216,7 +216,7 @@ </packing> </child> <child> - <object class="GtkFrame" id="frame10"> + <object class="GtkFrame" id="rotationandscalingframe"> <property name="visible">True</property> <property name="can-focus">False</property> <property name="label-xalign">0</property> @@ -348,41 +348,12 @@ </object> </child> <child type="label"> - <object class="GtkBox" id="box1"> + <object class="GtkLabel"> <property name="visible">True</property> <property name="can-focus">False</property> - <property name="orientation">vertical</property> - <child> - <object class="GtkLabel" id="rotateandscale"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="label" translatable="yes" context="positionpage|rotateandscale">Rotation / Scaling</property> - <attributes> - <attribute name="weight" value="bold"/> - </attributes> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">0</property> - </packing> - </child> - <child> - <object class="GtkLabel" id="scale"> - <property name="visible">True</property> - <property name="can-focus">False</property> - <property name="halign">start</property> - <property name="label" translatable="yes" context="positionpage|scale">Scaling</property> - <attributes> - <attribute name="weight" value="bold"/> - </attributes> - </object> - <packing> - <property name="expand">False</property> - <property name="fill">True</property> - <property name="position">1</property> - </packing> - </child> + <attributes> + <attribute name="weight" value="bold"/> + </attributes> </object> </child> </object> diff --git a/solenv/sanitizers/ui/cui.suppr b/solenv/sanitizers/ui/cui.suppr index 4ed2095fb546..39a63ff63d4c 100644 --- a/solenv/sanitizers/ui/cui.suppr +++ b/solenv/sanitizers/ui/cui.suppr @@ -146,8 +146,6 @@ cui/uiconfig/ui/paratabspage.ui://GtkEntry[@id='ED_TABPOS'] no-labelled-by cui/uiconfig/ui/patterntabpage.ui://GtkLabel[@id='label4'] orphan-label cui/uiconfig/ui/percentdialog.ui://GtkSpinButton[@id='margin'] no-labelled-by cui/uiconfig/ui/pickgraphicpage.ui://GtkLabel[@id='errorft'] orphan-label -cui/uiconfig/ui/positionpage.ui://GtkLabel[@id='rotateandscale'] orphan-label -cui/uiconfig/ui/positionpage.ui://GtkLabel[@id='scale'] orphan-label cui/uiconfig/ui/securityoptionsdialog.ui://GtkImage[@id='lockwhenprinting'] no-labelled-by cui/uiconfig/ui/securityoptionsdialog.ui://GtkImage[@id='locksavesenddocs'] no-labelled-by cui/uiconfig/ui/securityoptionsdialog.ui://GtkImage[@id='lockwhensigning'] no-labelled-by