Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kwidgetsaddons for openSUSE:Factory checked in at 2021-12-13 20:41:17 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kwidgetsaddons (Old) and /work/SRC/openSUSE:Factory/.kwidgetsaddons.new.2520 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kwidgetsaddons" Mon Dec 13 20:41:17 2021 rev:97 rq:939247 version:5.89.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kwidgetsaddons/kwidgetsaddons.changes 2021-11-15 15:27:07.417835651 +0100 +++ /work/SRC/openSUSE:Factory/.kwidgetsaddons.new.2520/kwidgetsaddons.changes 2021-12-13 20:44:57.600489221 +0100 @@ -1,0 +2,10 @@ +Sat Dec 4 22:57:00 UTC 2021 - Christophe Giboudeaux <[email protected]> + +- Update to 5.89.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/frameworks/5/5.89.0 +- Changes since 5.88.0: + * KAcceleratorManager: Take into account actions with Alt+X shortcuts (kde#444990) + +------------------------------------------------------------------- Old: ---- kwidgetsaddons-5.88.0.tar.xz kwidgetsaddons-5.88.0.tar.xz.sig New: ---- kwidgetsaddons-5.89.0.tar.xz kwidgetsaddons-5.89.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kwidgetsaddons.spec ++++++ --- /var/tmp/diff_new_pack.3T0PHj/_old 2021-12-13 20:44:58.280489304 +0100 +++ /var/tmp/diff_new_pack.3T0PHj/_new 2021-12-13 20:44:58.288489305 +0100 @@ -17,14 +17,14 @@ %define lname libKF5WidgetsAddons5 -%define _tar_path 5.88 +%define _tar_path 5.89 # Full KF5 version (e.g. 5.33.0) %{!?_kf5_version: %global _kf5_version %{version}} # Last major and minor KF5 version (e.g. 5.33) %{!?_kf5_bugfix_version: %define _kf5_bugfix_version %(echo %{_kf5_version} | awk -F. '{print $1"."$2}')} %bcond_without lang Name: kwidgetsaddons -Version: 5.88.0 +Version: 5.89.0 Release: 0 Summary: Large set of desktop widgets License: LGPL-2.1-or-later ++++++ kwidgetsaddons-5.88.0.tar.xz -> kwidgetsaddons-5.89.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwidgetsaddons-5.88.0/CMakeLists.txt new/kwidgetsaddons-5.89.0/CMakeLists.txt --- old/kwidgetsaddons-5.88.0/CMakeLists.txt 2021-11-06 14:26:10.000000000 +0100 +++ new/kwidgetsaddons-5.89.0/CMakeLists.txt 2021-12-04 19:53:17.000000000 +0100 @@ -1,10 +1,10 @@ cmake_minimum_required(VERSION 3.16) -set(KF_VERSION "5.88.0") # handled by release scripts +set(KF_VERSION "5.89.0") # handled by release scripts project(KWidgetsAddons VERSION ${KF_VERSION}) include(FeatureSummary) -find_package(ECM 5.87.0 NO_MODULE) +find_package(ECM 5.89.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://commits.kde.org/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwidgetsaddons-5.88.0/LICENSES/CC0-1.0.txt new/kwidgetsaddons-5.89.0/LICENSES/CC0-1.0.txt --- old/kwidgetsaddons-5.88.0/LICENSES/CC0-1.0.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/kwidgetsaddons-5.89.0/LICENSES/CC0-1.0.txt 2021-12-04 19:53:17.000000000 +0100 @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwidgetsaddons-5.88.0/autotests/kacceleratormanagertest.cpp new/kwidgetsaddons-5.89.0/autotests/kacceleratormanagertest.cpp --- old/kwidgetsaddons-5.88.0/autotests/kacceleratormanagertest.cpp 2021-11-06 14:26:10.000000000 +0100 +++ new/kwidgetsaddons-5.89.0/autotests/kacceleratormanagertest.cpp 2021-12-04 19:53:17.000000000 +0100 @@ -8,6 +8,7 @@ #include <kacceleratormanager.h> #include <QMenu> +#include <QPushButton> #include <QTest> #define QSL QStringLiteral @@ -75,6 +76,26 @@ QCOMPARE(texts, expectedTexts); } + void testExistingActionsShortcutsAreTakenIntoAccount() + { + std::unique_ptr<QWidget> w(new QWidget()); + + QPushButton *pb = new QPushButton(QSL("Open"), w.get()); + + KAcceleratorManager::manage(w.get()); + QCOMPARE(pb->text(), QSL("&Open")); + + delete pb; + pb = new QPushButton(QSL("Open"), w.get()); + + QAction *a = new QAction(); + a->setShortcut(QSL("Alt+O")); + w->addAction(a); + + KAcceleratorManager::manage(w.get()); + QCOMPARE(pb->text(), QSL("O&pen")); + } + void testActionIconTexts_data() { QTest::addColumn<QStringList>("initialTexts"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwidgetsaddons-5.88.0/po/hsb/kwidgetsaddons5_qt.po new/kwidgetsaddons-5.89.0/po/hsb/kwidgetsaddons5_qt.po --- old/kwidgetsaddons-5.88.0/po/hsb/kwidgetsaddons5_qt.po 2021-11-06 14:26:10.000000000 +0100 +++ new/kwidgetsaddons-5.89.0/po/hsb/kwidgetsaddons5_qt.po 2021-12-04 19:53:17.000000000 +0100 @@ -20,7 +20,6 @@ "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" "%100==4 ? 2 : 3;\n" -"X-Generator: KAider 0.1\n" "X-Qt-Contexts: true\n" #. Generic sans serif font presented in font choosers. When selected, the system will choose a real font, mandated by distro settings. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwidgetsaddons-5.88.0/po/ko/kwidgetsaddons5_qt.po new/kwidgetsaddons-5.89.0/po/ko/kwidgetsaddons5_qt.po --- old/kwidgetsaddons-5.88.0/po/ko/kwidgetsaddons5_qt.po 2021-11-06 14:26:10.000000000 +0100 +++ new/kwidgetsaddons-5.89.0/po/ko/kwidgetsaddons5_qt.po 2021-12-04 19:53:17.000000000 +0100 @@ -9,7 +9,7 @@ "Project-Id-Version: kdelibs4\n" "Report-Msgid-Bugs-To: http://bugs.kde.org\n" "POT-Creation-Date: 2014-03-23 01:50+0000\n" -"PO-Revision-Date: 2021-07-31 14:47+0200\n" +"PO-Revision-Date: 2021-11-12 00:51+0100\n" "Last-Translator: Shinjo Park <[email protected]>\n" "Language-Team: Korean <[email protected]>\n" "Language: ko\n" @@ -17,7 +17,7 @@ "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Lokalize 20.12.3\n" +"X-Generator: Lokalize 21.08.1\n" "X-Qt-Contexts: true\n" #. Generic sans serif font presented in font choosers. When selected, the system will choose a real font, mandated by distro settings. @@ -83,7 +83,7 @@ #: kcharselect-translation.cpp:11 kcharselect.cpp:470 kcharselectdata.cpp:285 msgctxt "KCharSelectData|KCharSelect section name" msgid "All" -msgstr "" +msgstr "??????" #: kcharselect-translation.cpp:12 msgctxt "KCharSelectData|KCharSelect section name" @@ -1283,7 +1283,7 @@ #: kcharselectdata.cpp:448 msgctxt "KCharSelectData|KCharselect unicode section name" msgid "All" -msgstr "" +msgstr "??????" #: kcharselectdata.cpp:760 msgctxt "KCharSelectData|" @@ -1636,7 +1636,7 @@ #: kfontchooser.cpp:213 msgctxt "KFontChooser|@item font" msgid "Bold Condensed Oblique" -msgstr "" +msgstr "?????? ????????? ????????????" #: kfontchooser.cpp:257 msgctxt "KFontChooser|" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwidgetsaddons-5.88.0/po/zh_CN/kwidgetsaddons5_qt.po new/kwidgetsaddons-5.89.0/po/zh_CN/kwidgetsaddons5_qt.po --- old/kwidgetsaddons-5.88.0/po/zh_CN/kwidgetsaddons5_qt.po 2021-11-06 14:26:10.000000000 +0100 +++ new/kwidgetsaddons-5.89.0/po/zh_CN/kwidgetsaddons5_qt.po 2021-12-04 19:53:17.000000000 +0100 @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: kdeorg\n" -"PO-Revision-Date: 2021-10-29 13:25\n" +"PO-Revision-Date: 2021-11-30 15:21\n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" "MIME-Version: 1.0\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwidgetsaddons-5.88.0/src/CMakeLists.txt new/kwidgetsaddons-5.89.0/src/CMakeLists.txt --- old/kwidgetsaddons-5.88.0/src/CMakeLists.txt 2021-11-06 14:26:10.000000000 +0100 +++ new/kwidgetsaddons-5.89.0/src/CMakeLists.txt 2021-12-04 19:53:17.000000000 +0100 @@ -6,86 +6,179 @@ ecm_create_qm_loader(KF5WidgetsAddons kwidgetsaddons5_qt) target_sources(KF5WidgetsAddons PRIVATE - kacceleratormanager.cpp - kanimatedbutton.cpp - kbusyindicatorwidget.cpp - kcharselect.cpp - kcharselectdata.cpp - kcollapsiblegroupbox.cpp - kcolorbutton.cpp - kcolumnresizer.cpp - kdatecombobox.cpp - kdatepicker.cpp - kdatetable.cpp - kdatetimeedit.cpp - kfontaction.cpp - knewpasswordwidget.cpp - kfontsizeaction.cpp - kpopupframe.cpp - kselectaction.cpp - ktimecombobox.cpp - kdragwidgetdecorator.cpp - kdualaction.cpp - kfontchooser.cpp - kfontchooserdialog.cpp - kguiitem.cpp - kled.cpp - kmessagebox.cpp - kmessagebox_p.cpp - kmultitabbar.cpp - kstandardguiitem.cpp - kurllabel.cpp # Not good enough quality. Needs to use QUrl instead of QString and should not inherit QLabel, but hold it as a member instead. - kcapacitybar.cpp - kfontrequester.cpp - kpassworddialog.cpp - kruler.cpp - krecentfilesmenu.cpp - kselector.cpp - kxyselector.cpp - kseparator.cpp - ksqueezedtextlabel.cpp - ktitlewidget.cpp - ktoggleaction.cpp - ktogglefullscreenaction.cpp - kviewstateserializer.cpp - kviewstatemaintainerbase.cpp - keditlistwidget.cpp - kcursor.cpp - kratingwidget.cpp - kratingpainter.cpp - kactionselector.cpp - kcolorcombo.cpp - ktoolbarspaceraction.cpp - kpixmapregionselectordialog.cpp - kpixmapregionselectorwidget.cpp - kactionmenu.cpp - ktoolbarlabelaction.cpp - ktoolbarpopupaction.cpp - kpagedialog.cpp - kpagemodel.cpp - kpageview.cpp - kpageview_p.cpp - kpagewidget.cpp - kpagewidgetmodel.cpp - kassistantdialog.cpp - kmessagewidget.cpp - kmessagedialog.cpp - knewpassworddialog.cpp - lineediturldropeventfilter.cpp - kpasswordlineedit.cpp - kpixmapsequence.cpp - kpixmapsequenceoverlaypainter.cpp - kpixmapsequencewidget.cpp - kmimetypechooser.cpp - kmimetypeeditor.cpp - common_helpers.cpp - ksplittercollapserbutton.cpp - kstyleextensions.cpp - ktooltipwidget.cpp - ktwofingerswipe.cpp - ktwofingertap.cpp + common_helpers.cpp + common_helpers_p.h + fonthelpers_p.h + kacceleratormanager.cpp + kacceleratormanager.h + kacceleratormanager_p.h + kactionmenu.cpp + kactionmenu.h + kactionselector.cpp + kactionselector.h + kanimatedbutton.cpp + kanimatedbutton.h + kassistantdialog.cpp + kassistantdialog.h + kbusyindicatorwidget.cpp + kbusyindicatorwidget.h + kcapacitybar.cpp + kcapacitybar.h + kcharselect.cpp + kcharselectdata.cpp + kcharselectdata_p.h + kcharselect.h + kcharselect_p.h + kcollapsiblegroupbox.cpp + kcollapsiblegroupbox.h + kcolorbutton.cpp + kcolorbutton.h + kcolorcombo.cpp + kcolorcombo.h + kcolumnresizer.cpp + kcolumnresizer.h + kcursor.cpp + kcursor.h + kcursor_p.h + kdatecombobox.cpp + kdatecombobox.h + kdatepicker.cpp + kdatepicker.h + kdatepicker_p.h + kdatetable.cpp + kdatetable_p.h + kdatetimeedit.cpp + kdatetimeedit.h + kdragwidgetdecorator.cpp + kdragwidgetdecorator.h + kdualaction.cpp + kdualaction.h + kdualaction_p.h + keditlistwidget.cpp + keditlistwidget.h + kfontaction.cpp + kfontaction.h + kfontchooser.cpp + kfontchooserdialog.cpp + kfontchooserdialog.h + kfontchooser.h + kfontrequester.cpp + kfontrequester.h + kfontsizeaction.cpp + kfontsizeaction.h + kguiitem.cpp + kguiitem.h + kled.cpp + kled.h + kmessagebox.cpp + kmessageboxdontaskagaininterface.h + kmessagebox.h + kmessageboxnotifyinterface.h + kmessagebox_p.cpp + kmessagebox_p.h + kmessagedialog.cpp + kmessagedialog.h + kmessagewidget.cpp + kmessagewidget.h + kmimetypechooser.cpp + kmimetypechooser.h + kmimetypeeditor.cpp + kmimetypeeditor.h + kmultitabbar.cpp + kmultitabbar.h + kmultitabbar_p.h + knewpassworddialog.cpp + knewpassworddialog.h + knewpasswordwidget.cpp + knewpasswordwidget.h + kpagedialog.cpp + kpagedialog.h + kpagedialog_p.h + kpagemodel.cpp + kpagemodel.h + kpagemodel_p.h + kpageview.cpp + kpageview.h + kpageview_p.cpp + kpageview_p.h + kpagewidget.cpp + kpagewidget.h + kpagewidgetmodel.cpp + kpagewidgetmodel.h + kpagewidgetmodel_p.h + kpagewidget_p.h + kpassworddialog.cpp + kpassworddialog.h + kpasswordlineedit.cpp + kpasswordlineedit.h + kpixmapregionselectordialog.cpp + kpixmapregionselectordialog.h + kpixmapregionselectorwidget.cpp + kpixmapregionselectorwidget.h + kpixmapsequence.cpp + kpixmapsequence.h + kpixmapsequenceoverlaypainter.cpp + kpixmapsequenceoverlaypainter.h + kpixmapsequencewidget.cpp + kpixmapsequencewidget.h + kpopupframe.cpp + kpopupframe.h + kratingpainter.cpp + kratingpainter.h + kratingwidget.cpp + kratingwidget.h + krecentfilesmenu.cpp + krecentfilesmenu.h + kruler.cpp + kruler.h + kselectaction.cpp + kselectaction.h + kselectaction_p.h + kselector.cpp + kselector.h + kseparator.cpp + kseparator.h + ksplittercollapserbutton.cpp + ksplittercollapserbutton.h + ksqueezedtextlabel.cpp + ksqueezedtextlabel.h + kstandardguiitem.cpp + kstandardguiitem.h + kstyleextensions.cpp + kstyleextensions.h + ktimecombobox.cpp + ktimecombobox.h + ktitlewidget.cpp + ktitlewidget.h + ktoggleaction.cpp + ktoggleaction.h + ktoggleaction_p.h + ktogglefullscreenaction.cpp + ktogglefullscreenaction.h + ktoolbarlabelaction.cpp + ktoolbarlabelaction.h + ktoolbarpopupaction.cpp + ktoolbarpopupaction.h + ktoolbarspaceraction.cpp + ktoolbarspaceraction.h + ktooltipwidget.cpp + ktooltipwidget.h + ktwofingerswipe.cpp + ktwofingerswipe.h + ktwofingertap.cpp + ktwofingertap.h + kurllabel.cpp # Not good enough quality. Needs to use QUrl instead of QString and should not inherit QLabel, but hold it as a member instead. + kurllabel.h + kviewstatemaintainerbase.cpp + kviewstatemaintainerbase.h + kviewstateserializer.cpp + kviewstateserializer.h + kxyselector.cpp + kxyselector.h + lineediturldropeventfilter.cpp + lineediturldropeventfilter.h - icons.qrc + icons.qrc ) set(kwidgetsaddons_UI_SRCS) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwidgetsaddons-5.88.0/src/kacceleratormanager.cpp new/kwidgetsaddons-5.89.0/src/kacceleratormanager.cpp --- old/kwidgetsaddons-5.88.0/src/kacceleratormanager.cpp 2021-11-06 14:26:10.000000000 +0100 +++ new/kwidgetsaddons-5.89.0/src/kacceleratormanager.cpp 2021-12-04 19:53:17.000000000 +0100 @@ -94,9 +94,8 @@ Item *root = new Item; - manageWidget(widget, root); - QString used; + manageWidget(widget, root, used); calculateAccelerators(root, used); delete root; } @@ -175,7 +174,7 @@ } } -void KAcceleratorManagerPrivate::traverseChildren(QWidget *widget, Item *item) +void KAcceleratorManagerPrivate::traverseChildren(QWidget *widget, Item *item, QString &used) { const QList<QWidget *> childList = widget->findChildren<QWidget *>(); for (QWidget *w : childList) { @@ -192,12 +191,29 @@ continue; } - manageWidget(w, item); + manageWidget(w, item, used); } } -void KAcceleratorManagerPrivate::manageWidget(QWidget *w, Item *item) +void KAcceleratorManagerPrivate::manageWidget(QWidget *w, Item *item, QString &used) { + // If the widget has any action whose shortcuts contain keystrokes in the + // form of Alt+X we need to mark X as used, otherwise we may assign it as accelerator + // and there will be a conflict when trying to use it + const QList<QAction *> widgetActions = w->actions(); + for (QAction *action : widgetActions) { + const QList<QKeySequence> actionShortcuts = action->shortcuts(); + for (const QKeySequence &sequence : actionShortcuts) { + const QString sequenceAsText = sequence.toString(QKeySequence::PortableText); + const QStringList splitSequence = sequenceAsText.split(QStringLiteral(", ")); + for (const QString &shortcut : splitSequence) { + if (shortcut.length() == 5 && shortcut.startsWith(QStringLiteral("Alt+"))) { + used.append(shortcut.right(1)); + } + } + } + } + // first treat the special cases QTabBar *tabBar = qobject_cast<QTabBar *>(w); @@ -247,7 +263,7 @@ } if (w->inherits("KUrlRequester")) { - traverseChildren(w, item); + traverseChildren(w, item, used); return; } @@ -316,7 +332,7 @@ item->addChild(i); } } - traverseChildren(w, item); + traverseChildren(w, item, used); } void KAcceleratorManagerPrivate::manageTabBar(QTabBar *bar, Item *item) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kwidgetsaddons-5.88.0/src/kacceleratormanager_p.h new/kwidgetsaddons-5.89.0/src/kacceleratormanager_p.h --- old/kwidgetsaddons-5.88.0/src/kacceleratormanager_p.h 2021-11-06 14:26:10.000000000 +0100 +++ new/kwidgetsaddons-5.89.0/src/kacceleratormanager_p.h 2021-12-04 19:53:17.000000000 +0100 @@ -227,9 +227,9 @@ typedef QList<Item *> ItemList; private: - static void traverseChildren(QWidget *widget, Item *item); + static void traverseChildren(QWidget *widget, Item *item, QString &used); - static void manageWidget(QWidget *widget, Item *item); + static void manageWidget(QWidget *widget, Item *item, QString &used); static void manageMenuBar(QMenuBar *mbar, Item *item); static void manageTabBar(QTabBar *bar, Item *item); static void manageDockWidget(QDockWidget *dock, Item *item);
