diff options
Diffstat (limited to 'src/widgets/widgets')
-rw-r--r-- | src/widgets/widgets/qabstractbutton.cpp | 1 | ||||
-rw-r--r-- | src/widgets/widgets/qabstractbutton.h | 4 | ||||
-rw-r--r-- | src/widgets/widgets/qcalendarwidget.cpp | 35 | ||||
-rw-r--r-- | src/widgets/widgets/qdatetimeedit.cpp | 27 | ||||
-rw-r--r-- | src/widgets/widgets/qdatetimeedit_p.h | 1 | ||||
-rw-r--r-- | src/widgets/widgets/qlabel.cpp | 1 | ||||
-rw-r--r-- | src/widgets/widgets/qlineedit.cpp | 7 | ||||
-rw-r--r-- | src/widgets/widgets/qlineedit_p.cpp | 18 | ||||
-rw-r--r-- | src/widgets/widgets/qlineedit_p.h | 8 | ||||
-rw-r--r-- | src/widgets/widgets/qmdisubwindow.cpp | 8 | ||||
-rw-r--r-- | src/widgets/widgets/qmenu.cpp | 38 | ||||
-rw-r--r-- | src/widgets/widgets/qmenu.h | 54 | ||||
-rw-r--r-- | src/widgets/widgets/qmenubar.cpp | 17 | ||||
-rw-r--r-- | src/widgets/widgets/qtoolbar.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qtoolbarlayout.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qtoolbarlayout_p.h | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qtoolbutton.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qwidgettextcontrol.cpp | 5 |
18 files changed, 123 insertions, 109 deletions
diff --git a/src/widgets/widgets/qabstractbutton.cpp b/src/widgets/widgets/qabstractbutton.cpp index d956d2ba23..c2f8538ab7 100644 --- a/src/widgets/widgets/qabstractbutton.cpp +++ b/src/widgets/widgets/qabstractbutton.cpp @@ -52,7 +52,6 @@ #include "qpainter.h" #include "qapplication.h" #include "qstyle.h" -#include "qaction.h" #ifndef QT_NO_ACCESSIBILITY #include "qaccessible.h" #endif diff --git a/src/widgets/widgets/qabstractbutton.h b/src/widgets/widgets/qabstractbutton.h index e8dee142f2..c6f6e4c546 100644 --- a/src/widgets/widgets/qabstractbutton.h +++ b/src/widgets/widgets/qabstractbutton.h @@ -42,7 +42,9 @@ #include <QtWidgets/qtwidgetsglobal.h> #include <QtGui/qicon.h> -#include <QtGui/qkeysequence.h> +#if QT_CONFIG(shortcut) +# include <QtGui/qkeysequence.h> +#endif #include <QtWidgets/qwidget.h> QT_REQUIRE_CONFIG(abstractbutton); diff --git a/src/widgets/widgets/qcalendarwidget.cpp b/src/widgets/widgets/qcalendarwidget.cpp index cc0c51b237..8593001f8b 100644 --- a/src/widgets/widgets/qcalendarwidget.cpp +++ b/src/widgets/widgets/qcalendarwidget.cpp @@ -309,15 +309,17 @@ QString QCalendarMonthValidator::text() const QString QCalendarMonthValidator::text(QDate date, QCalendar cal, int repeat) const { - if (repeat <= 1) { - return QString::number(date.month(cal)); - } else if (repeat == 2) { - return formatNumber(date.month(cal), 2); - } else if (repeat == 3) { - return cal.standaloneMonthName(m_locale, date.month(cal), QLocale::ShortFormat); - } else /*if (repeat >= 4)*/ { - return cal.standaloneMonthName(m_locale, date.month(cal), QLocale::LongFormat); - } + const auto parts = cal.partsFromDate(date); + // Numeric forms: + if (repeat <= 1) + return QString::number(parts.month); + if (repeat == 2) + return formatNumber(parts.month, 2); + // Text forms: + if (repeat == 3) + return cal.standaloneMonthName(m_locale, parts.month, parts.year, QLocale::ShortFormat); + /* repeat >= 4 */ + return cal.standaloneMonthName(m_locale, parts.month, parts.year, QLocale::LongFormat); } ////////////////////////////////// @@ -923,6 +925,11 @@ public: QDate referenceDate() const; int columnForFirstOfMonth(QDate date) const; + QString monthName(const QLocale &locale, int month) + { + return m_calendar.standaloneMonthName(locale, month, m_shownYear, QLocale::LongFormat); + } + int m_firstColumn; int m_firstRow; QCalendar m_calendar; @@ -1786,8 +1793,8 @@ void QCalendarWidgetPrivate::createNavigationBar(QWidget *widget) monthButton->setAutoRaise(true); monthButton->setPopupMode(QToolButton::InstantPopup); monthMenu = new QMenu(monthButton); - for (int i = 1; i <= 12; i++) { - QString monthName(m_model->m_calendar.standaloneMonthName(q->locale(), i, QLocale::LongFormat)); + for (int i = 1, e = m_model->m_calendar.maximumMonthsInYear(); i <= e; i++) { + QString monthName(m_model->monthName(q->locale(), i)); QAction *act = monthMenu->addAction(monthName); act->setData(i); monthToAction[i] = act; @@ -1876,7 +1883,7 @@ void QCalendarWidgetPrivate::updateMonthMenuNames() Q_Q(QCalendarWidget); for (int i = 1; i <= 12; i++) { - QString monthName(m_model->m_calendar.standaloneMonthName(q->locale(), i, QLocale::LongFormat)); + QString monthName(m_model->monthName(q->locale(), i)); monthToAction[i]->setText(monthName); } } @@ -1979,7 +1986,7 @@ void QCalendarWidgetPrivate::updateNavigationBar() { Q_Q(QCalendarWidget); - QString monthName = m_model->m_calendar.standaloneMonthName(q->locale(), m_model->m_shownMonth, QLocale::LongFormat); + QString monthName = m_model->monthName(q->locale(), m_model->m_shownMonth); monthButton->setText(monthName); yearEdit->setValue(m_model->m_shownYear); @@ -2277,7 +2284,7 @@ QSize QCalendarWidget::minimumSizeHint() const QFontMetrics fm = d->monthButton->fontMetrics(); int monthW = 0; for (int i = 1; i < 12; i++) { - QString monthName = d->m_model->m_calendar.standaloneMonthName(locale(), i, QLocale::LongFormat); + QString monthName = d->m_model->monthName(locale(), i); monthW = qMax(monthW, fm.boundingRect(monthName).width()); } const int buttonDecoMargin = d->monthButton->sizeHint().width() - fm.boundingRect(d->monthButton->text()).width(); diff --git a/src/widgets/widgets/qdatetimeedit.cpp b/src/widgets/widgets/qdatetimeedit.cpp index e26993fb23..f348bbed0e 100644 --- a/src/widgets/widgets/qdatetimeedit.cpp +++ b/src/widgets/widgets/qdatetimeedit.cpp @@ -2308,33 +2308,6 @@ void QDateTimeEdit::paintEvent(QPaintEvent *event) style()->drawComplexControl(QStyle::CC_ComboBox, &optCombo, &p, this); } -/* - Returns the string for AM and PM markers. - - If a translation for "AM" and "PM" is installed, then use that. - Otherwise, use the default implementation, which uses the locale. -*/ -QString QDateTimeEditPrivate::getAmPmText(AmPm ap, Case cs) const -{ - QString original; - QString translated; - if (ap == AmText) { - original = QLatin1String(cs == UpperCase ? "AM" : "am"); - translated = (cs == UpperCase ? QDateTimeParser::tr("AM") : QDateTimeParser::tr("am")); - } else { - original = QLatin1String(cs == UpperCase ? "PM" : "pm"); - translated = (cs == UpperCase ? QDateTimeParser::tr("PM") : QDateTimeParser::tr("pm")); - } - - // This logic fails if a translation exists but doesn't change the string, - // which we can accept as a corner-case for which a locale-derived answer - // will be acceptable. - if (original != translated) - return translated; - - return QDateTimeParser::getAmPmText(ap, cs); -} - int QDateTimeEditPrivate::absoluteIndex(QDateTimeEdit::Section s, int index) const { for (int i=0; i<sectionNodes.size(); ++i) { diff --git a/src/widgets/widgets/qdatetimeedit_p.h b/src/widgets/widgets/qdatetimeedit_p.h index dcf8863c8b..392bb0c778 100644 --- a/src/widgets/widgets/qdatetimeedit_p.h +++ b/src/widgets/widgets/qdatetimeedit_p.h @@ -97,7 +97,6 @@ public: QDateTime getMinimum() const override { return minimum.toDateTime(); } QDateTime getMaximum() const override { return maximum.toDateTime(); } QLocale locale() const override { return q_func()->locale(); } - QString getAmPmText(AmPm ap, Case cs) const override; int cursorPosition() const override { return edit ? edit->cursorPosition() : -1; } int absoluteIndex(QDateTimeEdit::Section s, int index) const; diff --git a/src/widgets/widgets/qlabel.cpp b/src/widgets/widgets/qlabel.cpp index a840bf4ee6..943b30bacc 100644 --- a/src/widgets/widgets/qlabel.cpp +++ b/src/widgets/widgets/qlabel.cpp @@ -47,7 +47,6 @@ #include "qstyle.h" #include "qstyleoption.h" #include <limits.h> -#include "qaction.h" #include "qclipboard.h" #include <qdebug.h> #include <qurl.h> diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp index 7f482a6a4e..fe0d87d8c1 100644 --- a/src/widgets/widgets/qlineedit.cpp +++ b/src/widgets/widgets/qlineedit.cpp @@ -40,7 +40,9 @@ #include "qlineedit.h" #include "qlineedit_p.h" -#include "qaction.h" +#if QT_CONFIG(action) +# include "qaction.h" +#endif #include "qapplication.h" #include "qclipboard.h" #if QT_CONFIG(draganddrop) @@ -78,7 +80,7 @@ #endif #include "private/qstylesheetstyle_p.h" -#ifndef QT_NO_SHORTCUT +#if QT_CONFIG(shortcut) #include "private/qapplication_p.h" #include "private/qshortcutmap_p.h" #include "qkeysequence.h" @@ -2226,6 +2228,7 @@ QMenu *QLineEdit::createStandardContextMenu() action = popup->addAction(QLineEdit::tr("Select All") + ACCEL_KEY(QKeySequence::SelectAll)); action->setEnabled(!d->control->text().isEmpty() && !d->control->allSelected()); + setActionIcon(action, QStringLiteral("edit-select-all")); d->selectAllAction = action; connect(action, SIGNAL(triggered()), SLOT(selectAll())); diff --git a/src/widgets/widgets/qlineedit_p.cpp b/src/widgets/widgets/qlineedit_p.cpp index d2b5f87906..462691ffb3 100644 --- a/src/widgets/widgets/qlineedit_p.cpp +++ b/src/widgets/widgets/qlineedit_p.cpp @@ -47,7 +47,9 @@ #if QT_CONFIG(draganddrop) #include "qdrag.h" #endif -#include "qwidgetaction.h" +#if QT_CONFIG(action) +# include "qwidgetaction.h" +#endif #include "qclipboard.h" #ifndef QT_NO_ACCESSIBILITY #include "qaccessible.h" @@ -370,7 +372,7 @@ void QLineEditIconButton::actionEvent(QActionEvent *e) { switch (e->type()) { case QEvent::ActionChanged: { - const QAction *action = e->action(); + const auto *action = e->action(); if (isVisibleTo(parentWidget()) != action->isVisible()) { setVisible(action->isVisible()); if (QLineEditPrivate *lep = lineEditPrivate()) @@ -545,7 +547,8 @@ void QLineEditPrivate::positionSideWidgets() } } -QLineEditPrivate::SideWidgetLocation QLineEditPrivate::findSideWidget(const QAction *a) const +#if QT_CONFIG(action) +QLineEditPrivate::SideWidgetLocation QLineEditPrivate::findSideWidget(const QGuiAction *a) const { int i = 0; for (const auto &e : leadingSideWidgets) { @@ -574,12 +577,10 @@ QWidget *QLineEditPrivate::addAction(QAction *newAction, QAction *before, QLineE QWidget *w = 0; // Store flags about QWidgetAction here since removeAction() may be called from ~QAction, // in which a qobject_cast<> no longer works. -#if QT_CONFIG(action) if (QWidgetAction *widgetAction = qobject_cast<QWidgetAction *>(newAction)) { if ((w = widgetAction->requestWidget(q))) flags |= SideWidgetCreatedByWidgetAction; } -#endif if (!w) { #if QT_CONFIG(toolbutton) QLineEditIconButton *toolButton = new QLineEditIconButton(q); @@ -634,9 +635,8 @@ QWidget *QLineEditPrivate::addAction(QAction *newAction, QAction *before, QLineE return w; } -void QLineEditPrivate::removeAction(QAction *action) +void QLineEditPrivate::removeAction(QGuiAction *action) { -#if QT_CONFIG(action) Q_Q(QLineEdit); const auto location = findSideWidget(action); if (!location.isValid()) @@ -652,10 +652,8 @@ void QLineEditPrivate::removeAction(QAction *action) if (!hasSideWidgets()) // Last widget, remove connection QObject::disconnect(q, SIGNAL(textChanged(QString)), q, SLOT(_q_textChanged(QString))); q->update(); -#else - Q_UNUSED(action); -#endif // QT_CONFIG(action) } +#endif // QT_CONFIG(action) static int effectiveTextMargin(int defaultMargin, const QLineEditPrivate::SideWidgetEntryList &widgets, const QLineEditPrivate::SideWidgetParameters ¶meters) diff --git a/src/widgets/widgets/qlineedit_p.h b/src/widgets/widgets/qlineedit_p.h index a11fea6bbe..bb2a0530f1 100644 --- a/src/widgets/widgets/qlineedit_p.h +++ b/src/widgets/widgets/qlineedit_p.h @@ -238,8 +238,10 @@ public: QString placeholderText; +#if QT_CONFIG(action) QWidget *addAction(QAction *newAction, QAction *before, QLineEdit::ActionPosition, int flags = 0); - void removeAction(QAction *action); + void removeAction(QGuiAction *action); +#endif SideWidgetParameters sideWidgetParameters() const; QIcon clearButtonIcon() const; void setClearButtonEnabled(bool enabled); @@ -261,7 +263,9 @@ private: }; friend class QTypeInfo<SideWidgetLocation>; - SideWidgetLocation findSideWidget(const QAction *a) const; +#if QT_CONFIG(action) + SideWidgetLocation findSideWidget(const QGuiAction *a) const; +#endif SideWidgetEntryList leadingSideWidgets; SideWidgetEntryList trailingSideWidgets; diff --git a/src/widgets/widgets/qmdisubwindow.cpp b/src/widgets/widgets/qmdisubwindow.cpp index d58a1d06db..f4d3367a95 100644 --- a/src/widgets/widgets/qmdisubwindow.cpp +++ b/src/widgets/widgets/qmdisubwindow.cpp @@ -162,7 +162,9 @@ #include <QDebug> #include <QMdiArea> #include <QScopedValueRollback> -#include <QAction> +#if QT_CONFIG(action) +# include <qaction.h> +#endif #if QT_CONFIG(menu) #include <QMenu> #endif @@ -895,7 +897,7 @@ QMdiSubWindowPrivate::QMdiSubWindowPrivate() */ void QMdiSubWindowPrivate::_q_updateStaysOnTopHint() { -#ifndef QT_NO_ACTION +#if QT_CONFIG(action) Q_Q(QMdiSubWindow); if (QAction *senderAction = qobject_cast<QAction *>(q->sender())) { if (senderAction->isChecked()) { @@ -906,7 +908,7 @@ void QMdiSubWindowPrivate::_q_updateStaysOnTopHint() q->lower(); } } -#endif // QT_NO_ACTION +#endif // QT_CONFIG(action) } /*! diff --git a/src/widgets/widgets/qmenu.cpp b/src/widgets/widgets/qmenu.cpp index 51b458f03a..0fc89ad2e4 100644 --- a/src/widgets/widgets/qmenu.cpp +++ b/src/widgets/widgets/qmenu.cpp @@ -157,10 +157,11 @@ public: Q_D(QTornOffMenu); if(menu != d->causedMenu) return; + auto action = static_cast<QAction *>(act->action()); if (act->type() == QEvent::ActionAdded) { - insertAction(act->before(), act->action()); + insertAction(static_cast<QAction *>(act->before()), action); } else if (act->type() == QEvent::ActionRemoved) - removeAction(act->action()); + removeAction(action); } void actionEvent(QActionEvent *e) override { @@ -403,7 +404,9 @@ void QMenuPrivate::updateActionRects(const QRect &screen) const //calculate size QFontMetrics qfm = q->fontMetrics(); bool previousWasSeparator = true; // this is true to allow removing the leading separators +#if QT_CONFIG(shortcut) const bool contextMenu = isContextMenu(); +#endif for(int i = 0; i <= lastVisibleAction; i++) { QAction *action = actions.at(i); const bool isSection = action->isSeparator() && (!action->text().isEmpty() || !action->icon().isNull()); @@ -434,12 +437,12 @@ void QMenuPrivate::updateActionRects(const QRect &screen) const if (t != -1) { tabWidth = qMax(int(tabWidth), qfm.horizontalAdvance(s.mid(t+1))); s = s.left(t); - #ifndef QT_NO_SHORTCUT +#if QT_CONFIG(shortcut) } else if (action->isShortcutVisibleInContextMenu() || !contextMenu) { QKeySequence seq = action->shortcut(); if (!seq.isEmpty()) tabWidth = qMax(int(tabWidth), qfm.horizontalAdvance(seq.toString(QKeySequence::NativeText))); - #endif +#endif } sz.setWidth(fm.boundingRect(QRect(), Qt::TextSingleLine | Qt::TextShowMnemonic, s).width()); sz.setHeight(qMax(fm.height(), qfm.height())); @@ -1767,12 +1770,14 @@ QAction *QMenu::addAction(const QIcon &icon, const QString &text) \sa QWidget::addAction() */ -QAction *QMenu::addAction(const QString &text, const QObject *receiver, const char* member, const QKeySequence &shortcut) +QAction *QMenu::addAction(const QString &text, const QObject *receiver, const char* member +#if QT_CONFIG(shortcut) + , const QKeySequence &shortcut +#endif + ) { QAction *action = new QAction(text, this); -#ifdef QT_NO_SHORTCUT - Q_UNUSED(shortcut); -#else +#if QT_CONFIG(shortcut) action->setShortcut(shortcut); #endif QObject::connect(action, SIGNAL(triggered(bool)), receiver, member); @@ -1860,12 +1865,14 @@ QAction *QMenu::addAction(const QString &text, const QObject *receiver, const ch \sa QWidget::addAction() */ QAction *QMenu::addAction(const QIcon &icon, const QString &text, const QObject *receiver, - const char* member, const QKeySequence &shortcut) + const char* member +#if QT_CONFIG(shortcut) + , const QKeySequence &shortcut +#endif + ) { QAction *action = new QAction(icon, text, this); -#ifdef QT_NO_SHORTCUT - Q_UNUSED(shortcut); -#else +#if QT_CONFIG(shortcut) action->setShortcut(shortcut); #endif QObject::connect(action, SIGNAL(triggered(bool)), receiver, member); @@ -3541,15 +3548,16 @@ void QMenu::actionEvent(QActionEvent *e) wa->releaseWidget(widget); } } - d->widgetItems.remove(e->action()); + d->widgetItems.remove(static_cast<QAction *>(e->action())); } if (!d->platformMenu.isNull()) { + auto action = static_cast<QAction *>(e->action()); if (e->type() == QEvent::ActionAdded) { QPlatformMenuItem *beforeItem = e->before() ? d->platformMenu->menuItemForTag(reinterpret_cast<quintptr>(e->before())) : nullptr; - d->insertActionInPlatformMenu(e->action(), beforeItem); + d->insertActionInPlatformMenu(action, beforeItem); } else if (e->type() == QEvent::ActionRemoved) { QPlatformMenuItem *menuItem = d->platformMenu->menuItemForTag(reinterpret_cast<quintptr>(e->action())); d->platformMenu->removeMenuItem(menuItem); @@ -3557,7 +3565,7 @@ void QMenu::actionEvent(QActionEvent *e) } else if (e->type() == QEvent::ActionChanged) { QPlatformMenuItem *menuItem = d->platformMenu->menuItemForTag(reinterpret_cast<quintptr>(e->action())); if (menuItem) { - d->copyActionToPlatformItem(e->action(), menuItem); + d->copyActionToPlatformItem(action, menuItem); d->platformMenu->syncMenuItem(menuItem); } } diff --git a/src/widgets/widgets/qmenu.h b/src/widgets/widgets/qmenu.h index 84ab9e027a..35d5a865ff 100644 --- a/src/widgets/widgets/qmenu.h +++ b/src/widgets/widgets/qmenu.h @@ -78,8 +78,17 @@ public: using QWidget::addAction; QAction *addAction(const QString &text); QAction *addAction(const QIcon &icon, const QString &text); - QAction *addAction(const QString &text, const QObject *receiver, const char* member, const QKeySequence &shortcut = 0); - QAction *addAction(const QIcon &icon, const QString &text, const QObject *receiver, const char* member, const QKeySequence &shortcut = 0); + + QAction *addAction(const QString &text, const QObject *receiver, const char* member +#if QT_CONFIG(shortcut) + , const QKeySequence &shortcut = {} +#endif + ); + QAction *addAction(const QIcon &icon, const QString &text, const QObject *receiver, const char* member +#if QT_CONFIG(shortcut) + , const QKeySequence &shortcut = {} +#endif + ); #ifdef Q_CLANG_QDOC template<typename Functor> @@ -95,12 +104,14 @@ public: template<class Obj, typename Func1> inline typename std::enable_if<!std::is_same<const char*, Func1>::value && QtPrivate::IsPointerToTypeDerivedFromQObject<Obj*>::Value, QAction *>::type - addAction(const QString &text, const Obj *object, Func1 slot, const QKeySequence &shortcut = 0) + addAction(const QString &text, const Obj *object, Func1 slot +#if QT_CONFIG(shortcut) + , const QKeySequence &shortcut = {} +#endif + ) { QAction *result = addAction(text); -#ifdef QT_NO_SHORTCUT - Q_UNUSED(shortcut) -#else +#if QT_CONFIG(shortcut) result->setShortcut(shortcut); #endif connect(result, &QAction::triggered, object, std::move(slot)); @@ -108,12 +119,14 @@ public: } // addAction(QString): Connect to a functor or function pointer (without context) template <typename Func1> - inline QAction *addAction(const QString &text, Func1 slot, const QKeySequence &shortcut = 0) + inline QAction *addAction(const QString &text, Func1 slot +#if QT_CONFIG(shortcut) + , const QKeySequence &shortcut = {} +#endif + ) { QAction *result = addAction(text); -#ifdef QT_NO_SHORTCUT - Q_UNUSED(shortcut) -#else +#if QT_CONFIG(shortcut) result->setShortcut(shortcut); #endif connect(result, &QAction::triggered, std::move(slot)); @@ -123,12 +136,15 @@ public: template<class Obj, typename Func1> inline typename std::enable_if<!std::is_same<const char*, Func1>::value && QtPrivate::IsPointerToTypeDerivedFromQObject<Obj*>::Value, QAction *>::type - addAction(const QIcon &actionIcon, const QString &text, const Obj *object, Func1 slot, const QKeySequence &shortcut = 0) + addAction(const QIcon &actionIcon, const QString &text, const Obj *object, Func1 slot +#if QT_CONFIG(shortcut) + , const QKeySequence &shortcut = {} +#endif + ) + { QAction *result = addAction(actionIcon, text); -#ifdef QT_NO_SHORTCUT - Q_UNUSED(shortcut) -#else +#if QT_CONFIG(shortcut) result->setShortcut(shortcut); #endif connect(result, &QAction::triggered, object, std::move(slot)); @@ -136,12 +152,14 @@ public: } // addAction(QIcon, QString): Connect to a functor or function pointer (without context) template <typename Func1> - inline QAction *addAction(const QIcon &actionIcon, const QString &text, Func1 slot, const QKeySequence &shortcut = 0) + inline QAction *addAction(const QIcon &actionIcon, const QString &text, Func1 slot +#if QT_CONFIG(shortcut) + , const QKeySequence &shortcut = {} +#endif + ) { QAction *result = addAction(actionIcon, text); -#ifdef QT_NO_SHORTCUT - Q_UNUSED(shortcut) -#else +#if QT_CONFIG(shortcut) result->setShortcut(shortcut); #endif connect(result, &QAction::triggered, std::move(slot)); diff --git a/src/widgets/widgets/qmenubar.cpp b/src/widgets/widgets/qmenubar.cpp index 69b1c5896f..7c08376a2b 100644 --- a/src/widgets/widgets/qmenubar.cpp +++ b/src/widgets/widgets/qmenubar.cpp @@ -1288,21 +1288,22 @@ void QMenuBar::actionEvent(QActionEvent *e) if (!nativeMenuBar) return; + auto action = static_cast<QAction *>(e->action()); if (e->type() == QEvent::ActionAdded) { - QPlatformMenu *menu = d->getPlatformMenu(e->action()); + QPlatformMenu *menu = d->getPlatformMenu(action); if (menu) { - d->copyActionToPlatformMenu(e->action(), menu); + d->copyActionToPlatformMenu(action, menu); - QPlatformMenu *beforeMenu = d->findInsertionPlatformMenu(e->action()); + QPlatformMenu *beforeMenu = d->findInsertionPlatformMenu(action); d->platformMenuBar->insertMenu(menu, beforeMenu); } } else if (e->type() == QEvent::ActionRemoved) { - QPlatformMenu *menu = d->getPlatformMenu(e->action()); + QPlatformMenu *menu = d->getPlatformMenu(action); if (menu) d->platformMenuBar->removeMenu(menu); } else if (e->type() == QEvent::ActionChanged) { QPlatformMenu *cur = d->platformMenuBar->menuForTag(reinterpret_cast<quintptr>(e->action())); - QPlatformMenu *menu = d->getPlatformMenu(e->action()); + QPlatformMenu *menu = d->getPlatformMenu(action); // the menu associated with the action can change, need to // remove and/or insert the new platform menu @@ -1310,13 +1311,13 @@ void QMenuBar::actionEvent(QActionEvent *e) if (cur) d->platformMenuBar->removeMenu(cur); if (menu) { - d->copyActionToPlatformMenu(e->action(), menu); + d->copyActionToPlatformMenu(action, menu); - QPlatformMenu *beforeMenu = d->findInsertionPlatformMenu(e->action()); + QPlatformMenu *beforeMenu = d->findInsertionPlatformMenu(action); d->platformMenuBar->insertMenu(menu, beforeMenu); } } else if (menu) { - d->copyActionToPlatformMenu(e->action(), menu); + d->copyActionToPlatformMenu(action, menu); d->platformMenuBar->syncMenu(menu); } } diff --git a/src/widgets/widgets/qtoolbar.cpp b/src/widgets/widgets/qtoolbar.cpp index 58e9c4fd87..4b821f7e41 100644 --- a/src/widgets/widgets/qtoolbar.cpp +++ b/src/widgets/widgets/qtoolbar.cpp @@ -961,7 +961,7 @@ QAction *QToolBar::actionAt(const QPoint &p) const void QToolBar::actionEvent(QActionEvent *event) { Q_D(QToolBar); - QAction *action = event->action(); + auto action = static_cast<QAction *>(event->action()); QWidgetAction *widgetAction = qobject_cast<QWidgetAction *>(action); switch (event->type()) { diff --git a/src/widgets/widgets/qtoolbarlayout.cpp b/src/widgets/widgets/qtoolbarlayout.cpp index 961a261e8f..5752e0700a 100644 --- a/src/widgets/widgets/qtoolbarlayout.cpp +++ b/src/widgets/widgets/qtoolbarlayout.cpp @@ -207,7 +207,7 @@ void QToolBarLayout::insertAction(int index, QAction *action) } } -int QToolBarLayout::indexOf(QAction *action) const +int QToolBarLayout::indexOf(const QGuiAction *action) const { for (int i = 0; i < items.count(); ++i) { if (items.at(i)->action == action) diff --git a/src/widgets/widgets/qtoolbarlayout_p.h b/src/widgets/widgets/qtoolbarlayout_p.h index b5dc121b93..1a406a3d29 100644 --- a/src/widgets/widgets/qtoolbarlayout_p.h +++ b/src/widgets/widgets/qtoolbarlayout_p.h @@ -96,7 +96,7 @@ public: QSize sizeHint() const override; void insertAction(int index, QAction *action); - int indexOf(QAction *action) const; + int indexOf(const QGuiAction *action) const; using QLayout::indexOf; // bring back the hidden members bool layoutActions(const QSize &size); diff --git a/src/widgets/widgets/qtoolbutton.cpp b/src/widgets/widgets/qtoolbutton.cpp index b00b219386..cced36738c 100644 --- a/src/widgets/widgets/qtoolbutton.cpp +++ b/src/widgets/widgets/qtoolbutton.cpp @@ -466,7 +466,7 @@ void QToolButton::paintEvent(QPaintEvent *) void QToolButton::actionEvent(QActionEvent *event) { Q_D(QToolButton); - QAction *action = event->action(); + auto action = static_cast<QAction *>(event->action()); switch (event->type()) { case QEvent::ActionChanged: if (action == d->defaultAction) diff --git a/src/widgets/widgets/qwidgettextcontrol.cpp b/src/widgets/widgets/qwidgettextcontrol.cpp index 094c59a0c9..f5d3f2f9c0 100644 --- a/src/widgets/widgets/qwidgettextcontrol.cpp +++ b/src/widgets/widgets/qwidgettextcontrol.cpp @@ -92,7 +92,7 @@ #include <QtGui/qaccessible.h> #include <QtCore/qmetaobject.h> -#ifndef QT_NO_SHORTCUT +#if QT_CONFIG(shortcut) #include "private/qapplication_p.h" #include "private/qshortcutmap_p.h" #include <qkeysequence.h> @@ -2362,6 +2362,7 @@ QMenu *QWidgetTextControl::createStandardContextMenu(const QPointF &pos, QWidget a = menu->addAction(tr("Select All") + ACCEL_KEY(QKeySequence::SelectAll), this, SLOT(selectAll())); a->setEnabled(!d->doc->isEmpty()); a->setObjectName(QStringLiteral("select-all")); + setActionIcon(a, QStringLiteral("edit-select-all")); } if ((d->interactionFlags & Qt::TextEditable) && QGuiApplication::styleHints()->useRtlExtensions()) { @@ -2480,7 +2481,7 @@ void QWidgetTextControl::setExtraSelections(const QList<QTextEdit::ExtraSelectio { Q_D(QWidgetTextControl); - QHash<int, int> hash; + QMultiHash<int, int> hash; for (int i = 0; i < d->extraSelections.count(); ++i) { const QAbstractTextDocumentLayout::Selection &esel = d->extraSelections.at(i); hash.insert(esel.cursor.anchor(), i); |