desktop/uiconfig/ui/updatedialog.ui | 167 ++++++++++++++---------------- svx/source/dialog/hexcolorcontrol.cxx | 5 vcl/inc/qt5/QtInstanceSpinButton.hxx | 1 vcl/qt5/QtInstanceFormattedSpinButton.cxx | 3 vcl/qt5/QtInstanceSpinButton.cxx | 6 + 5 files changed, 95 insertions(+), 87 deletions(-)
New commits: commit 2122a0ebac61d6eb0fc39e03230f10775186fe51 Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Sat Aug 2 00:22:26 2025 +0200 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Sat Aug 2 09:17:33 2025 +0200 tdf#130857 svx: Don't restore non-existing sel in hex col control In HexColorControl::SetColor, only try to restore a previous text selection in the entry if there was actually one, by taking the return value of weld::get_selection_bounds into account. This fixes these warnings seen in a WIP branch with the qt6 VCL plugin when using native Qt widgets with SAL_VCL_QT_USE_WELDED_WIDGETS=1 because QLineEdit::selectionStart [1] and QLineEdit::selectionEnd [2] both return -1 if there is no selection: QLineEdit::setSelection: Invalid start position (-1) QLineEdit::setSelection: Invalid start position (-1) QLineEdit::setSelection: Invalid start position (-1) [1] https://doc.qt.io/qt-6/qlineedit.html#selectionStart [2] https://doc.qt.io/qt-6/qlineedit.html#selectionEnd Change-Id: I16940859e2442644b6c9998458a644fcb7fcf197 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188788 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> diff --git a/svx/source/dialog/hexcolorcontrol.cxx b/svx/source/dialog/hexcolorcontrol.cxx index fbf6b9ea66d4..1c043359d73d 100644 --- a/svx/source/dialog/hexcolorcontrol.cxx +++ b/svx/source/dialog/hexcolorcontrol.cxx @@ -64,9 +64,10 @@ void HexColorControl::SetColor(Color nColor) if (sColor == m_xEntry->get_text()) return; int nStartPos, nEndPos; - m_xEntry->get_selection_bounds(nStartPos, nEndPos); + const bool bSelection = m_xEntry->get_selection_bounds(nStartPos, nEndPos); m_xEntry->set_text(sColor); - m_xEntry->select_region(nStartPos, nEndPos); + if (bSelection) + m_xEntry->select_region(nStartPos, nEndPos); } Color HexColorControl::GetColor() const commit ee69a41aec206fe048227ad7f063e5671058c7b9 Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Sat Aug 2 00:08:19 2025 +0200 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Sat Aug 2 09:17:27 2025 +0200 tdf#130857 qt weld: Unset functions using QtInstanceSpinButton in dtor The QtInstanceSpinButton ctor uses lambda expressions to set the functions for its QtDoubleSpinBox by calling QtDoubleSpinBox::setFormatValueFunction and QtDoubleSpinBox::setParseTextFunction. Those lambda functions make use of `this`, i.e. the QtInstanceSpinButton. Therefore, unset these functions again in the ctor, to avoid potentially using a dangling `this` pointer. This fixes a crash seen with a WIP branch to support the Calc data series dialog when starting that dialog. Do likewise for QtInstanceFormattedSpinButton as well. Backtrace of where the QtInstanceSpinButton got deleted: 1 QtInstanceSpinButton::~QtInstanceSpinButton QtInstanceSpinButton.cxx 47 0x7efe82ccb945 2 QtInstanceSpinButton::~QtInstanceSpinButton QtInstanceSpinButton.cxx 45 0x7efe82ccbb10 3 QtInstanceSpinButton::~QtInstanceSpinButton QtInstanceSpinButton.cxx 45 0x7efe82ccbbd9 4 std::default_delete<weld::SpinButton>::operator() unique_ptr.h 93 0x7efe4b319618 5 std::unique_ptr<weld::SpinButton, std::default_delete<weld::SpinButton>>::~unique_ptr unique_ptr.h 399 0x7efe4b31585f 6 SvxColorTabPage::~SvxColorTabPage tpcolor.cxx 166 0x7efe4b78ad9e 7 SvxColorTabPage::~SvxColorTabPage tpcolor.cxx 161 0x7efe4b78aee9 8 std::default_delete<SfxTabPage>::operator() unique_ptr.h 93 0x7efe4b2c5b08 9 std::__uniq_ptr_impl<SfxTabPage, std::default_delete<SfxTabPage>>::reset unique_ptr.h 205 0x7efe4b629ab8 10 std::__uniq_ptr_impl<SfxTabPage, std::default_delete<SfxTabPage>>::operator= unique_ptr.h 185 0x7efe4b629a3d 11 std::__uniq_ptr_data<SfxTabPage, std::default_delete<SfxTabPage>, true, true>::operator= unique_ptr.h 237 0x7efe4b629a01 12 std::unique_ptr<SfxTabPage, std::default_delete<SfxTabPage>>::operator= unique_ptr.h 409 0x7efe4b61f581 13 SvxAreaTabPage::SetOptimalSize tparea.cxx 144 0x7efe4b775439 14 SvxAreaTabPage::Create tparea.cxx 394 0x7efe4b776a2e 15 SfxTabDialogController::CreatePages tabdlg.cxx 935 0x7efe907cff2d 16 SfxTabDialogController::Start_Impl tabdlg.cxx 1023 0x7efe907d0ed9 17 SfxTabDialogController::runAsync tabdlg.cxx 1080 0x7efe907d12ce 18 chart::ChartController::executeDlg_ObjectProperties_withUndoGuard ChartController_Properties.cxx 779 0x7efe4daf2d07 19 chart::ChartController::executeDlg_ObjectProperties ChartController_Properties.cxx 696 0x7efe4daf1f7c 20 chart::ChartController::executeDispatch_ObjectProperties ChartController_Properties.cxx 657 0x7efe4daf207c 21 chart::ChartController::execute_DoubleClick ChartController_Window.cxx 919 0x7efe4db1375e 22 chart::ChartController::execute_MouseButtonUp ChartController_Window.cxx 871 0x7efe4db12d04 23 chart::ChartWindow::MouseButtonUp ChartWindow.cxx 130 0x7efe4db442d0 24 ImplHandleMouseEvent winproc.cxx 746 0x7efe8ae8ab9f 25 ImplHandleSalMouseButtonUp winproc.cxx 2378 0x7efe8ae8f181 26 ImplWindowFrameProc winproc.cxx 2727 0x7efe8ae8de95 27 SalFrame::CallCallback salframe.hxx 310 0x7efe82bec0bc 28 QtFrame::CallCallback QtFrame.hxx 234 0x7efe82be92d5 29 QtWidget::handleMouseButtonEvent QtWidget.cxx 112 0x7efe82d3da7a [...] Backtrace of the crash later when trying to use the already deleted object: 1 weld::SpinButton::convert_double_to_value weld.hxx 1864 0x7efe82c527d2 2 weld::SpinButton::format_floating_point_value weld.hxx 1879 0x7efe82ccf346 3 QtInstanceSpinButton::formatValue QtInstanceSpinButton.cxx 118 0x7efe82ccca59 4 QtInstanceSpinButton::QtInstanceSpinButton(QtDoubleSpinBox *)::$_0::operator()(double) const QtInstanceSpinButton.cxx 38 0x7efe82cccfe1 5 std::__invoke_impl<std::optional<QString>, QtInstanceSpinButton::QtInstanceSpinButton(QtDoubleSpinBox *)::$_0&, double>(std::__invoke_other, QtInstanceSpinButton::QtInstanceSpinButton(QtDoubleSpinBox *)::$_0&, double&&) invoke.h 61 0x7efe82cccdbc 6 std::__invoke_r<std::optional<QString>, QtInstanceSpinButton::QtInstanceSpinButton(QtDoubleSpinBox *)::$_0&, double>(QtInstanceSpinButton::QtInstanceSpinButton(QtDoubleSpinBox *)::$_0&, double&&) invoke.h 114 0x7efe82cccd48 7 std::_Function_handler<std::optional<QString>(double), QtInstanceSpinButton::QtInstanceSpinButton(QtDoubleSpinBox *)::$_0>::_M_invoke std_function.h 290 0x7efe82cccc58 8 std::function<std::optional<QString>(double)>::operator() std_function.h 591 0x7efe82bb6a39 9 QtDoubleSpinBox::textFromValue QtDoubleSpinBox.cxx 26 0x7efe82bb669d 10 QDoubleSpinBoxPrivate::textFromValue qspinbox.cpp 1400 0x7efe7ffdd716 11 QAbstractSpinBoxPrivate::updateEdit qabstractspinbox.cpp 1792 0x7efe7ffd45ca 12 QAbstractSpinBox::showEvent qabstractspinbox.cpp 816 0x7efe7ffd08ef 13 QWidget::event qwidget.cpp 9233 0x7efe7fca80ab 14 QAbstractSpinBox::event qabstractspinbox.cpp 801 0x7efe7ffd0744 15 QApplicationPrivate::notify_helper qapplication.cpp 3307 0x7efe7fbe6130 16 QApplication::notify qapplication.cpp 3253 0x7efe7fbea014 17 QCoreApplication::notifyInternal2 qcoreapplication.cpp 1109 0x7efe81c52ac9 18 QCoreApplication::sendEvent qcoreapplication.cpp 1549 0x7efe81c53739 19 QWidgetPrivate::show_helper qwidget.cpp 8110 0x7efe7fca5226 20 QWidgetPrivate::show_recursive qwidget.cpp 7989 0x7efe7fca503c 21 QWidgetPrivate::showChildren qwidget.cpp 8501 0x7efe7fca5775 22 QWidgetPrivate::show_helper qwidget.cpp 8065 0x7efe7fca50bf 23 QWidgetPrivate::show_recursive qwidget.cpp 7989 0x7efe7fca503c 24 QWidgetPrivate::showChildren qwidget.cpp 8501 0x7efe7fca5775 25 QWidgetPrivate::show_helper qwidget.cpp 8065 0x7efe7fca50bf 26 QWidgetPrivate::show_recursive qwidget.cpp 7989 0x7efe7fca503c 27 QWidgetPrivate::showChildren qwidget.cpp 8501 0x7efe7fca5775 28 QWidgetPrivate::show_helper qwidget.cpp 8065 0x7efe7fca50bf 29 QWidgetPrivate::show_recursive qwidget.cpp 7989 0x7efe7fca503c 30 QWidgetPrivate::showChildren qwidget.cpp 8501 0x7efe7fca5775 31 QWidgetPrivate::show_helper qwidget.cpp 8065 0x7efe7fca50bf 32 QWidgetPrivate::show_recursive qwidget.cpp 7989 0x7efe7fca503c 33 QWidgetPrivate::showChildren qwidget.cpp 8501 0x7efe7fca5775 34 QWidgetPrivate::show_helper qwidget.cpp 8065 0x7efe7fca50bf 35 QWidgetPrivate::show_recursive qwidget.cpp 7989 0x7efe7fca503c 36 QWidgetPrivate::showChildren qwidget.cpp 8501 0x7efe7fca5775 37 QWidgetPrivate::show_helper qwidget.cpp 8065 0x7efe7fca50bf 38 QWidgetPrivate::show_recursive qwidget.cpp 7989 0x7efe7fca503c 39 QWidgetPrivate::showChildren qwidget.cpp 8501 0x7efe7fca5775 40 QWidgetPrivate::show_helper qwidget.cpp 8065 0x7efe7fca50bf 41 QWidgetPrivate::show_recursive qwidget.cpp 7989 0x7efe7fca503c 42 QWidgetPrivate::showChildren qwidget.cpp 8501 0x7efe7fca5775 43 QWidgetPrivate::show_helper qwidget.cpp 8065 0x7efe7fca50bf 44 QWidgetPrivate::show_recursive qwidget.cpp 7989 0x7efe7fca503c 45 QWidgetPrivate::showChildren qwidget.cpp 8501 0x7efe7fca5775 46 QWidgetPrivate::show_helper qwidget.cpp 8065 0x7efe7fca50bf 47 QWidgetPrivate::setVisible qwidget.cpp 8420 0x7efe7fca6c35 48 QWidget::setVisible qwidget.cpp 8348 0x7efe7fca653c 49 QWidgetPrivate::showChildren qwidget.cpp 8508 0x7efe7fca57ad 50 QWidgetPrivate::show_helper qwidget.cpp 8065 0x7efe7fca50bf 51 QWidgetPrivate::show_recursive qwidget.cpp 7989 0x7efe7fca503c 52 QWidgetPrivate::showChildren qwidget.cpp 8501 0x7efe7fca5775 53 QWidgetPrivate::show_helper qwidget.cpp 8065 0x7efe7fca50bf 54 QWidgetPrivate::setVisible qwidget.cpp 8420 0x7efe7fca6c35 55 QDialogPrivate::setVisible qdialog.cpp 781 0x7efe8009579b 56 QDialog::setVisible qdialog.cpp 757 0x7efe80095602 57 QWidget::show qwidget.cpp 7965 0x7efe7fca4f4d 58 QtInstanceDialog::runAsync QtInstanceDialog.cxx 55 0x7efe82c6e2da 59 weld::DialogController::runAsync weldutils.cxx 44 0x7efe8b6ad861 60 SfxTabDialogController::runAsync tabdlg.cxx 1081 0x7efe907d12ec 61 chart::ChartController::executeDlg_ObjectProperties_withUndoGuard ChartController_Properties.cxx 779 0x7efe4daf2d07 62 chart::ChartController::executeDlg_ObjectProperties ChartController_Properties.cxx 696 0x7efe4daf1f7c 63 chart::ChartController::executeDispatch_ObjectProperties ChartController_Properties.cxx 657 0x7efe4daf207c 64 chart::ChartController::execute_DoubleClick ChartController_Window.cxx 919 0x7efe4db1375e 65 chart::ChartController::execute_MouseButtonUp ChartController_Window.cxx 871 0x7efe4db12d04 66 chart::ChartWindow::MouseButtonUp ChartWindow.cxx 130 0x7efe4db442d0 [...] Change-Id: I6147bd9da4f2f35d39ccec6cf7fbedb99d67980d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188787 Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> Tested-by: Jenkins diff --git a/vcl/inc/qt5/QtInstanceSpinButton.hxx b/vcl/inc/qt5/QtInstanceSpinButton.hxx index 0fc5c8b8beda..b8fd0ffab5f7 100644 --- a/vcl/inc/qt5/QtInstanceSpinButton.hxx +++ b/vcl/inc/qt5/QtInstanceSpinButton.hxx @@ -24,6 +24,7 @@ class QtInstanceSpinButton : public QtInstanceEntry, public virtual weld::SpinBu public: QtInstanceSpinButton(QtDoubleSpinBox* pSpinBox); + virtual ~QtInstanceSpinButton(); virtual QWidget* getQWidget() const override; diff --git a/vcl/qt5/QtInstanceFormattedSpinButton.cxx b/vcl/qt5/QtInstanceFormattedSpinButton.cxx index 02db87192b72..655efc04e28e 100644 --- a/vcl/qt5/QtInstanceFormattedSpinButton.cxx +++ b/vcl/qt5/QtInstanceFormattedSpinButton.cxx @@ -90,6 +90,9 @@ void QtInstanceFormattedSpinButton::SetFormatter(weld::EntryFormatter* pFormatte QtInstanceFormattedSpinButton::~QtInstanceFormattedSpinButton() { + m_pSpinBox->setFormatValueFunction(nullptr); + m_pSpinBox->setParseTextFunction(nullptr); + m_pFormatter = nullptr; m_xOwnFormatter.reset(); } diff --git a/vcl/qt5/QtInstanceSpinButton.cxx b/vcl/qt5/QtInstanceSpinButton.cxx index 636c82212db6..14597c4eb2d0 100644 --- a/vcl/qt5/QtInstanceSpinButton.cxx +++ b/vcl/qt5/QtInstanceSpinButton.cxx @@ -41,6 +41,12 @@ QtInstanceSpinButton::QtInstanceSpinButton(QtDoubleSpinBox* pSpinBox) }); } +QtInstanceSpinButton::~QtInstanceSpinButton() +{ + m_pSpinBox->setFormatValueFunction(nullptr); + m_pSpinBox->setParseTextFunction(nullptr); +} + QWidget* QtInstanceSpinButton::getQWidget() const { return m_pSpinBox; } void QtInstanceSpinButton::set_floating_point_value(double fValue) commit 8d020b7382cee8c1a88fa180cff9e989f2b64687 Author: Michael Weghorn <m.wegh...@posteo.de> AuthorDate: Fri Aug 1 17:27:33 2025 +0200 Commit: Michael Weghorn <m.wegh...@posteo.de> CommitDate: Sat Aug 2 09:17:19 2025 +0200 desktop: Resave updatedialog.ui with glade 3.40 This is the "Extension Update" dialog. To trigger the dialog: * download APSO 1.4.2 from [1] * "Tools" -> "Extensions" * install the APSO extension via the "Add" button, etc. * restart LO * "Tools" -> "Extensions" * -> "Check for Updates" [1] https://extensions.libreoffice.org/en/extensions/show/apso-alternative-script-organizer-for-python Change-Id: Ia5981d7d2b057c28397dc957e7a392e323e73a94 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188785 Reviewed-by: Michael Weghorn <m.wegh...@posteo.de> Tested-by: Jenkins diff --git a/desktop/uiconfig/ui/updatedialog.ui b/desktop/uiconfig/ui/updatedialog.ui index 976fbfd10832..29bafec21fbe 100644 --- a/desktop/uiconfig/ui/updatedialog.ui +++ b/desktop/uiconfig/ui/updatedialog.ui @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Generated with glade 3.36.0 --> +<!-- Generated with glade 3.40.0 --> <interface domain="dkt"> <requires lib="gtk+" version="3.20"/> <object class="GtkTreeStore" id="liststore1"> @@ -17,30 +17,30 @@ </columns> </object> <object class="GtkDialog" id="UpdateDialog"> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="hexpand">True</property> <property name="vexpand">True</property> - <property name="border_width">6</property> + <property name="border-width">6</property> <property name="title" translatable="yes" context="updatedialog|UpdateDialog">Extension Update</property> <property name="modal">True</property> - <property name="default_width">0</property> - <property name="default_height">0</property> - <property name="type_hint">dialog</property> + <property name="default-width">0</property> + <property name="default-height">0</property> + <property name="type-hint">dialog</property> <child internal-child="vbox"> <object class="GtkBox" id="dialog-vbox1"> - <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="dialog-action_area1"> - <property name="can_focus">False</property> - <property name="layout_style">end</property> + <property name="can-focus">False</property> + <property name="layout-style">end</property> <child> <object class="GtkButton" id="help"> <property name="label" translatable="yes" context="stock">_Help</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> @@ -55,11 +55,11 @@ <property name="label" translatable="yes" context="updatedialog|INSTALL">_Install</property> <property name="visible">True</property> <property name="sensitive">False</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> @@ -71,8 +71,8 @@ <object class="GtkButton" id="close"> <property name="label" translatable="yes" context="stock">_Close</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> @@ -85,68 +85,68 @@ <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> <child> - <!-- n-columns=1 n-rows=1 --> + <!-- n-columns=1 n-rows=2 --> <object class="GtkGrid"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="hexpand">True</property> <property name="vexpand">True</property> - <property name="row_spacing">12</property> + <property name="row-spacing">12</property> <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="hexpand">True</property> <property name="vexpand">True</property> <property name="orientation">vertical</property> <property name="spacing">6</property> <child> - <!-- n-columns=1 n-rows=1 --> + <!-- n-columns=3 n-rows=1 --> <object class="GtkGrid" id="grid1"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="hexpand">True</property> - <property name="column_spacing">6</property> + <property name="column-spacing">6</property> <child> <object class="GtkLabel" id="UPDATE_LABEL"> <property name="visible">True</property> <property name="sensitive">False</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="halign">start</property> <property name="hexpand">True</property> <property name="label" translatable="yes" context="updatedialog|UPDATE_LABEL">_Available extension updates</property> - <property name="use_underline">True</property> + <property name="use-underline">True</property> </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="GtkLabel" id="UPDATE_CHECKING"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="halign">end</property> <property name="label" translatable="yes" context="updatedialog|UPDATE_CHECKING">Checking...</property> </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="GtkSpinner" id="THROBBER"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> </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> </object> @@ -159,23 +159,23 @@ <child> <object class="GtkScrolledWindow" id="checklistwin"> <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="hscrollbar_policy">never</property> - <property name="vscrollbar_policy">never</property> - <property name="shadow_type">in</property> + <property name="hscrollbar-policy">never</property> + <property name="vscrollbar-policy">never</property> + <property name="shadow-type">in</property> <child> <object class="GtkTreeView" id="checklist"> <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="hexpand">True</property> <property name="vexpand">True</property> <property name="model">liststore1</property> - <property name="headers_visible">False</property> - <property name="search_column">0</property> - <property name="show_expanders">False</property> + <property name="headers-visible">False</property> + <property name="search-column">0</property> + <property name="show-expanders">False</property> <child internal-child="selection"> <object class="GtkTreeSelection"/> </child> @@ -219,10 +219,10 @@ <property name="label" translatable="yes" context="updatedialog|UPDATE_ALL">_Show all updates</property> <property name="visible">True</property> <property name="sensitive">False</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="UPDATE_ALL-atkobject"> <property name="AtkObject::accessible-description" translatable="yes" context="updatedialog|extended_tip|UPDATE_ALL">By default, only the downloadable extensions are shown in the dialog. Mark Show all Updates to see also other extensions and error messages.</property> @@ -237,14 +237,14 @@ </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="GtkBox" id="box3"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="hexpand">True</property> <property name="vexpand">True</property> <property name="orientation">vertical</property> @@ -252,7 +252,7 @@ <child> <object class="GtkLabel" id="DESCRIPTION_LABEL"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="halign">start</property> <property name="label" translatable="yes" context="updatedialog|DESCRIPTION_LABEL">Description</property> </object> @@ -263,63 +263,63 @@ </packing> </child> <child> - <!-- n-columns=1 n-rows=1 --> + <!-- n-columns=2 n-rows=2 --> <object class="GtkGrid" id="grid2"> <property name="visible">True</property> - <property name="can_focus">False</property> - <property name="column_spacing">6</property> + <property name="can-focus">False</property> + <property name="column-spacing">6</property> <child> <object class="GtkLabel" id="PUBLISHER_LABEL"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="halign">start</property> <property name="label" translatable="yes" context="updatedialog|PUBLISHER_LABEL">Publisher:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">PUBLISHER_LINK</property> + <property name="use-underline">True</property> + <property name="mnemonic-widget">PUBLISHER_LINK</property> </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="GtkLinkButton" id="PUBLISHER_LINK"> <property name="label" translatable="yes" context="updatedialog|PUBLISHER_LINK">button</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="relief">none</property> </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="GtkLabel" id="RELEASE_NOTES_LABEL"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can-focus">False</property> <property name="halign">start</property> <property name="label" translatable="yes" context="updatedialog|RELEASE_NOTES_LABEL">What is new:</property> - <property name="use_underline">True</property> - <property name="mnemonic_widget">RELEASE_NOTES_LINK</property> + <property name="use-underline">True</property> + <property name="mnemonic-widget">RELEASE_NOTES_LINK</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="GtkLinkButton" id="RELEASE_NOTES_LINK"> <property name="label" translatable="yes" context="updatedialog|RELEASE_NOTES_LINK">Release notes</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="relief">none</property> </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> </object> @@ -332,21 +332,21 @@ <child> <object class="GtkScrolledWindow" id="DESCRIPTIONSWIN"> <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="shadow_type">in</property> + <property name="shadow-type">in</property> <child> <object class="GtkTextView" id="DESCRIPTIONS"> <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="vexpand">True</property> <property name="editable">False</property> - <property name="wrap_mode">word</property> - <property name="cursor_visible">False</property> - <property name="accepts_tab">False</property> + <property name="wrap-mode">word</property> + <property name="cursor-visible">False</property> + <property name="accepts-tab">False</property> <child internal-child="accessible"> <object class="AtkObject" id="DESCRIPTIONS-atkobject"> <property name="AtkObject::accessible-description" translatable="yes" context="updatedialog|extended_tip|DESCRIPTIONS">While checking for updates, you see a progress indicator. Wait for some messages to show up in the dialog, or click Cancel to abort the update check.</property> @@ -363,8 +363,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> </object> @@ -381,9 +381,6 @@ <action-widget response="-5">ok</action-widget> <action-widget response="-7">close</action-widget> </action-widgets> - <child type="titlebar"> - <placeholder/> - </child> <child internal-child="accessible"> <object class="AtkObject" id="UpdateDialog-atkobject"> <property name="AtkObject::accessible-description" translatable="yes" context="updatedialog|extended_tip|UpdateDialog">Click the Check for Updates button in the Extension Manager to check for online updates for all installed extensions. To check for online updates for only the selected extension, right-click to open the context menu, then choose Update.</property>