diff options
100 files changed, 675 insertions, 1838 deletions
diff --git a/dependencies.yaml b/dependencies.yaml index 607a345b..ae46bc44 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -1,7 +1,7 @@ dependencies: ../qtgraphicaleffects: - ref: 1a1416501b484166743d8fc98ef24db7be5bbddb + ref: e31622293347936da6878565ffef260f09fc802b required: true ../qtimageformats: - ref: 10c6352fb384b732e942af9ada4cb8d07a793c45 + ref: 5e30a3458e42b06eaca2a780a8e6879835dc6ab5 required: false diff --git a/src/imports/controls/ApplicationWindow.qml b/src/imports/controls/ApplicationWindow.qml index 4686a298..85dfd279 100644 --- a/src/imports/controls/ApplicationWindow.qml +++ b/src/imports/controls/ApplicationWindow.qml @@ -43,7 +43,7 @@ import QtQuick.Templates 2.12 as T T.ApplicationWindow { id: window - color: palette.window + color: window.palette.window overlay.modal: Rectangle { color: Color.transparent(window.palette.shadow, 0.5) diff --git a/src/imports/controls/doc/src/qtquickcontrols2-palette.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-palette.qdoc deleted file mode 100644 index e4bac54a..00000000 --- a/src/imports/controls/doc/src/qtquickcontrols2-palette.qdoc +++ /dev/null @@ -1,107 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the documentation of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:FDL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Free Documentation License Usage -** Alternatively, this file may be used under the terms of the GNU Free -** Documentation License version 1.3 as published by the Free Software -** Foundation and appearing in the file included in the packaging of -** this file. Please review the following information to ensure -** the GNU Free Documentation License version 1.3 requirements -** will be met: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! - \qmlbasictype palette - \brief a palette of colors. - \target qtquickcontrols2-palette - - The \c palette type refers to a palette of colors for various roles. - - Available properties: - \table - \header - \li Property - \li Description - \row - \li \b palette.alternateBase : color - \li Used as the alternate background color in item views with alternating row colors. - \row - \li \b palette.base : color - \li Used mostly as the background color for text editor controls and items views. - It is usually white or another light color. - \row - \li \b palette.brightText : color - \li A text color that is very different from \c palette.windowText, and contrasts - well with e.g. \c palette.dark. Typically used for text that needs to be drawn - where \c palette.text, \c palette.windowText or \c palette.buttonText would - give poor contrast, such as on highlighted buttons. - \row - \li \b palette.button : color - \li The general button background color. This background can be different from - \c palette.window as some styles require a different background color for buttons. - \row - \li \b palette.buttonText : color - \li A foreground color used with the \c palette.button color. - \row - \li \b palette.dark : color - \li Darker than \c palette.button. - \row - \li \b palette.highlight : color - \li A color to indicate a selected item or the current item. - \row - \li \b palette.highlightedText : color - \li A text color that contrasts with \c palette.highlight. - \row - \li \b palette.light : color - \li Lighter than \c palette.button. - \row - \li \b palette.link : color - \li A text color used for hyperlinks. - \row - \li \b palette.linkVisited : color - \li A text color used for already visited hyperlinks. - \row - \li \b palette.mid : color - \li Between \c palette.button and \c palette.dark. - \row - \li \b palette.midlight : color - \li Between \c palette.button and \c palette.light. - \row - \li \b palette.shadow : color - \li A very dark color. - \row - \li \b palette.text : color - \li The foreground color used with \c palette.base. This is usually the same as - the \c palette.windowText, in which case it must provide good contrast with - \c palette.window and \c palette.base. - \row - \li \b palette.toolTipBase : color - \li Used as the background color for tooltips. - \row - \li \b palette.toolTipText : color - \li Used as the foreground color for tooltips. - \row - \li \b palette.window : color - \li A general background color. - \row - \li \b palette.windowText : color - \li A general foreground color. - \endtable - - \sa Control::palette, Popup::palette, ApplicationWindow::palette, QPalette::ColorRole -*/ diff --git a/src/imports/controls/fusion/ApplicationWindow.qml b/src/imports/controls/fusion/ApplicationWindow.qml index 9079403e..30c921cb 100644 --- a/src/imports/controls/fusion/ApplicationWindow.qml +++ b/src/imports/controls/fusion/ApplicationWindow.qml @@ -43,7 +43,7 @@ import QtQuick.Controls.Fusion.impl 2.12 T.ApplicationWindow { id: window - color: palette.window + color: window.palette.window overlay.modal: Rectangle { color: Fusion.topShadow diff --git a/src/imports/controls/fusion/ComboBox.qml b/src/imports/controls/fusion/ComboBox.qml index d8ef1888..1eeacf8b 100644 --- a/src/imports/controls/fusion/ComboBox.qml +++ b/src/imports/controls/fusion/ComboBox.qml @@ -145,7 +145,6 @@ T.ComboBox { height: Math.min(contentItem.implicitHeight + 2, control.Window.height - topMargin - bottomMargin) topMargin: 6 bottomMargin: 6 - palette: control.palette padding: 1 contentItem: ListView { diff --git a/src/imports/controls/fusion/Dial.qml b/src/imports/controls/fusion/Dial.qml index a1337242..796610b5 100644 --- a/src/imports/controls/fusion/Dial.qml +++ b/src/imports/controls/fusion/Dial.qml @@ -52,7 +52,6 @@ T.Dial { background: DialImpl { implicitWidth: 100 implicitHeight: 100 - palette: control.palette highlight: control.visualFocus } @@ -61,7 +60,6 @@ T.Dial { y: control.background.y + control.background.height / 2 - control.handle.height / 2 width: control.width / 7 height: control.height / 7 - palette: control.palette transform: [ Translate { y: -Math.min(control.background.width, control.background.height) * 0.42 + control.handle.height diff --git a/src/imports/controls/fusion/qquickfusiondial.cpp b/src/imports/controls/fusion/qquickfusiondial.cpp index 50436634..eb6f21ad 100644 --- a/src/imports/controls/fusion/qquickfusiondial.cpp +++ b/src/imports/controls/fusion/qquickfusiondial.cpp @@ -38,6 +38,8 @@ #include <QtGui/qpainter.h> #include <QtGui/private/qmath_p.h> +#include <QtQuick/private/qquickpalette_p.h> +#include <QtQuick/private/qquickitem_p.h> QT_BEGIN_NAMESPACE @@ -60,20 +62,6 @@ void QQuickFusionDial::setHighlight(bool highlight) update(); } -QPalette QQuickFusionDial::palette() const -{ - return m_palette; -} - -void QQuickFusionDial::setPalette(const QPalette &palette) -{ - if (palette == m_palette) - return; - - m_palette = palette; - update(); -} - // based on QStyleHelper::drawDial() void QQuickFusionDial::paint(QPainter *painter) { @@ -82,7 +70,7 @@ void QQuickFusionDial::paint(QPainter *painter) if (width <= 0 || height <= 0 || !isVisible()) return; - QColor buttonColor = m_palette.button().color(); + QColor buttonColor = QQuickItemPrivate::get(this)->palette()->button(); const bool enabled = isEnabled(); qreal r = qMin(width, height) / 2.0; r -= r/50; @@ -137,7 +125,7 @@ void QQuickFusionDial::paint(QPainter *painter) painter->drawEllipse(br.adjusted(1, 1, -1, -1)); if (m_highlight) { - QColor highlight = m_palette.highlight().color(); + QColor highlight = QQuickItemPrivate::get(this)->palette()->highlight(); highlight.setHsv(highlight.hue(), qMin(160, highlight.saturation()), qMax(230, highlight.value())); diff --git a/src/imports/controls/fusion/qquickfusiondial_p.h b/src/imports/controls/fusion/qquickfusiondial_p.h index 740545d8..07c80cdb 100644 --- a/src/imports/controls/fusion/qquickfusiondial_p.h +++ b/src/imports/controls/fusion/qquickfusiondial_p.h @@ -48,7 +48,6 @@ // We mean it. // -#include <QtGui/qpalette.h> #include <QtQuick/qquickpainteditem.h> QT_BEGIN_NAMESPACE @@ -57,7 +56,6 @@ class QQuickFusionDial : public QQuickPaintedItem { Q_OBJECT Q_PROPERTY(bool highlight READ highlight WRITE setHighlight FINAL) - Q_PROPERTY(QPalette palette READ palette WRITE setPalette FINAL) public: explicit QQuickFusionDial(QQuickItem *parent = nullptr); @@ -65,14 +63,10 @@ public: bool highlight() const; void setHighlight(bool highlight); - QPalette palette() const; - void setPalette(const QPalette &palette); - void paint(QPainter *painter) override; private: bool m_highlight = false; - QPalette m_palette; }; QT_END_NAMESPACE diff --git a/src/imports/controls/fusion/qquickfusionknob.cpp b/src/imports/controls/fusion/qquickfusionknob.cpp index 9f1824a6..a641d190 100644 --- a/src/imports/controls/fusion/qquickfusionknob.cpp +++ b/src/imports/controls/fusion/qquickfusionknob.cpp @@ -38,26 +38,15 @@ #include <QtCore/qmath.h> #include <QtGui/qpainter.h> +#include <QtQuick/private/qquickpalette_p.h> +#include <QtQuick/private/qquickitem_p.h> QT_BEGIN_NAMESPACE QQuickFusionKnob::QQuickFusionKnob(QQuickItem *parent) : QQuickPaintedItem(parent) { -} - -QPalette QQuickFusionKnob::palette() const -{ - return m_palette; -} - -void QQuickFusionKnob::setPalette(const QPalette &palette) -{ - if (palette == m_palette) - return; - - m_palette = palette; - update(); + connect(this, &QQuickItem::paletteChanged, this, [this](){ update(); }); } // extracted from QStyleHelper::drawDial() @@ -68,7 +57,7 @@ void QQuickFusionKnob::paint(QPainter *painter) if (w <= 0 || h <= 0) return; - QColor color = m_palette.color(QPalette::Button); + QColor color = QQuickItemPrivate::get(this)->palette()->button(); color.setHsv(color.hue(), qMin(140, color .saturation()), qMax(180, color.value())); diff --git a/src/imports/controls/fusion/qquickfusionknob_p.h b/src/imports/controls/fusion/qquickfusionknob_p.h index 062aaf21..85e5f53e 100644 --- a/src/imports/controls/fusion/qquickfusionknob_p.h +++ b/src/imports/controls/fusion/qquickfusionknob_p.h @@ -48,7 +48,6 @@ // We mean it. // -#include <QtGui/qpalette.h> #include <QtQuick/qquickpainteditem.h> QT_BEGIN_NAMESPACE @@ -56,18 +55,11 @@ QT_BEGIN_NAMESPACE class QQuickFusionKnob : public QQuickPaintedItem { Q_OBJECT - Q_PROPERTY(QPalette palette READ palette WRITE setPalette FINAL) public: explicit QQuickFusionKnob(QQuickItem *parent = nullptr); - QPalette palette() const; - void setPalette(const QPalette &palette); - void paint(QPainter *painter) override; - -private: - QPalette m_palette; }; QT_END_NAMESPACE diff --git a/src/imports/controls/fusion/qquickfusionstyle.cpp b/src/imports/controls/fusion/qquickfusionstyle.cpp index 364f8a75..95064aa4 100644 --- a/src/imports/controls/fusion/qquickfusionstyle.cpp +++ b/src/imports/controls/fusion/qquickfusionstyle.cpp @@ -41,6 +41,8 @@ #include <QtGui/qpa/qplatformtheme.h> #include <QtGui/private/qguiapplication_p.h> +#include <QtQuick/private/qquickpalette_p.h> + QT_BEGIN_NAMESPACE QQuickFusionStyle::QQuickFusionStyle(QObject *parent) @@ -68,22 +70,22 @@ QColor QQuickFusionStyle::innerContrastLine() return QColor(255, 255, 255, 30); } -QColor QQuickFusionStyle::highlight(const QPalette &palette) +QColor QQuickFusionStyle::highlight(QQuickPalette *palette) { - return palette.color(QPalette::Highlight); + return palette->highlight(); } -QColor QQuickFusionStyle::highlightedText(const QPalette &palette) +QColor QQuickFusionStyle::highlightedText(QQuickPalette *palette) { - return palette.color(QPalette::HighlightedText); + return palette->highlightedText(); } -QColor QQuickFusionStyle::outline(const QPalette &palette) +QColor QQuickFusionStyle::outline(QQuickPalette *palette) { - return palette.window().color().darker(140); + return palette->window().darker(140); } -QColor QQuickFusionStyle::highlightedOutline(const QPalette &palette) +QColor QQuickFusionStyle::highlightedOutline(QQuickPalette *palette) { QColor highlightedOutline = highlight(palette).darker(125); if (highlightedOutline.value() > 160) @@ -91,17 +93,17 @@ QColor QQuickFusionStyle::highlightedOutline(const QPalette &palette) return highlightedOutline; } -QColor QQuickFusionStyle::tabFrameColor(const QPalette &palette) +QColor QQuickFusionStyle::tabFrameColor(QQuickPalette *palette) { return buttonColor(palette).lighter(104); } -QColor QQuickFusionStyle::buttonColor(const QPalette &palette, bool highlighted, bool down, bool hovered) +QColor QQuickFusionStyle::buttonColor(QQuickPalette *palette, bool highlighted, bool down, bool hovered) { - QColor buttonColor = palette.button().color(); + QColor buttonColor = palette->button(); int val = qGray(buttonColor.rgb()); buttonColor = buttonColor.lighter(100 + qMax(1, (180 - val)/6)); - buttonColor.setHsv(buttonColor.hue(), buttonColor.saturation() * 0.75, buttonColor.value()); + buttonColor.setHsv(buttonColor.hue(), int(buttonColor.saturation() * 0.75), buttonColor.value()); if (highlighted) buttonColor = mergedColors(buttonColor, highlightedOutline(palette).lighter(130), 90); if (!hovered) @@ -111,7 +113,7 @@ QColor QQuickFusionStyle::buttonColor(const QPalette &palette, bool highlighted, return buttonColor; } -QColor QQuickFusionStyle::buttonOutline(const QPalette &palette, bool highlighted, bool enabled) +QColor QQuickFusionStyle::buttonOutline(QQuickPalette *palette, bool highlighted, bool enabled) { QColor darkOutline = enabled && highlighted ? highlightedOutline(palette) : outline(palette); return !enabled ? darkOutline.lighter(115) : darkOutline; @@ -137,7 +139,7 @@ QColor QQuickFusionStyle::mergedColors(const QColor &colorA, const QColor &color return tmp; } -QColor QQuickFusionStyle::grooveColor(const QPalette &palette) +QColor QQuickFusionStyle::grooveColor(QQuickPalette *palette) { QColor color = buttonColor(palette); color.setHsv(color.hue(), diff --git a/src/imports/controls/fusion/qquickfusionstyle_p.h b/src/imports/controls/fusion/qquickfusionstyle_p.h index e0a99cc6..0e7526ee 100644 --- a/src/imports/controls/fusion/qquickfusionstyle_p.h +++ b/src/imports/controls/fusion/qquickfusionstyle_p.h @@ -53,6 +53,8 @@ QT_BEGIN_NAMESPACE +class QQuickPalette; + class QQuickFusionStyle : public QObject { Q_OBJECT @@ -69,17 +71,17 @@ public: static QColor topShadow(); static QColor innerContrastLine(); - Q_INVOKABLE static QColor highlight(const QPalette &palette); - Q_INVOKABLE static QColor highlightedText(const QPalette &palette); - Q_INVOKABLE static QColor outline(const QPalette &palette); - Q_INVOKABLE static QColor highlightedOutline(const QPalette &palette); - Q_INVOKABLE static QColor tabFrameColor(const QPalette &palette); - Q_INVOKABLE static QColor buttonColor(const QPalette &palette, bool highlighted = false, bool down = false, bool hovered = false); - Q_INVOKABLE static QColor buttonOutline(const QPalette &palette, bool highlighted = false, bool enabled = true); + Q_INVOKABLE static QColor highlight(QQuickPalette *palette); + Q_INVOKABLE static QColor highlightedText(QQuickPalette *palette); + Q_INVOKABLE static QColor outline(QQuickPalette *palette); + Q_INVOKABLE static QColor highlightedOutline(QQuickPalette *palette); + Q_INVOKABLE static QColor tabFrameColor(QQuickPalette *palette); + Q_INVOKABLE static QColor buttonColor(QQuickPalette *palette, bool highlighted = false, bool down = false, bool hovered = false); + Q_INVOKABLE static QColor buttonOutline(QQuickPalette *palette, bool highlighted = false, bool enabled = true); Q_INVOKABLE static QColor gradientStart(const QColor &baseColor); Q_INVOKABLE static QColor gradientStop(const QColor &baseColor); Q_INVOKABLE static QColor mergedColors(const QColor &colorA, const QColor &colorB, int factor = 50); - Q_INVOKABLE static QColor grooveColor(const QPalette &palette); + Q_INVOKABLE static QColor grooveColor(QQuickPalette *palette); }; QT_END_NAMESPACE diff --git a/src/imports/templates/qtquicktemplates2plugin.cpp b/src/imports/templates/qtquicktemplates2plugin.cpp index 9c57b471..28ce0bf0 100644 --- a/src/imports/templates/qtquicktemplates2plugin.cpp +++ b/src/imports/templates/qtquicktemplates2plugin.cpp @@ -68,7 +68,6 @@ #include <QtQuickTemplates2/private/qquickoverlay_p.h> #include <QtQuickTemplates2/private/qquickpage_p.h> #include <QtQuickTemplates2/private/qquickpageindicator_p.h> -#include <QtQuickTemplates2/private/qquickpaletteprovider_p.h> #include <QtQuickTemplates2/private/qquickpane_p.h> #include <QtQuickTemplates2/private/qquickpopup_p.h> #include <QtQuickTemplates2/private/qquickpopupanchors_p.h> @@ -102,6 +101,8 @@ #include <QtQuickTemplates2/private/qquicktumbler_p.h> #endif +#include <QtQuick/private/qquickpalette_p.h> + #if QT_CONFIG(shortcut) // qtdeclarative/src/quick/util/qquickshortcut.cpp typedef bool (*ShortcutContextMatcher)(QObject *, Qt::ShortcutContext); @@ -111,16 +112,6 @@ extern void qt_quick_set_shortcut_context_matcher(ShortcutContextMatcher matcher QT_BEGIN_NAMESPACE -static void initProviders() -{ - QQuickPaletteProvider::init(); -} - -static void cleanupProviders() -{ - QQuickPaletteProvider::cleanup(); -} - class QtQuickTemplates2Plugin: public QQmlExtensionPlugin { Q_OBJECT @@ -159,7 +150,6 @@ void QtQuickTemplates2Plugin::registerTypes(const char *uri) #endif registered = true; - initProviders(); // The minor version used to be the current Qt 5 minor. For compatibility it is the last // Qt 5 release. @@ -281,6 +271,9 @@ void QtQuickTemplates2Plugin::registerTypes(const char *uri) qmlRegisterRevision<QQuickText, 9>(uri, 2, 2); qmlRegisterRevision<QQuickTextInput, 9>(uri, 2, 2); qmlRegisterRevision<QQuickWindowQmlImpl, 3>(uri, 2, 2); + qmlRegisterRevision<QQuickWindowQmlImpl, 3>(uri, 2, 3); + qmlRegisterRevision<QQuickWindow, 3>(uri, 2, 3); + qmlRegisterRevision<QQuickItem, 3>(uri, 2, 3); // QtQuick.Templates 2.3 (new types and revisions in Qt 5.10) qmlRegisterType<QQuickAbstractButton, 3>(uri, 2, 3, "AbstractButton"); @@ -314,6 +307,9 @@ void QtQuickTemplates2Plugin::registerTypes(const char *uri) // make revisioned properties available to their subclasses (synced with Qt 5.10) qmlRegisterRevision<QQuickText, 10>(uri, 2, 3); qmlRegisterRevision<QQuickTextEdit, 10>(uri, 2, 3); + // For backward compatibility + qmlRegisterType<QQuickColorGroup, 13>(uri, 2, 13, "ColorGroup"); + qmlRegisterType<QQuickPalette, 13>(uri, 2, 13, "Palette"); // QtQuick.Templates 2.4 (new types and revisions in Qt 5.11) qmlRegisterType<QQuickAbstractButton, 4>(uri, 2, 4, "AbstractButton"); @@ -364,9 +360,6 @@ void QtQuickTemplates2Plugin::registerTypes(const char *uri) void QtQuickTemplates2Plugin::unregisterTypes() { - if (registered) - cleanupProviders(); - #if QT_CONFIG(shortcut) qt_quick_set_shortcut_context_matcher(originalContextMatcher); #endif diff --git a/src/quicktemplates2/qquickapplicationwindow.cpp b/src/quicktemplates2/qquickapplicationwindow.cpp index 903de676..d7ff9a26 100644 --- a/src/quicktemplates2/qquickapplicationwindow.cpp +++ b/src/quicktemplates2/qquickapplicationwindow.cpp @@ -50,6 +50,7 @@ #include <QtCore/private/qobject_p.h> #include <QtQuick/private/qquickitem_p.h> #include <QtQuick/private/qquickitemchangelistener_p.h> +#include <QtQuick/private/qquickwindowmodule_p_p.h> QT_BEGIN_NAMESPACE @@ -119,11 +120,18 @@ QT_BEGIN_NAMESPACE static const QQuickItemPrivate::ChangeTypes ItemChanges = QQuickItemPrivate::Visibility | QQuickItemPrivate::Geometry | QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight; -class QQuickApplicationWindowPrivate : public QQuickItemChangeListener +class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickApplicationWindowPrivate + : public QQuickWindowQmlImplPrivate + , public QQuickItemChangeListener { Q_DECLARE_PUBLIC(QQuickApplicationWindow) public: + QQuickApplicationWindowPrivate() + { + complete = true; + } + static QQuickApplicationWindowPrivate *get(QQuickApplicationWindow *window) { return window->d_func(); @@ -146,14 +154,6 @@ public: } void resolveFont(); - void updatePalette(const QPalette &p); - inline void setPalette_helper(const QPalette &p) { - if (palette.resolve() == p.resolve() && palette == p) - return; - updatePalette(p); - } - void resolvePalette(); - void _q_updateActiveFocus(); void setActiveFocusControl(QQuickItem *item); @@ -162,18 +162,26 @@ public: void cancelBackground(); void executeBackground(bool complete = false); - bool complete = true; + QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::System); } + void updateChildrenPalettes(const QPalette &parentPalette) override + { + // Update regular children + QQuickWindowPrivate::updateChildrenPalettes(parentPalette); + + // And cover one special case + for (auto &&popup : q_func()->findChildren<QQuickPopup *>()) + QQuickPopupPrivate::get(popup)->inheritPalette(parentPalette); + } + QQuickDeferredPointer<QQuickItem> background; - QQuickItem *contentItem = nullptr; + QQuickItem *appWindowContentItem = nullptr; QQuickItem *menuBar = nullptr; QQuickItem *header = nullptr; QQuickItem *footer = nullptr; QQuickOverlay *overlay = nullptr; QFont font; QLocale locale; - QPalette palette; QQuickItem *activeFocusControl = nullptr; - QQuickApplicationWindow *q_ptr = nullptr; }; static void layoutItem(QQuickItem *item, qreal y, qreal width) @@ -269,28 +277,6 @@ void QQuickApplicationWindowPrivate::resolveFont() setFont_helper(resolvedFont); } -void QQuickApplicationWindowPrivate::updatePalette(const QPalette &p) -{ - Q_Q(QQuickApplicationWindow); - const bool changed = palette != p; - palette = p; - - QQuickControlPrivate::updatePaletteRecur(q->QQuickWindow::contentItem(), p); - - const QList<QQuickPopup *> popups = q->findChildren<QQuickPopup *>(); - for (QQuickPopup *popup : popups) - QQuickControlPrivate::get(static_cast<QQuickControl *>(popup->popupItem()))->inheritPalette(p); - - if (changed) - emit q->paletteChanged(); -} - -void QQuickApplicationWindowPrivate::resolvePalette() -{ - QPalette resolvedPalette = palette.resolve(QQuickTheme::palette(QQuickTheme::System)); - setPalette_helper(resolvedPalette); -} - static QQuickItem *findActiveFocusControl(QQuickWindow *window) { QQuickItem *item = window->activeFocusItem(); @@ -347,9 +333,8 @@ void QQuickApplicationWindowPrivate::executeBackground(bool complete) } QQuickApplicationWindow::QQuickApplicationWindow(QWindow *parent) - : QQuickWindowQmlImpl(parent), d_ptr(new QQuickApplicationWindowPrivate) + : QQuickWindowQmlImpl(*(new QQuickApplicationWindowPrivate), parent) { - d_ptr->q_ptr = this; connect(this, SIGNAL(activeFocusItemChanged()), this, SLOT(_q_updateActiveFocus())); } @@ -364,7 +349,6 @@ QQuickApplicationWindow::~QQuickApplicationWindow() QQuickItemPrivate::get(d->header)->removeItemChangeListener(d, ItemChanges); if (d->footer) QQuickItemPrivate::get(d->footer)->removeItemChangeListener(d, ItemChanges); - d_ptr.reset(); // QTBUG-52731 } QQuickApplicationWindowAttached *QQuickApplicationWindow::qmlAttachedProperties(QObject *object) @@ -575,13 +559,13 @@ QQmlListProperty<QObject> QQuickApplicationWindowPrivate::contentData() QQuickItem *QQuickApplicationWindow::contentItem() const { QQuickApplicationWindowPrivate *d = const_cast<QQuickApplicationWindowPrivate *>(d_func()); - if (!d->contentItem) { - d->contentItem = new QQuickContentItem(this, QQuickWindow::contentItem()); - d->contentItem->setFlag(QQuickItem::ItemIsFocusScope); - d->contentItem->setFocus(true); + if (!d->appWindowContentItem) { + d->appWindowContentItem = new QQuickContentItem(this, QQuickWindow::contentItem()); + d->appWindowContentItem->setFlag(QQuickItem::ItemIsFocusScope); + d->appWindowContentItem->setFocus(true); d->relayout(); } - return d->contentItem; + return d->appWindowContentItem; } /*! @@ -739,43 +723,6 @@ void QQuickApplicationWindow::resetLocale() /*! \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty palette QtQuick.Controls::ApplicationWindow::palette - - This property holds the palette currently set for the window. - - The default palette depends on the system environment. QGuiApplication maintains a system/theme - palette which serves as a default for all application windows. You can also set the default palette - for windows by passing a custom palette to QGuiApplication::setPalette(), before loading any QML. - - ApplicationWindow propagates explicit palette properties to child controls. If you change a specific - property on the window's palette, that property propagates to all child controls in the window, - overriding any system defaults for that property. - - \sa Control::palette, Popup::palette, {qtquickcontrols2-palette}{palette QML Basic Type} -*/ -QPalette QQuickApplicationWindow::palette() const -{ - Q_D(const QQuickApplicationWindow); - return d->palette; -} - -void QQuickApplicationWindow::setPalette(const QPalette &palette) -{ - Q_D(QQuickApplicationWindow); - if (d->palette.resolve() == palette.resolve() && d->palette == palette) - return; - - QPalette resolvedPalette = palette.resolve(QQuickTheme::palette(QQuickTheme::System)); - d->setPalette_helper(resolvedPalette); -} - -void QQuickApplicationWindow::resetPalette() -{ - setPalette(QPalette()); -} - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) \qmlproperty Item QtQuick.Controls::ApplicationWindow::menuBar This property holds the window menu bar. The menu bar is positioned at the @@ -833,7 +780,6 @@ void QQuickApplicationWindow::classBegin() d->complete = false; QQuickWindowQmlImpl::classBegin(); d->resolveFont(); - d->resolvePalette(); } void QQuickApplicationWindow::componentComplete() diff --git a/src/quicktemplates2/qquickapplicationwindow_p.h b/src/quicktemplates2/qquickapplicationwindow_p.h index c004ee3a..14ef6c67 100644 --- a/src/quicktemplates2/qquickapplicationwindow_p.h +++ b/src/quicktemplates2/qquickapplicationwindow_p.h @@ -74,8 +74,9 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickApplicationWindow : public QQuickWi Q_PROPERTY(QFont font READ font WRITE setFont RESET resetFont NOTIFY fontChanged FINAL) Q_PROPERTY(QLocale locale READ locale WRITE setLocale RESET resetLocale NOTIFY localeChanged FINAL) // 2.3 (Qt 5.10) - Q_PROPERTY(QPalette palette READ palette WRITE setPalette RESET resetPalette NOTIFY paletteChanged FINAL REVISION 3) Q_PROPERTY(QQuickItem *menuBar READ menuBar WRITE setMenuBar NOTIFY menuBarChanged FINAL REVISION 3) + // 2.14 (Qt 6) + Q_PRIVATE_PROPERTY(QQuickApplicationWindow::d_func(), QQuickPalette *palette READ palette WRITE setPalette RESET resetPalette NOTIFY paletteChanged REVISION 3) Q_CLASSINFO("DeferredPropertyNames", "background") Q_CLASSINFO("DefaultProperty", "contentData") @@ -108,11 +109,6 @@ public: void setLocale(const QLocale &locale); void resetLocale(); - // 2.3 (Qt 5.10) - QPalette palette() const; - void setPalette(const QPalette &palette); - void resetPalette(); - QQuickItem *menuBar() const; void setMenuBar(QQuickItem *menuBar); @@ -123,7 +119,6 @@ Q_SIGNALS: void footerChanged(); void fontChanged(); void localeChanged(); - Q_REVISION(3) void paletteChanged(); Q_REVISION(3) void menuBarChanged(); protected: @@ -136,7 +131,6 @@ private: Q_DISABLE_COPY(QQuickApplicationWindow) Q_DECLARE_PRIVATE(QQuickApplicationWindow) Q_PRIVATE_SLOT(d_func(), void _q_updateActiveFocus()) - QScopedPointer<QQuickApplicationWindowPrivate> d_ptr; }; class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickApplicationWindowAttached : public QObject diff --git a/src/quicktemplates2/qquickbutton.cpp b/src/quicktemplates2/qquickbutton.cpp index 780492bf..5e8e6221 100644 --- a/src/quicktemplates2/qquickbutton.cpp +++ b/src/quicktemplates2/qquickbutton.cpp @@ -99,11 +99,6 @@ QFont QQuickButton::defaultFont() const return QQuickTheme::font(QQuickTheme::Button); } -QPalette QQuickButton::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::Button); -} - /*! \qmlproperty bool QtQuick.Controls::Button::highlighted @@ -159,4 +154,9 @@ void QQuickButton::setFlat(bool flat) emit flatChanged(); } +QPalette QQuickButtonPrivate::defaultPalette() const +{ + return QQuickTheme::palette(QQuickTheme::Button); +} + QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickbutton_p.h b/src/quicktemplates2/qquickbutton_p.h index a77db16e..2a757952 100644 --- a/src/quicktemplates2/qquickbutton_p.h +++ b/src/quicktemplates2/qquickbutton_p.h @@ -77,7 +77,6 @@ protected: QQuickButton(QQuickButtonPrivate &dd, QQuickItem *parent); QFont defaultFont() const override; - QPalette defaultPalette() const override; private: Q_DISABLE_COPY(QQuickButton) diff --git a/src/quicktemplates2/qquickbutton_p_p.h b/src/quicktemplates2/qquickbutton_p_p.h index 1d02e2ea..e83e3209 100644 --- a/src/quicktemplates2/qquickbutton_p_p.h +++ b/src/quicktemplates2/qquickbutton_p_p.h @@ -57,6 +57,8 @@ class QQuickButtonPrivate : public QQuickAbstractButtonPrivate Q_DECLARE_PUBLIC(QQuickButton) public: + QPalette defaultPalette() const override; + bool flat = false; bool highlighted = false; }; diff --git a/src/quicktemplates2/qquickcheckbox.cpp b/src/quicktemplates2/qquickcheckbox.cpp index f5b12e62..e3184ceb 100644 --- a/src/quicktemplates2/qquickcheckbox.cpp +++ b/src/quicktemplates2/qquickcheckbox.cpp @@ -104,6 +104,8 @@ class QQuickCheckBoxPrivate : public QQuickAbstractButtonPrivate public: void setNextCheckState(const QJSValue &callback); + QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::CheckBox); } + bool tristate = false; Qt::CheckState checkState = Qt::Unchecked; QJSValue nextCheckState; @@ -186,11 +188,6 @@ QFont QQuickCheckBox::defaultFont() const return QQuickTheme::font(QQuickTheme::CheckBox); } -QPalette QQuickCheckBox::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::CheckBox); -} - void QQuickCheckBox::buttonChange(ButtonChange change) { if (change == ButtonCheckedChange) diff --git a/src/quicktemplates2/qquickcheckbox_p.h b/src/quicktemplates2/qquickcheckbox_p.h index f0293c11..1e333d7c 100644 --- a/src/quicktemplates2/qquickcheckbox_p.h +++ b/src/quicktemplates2/qquickcheckbox_p.h @@ -79,7 +79,6 @@ Q_SIGNALS: protected: QFont defaultFont() const override; - QPalette defaultPalette() const override; void buttonChange(ButtonChange change) override; void nextCheckState() override; diff --git a/src/quicktemplates2/qquickcheckdelegate.cpp b/src/quicktemplates2/qquickcheckdelegate.cpp index d8d008ce..7596e104 100644 --- a/src/quicktemplates2/qquickcheckdelegate.cpp +++ b/src/quicktemplates2/qquickcheckdelegate.cpp @@ -91,6 +91,8 @@ class QQuickCheckDelegatePrivate : public QQuickItemDelegatePrivate public: void setNextCheckState(const QJSValue &callback); + QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::ListView); } + bool tristate = false; Qt::CheckState checkState = Qt::Unchecked; QJSValue nextCheckState; @@ -173,11 +175,6 @@ QFont QQuickCheckDelegate::defaultFont() const return QQuickTheme::font(QQuickTheme::ListView); } -QPalette QQuickCheckDelegate::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::ListView); -} - void QQuickCheckDelegate::buttonChange(ButtonChange change) { if (change == ButtonCheckedChange) diff --git a/src/quicktemplates2/qquickcheckdelegate_p.h b/src/quicktemplates2/qquickcheckdelegate_p.h index 2d5a5cb2..67dcf706 100644 --- a/src/quicktemplates2/qquickcheckdelegate_p.h +++ b/src/quicktemplates2/qquickcheckdelegate_p.h @@ -79,7 +79,6 @@ Q_SIGNALS: protected: QFont defaultFont() const override; - QPalette defaultPalette() const override; void buttonChange(ButtonChange change) override; void nextCheckState() override; diff --git a/src/quicktemplates2/qquickcombobox.cpp b/src/quicktemplates2/qquickcombobox.cpp index f8b91b4e..afce8163 100644 --- a/src/quicktemplates2/qquickcombobox.cpp +++ b/src/quicktemplates2/qquickcombobox.cpp @@ -267,6 +267,8 @@ public: static void hideOldPopup(QQuickPopup *popup); + QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::ComboBox); } + bool flat = false; bool down = false; bool hasDown = false; @@ -1942,11 +1944,6 @@ QFont QQuickComboBox::defaultFont() const return QQuickTheme::font(QQuickTheme::ComboBox); } -QPalette QQuickComboBox::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::ComboBox); -} - #if QT_CONFIG(accessibility) QAccessible::Role QQuickComboBox::accessibleRole() const { diff --git a/src/quicktemplates2/qquickcombobox_p.h b/src/quicktemplates2/qquickcombobox_p.h index 282f3d23..8fbbb8fc 100644 --- a/src/quicktemplates2/qquickcombobox_p.h +++ b/src/quicktemplates2/qquickcombobox_p.h @@ -235,7 +235,6 @@ protected: void localeChange(const QLocale &newLocale, const QLocale &oldLocale) override; QFont defaultFont() const override; - QPalette defaultPalette() const override; #if QT_CONFIG(accessibility) QAccessible::Role accessibleRole() const override; diff --git a/src/quicktemplates2/qquickcontrol.cpp b/src/quicktemplates2/qquickcontrol.cpp index 4eb411c2..a29eefd1 100644 --- a/src/quicktemplates2/qquickcontrol.cpp +++ b/src/quicktemplates2/qquickcontrol.cpp @@ -49,6 +49,7 @@ #include "qquickpopupitem_p_p.h" #include "qquickapplicationwindow_p.h" #include "qquickdeferredexecute_p_p.h" +#include "qquickcontentitem_p.h" #if QT_CONFIG(accessibility) #include <QtQuick/private/qquickaccessibleattached_p.h> @@ -489,6 +490,11 @@ void QQuickControlPrivate::updateImplicitContentSize() emit q->implicitContentHeightChanged(); } +QPalette QQuickControlPrivate::defaultPalette() const +{ + return QQuickTheme::palette(QQuickTheme::System); +} + #if QT_CONFIG(accessibility) void QQuickControlPrivate::accessibilityActiveChanged(bool active) { @@ -607,97 +613,6 @@ void QQuickControlPrivate::updateFontRecur(QQuickItem *item, const QFont &font) } } -/*! - \internal - - Returns the palette that the item inherits from its ancestors and - QGuiApplication::palette. -*/ -QPalette QQuickControlPrivate::parentPalette(const QQuickItem *item) -{ - QQuickItem *p = item->parentItem(); - while (p) { - if (QQuickControl *control = qobject_cast<QQuickControl *>(p)) - return control->palette(); - else if (QQuickLabel *label = qobject_cast<QQuickLabel *>(p)) - return label->palette(); - else if (QQuickTextField *textField = qobject_cast<QQuickTextField *>(p)) - return textField->palette(); - else if (QQuickTextArea *textArea = qobject_cast<QQuickTextArea *>(p)) - return textArea->palette(); - - p = p->parentItem(); - } - - if (QQuickApplicationWindow *window = qobject_cast<QQuickApplicationWindow *>(item->window())) - return window->palette(); - - return QQuickTheme::palette(QQuickTheme::System); -} - -/*! - \internal - - Determine which palette is implicitly imposed on this control by its ancestors - and QGuiApplication::palette, resolve this against its own palette (attributes from - the implicit palette are copied over). Then propagate this palette to this - control's children. -*/ -void QQuickControlPrivate::resolvePalette() -{ - Q_Q(QQuickControl); - inheritPalette(parentPalette(q)); -} - -void QQuickControlPrivate::inheritPalette(const QPalette &palette) -{ - Q_Q(QQuickControl); - QPalette parentPalette = extra.isAllocated() ? extra->requestedPalette.resolve(palette) : palette; - parentPalette.resolve(extra.isAllocated() ? extra->requestedPalette.resolve() | palette.resolve() : palette.resolve()); - - const QPalette defaultPalette = q->defaultPalette(); - const QPalette resolvedPalette = parentPalette.resolve(defaultPalette); - - setPalette_helper(resolvedPalette); -} - -/*! - \internal - - Assign \a palette to this control, and propagate it to all children. -*/ -void QQuickControlPrivate::updatePalette(const QPalette &palette) -{ - Q_Q(QQuickControl); - QPalette oldPalette = resolvedPalette; - resolvedPalette = palette; - - if (oldPalette != palette) - q->paletteChange(palette, oldPalette); - - QQuickControlPrivate::updatePaletteRecur(q, palette); - - if (oldPalette != palette) - emit q->paletteChanged(); -} - -void QQuickControlPrivate::updatePaletteRecur(QQuickItem *item, const QPalette &palette) -{ - const auto childItems = item->childItems(); - for (QQuickItem *child : childItems) { - if (QQuickControl *control = qobject_cast<QQuickControl *>(child)) - QQuickControlPrivate::get(control)->inheritPalette(palette); - else if (QQuickLabel *label = qobject_cast<QQuickLabel *>(child)) - QQuickLabelPrivate::get(label)->inheritPalette(palette); - else if (QQuickTextArea *textArea = qobject_cast<QQuickTextArea *>(child)) - QQuickTextAreaPrivate::get(textArea)->inheritPalette(palette); - else if (QQuickTextField *textField = qobject_cast<QQuickTextField *>(child)) - QQuickTextFieldPrivate::get(textField)->inheritPalette(palette); - else - QQuickControlPrivate::updatePaletteRecur(child, palette); - } -} - QLocale QQuickControlPrivate::calcLocale(const QQuickItem *item) { const QQuickItem *p = item; @@ -974,7 +889,6 @@ void QQuickControl::itemChange(QQuickItem::ItemChange change, const QQuickItem:: QQuickItem::itemChange(change, value); switch (change) { case ItemEnabledHasChanged: - emit paletteChanged(); enabledChange(); break; case ItemVisibleHasChanged: @@ -987,7 +901,6 @@ void QQuickControl::itemChange(QQuickItem::ItemChange change, const QQuickItem:: case ItemParentHasChanged: if ((change == ItemParentHasChanged && value.item) || (change == ItemSceneChange && value.window)) { d->resolveFont(); - d->resolvePalette(); if (!d->hasLocale) d->updateLocale(QQuickControlPrivate::calcLocale(d->parentItem), false); // explicit=false #if QT_CONFIG(quicktemplates2_hover) @@ -1711,75 +1624,6 @@ void QQuickControl::resetBaselineOffset() } /*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty palette QtQuick.Controls::Control::palette - - This property holds the palette currently set for the control. - - This property describes the control's requested palette. The palette is used by the control's - style when rendering standard components, and is available as a means to ensure that custom - controls can maintain consistency with the native platform's native look and feel. It's common - that different platforms, or different styles, define different palettes for an application. - - The default palette depends on the system environment. ApplicationWindow maintains a system/theme - palette which serves as a default for all controls. There may also be special palette defaults for - certain types of controls. You can also set the default palette for controls by either: - - \list - \li passing a custom palette to QGuiApplication::setPalette(), before loading any QML; or - \li specifying the colors in the \l {Qt Quick Controls 2 Configuration File}{qtquickcontrols2.conf file}. - \endlist - - Control propagates explicit palette properties from parent to children. If you change a specific - property on a control's palette, that property propagates to all of the control's children, - overriding any system defaults for that property. - - \code - Page { - palette.text: "red" - - Column { - Label { - text: qsTr("This will use red color...") - } - - Switch { - text: qsTr("... and so will this") - } - } - } - \endcode - - For the full list of available palette colors, see the - \l {qtquickcontrols2-palette}{palette QML Basic Type} documentation. - - \sa ApplicationWindow::palette, Popup::palette -*/ -QPalette QQuickControl::palette() const -{ - Q_D(const QQuickControl); - QPalette palette = d->resolvedPalette; - if (!isEnabled()) - palette.setCurrentColorGroup(QPalette::Disabled); - return palette; -} - -void QQuickControl::setPalette(const QPalette &palette) -{ - Q_D(QQuickControl); - if (d->extra.value().requestedPalette.resolve() == palette.resolve() && d->extra.value().requestedPalette == palette) - return; - - d->extra.value().requestedPalette = palette; - d->resolvePalette(); -} - -void QQuickControl::resetPalette() -{ - setPalette(QPalette()); -} - -/*! \since QtQuick.Controls 2.5 (Qt 5.12) \qmlproperty real QtQuick.Controls::Control::horizontalPadding @@ -2056,7 +1900,6 @@ void QQuickControl::classBegin() Q_D(QQuickControl); QQuickItem::classBegin(); d->resolveFont(); - d->resolvePalette(); } void QQuickControl::componentComplete() @@ -2085,11 +1928,6 @@ QFont QQuickControl::defaultFont() const return QQuickTheme::font(QQuickTheme::System); } -QPalette QQuickControl::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::System); -} - void QQuickControl::focusInEvent(QFocusEvent *event) { QQuickItem::focusInEvent(event); @@ -2272,12 +2110,6 @@ void QQuickControl::localeChange(const QLocale &newLocale, const QLocale &oldLoc Q_UNUSED(oldLocale); } -void QQuickControl::paletteChange(const QPalette &newPalette, const QPalette &oldPalette) -{ - Q_UNUSED(newPalette); - Q_UNUSED(oldPalette); -} - void QQuickControl::insetChange(const QMarginsF &newInset, const QMarginsF &oldInset) { Q_D(QQuickControl); diff --git a/src/quicktemplates2/qquickcontrol_p.h b/src/quicktemplates2/qquickcontrol_p.h index d35630a7..e0837a0d 100644 --- a/src/quicktemplates2/qquickcontrol_p.h +++ b/src/quicktemplates2/qquickcontrol_p.h @@ -80,8 +80,6 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickControl : public QQuickItem Q_PROPERTY(QQuickItem *background READ background WRITE setBackground NOTIFY backgroundChanged FINAL) Q_PROPERTY(QQuickItem *contentItem READ contentItem WRITE setContentItem NOTIFY contentItemChanged FINAL) Q_PROPERTY(qreal baselineOffset READ baselineOffset WRITE setBaselineOffset RESET resetBaselineOffset NOTIFY baselineOffsetChanged FINAL) - // 2.3 (Qt 5.10) - Q_PROPERTY(QPalette palette READ palette WRITE setPalette RESET resetPalette NOTIFY paletteChanged FINAL REVISION 3) // 2.5 (Qt 5.12) Q_PROPERTY(qreal horizontalPadding READ horizontalPadding WRITE setHorizontalPadding RESET resetHorizontalPadding NOTIFY horizontalPaddingChanged FINAL REVISION 5) Q_PROPERTY(qreal verticalPadding READ verticalPadding WRITE setVerticalPadding RESET resetVerticalPadding NOTIFY verticalPaddingChanged FINAL REVISION 5) @@ -164,12 +162,7 @@ public: void setBaselineOffset(qreal offset); void resetBaselineOffset(); - // 2.3 (Qt 5.10) - QPalette palette() const; - void setPalette(const QPalette &palette); - void resetPalette(); - - // 2.5 (Qt 5.12) + // 2.5 (Qt 5.12) qreal horizontalPadding() const; void setHorizontalPadding(qreal padding); void resetHorizontalPadding(); @@ -221,8 +214,6 @@ Q_SIGNALS: void backgroundChanged(); void contentItemChanged(); void baselineOffsetChanged(); - // 2.3 (Qt 5.10) - Q_REVISION(3) void paletteChanged(); // 2.5 (Qt 5.12) Q_REVISION(5) void horizontalPaddingChanged(); Q_REVISION(5) void verticalPaddingChanged(); @@ -237,7 +228,6 @@ Q_SIGNALS: protected: virtual QFont defaultFont() const; - virtual QPalette defaultPalette() const; QQuickControl(QQuickControlPrivate &dd, QQuickItem *parent); @@ -276,7 +266,6 @@ protected: virtual void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding); virtual void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem); virtual void localeChange(const QLocale &newLocale, const QLocale &oldLocale); - virtual void paletteChange(const QPalette &newPalette, const QPalette &oldPalette); virtual void insetChange(const QMarginsF &newInset, const QMarginsF &oldInset); virtual void enabledChange(); diff --git a/src/quicktemplates2/qquickcontrol_p_p.h b/src/quicktemplates2/qquickcontrol_p_p.h index fa06c97f..116e8745 100644 --- a/src/quicktemplates2/qquickcontrol_p_p.h +++ b/src/quicktemplates2/qquickcontrol_p_p.h @@ -145,17 +145,6 @@ public: } static QFont parentFont(const QQuickItem *item); - virtual void resolvePalette(); - void inheritPalette(const QPalette &palette); - void updatePalette(const QPalette &palette); - static void updatePaletteRecur(QQuickItem *item, const QPalette &palette); - inline void setPalette_helper(const QPalette &palette) { - if (resolvedPalette.resolve() == palette.resolve() && resolvedPalette == palette) - return; - updatePalette(palette); - } - static QPalette parentPalette(const QQuickItem *item); - void updateLocale(const QLocale &l, bool e); static void updateLocaleRecur(QQuickItem *item, const QLocale &l); static QLocale calcLocale(const QQuickItem *item); @@ -196,6 +185,8 @@ public: void updateImplicitContentHeight(); void updateImplicitContentSize(); + QPalette defaultPalette() const override; + struct ExtraData { bool hasTopPadding = false; bool hasLeftPadding = false; @@ -217,7 +208,6 @@ public: qreal rightInset = 0; qreal bottomInset = 0; QFont requestedFont; - QPalette requestedPalette; }; QLazilyAllocated<ExtraData> extra; @@ -241,7 +231,6 @@ public: qreal spacing = 0; QLocale locale; QFont resolvedFont; - QPalette resolvedPalette; Qt::FocusPolicy focusPolicy = Qt::NoFocus; Qt::FocusReason focusReason = Qt::OtherFocusReason; QQuickDeferredPointer<QQuickItem> background; diff --git a/src/quicktemplates2/qquickdelaybutton.cpp b/src/quicktemplates2/qquickdelaybutton.cpp index abc1488d..25e12263 100644 --- a/src/quicktemplates2/qquickdelaybutton.cpp +++ b/src/quicktemplates2/qquickdelaybutton.cpp @@ -84,6 +84,8 @@ public: void finishTransition(); void cancelTransition(); + QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::Button); } + int delay = 300; qreal progress = 0.0; QQuickTransition *transition = nullptr; @@ -259,11 +261,6 @@ QFont QQuickDelayButton::defaultFont() const return QQuickTheme::font(QQuickTheme::Button); } -QPalette QQuickDelayButton::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::Button); -} - QT_END_NAMESPACE #include "moc_qquickdelaybutton_p.cpp" diff --git a/src/quicktemplates2/qquickdelaybutton_p.h b/src/quicktemplates2/qquickdelaybutton_p.h index 0927eb4a..5ac0885d 100644 --- a/src/quicktemplates2/qquickdelaybutton_p.h +++ b/src/quicktemplates2/qquickdelaybutton_p.h @@ -85,7 +85,6 @@ protected: void nextCheckState() override; QFont defaultFont() const override; - QPalette defaultPalette() const override; private: Q_DISABLE_COPY(QQuickDelayButton) diff --git a/src/quicktemplates2/qquickgroupbox.cpp b/src/quicktemplates2/qquickgroupbox.cpp index 70ec30dc..4a58f163 100644 --- a/src/quicktemplates2/qquickgroupbox.cpp +++ b/src/quicktemplates2/qquickgroupbox.cpp @@ -95,6 +95,8 @@ public: void itemImplicitWidthChanged(QQuickItem *item) override; void itemImplicitHeightChanged(QQuickItem *item) override; + QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::GroupBox); } + QString title; QQuickDeferredPointer<QQuickItem> label; }; @@ -266,11 +268,6 @@ QFont QQuickGroupBox::defaultFont() const return QQuickTheme::font(QQuickTheme::GroupBox); } -QPalette QQuickGroupBox::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::GroupBox); -} - #if QT_CONFIG(accessibility) QAccessible::Role QQuickGroupBox::accessibleRole() const { diff --git a/src/quicktemplates2/qquickgroupbox_p.h b/src/quicktemplates2/qquickgroupbox_p.h index de36d7d7..f5159630 100644 --- a/src/quicktemplates2/qquickgroupbox_p.h +++ b/src/quicktemplates2/qquickgroupbox_p.h @@ -89,7 +89,6 @@ protected: void componentComplete() override; QFont defaultFont() const override; - QPalette defaultPalette() const override; #if QT_CONFIG(accessibility) QAccessible::Role accessibleRole() const override; diff --git a/src/quicktemplates2/qquickitemdelegate.cpp b/src/quicktemplates2/qquickitemdelegate.cpp index 85e14a38..4ab8b3f2 100644 --- a/src/quicktemplates2/qquickitemdelegate.cpp +++ b/src/quicktemplates2/qquickitemdelegate.cpp @@ -120,11 +120,6 @@ QFont QQuickItemDelegate::defaultFont() const return QQuickTheme::font(QQuickTheme::ItemView); } -QPalette QQuickItemDelegate::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::ItemView); -} - #if QT_CONFIG(accessibility) QAccessible::Role QQuickItemDelegate::accessibleRole() const { @@ -132,4 +127,9 @@ QAccessible::Role QQuickItemDelegate::accessibleRole() const } #endif +QPalette QQuickItemDelegatePrivate::defaultPalette() const +{ + return QQuickTheme::palette(QQuickTheme::ItemView); +} + QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickitemdelegate_p.h b/src/quicktemplates2/qquickitemdelegate_p.h index 5d52f764..a162ddee 100644 --- a/src/quicktemplates2/qquickitemdelegate_p.h +++ b/src/quicktemplates2/qquickitemdelegate_p.h @@ -70,7 +70,6 @@ Q_SIGNALS: protected: QFont defaultFont() const override; - QPalette defaultPalette() const override; #if QT_CONFIG(accessibility) QAccessible::Role accessibleRole() const override; diff --git a/src/quicktemplates2/qquickitemdelegate_p_p.h b/src/quicktemplates2/qquickitemdelegate_p_p.h index 4995f050..f712a212 100644 --- a/src/quicktemplates2/qquickitemdelegate_p_p.h +++ b/src/quicktemplates2/qquickitemdelegate_p_p.h @@ -57,6 +57,8 @@ class QQuickItemDelegatePrivate : public QQuickAbstractButtonPrivate Q_DECLARE_PUBLIC(QQuickItemDelegate) public: + QPalette defaultPalette() const override; + bool highlighted = false; }; diff --git a/src/quicktemplates2/qquicklabel.cpp b/src/quicktemplates2/qquicklabel.cpp index 71b60a2b..afe18f18 100644 --- a/src/quicktemplates2/qquicklabel.cpp +++ b/src/quicktemplates2/qquicklabel.cpp @@ -208,43 +208,6 @@ void QQuickLabelPrivate::updateFont(const QFont &font) emit q->fontChanged(); } -/*! - \internal - - Determine which palette is implicitly imposed on this control by its ancestors - and QGuiApplication::palette, resolve this against its own palette (attributes from - the implicit palette are copied over). Then propagate this palette to this - control's children. -*/ -void QQuickLabelPrivate::resolvePalette() -{ - Q_Q(QQuickLabel); - inheritPalette(QQuickControlPrivate::parentPalette(q)); -} - -void QQuickLabelPrivate::inheritPalette(const QPalette &palette) -{ - QPalette parentPalette = extra.isAllocated() ? extra->requestedPalette.resolve(palette) : palette; - parentPalette.resolve(extra.isAllocated() ? extra->requestedPalette.resolve() | palette.resolve() : palette.resolve()); - - const QPalette defaultPalette = QQuickTheme::palette(QQuickTheme::Label); - const QPalette resolvedPalette = parentPalette.resolve(defaultPalette); - - setPalette_helper(resolvedPalette); -} - -void QQuickLabelPrivate::updatePalette(const QPalette &palette) -{ - Q_Q(QQuickLabel); - QPalette oldPalette = resolvedPalette; - resolvedPalette = palette; - - QQuickControlPrivate::updatePaletteRecur(q, palette); - - if (oldPalette != palette) - emit q->paletteChanged(); -} - void QQuickLabelPrivate::textChanged(const QString &text) { #if QT_CONFIG(accessibility) @@ -340,6 +303,11 @@ void QQuickLabelPrivate::itemDestroyed(QQuickItem *item) } } +QPalette QQuickLabelPrivate::defaultPalette() const +{ + return QQuickTheme::palette(QQuickTheme::Label); +} + QQuickLabel::QQuickLabel(QQuickItem *parent) : QQuickText(*(new QQuickLabelPrivate), parent) { @@ -431,38 +399,6 @@ void QQuickLabel::setBackground(QQuickItem *background) } /*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty palette QtQuick.Controls::Label::palette - - This property holds the palette currently set for the label. - - \sa Control::palette -*/ -QPalette QQuickLabel::palette() const -{ - Q_D(const QQuickLabel); - QPalette palette = d->resolvedPalette; - if (!isEnabled()) - palette.setCurrentColorGroup(QPalette::Disabled); - return palette; -} - -void QQuickLabel::setPalette(const QPalette &palette) -{ - Q_D(QQuickLabel); - if (d->extra.value().requestedPalette.resolve() == palette.resolve() && d->extra.value().requestedPalette == palette) - return; - - d->extra.value().requestedPalette = palette; - d->resolvePalette(); -} - -void QQuickLabel::resetPalette() -{ - setPalette(QPalette()); -} - -/*! \since QtQuick.Controls 2.5 (Qt 5.12) \qmlproperty real QtQuick.Controls::Label::implicitBackgroundWidth \readonly @@ -609,7 +545,6 @@ void QQuickLabel::classBegin() Q_D(QQuickLabel); QQuickText::classBegin(); d->resolveFont(); - d->resolvePalette(); } void QQuickLabel::componentComplete() @@ -630,13 +565,11 @@ void QQuickLabel::itemChange(QQuickItem::ItemChange change, const QQuickItem::It QQuickText::itemChange(change, value); switch (change) { case ItemEnabledHasChanged: - emit paletteChanged(); break; case ItemSceneChange: case ItemParentHasChanged: if ((change == ItemParentHasChanged && value.item) || (change == ItemSceneChange && value.window)) { d->resolveFont(); - d->resolvePalette(); } break; default: diff --git a/src/quicktemplates2/qquicklabel_p.h b/src/quicktemplates2/qquicklabel_p.h index 89c9c77b..e7d39071 100644 --- a/src/quicktemplates2/qquicklabel_p.h +++ b/src/quicktemplates2/qquicklabel_p.h @@ -61,8 +61,6 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickLabel : public QQuickText Q_OBJECT Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY fontChanged) // override Q_PROPERTY(QQuickItem *background READ background WRITE setBackground NOTIFY backgroundChanged FINAL) - // 2.3 (Qt 5.10) - Q_PROPERTY(QPalette palette READ palette WRITE setPalette RESET resetPalette NOTIFY paletteChanged FINAL REVISION 3) // 2.5 (Qt 5.12) Q_PROPERTY(qreal implicitBackgroundWidth READ implicitBackgroundWidth NOTIFY implicitBackgroundWidthChanged FINAL REVISION 5) Q_PROPERTY(qreal implicitBackgroundHeight READ implicitBackgroundHeight NOTIFY implicitBackgroundHeightChanged FINAL REVISION 5) @@ -82,11 +80,6 @@ public: QQuickItem *background() const; void setBackground(QQuickItem *background); - // 2.3 (Qt 5.10) - QPalette palette() const; - void setPalette(const QPalette &palette); - void resetPalette(); - // 2.5 (Qt 5.12) qreal implicitBackgroundWidth() const; qreal implicitBackgroundHeight() const; @@ -110,8 +103,6 @@ public: Q_SIGNALS: void fontChanged(); void backgroundChanged(); - // 2.3 (Qt 5.10) - Q_REVISION(3) void paletteChanged(); // 2.5 (Qt 5.12) Q_REVISION(5) void implicitBackgroundWidthChanged(); Q_REVISION(5) void implicitBackgroundHeightChanged(); diff --git a/src/quicktemplates2/qquicklabel_p_p.h b/src/quicktemplates2/qquicklabel_p_p.h index ce70c168..deed89f5 100644 --- a/src/quicktemplates2/qquicklabel_p_p.h +++ b/src/quicktemplates2/qquicklabel_p_p.h @@ -52,6 +52,7 @@ #include <QtQuick/private/qquicktext_p_p.h> #include <QtQuick/private/qquickitemchangelistener_p.h> #include <QtQuickTemplates2/private/qquickdeferredpointer_p_p.h> +#include <QtQuickTemplates2/private/qquicktheme_p.h> #if QT_CONFIG(accessibility) #include <QtGui/qaccessible.h> @@ -97,15 +98,6 @@ public: updateFont(font); } - void resolvePalette(); - void inheritPalette(const QPalette &palette); - void updatePalette(const QPalette &palette); - inline void setPalette_helper(const QPalette &palette) { - if (resolvedPalette.resolve() == palette.resolve() && resolvedPalette == palette) - return; - updatePalette(palette); - } - void textChanged(const QString &text); #if QT_CONFIG(accessibility) @@ -122,6 +114,8 @@ public: void itemImplicitHeightChanged(QQuickItem *item) override; void itemDestroyed(QQuickItem *item) override; + QPalette defaultPalette() const override; + struct ExtraData { bool hasTopInset = false; bool hasLeftInset = false; @@ -134,7 +128,6 @@ public: qreal rightInset = 0; qreal bottomInset = 0; QFont requestedFont; - QPalette requestedPalette; }; QLazilyAllocated<ExtraData> extra; diff --git a/src/quicktemplates2/qquickmenu.cpp b/src/quicktemplates2/qquickmenu.cpp index c3d80aa0..dd0f2ab3 100644 --- a/src/quicktemplates2/qquickmenu.cpp +++ b/src/quicktemplates2/qquickmenu.cpp @@ -702,6 +702,11 @@ QObject *QQuickMenuPrivate::contentData_at(QQmlListProperty<QObject> *prop, int return QQuickMenuPrivate::get(q)->contentData.value(index); } +QPalette QQuickMenuPrivate::defaultPalette() const +{ + return QQuickTheme::palette(QQuickTheme::Menu); +} + void QQuickMenuPrivate::contentData_clear(QQmlListProperty<QObject> *prop) { QQuickMenu *q = static_cast<QQuickMenu *>(prop->object); @@ -1498,11 +1503,6 @@ QFont QQuickMenu::defaultFont() const return QQuickTheme::font(QQuickTheme::Menu); } -QPalette QQuickMenu::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::Menu); -} - #if QT_CONFIG(accessibility) QAccessible::Role QQuickMenu::accessibleRole() const { diff --git a/src/quicktemplates2/qquickmenu_p.h b/src/quicktemplates2/qquickmenu_p.h index 01b970f8..17479dc7 100644 --- a/src/quicktemplates2/qquickmenu_p.h +++ b/src/quicktemplates2/qquickmenu_p.h @@ -144,7 +144,6 @@ protected: void timerEvent(QTimerEvent *event) override; QFont defaultFont() const override; - QPalette defaultPalette() const override; #if QT_CONFIG(accessibility) QAccessible::Role accessibleRole() const override; diff --git a/src/quicktemplates2/qquickmenu_p_p.h b/src/quicktemplates2/qquickmenu_p_p.h index ec48c919..41837a15 100644 --- a/src/quicktemplates2/qquickmenu_p_p.h +++ b/src/quicktemplates2/qquickmenu_p_p.h @@ -122,6 +122,8 @@ public: static QObject *contentData_at(QQmlListProperty<QObject> *prop, int index); static void contentData_clear(QQmlListProperty<QObject> *prop); + QPalette defaultPalette() const override; + bool cascade = false; int hoverTimer = 0; int currentIndex = -1; diff --git a/src/quicktemplates2/qquickmenubar.cpp b/src/quicktemplates2/qquickmenubar.cpp index 4cf77e3d..b4384aef 100644 --- a/src/quicktemplates2/qquickmenubar.cpp +++ b/src/quicktemplates2/qquickmenubar.cpp @@ -283,6 +283,11 @@ void QQuickMenuBarPrivate::menus_clear(QQmlListProperty<QQuickMenu> *prop) QQuickMenuBarPrivate::get(menuBar)->contentModel->clear(); } +QPalette QQuickMenuBarPrivate::defaultPalette() const +{ + return QQuickTheme::palette(QQuickTheme::MenuBar); +} + QQuickMenuBar::QQuickMenuBar(QQuickItem *parent) : QQuickContainer(*(new QQuickMenuBarPrivate), parent) { @@ -564,11 +569,6 @@ QFont QQuickMenuBar::defaultFont() const return QQuickTheme::font(QQuickTheme::MenuBar); } -QPalette QQuickMenuBar::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::MenuBar); -} - #if QT_CONFIG(accessibility) QAccessible::Role QQuickMenuBar::accessibleRole() const { diff --git a/src/quicktemplates2/qquickmenubar_p.h b/src/quicktemplates2/qquickmenubar_p.h index af37d0f2..8fcaa870 100644 --- a/src/quicktemplates2/qquickmenubar_p.h +++ b/src/quicktemplates2/qquickmenubar_p.h @@ -92,7 +92,6 @@ protected: void itemRemoved(int index, QQuickItem *item) override; QFont defaultFont() const override; - QPalette defaultPalette() const override; #if QT_CONFIG(accessibility) QAccessible::Role accessibleRole() const override; diff --git a/src/quicktemplates2/qquickmenubar_p_p.h b/src/quicktemplates2/qquickmenubar_p_p.h index c214962b..45a6056a 100644 --- a/src/quicktemplates2/qquickmenubar_p_p.h +++ b/src/quicktemplates2/qquickmenubar_p_p.h @@ -96,6 +96,8 @@ public: static QQuickMenu *menus_at(QQmlListProperty<QQuickMenu> *prop, int index); static void menus_clear(QQmlListProperty<QQuickMenu> *prop); + QPalette defaultPalette() const override; + bool popupMode = false; bool triggering = false; QQmlComponent *delegate = nullptr; diff --git a/src/quicktemplates2/qquickmenubaritem.cpp b/src/quicktemplates2/qquickmenubaritem.cpp index bfb23a06..1210a050 100644 --- a/src/quicktemplates2/qquickmenubaritem.cpp +++ b/src/quicktemplates2/qquickmenubaritem.cpp @@ -79,6 +79,11 @@ void QQuickMenuBarItemPrivate::setMenuBar(QQuickMenuBar *newMenuBar) emit q->menuBarChanged(); } +QPalette QQuickMenuBarItemPrivate::defaultPalette() const +{ + return QQuickTheme::palette(QQuickTheme::MenuBar); +} + QQuickMenuBarItem::QQuickMenuBarItem(QQuickItem *parent) : QQuickAbstractButton(*(new QQuickMenuBarItemPrivate), parent) { @@ -170,11 +175,6 @@ QFont QQuickMenuBarItem::defaultFont() const return QQuickTheme::font(QQuickTheme::MenuBar); } -QPalette QQuickMenuBarItem::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::MenuBar); -} - #if QT_CONFIG(accessibility) QAccessible::Role QQuickMenuBarItem::accessibleRole() const { diff --git a/src/quicktemplates2/qquickmenubaritem_p.h b/src/quicktemplates2/qquickmenubaritem_p.h index 86cd6a6a..efbed1ac 100644 --- a/src/quicktemplates2/qquickmenubaritem_p.h +++ b/src/quicktemplates2/qquickmenubaritem_p.h @@ -84,7 +84,6 @@ protected: void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override; QFont defaultFont() const override; - QPalette defaultPalette() const override; #if QT_CONFIG(accessibility) QAccessible::Role accessibleRole() const override; diff --git a/src/quicktemplates2/qquickmenubaritem_p_p.h b/src/quicktemplates2/qquickmenubaritem_p_p.h index a36e8949..22c509dc 100644 --- a/src/quicktemplates2/qquickmenubaritem_p_p.h +++ b/src/quicktemplates2/qquickmenubaritem_p_p.h @@ -68,6 +68,8 @@ public: void setMenuBar(QQuickMenuBar *menuBar); + QPalette defaultPalette() const override; + bool highlighted = false; QQuickMenu *menu = nullptr; QQuickMenuBar *menuBar = nullptr; diff --git a/src/quicktemplates2/qquickmenuitem.cpp b/src/quicktemplates2/qquickmenuitem.cpp index f0cb2045..55902441 100644 --- a/src/quicktemplates2/qquickmenuitem.cpp +++ b/src/quicktemplates2/qquickmenuitem.cpp @@ -152,6 +152,11 @@ bool QQuickMenuItemPrivate::acceptKeyClick(Qt::Key key) const return key == Qt::Key_Space || key == Qt::Key_Return || key == Qt::Key_Enter; } +QPalette QQuickMenuItemPrivate::defaultPalette() const +{ + return QQuickTheme::palette(QQuickTheme::Menu); +} + /*! \qmlsignal void QtQuick.Controls::MenuItem::triggered() @@ -264,11 +269,6 @@ QFont QQuickMenuItem::defaultFont() const return QQuickTheme::font(QQuickTheme::Menu); } -QPalette QQuickMenuItem::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::Menu); -} - #if QT_CONFIG(accessibility) QAccessible::Role QQuickMenuItem::accessibleRole() const { diff --git a/src/quicktemplates2/qquickmenuitem_p.h b/src/quicktemplates2/qquickmenuitem_p.h index 7cffd97b..e519132e 100644 --- a/src/quicktemplates2/qquickmenuitem_p.h +++ b/src/quicktemplates2/qquickmenuitem_p.h @@ -90,7 +90,6 @@ protected: void componentComplete() override; QFont defaultFont() const override; - QPalette defaultPalette() const override; #if QT_CONFIG(accessibility) QAccessible::Role accessibleRole() const override; diff --git a/src/quicktemplates2/qquickmenuitem_p_p.h b/src/quicktemplates2/qquickmenuitem_p_p.h index 58a0ff20..966e14e7 100644 --- a/src/quicktemplates2/qquickmenuitem_p_p.h +++ b/src/quicktemplates2/qquickmenuitem_p_p.h @@ -75,6 +75,8 @@ public: bool acceptKeyClick(Qt::Key key) const override; + QPalette defaultPalette() const override; + bool highlighted = false; QQuickDeferredPointer<QQuickItem> arrow; QQuickMenu *menu = nullptr; diff --git a/src/quicktemplates2/qquickmenuseparator.cpp b/src/quicktemplates2/qquickmenuseparator.cpp index 076ada57..f7f3017d 100644 --- a/src/quicktemplates2/qquickmenuseparator.cpp +++ b/src/quicktemplates2/qquickmenuseparator.cpp @@ -66,8 +66,16 @@ QT_BEGIN_NAMESPACE \sa {Customizing Menu}, Menu, {Separator Controls} */ +class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickMenuSeparatorPrivate : public QQuickControlPrivate +{ + Q_DECLARE_PUBLIC(QQuickMenuSeparator) + +public: + QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::Menu); } +}; + QQuickMenuSeparator::QQuickMenuSeparator(QQuickItem *parent) - : QQuickControl(parent) + : QQuickControl(*(new QQuickMenuSeparatorPrivate), parent) { } @@ -76,11 +84,6 @@ QFont QQuickMenuSeparator::defaultFont() const return QQuickTheme::font(QQuickTheme::Menu); } -QPalette QQuickMenuSeparator::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::Menu); -} - #if QT_CONFIG(accessibility) QAccessible::Role QQuickMenuSeparator::accessibleRole() const { diff --git a/src/quicktemplates2/qquickmenuseparator_p.h b/src/quicktemplates2/qquickmenuseparator_p.h index 1e687fd0..15d96739 100644 --- a/src/quicktemplates2/qquickmenuseparator_p.h +++ b/src/quicktemplates2/qquickmenuseparator_p.h @@ -49,9 +49,12 @@ // #include <QtQuickTemplates2/private/qquickcontrol_p.h> +#include <QtQuickTemplates2/private/qquicktheme_p.h> QT_BEGIN_NAMESPACE +class QQuickMenuSeparator; + class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickMenuSeparator : public QQuickControl { Q_OBJECT @@ -61,7 +64,6 @@ public: protected: QFont defaultFont() const override; - QPalette defaultPalette() const override; #if QT_CONFIG(accessibility) QAccessible::Role accessibleRole() const override; diff --git a/src/quicktemplates2/qquickpalette.cpp b/src/quicktemplates2/qquickpalette.cpp deleted file mode 100644 index ecf45cd2..00000000 --- a/src/quicktemplates2/qquickpalette.cpp +++ /dev/null @@ -1,328 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickpalette_p.h" - -QT_BEGIN_NAMESPACE - -QColor QQuickPalette::alternateBase() const -{ - return v.color(QPalette::AlternateBase); -} - -void QQuickPalette::setAlternateBase(const QColor &color) -{ - v.setColor(QPalette::All, QPalette::AlternateBase, color); -} - -void QQuickPalette::resetAlternateBase() -{ - v.resolve(v.resolve() & ~(1 << QPalette::AlternateBase)); -} - -QColor QQuickPalette::base() const -{ - return v.color(QPalette::Base); -} - -void QQuickPalette::setBase(const QColor &color) -{ - v.setColor(QPalette::All, QPalette::Base, color); -} - -void QQuickPalette::resetBase() -{ - v.resolve(v.resolve() & ~(1 << QPalette::Base)); -} - -QColor QQuickPalette::brightText() const -{ - return v.color(QPalette::BrightText); -} - -void QQuickPalette::setBrightText(const QColor &color) -{ - v.setColor(QPalette::All, QPalette::BrightText, color); -} - -void QQuickPalette::resetBrightText() -{ - v.resolve(v.resolve() & ~(1 << QPalette::BrightText)); -} - -QColor QQuickPalette::button() const -{ - return v.color(QPalette::Button); -} - -void QQuickPalette::setButton(const QColor &color) -{ - v.setColor(QPalette::All, QPalette::Button, color); -} - -void QQuickPalette::resetButton() -{ - v.resolve(v.resolve() & ~(1 << QPalette::Button)); -} - -QColor QQuickPalette::buttonText() const -{ - return v.color(QPalette::ButtonText); -} - -void QQuickPalette::setButtonText(const QColor &color) -{ - v.setColor(QPalette::All, QPalette::ButtonText, color); -} - -void QQuickPalette::resetButtonText() -{ - v.resolve(v.resolve() & ~(1 << QPalette::ButtonText)); -} - -QColor QQuickPalette::dark() const -{ - return v.color(QPalette::Dark); -} - -void QQuickPalette::setDark(const QColor &color) -{ - v.setColor(QPalette::All, QPalette::Dark, color); -} - -void QQuickPalette::resetDark() -{ - v.resolve(v.resolve() & ~(1 << QPalette::Dark)); -} - -QColor QQuickPalette::highlight() const -{ - return v.color(QPalette::Highlight); -} - -void QQuickPalette::setHighlight(const QColor &color) -{ - v.setColor(QPalette::All, QPalette::Highlight, color); -} - -void QQuickPalette::resetHighlight() -{ - v.resolve(v.resolve() & ~(1 << QPalette::Highlight)); -} - -QColor QQuickPalette::highlightedText() const -{ - return v.color(QPalette::HighlightedText); -} - -void QQuickPalette::setHighlightedText(const QColor &color) -{ - v.setColor(QPalette::All, QPalette::HighlightedText, color); -} - -void QQuickPalette::resetHighlightedText() -{ - v.resolve(v.resolve() & ~(1 << QPalette::HighlightedText)); -} - -QColor QQuickPalette::light() const -{ - return v.color(QPalette::Light); -} - -void QQuickPalette::setLight(const QColor &color) -{ - v.setColor(QPalette::All, QPalette::Light, color); -} - -void QQuickPalette::resetLight() -{ - v.resolve(v.resolve() & ~(1 << QPalette::Light)); -} - -QColor QQuickPalette::link() const -{ - return v.color(QPalette::Link); -} - -void QQuickPalette::setLink(const QColor &color) -{ - v.setColor(QPalette::All, QPalette::Link, color); -} - -void QQuickPalette::resetLink() -{ - v.resolve(v.resolve() & ~(1 << QPalette::Link)); -} - -QColor QQuickPalette::linkVisited() const -{ - return v.color(QPalette::LinkVisited); -} - -void QQuickPalette::setLinkVisited(const QColor &color) -{ - v.setColor(QPalette::All, QPalette::LinkVisited, color); -} - -void QQuickPalette::resetLinkVisited() -{ - v.resolve(v.resolve() & ~(1 << QPalette::LinkVisited)); -} - -QColor QQuickPalette::mid() const -{ - return v.color(QPalette::Mid); -} - -void QQuickPalette::setMid(const QColor &color) -{ - v.setColor(QPalette::All, QPalette::Mid, color); -} - -void QQuickPalette::resetMid() -{ - v.resolve(v.resolve() & ~(1 << QPalette::Mid)); -} - -QColor QQuickPalette::midlight() const -{ - return v.color(QPalette::Midlight); -} - -void QQuickPalette::setMidlight(const QColor &color) -{ - v.setColor(QPalette::All, QPalette::Midlight, color); -} - -void QQuickPalette::resetMidlight() -{ - v.resolve(v.resolve() & ~(1 << QPalette::Midlight)); -} - -QColor QQuickPalette::shadow() const -{ - return v.color(QPalette::Shadow); -} - -void QQuickPalette::setShadow(const QColor &color) -{ - v.setColor(QPalette::All, QPalette::Shadow, color); -} - -void QQuickPalette::resetShadow() -{ - v.resolve(v.resolve() & ~(1 << QPalette::Shadow)); -} - -QColor QQuickPalette::text() const -{ - return v.color(QPalette::Text); -} - -void QQuickPalette::setText(const QColor &color) -{ - v.setColor(QPalette::All, QPalette::Text, color); -} - -void QQuickPalette::resetText() -{ - v.resolve(v.resolve() & ~(1 << QPalette::Text)); -} - -QColor QQuickPalette::toolTipBase() const -{ - return v.color(QPalette::ToolTipBase); -} - -void QQuickPalette::setToolTipBase(const QColor &color) -{ - v.setColor(QPalette::All, QPalette::ToolTipBase, color); -} - -void QQuickPalette::resetToolTipBase() -{ - v.resolve(v.resolve() & ~(1 << QPalette::ToolTipBase)); -} - -QColor QQuickPalette::toolTipText() const -{ - return v.color(QPalette::ToolTipText); -} - -void QQuickPalette::setToolTipText(const QColor &color) -{ - v.setColor(QPalette::All, QPalette::ToolTipText, color); -} - -void QQuickPalette::resetToolTipText() -{ - v.resolve(v.resolve() & ~(1 << QPalette::ToolTipText)); -} - -QColor QQuickPalette::window() const -{ - return v.color(QPalette::Window); -} - -void QQuickPalette::setWindow(const QColor &color) -{ - v.setColor(QPalette::All, QPalette::Window, color); -} - -void QQuickPalette::resetWindow() -{ - v.resolve(v.resolve() & ~(1 << QPalette::Window)); -} - -QColor QQuickPalette::windowText() const -{ - return v.color(QPalette::WindowText); -} - -void QQuickPalette::setWindowText(const QColor &color) -{ - v.setColor(QPalette::All, QPalette::WindowText, color); -} - -void QQuickPalette::resetWindowText() -{ - v.resolve(v.resolve() & ~(1 << QPalette::WindowText)); -} - -QT_END_NAMESPACE - -#include "moc_qquickpalette_p.cpp" diff --git a/src/quicktemplates2/qquickpalette_p.h b/src/quicktemplates2/qquickpalette_p.h deleted file mode 100644 index d43e78a6..00000000 --- a/src/quicktemplates2/qquickpalette_p.h +++ /dev/null @@ -1,163 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPALETTE_P_H -#define QQUICKPALETTE_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtGui/qcolor.h> -#include <QtGui/qpalette.h> -#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h> - -QT_BEGIN_NAMESPACE - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPalette -{ - Q_GADGET - Q_PROPERTY(QColor alternateBase READ alternateBase WRITE setAlternateBase RESET resetAlternateBase FINAL) - Q_PROPERTY(QColor base READ base WRITE setBase RESET resetBase FINAL) - Q_PROPERTY(QColor brightText READ brightText WRITE setBrightText RESET resetBrightText FINAL) - Q_PROPERTY(QColor button READ button WRITE setButton RESET resetButton FINAL) - Q_PROPERTY(QColor buttonText READ buttonText WRITE setButtonText RESET resetButtonText FINAL) - Q_PROPERTY(QColor dark READ dark WRITE setDark RESET resetDark FINAL) - Q_PROPERTY(QColor highlight READ highlight WRITE setHighlight RESET resetHighlight FINAL) - Q_PROPERTY(QColor highlightedText READ highlightedText WRITE setHighlightedText RESET resetHighlightedText FINAL) - Q_PROPERTY(QColor light READ light WRITE setLight RESET resetLight FINAL) - Q_PROPERTY(QColor link READ link WRITE setLink RESET resetLink FINAL) - Q_PROPERTY(QColor linkVisited READ linkVisited WRITE setLinkVisited RESET resetLinkVisited FINAL) - Q_PROPERTY(QColor mid READ mid WRITE setMid RESET resetMid FINAL) - Q_PROPERTY(QColor midlight READ midlight WRITE setMidlight RESET resetMidlight FINAL) - Q_PROPERTY(QColor shadow READ shadow WRITE setShadow RESET resetShadow FINAL) - Q_PROPERTY(QColor text READ text WRITE setText RESET resetText FINAL) - Q_PROPERTY(QColor toolTipBase READ toolTipBase WRITE setToolTipBase RESET resetToolTipBase FINAL) - Q_PROPERTY(QColor toolTipText READ toolTipText WRITE setToolTipText RESET resetToolTipText FINAL) - Q_PROPERTY(QColor window READ window WRITE setWindow RESET resetWindow FINAL) - Q_PROPERTY(QColor windowText READ windowText WRITE setWindowText RESET resetWindowText FINAL) - -public: - QColor alternateBase() const; - void setAlternateBase(const QColor &color); - void resetAlternateBase(); - - QColor base() const; - void setBase(const QColor &color); - void resetBase(); - - QColor brightText() const; - void setBrightText(const QColor &color); - void resetBrightText(); - - QColor button() const; - void setButton(const QColor &color); - void resetButton(); - - QColor buttonText() const; - void setButtonText(const QColor &color); - void resetButtonText(); - - QColor dark() const; - void setDark(const QColor &color); - void resetDark(); - - QColor highlight() const; - void setHighlight(const QColor &color); - void resetHighlight(); - - QColor highlightedText() const; - void setHighlightedText(const QColor &color); - void resetHighlightedText(); - - QColor light() const; - void setLight(const QColor &color); - void resetLight(); - - QColor link() const; - void setLink(const QColor &color); - void resetLink(); - - QColor linkVisited() const; - void setLinkVisited(const QColor &color); - void resetLinkVisited(); - - QColor mid() const; - void setMid(const QColor &color); - void resetMid(); - - QColor midlight() const; - void setMidlight(const QColor &color); - void resetMidlight(); - - QColor shadow() const; - void setShadow(const QColor &color); - void resetShadow(); - - QColor text() const; - void setText(const QColor &color); - void resetText(); - - QColor toolTipBase() const; - void setToolTipBase(const QColor &color); - void resetToolTipBase(); - - QColor toolTipText() const; - void setToolTipText(const QColor &color); - void resetToolTipText(); - - QColor window() const; - void setWindow(const QColor &color); - void resetWindow(); - - QColor windowText() const; - void setWindowText(const QColor &color); - void resetWindowText(); - -private: - QPalette v; -}; - -QT_END_NAMESPACE - -#endif // QQUICKPALETTE_P_H diff --git a/src/quicktemplates2/qquickpaletteprovider.cpp b/src/quicktemplates2/qquickpaletteprovider.cpp deleted file mode 100644 index d925fcae..00000000 --- a/src/quicktemplates2/qquickpaletteprovider.cpp +++ /dev/null @@ -1,175 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquickpaletteprovider_p.h" -#include "qquickpalette_p.h" - -#include <QtQml/private/qqmlvaluetype_p.h> - -QT_BEGIN_NAMESPACE - -static QQmlValueTypeProvider *instance() -{ - static QQuickPaletteProvider provider; - return &provider; -} - -void QQuickPaletteProvider::init() -{ - QQml_addValueTypeProvider(instance()); -} - -void QQuickPaletteProvider::cleanup() -{ - QQml_removeValueTypeProvider(instance()); -} - -#if defined(QT_NO_DEBUG) && !defined(QT_FORCE_ASSERTS) - #define ASSERT_VALID_SIZE(size, min) Q_UNUSED(size) -#else - #define ASSERT_VALID_SIZE(size, min) Q_ASSERT(size >= min) -#endif - -const QMetaObject *QQuickPaletteProvider::getMetaObjectForMetaType(int type) -{ - switch (type) { - case QMetaType::QPalette: - return &QQuickPalette::staticMetaObject; - default: - break; - } - - return nullptr; -} - -bool QQuickPaletteProvider::init(int type, QVariant& dst) -{ - switch (type) { - case QMetaType::QPalette: - dst.setValue<QPalette>(QPalette()); - return true; - default: break; - } - - return false; -} - -template<typename T> -bool typedEqual(const void *lhs, const QVariant& rhs) -{ - return (*(reinterpret_cast<const T *>(lhs)) == rhs.value<T>()); -} - -bool QQuickPaletteProvider::equal(int type, const void *lhs, const QVariant &rhs) -{ - switch (type) { - case QMetaType::QPalette: - return typedEqual<QPalette>(lhs, rhs); - default: break; - } - - return false; -} - -template<typename T> -bool typedStore(const void *src, void *dst, size_t dstSize) -{ - ASSERT_VALID_SIZE(dstSize, sizeof(T)); - const T *srcT = reinterpret_cast<const T *>(src); - T *dstT = reinterpret_cast<T *>(dst); - new (dstT) T(*srcT); - return true; -} - -bool QQuickPaletteProvider::store(int type, const void *src, void *dst, size_t dstSize) -{ - switch (type) { - case QMetaType::QPalette: - return typedStore<QPalette>(src, dst, dstSize); - default: break; - } - - return false; -} - -template<typename T> -bool typedRead(const QVariant& src, int dstType, void *dst) -{ - T *dstT = reinterpret_cast<T *>(dst); - if (src.type() == static_cast<uint>(dstType)) { - *dstT = src.value<T>(); - } else { - *dstT = T(); - } - return true; -} - -bool QQuickPaletteProvider::read(const QVariant &src, void *dst, int dstType) -{ - switch (dstType) { - case QMetaType::QPalette: - return typedRead<QPalette>(src, dstType, dst); - default: break; - } - - return false; -} - -template<typename T> -bool typedWrite(const void *src, QVariant& dst) -{ - const T *srcT = reinterpret_cast<const T *>(src); - if (dst.value<T>() != *srcT) { - dst = *srcT; - return true; - } - return false; -} - -bool QQuickPaletteProvider::write(int type, const void *src, QVariant& dst) -{ - switch (type) { - case QMetaType::QPalette: - return typedWrite<QPalette>(src, dst); - default: break; - } - - return false; -} - -#undef ASSERT_VALID_SIZE - -QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickpaletteprovider_p.h b/src/quicktemplates2/qquickpaletteprovider_p.h deleted file mode 100644 index 5b6e3796..00000000 --- a/src/quicktemplates2/qquickpaletteprovider_p.h +++ /dev/null @@ -1,72 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPLv3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QQUICKPALETTEPROVIDER_P_H -#define QQUICKPALETTEPROVIDER_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h> -#include <QtQml/private/qqmlglobal_p.h> - -QT_BEGIN_NAMESPACE - -class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPaletteProvider : public QQmlValueTypeProvider -{ -public: - static void init(); - static void cleanup(); - - const QMetaObject *getMetaObjectForMetaType(int type) override; - bool init(int type, QVariant& dst) override; - bool equal(int type, const void *lhs, const QVariant &rhs) override; - bool store(int type, const void *src, void *dst, size_t dstSize) override; - bool read(const QVariant &src, void *dst, int dstType) override; - bool write(int type, const void *src, QVariant& dst) override; -}; - -QT_END_NAMESPACE - -#endif // QQUICKTEMPLATES2VALUETYPEPROVIDER_P_H diff --git a/src/quicktemplates2/qquickpopup.cpp b/src/quicktemplates2/qquickpopup.cpp index 7a7e00b1..08982f4c 100644 --- a/src/quicktemplates2/qquickpopup.cpp +++ b/src/quicktemplates2/qquickpopup.cpp @@ -641,7 +641,6 @@ void QQuickPopupPrivate::setWindow(QQuickWindow *newWindow) QQuickControlPrivate *p = QQuickControlPrivate::get(popupItem); p->resolveFont(); - p->resolvePalette(); if (QQuickApplicationWindow *appWindow = qobject_cast<QQuickApplicationWindow *>(newWindow)) p->updateLocale(appWindow->locale(), false); // explicit=false } @@ -664,6 +663,11 @@ void QQuickPopupPrivate::reposition() getPositioner()->reposition(); } +QPalette QQuickPopupPrivate::defaultPalette() const +{ + return QQuickTheme::palette(QQuickTheme::System); +} + static QQuickItem *createDimmer(QQmlComponent *component, QQuickPopup *popup, QQuickItem *parent) { QQuickItem *item = nullptr; @@ -1534,53 +1538,6 @@ void QQuickPopup::resetFont() d->popupItem->resetFont(); } - -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty palette QtQuick.Controls::Popup::palette - - This property holds the palette currently set for the popup. - - Popup propagates explicit palette properties to its children. If you change a specific - property on a popup's palette, that property propagates to all of the popup's children, - overriding any system defaults for that property. - - \code - Popup { - palette.text: "red" - - Column { - Label { - text: qsTr("This will use red color...") - } - - Switch { - text: qsTr("... and so will this") - } - } - } - \endcode - - \sa Control::palette, ApplicationWindow::palette, {qtquickcontrols2-palette}{palette QML Basic Type} -*/ -QPalette QQuickPopup::palette() const -{ - Q_D(const QQuickPopup); - return d->popupItem->palette(); -} - -void QQuickPopup::setPalette(const QPalette &palette) -{ - Q_D(QQuickPopup); - d->popupItem->setPalette(palette); -} - -void QQuickPopup::resetPalette() -{ - Q_D(QQuickPopup); - d->popupItem->resetPalette(); -} - QQuickWindow *QQuickPopup::window() const { Q_D(const QQuickPopup); @@ -2369,6 +2326,35 @@ void QQuickPopup::resetBottomInset() d->popupItem->resetBottomInset(); } +/*! + \since QtQuick.Controls 2.3 (Qt 5.10) + \qmlproperty palette QtQuick.Controls::Popup::palette + + This property holds the palette currently set for the popup. + + Popup propagates explicit palette properties to its children. If you change a specific + property on a popup's palette, that property propagates to all of the popup's children, + overriding any system defaults for that property. + + \code + Popup { + palette.text: "red" + + Column { + Label { + text: qsTr("This will use red color...") + } + + Switch { + text: qsTr("... and so will this") + } + } + } + \endcode + + \sa Item::palette, Window::palette, QQuickAbstractPaletteProvider, ColorGroup, Palette +*/ + bool QQuickPopup::filtersChildMouseEvents() const { Q_D(const QQuickPopup); @@ -2645,13 +2631,6 @@ void QQuickPopup::paddingChange(const QMarginsF &newPadding, const QMarginsF &ol } } -void QQuickPopup::paletteChange(const QPalette &newPalette, const QPalette &oldPalette) -{ - Q_UNUSED(newPalette); - Q_UNUSED(oldPalette); - emit paletteChanged(); -} - void QQuickPopup::spacingChange(qreal newSpacing, qreal oldSpacing) { Q_UNUSED(newSpacing); @@ -2676,11 +2655,6 @@ QFont QQuickPopup::defaultFont() const return QQuickTheme::font(QQuickTheme::System); } -QPalette QQuickPopup::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::System); -} - #if QT_CONFIG(accessibility) QAccessible::Role QQuickPopup::accessibleRole() const { diff --git a/src/quicktemplates2/qquickpopup_p.h b/src/quicktemplates2/qquickpopup_p.h index dc3ebf6f..5a4792d6 100644 --- a/src/quicktemplates2/qquickpopup_p.h +++ b/src/quicktemplates2/qquickpopup_p.h @@ -121,7 +121,7 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPopup : public QObject, public QQml Q_PROPERTY(bool opened READ isOpened NOTIFY openedChanged FINAL REVISION 3) Q_PROPERTY(bool mirrored READ isMirrored NOTIFY mirroredChanged FINAL REVISION 3) Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged FINAL REVISION 3) - Q_PROPERTY(QPalette palette READ palette WRITE setPalette RESET resetPalette NOTIFY paletteChanged FINAL REVISION 3) + Q_PRIVATE_PROPERTY(QQuickPopup::d_func(), QQuickPalette *palette READ palette WRITE setPalette RESET resetPalette NOTIFY paletteChanged REVISION 3) // 2.5 (Qt 5.12) Q_PROPERTY(qreal horizontalPadding READ horizontalPadding WRITE setHorizontalPadding RESET resetHorizontalPadding NOTIFY horizontalPaddingChanged FINAL) Q_PROPERTY(qreal verticalPadding READ verticalPadding WRITE setVerticalPadding RESET resetVerticalPadding NOTIFY verticalPaddingChanged FINAL) @@ -310,10 +310,6 @@ public: bool isEnabled() const; void setEnabled(bool enabled); - QPalette palette() const; - void setPalette(const QPalette &palette); - void resetPalette(); - // 2.5 (Qt 5.12) qreal horizontalPadding() const; void setHorizontalPadding(qreal padding); @@ -400,6 +396,7 @@ Q_SIGNALS: Q_REVISION(3) void mirroredChanged(); Q_REVISION(3) void enabledChanged(); Q_REVISION(3) void paletteChanged(); + Q_REVISION(3) void paletteCreated(); // 2.5 (Qt 5.12) Q_REVISION(5) void horizontalPaddingChanged(); Q_REVISION(5) void verticalPaddingChanged(); @@ -446,12 +443,10 @@ protected: virtual void itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data); virtual void marginsChange(const QMarginsF &newMargins, const QMarginsF &oldMargins); virtual void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding); - virtual void paletteChange(const QPalette &newPalette, const QPalette &oldPalette); virtual void spacingChange(qreal newSpacing, qreal oldSpacing); virtual void insetChange(const QMarginsF &newInset, const QMarginsF &oldInset); virtual QFont defaultFont() const; - virtual QPalette defaultPalette() const; #if QT_CONFIG(accessibility) virtual QAccessible::Role accessibleRole() const; diff --git a/src/quicktemplates2/qquickpopup_p_p.h b/src/quicktemplates2/qquickpopup_p_p.h index 8a85f914..8cac4f08 100644 --- a/src/quicktemplates2/qquickpopup_p_p.h +++ b/src/quicktemplates2/qquickpopup_p_p.h @@ -50,11 +50,13 @@ #include <QtQuickTemplates2/private/qquickpopup_p.h> #include <QtQuickTemplates2/private/qquickcontrol_p.h> +#include <QtQuickTemplates2/private/qquicktheme_p.h> #include <QtCore/private/qobject_p.h> #include <QtQuick/qquickitem.h> #include <QtQuick/private/qquickitemchangelistener_p.h> #include <QtQuick/private/qquicktransitionmanager_p_p.h> +#include <QtQuick/private/qquickitem_p.h> QT_BEGIN_NAMESPACE @@ -81,7 +83,10 @@ private: QQuickPopupPrivate *popup = nullptr; }; -class Q_AUTOTEST_EXPORT QQuickPopupPrivate : public QObjectPrivate, public QQuickItemChangeListener +class Q_AUTOTEST_EXPORT QQuickPopupPrivate + : public QObjectPrivate + , public QQuickItemChangeListener + , public QQuickPaletteProviderPrivateBase<QQuickPopup, QQuickPopupPrivate> { Q_DECLARE_PUBLIC(QQuickPopup) @@ -144,6 +149,8 @@ public: void setWindow(QQuickWindow *window); void itemDestroyed(QQuickItem *item) override; + QPalette defaultPalette() const override; + enum TransitionState { NoTransition, EnterTransition, ExitTransition }; diff --git a/src/quicktemplates2/qquickpopupitem.cpp b/src/quicktemplates2/qquickpopupitem.cpp index 8e169b0b..f300298a 100644 --- a/src/quicktemplates2/qquickpopupitem.cpp +++ b/src/quicktemplates2/qquickpopupitem.cpp @@ -53,32 +53,6 @@ QT_BEGIN_NAMESPACE -class QQuickPopupItemPrivate : public QQuickPagePrivate -{ - Q_DECLARE_PUBLIC(QQuickPopupItem) - -public: - QQuickPopupItemPrivate(QQuickPopup *popup); - - void implicitWidthChanged() override; - void implicitHeightChanged() override; - - void resolveFont() override; - void resolvePalette() override; - - QQuickItem *getContentItem() override; - - void cancelContentItem() override; - void executeContentItem(bool complete = false) override; - - void cancelBackground() override; - void executeBackground(bool complete = false) override; - - int backId = 0; - int escapeId = 0; - QQuickPopup *popup = nullptr; -}; - QQuickPopupItemPrivate::QQuickPopupItemPrivate(QQuickPopup *popup) : popup(popup) { @@ -105,14 +79,6 @@ void QQuickPopupItemPrivate::resolveFont() inheritFont(QQuickTheme::font(QQuickTheme::System)); } -void QQuickPopupItemPrivate::resolvePalette() -{ - if (QQuickApplicationWindow *window = qobject_cast<QQuickApplicationWindow *>(popup->window())) - inheritPalette(window->palette()); - else - inheritPalette(QQuickTheme::palette(QQuickTheme::System)); -} - QQuickItem *QQuickPopupItemPrivate::getContentItem() { Q_Q(QQuickPopupItem); @@ -168,6 +134,9 @@ QQuickPopupItem::QQuickPopupItem(QQuickPopup *popup) setCursor(Qt::ArrowCursor); #endif + connect(popup, &QQuickPopup::paletteChanged, this, &QQuickItem::paletteChanged); + connect(popup, &QQuickPopup::paletteCreated, this, &QQuickItem::paletteCreated); + #if QT_CONFIG(quicktemplates2_hover) // TODO: switch to QStyleHints::useHoverEffects in Qt 5.8 setHoverEnabled(true); @@ -204,6 +173,36 @@ void QQuickPopupItem::ungrabShortcut() #endif } +QQuickPalette *QQuickPopupItemPrivate::palette() const +{ + return QQuickPopupPrivate::get(popup)->palette(); +} + +void QQuickPopupItemPrivate::setPalette(QQuickPalette *p) +{ + QQuickPopupPrivate::get(popup)->setPalette(p); +} + +void QQuickPopupItemPrivate::resetPalette() +{ + QQuickPopupPrivate::get(popup)->resetPalette(); +} + +QPalette QQuickPopupItemPrivate::defaultPalette() const +{ + return QQuickPopupPrivate::get(popup)->defaultPalette(); +} + +bool QQuickPopupItemPrivate::providesPalette() const +{ + return QQuickPopupPrivate::get(popup)->providesPalette(); +} + +QPalette QQuickPopupItemPrivate::parentPalette() const +{ + return QQuickPopupPrivate::get(popup)->parentPalette(); +} + void QQuickPopupItem::updatePolish() { Q_D(QQuickPopupItem); @@ -365,13 +364,6 @@ void QQuickPopupItem::paddingChange(const QMarginsF &newPadding, const QMarginsF d->popup->paddingChange(newPadding, oldPadding); } -void QQuickPopupItem::paletteChange(const QPalette &newPalette, const QPalette &oldPalette) -{ - Q_D(QQuickPopupItem); - QQuickPage::paletteChange(newPalette, oldPalette); - d->popup->paletteChange(newPalette, oldPalette); -} - void QQuickPopupItem::enabledChange() { Q_D(QQuickPopupItem); @@ -382,7 +374,6 @@ void QQuickPopupItem::enabledChange() // returns a different palette depending on whether or not the control is enabled. // To save a connection, we also emit enabledChanged here. emit d->popup->enabledChanged(); - emit d->popup->paletteChanged(); } QFont QQuickPopupItem::defaultFont() const @@ -391,12 +382,6 @@ QFont QQuickPopupItem::defaultFont() const return d->popup->defaultFont(); } -QPalette QQuickPopupItem::defaultPalette() const -{ - Q_D(const QQuickPopupItem); - return d->popup->defaultPalette(); -} - #if QT_CONFIG(accessibility) QAccessible::Role QQuickPopupItem::accessibleRole() const { diff --git a/src/quicktemplates2/qquickpopupitem_p_p.h b/src/quicktemplates2/qquickpopupitem_p_p.h index a12e43e0..ab20d16c 100644 --- a/src/quicktemplates2/qquickpopupitem_p_p.h +++ b/src/quicktemplates2/qquickpopupitem_p_p.h @@ -49,11 +49,13 @@ // #include <QtQuickTemplates2/private/qquickpage_p.h> +#include <QtQuickTemplates2/private/qquickpage_p_p.h> QT_BEGIN_NAMESPACE class QQuickPopup; class QQuickPopupItemPrivate; + class QQuickPopupItem : public QQuickPage { Q_OBJECT @@ -94,11 +96,9 @@ protected: void mirrorChange() override; void itemChange(ItemChange change, const ItemChangeData &data) override; void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) override; - void paletteChange(const QPalette &newPalette, const QPalette &oldPalette) override; void enabledChange() override; QFont defaultFont() const override; - QPalette defaultPalette() const override; #if QT_CONFIG(accessibility) QAccessible::Role accessibleRole() const override; @@ -111,6 +111,40 @@ private: friend class QQuickPopup; }; +class QQuickPopupItemPrivate : public QQuickPagePrivate +{ + Q_DECLARE_PUBLIC(QQuickPopupItem) + +public: + QQuickPopupItemPrivate(QQuickPopup *popup); + + void implicitWidthChanged() override; + void implicitHeightChanged() override; + + void resolveFont() override; + + QQuickItem *getContentItem() override; + + void cancelContentItem() override; + void executeContentItem(bool complete = false) override; + + void cancelBackground() override; + void executeBackground(bool complete = false) override; + + QQuickPalette *palette() const override; + void setPalette(QQuickPalette* p) override; + void resetPalette() override; + + QPalette defaultPalette() const override; + bool providesPalette() const override; + + QPalette parentPalette() const override; + + int backId = 0; + int escapeId = 0; + QQuickPopup *popup = nullptr; +}; + QT_END_NAMESPACE #endif // QQUICKPOPUPITEM_P_P_H diff --git a/src/quicktemplates2/qquickradiobutton.cpp b/src/quicktemplates2/qquickradiobutton.cpp index f22a152f..f6c9c38f 100644 --- a/src/quicktemplates2/qquickradiobutton.cpp +++ b/src/quicktemplates2/qquickradiobutton.cpp @@ -36,6 +36,7 @@ #include "qquickradiobutton_p.h" #include "qquickcontrol_p_p.h" +#include "qquickabstractbutton_p_p.h" #include <QtGui/qpa/qplatformtheme.h> @@ -90,8 +91,16 @@ QT_BEGIN_NAMESPACE \sa ButtonGroup, {Customizing RadioButton}, {Button Controls}, RadioDelegate */ +class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickRadioButtonPrivate : public QQuickAbstractButtonPrivate +{ + Q_DECLARE_PUBLIC(QQuickRadioButton) + +public: + QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::RadioButton); } +}; + QQuickRadioButton::QQuickRadioButton(QQuickItem *parent) - : QQuickAbstractButton(parent) + : QQuickAbstractButton(*(new QQuickRadioButtonPrivate), parent) { setCheckable(true); setAutoExclusive(true); @@ -102,11 +111,6 @@ QFont QQuickRadioButton::defaultFont() const return QQuickTheme::font(QQuickTheme::RadioButton); } -QPalette QQuickRadioButton::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::RadioButton); -} - #if QT_CONFIG(accessibility) QAccessible::Role QQuickRadioButton::accessibleRole() const { diff --git a/src/quicktemplates2/qquickradiobutton_p.h b/src/quicktemplates2/qquickradiobutton_p.h index ea372687..f937081f 100644 --- a/src/quicktemplates2/qquickradiobutton_p.h +++ b/src/quicktemplates2/qquickradiobutton_p.h @@ -49,9 +49,12 @@ // #include <QtQuickTemplates2/private/qquickabstractbutton_p.h> +#include <QtQuickTemplates2/private/qquicktheme_p.h> QT_BEGIN_NAMESPACE +class QQuickRadioButtonPrivate; + class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickRadioButton : public QQuickAbstractButton { Q_OBJECT @@ -61,7 +64,6 @@ public: protected: QFont defaultFont() const override; - QPalette defaultPalette() const override; #if QT_CONFIG(accessibility) QAccessible::Role accessibleRole() const override; diff --git a/src/quicktemplates2/qquickradiodelegate.cpp b/src/quicktemplates2/qquickradiodelegate.cpp index 6b353fe3..69236fc1 100644 --- a/src/quicktemplates2/qquickradiodelegate.cpp +++ b/src/quicktemplates2/qquickradiodelegate.cpp @@ -36,6 +36,7 @@ #include "qquickradiodelegate_p.h" #include "qquickabstractbutton_p_p.h" +#include "qquickitemdelegate_p_p.h" #include <QtGui/qpa/qplatformtheme.h> @@ -91,8 +92,16 @@ QT_BEGIN_NAMESPACE \sa {Customizing RadioDelegate}, {Delegate Controls}, RadioButton */ +class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickRadioDelegatePrivate : public QQuickItemDelegatePrivate +{ + Q_DECLARE_PUBLIC(QQuickRadioDelegate) + +public: + QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::ListView); } +}; + QQuickRadioDelegate::QQuickRadioDelegate(QQuickItem *parent) - : QQuickItemDelegate(parent) + : QQuickItemDelegate(*(new QQuickRadioDelegatePrivate), parent) { setCheckable(true); setAutoExclusive(true); @@ -103,11 +112,6 @@ QFont QQuickRadioDelegate::defaultFont() const return QQuickTheme::font(QQuickTheme::ListView); } -QPalette QQuickRadioDelegate::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::ListView); -} - #if QT_CONFIG(accessibility) QAccessible::Role QQuickRadioDelegate::accessibleRole() const { diff --git a/src/quicktemplates2/qquickradiodelegate_p.h b/src/quicktemplates2/qquickradiodelegate_p.h index 453856e4..1a4761a3 100644 --- a/src/quicktemplates2/qquickradiodelegate_p.h +++ b/src/quicktemplates2/qquickradiodelegate_p.h @@ -63,11 +63,13 @@ public: protected: QFont defaultFont() const override; - QPalette defaultPalette() const override; #if QT_CONFIG(accessibility) QAccessible::Role accessibleRole() const override; #endif + +private: + Q_DECLARE_PRIVATE(QQuickRadioDelegate) }; QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickspinbox.cpp b/src/quicktemplates2/qquickspinbox.cpp index a3441c51..00a75c10 100644 --- a/src/quicktemplates2/qquickspinbox.cpp +++ b/src/quicktemplates2/qquickspinbox.cpp @@ -138,6 +138,8 @@ public: void itemImplicitWidthChanged(QQuickItem *item) override; void itemImplicitHeightChanged(QQuickItem *item) override; + QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::SpinBox); } + bool editable = false; bool wrap = false; int from = 0; @@ -1042,11 +1044,6 @@ QFont QQuickSpinBox::defaultFont() const return QQuickTheme::font(QQuickTheme::SpinBox); } -QPalette QQuickSpinBox::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::SpinBox); -} - #if QT_CONFIG(accessibility) QAccessible::Role QQuickSpinBox::accessibleRole() const { diff --git a/src/quicktemplates2/qquickspinbox_p.h b/src/quicktemplates2/qquickspinbox_p.h index 4a339b76..6b787674 100644 --- a/src/quicktemplates2/qquickspinbox_p.h +++ b/src/quicktemplates2/qquickspinbox_p.h @@ -164,7 +164,6 @@ protected: void localeChange(const QLocale &newLocale, const QLocale &oldLocale) override; QFont defaultFont() const override; - QPalette defaultPalette() const override; #if QT_CONFIG(accessibility) QAccessible::Role accessibleRole() const override; diff --git a/src/quicktemplates2/qquickswipedelegate.cpp b/src/quicktemplates2/qquickswipedelegate.cpp index 4a66ecef..9c76dff1 100644 --- a/src/quicktemplates2/qquickswipedelegate.cpp +++ b/src/quicktemplates2/qquickswipedelegate.cpp @@ -937,6 +937,11 @@ void QQuickSwipeDelegatePrivate::resizeContent() } } +QPalette QQuickSwipeDelegatePrivate::defaultPalette() const +{ + return QQuickTheme::palette(QQuickTheme::ListView); +} + QQuickSwipeDelegate::QQuickSwipeDelegate(QQuickItem *parent) : QQuickItemDelegate(*(new QQuickSwipeDelegatePrivate(this)), parent) { @@ -1224,11 +1229,6 @@ QFont QQuickSwipeDelegate::defaultFont() const return QQuickTheme::font(QQuickTheme::ListView); } -QPalette QQuickSwipeDelegate::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::ListView); -} - #if QT_CONFIG(accessibility) QAccessible::Role QQuickSwipeDelegate::accessibleRole() const { diff --git a/src/quicktemplates2/qquickswipedelegate_p.h b/src/quicktemplates2/qquickswipedelegate_p.h index 53211ccb..055d48dd 100644 --- a/src/quicktemplates2/qquickswipedelegate_p.h +++ b/src/quicktemplates2/qquickswipedelegate_p.h @@ -83,7 +83,6 @@ protected: void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override; QFont defaultFont() const override; - QPalette defaultPalette() const override; #if QT_CONFIG(accessibility) QAccessible::Role accessibleRole() const override; diff --git a/src/quicktemplates2/qquickswipedelegate_p_p.h b/src/quicktemplates2/qquickswipedelegate_p_p.h index 78c72ec8..7ed043d6 100644 --- a/src/quicktemplates2/qquickswipedelegate_p_p.h +++ b/src/quicktemplates2/qquickswipedelegate_p_p.h @@ -68,6 +68,8 @@ public: void resizeContent() override; + QPalette defaultPalette() const override; + QQuickSwipe swipe; }; diff --git a/src/quicktemplates2/qquickswitch.cpp b/src/quicktemplates2/qquickswitch.cpp index c5cdf7b5..08ea44da 100644 --- a/src/quicktemplates2/qquickswitch.cpp +++ b/src/quicktemplates2/qquickswitch.cpp @@ -88,6 +88,8 @@ public: void handleMove(const QPointF &point) override; void handleRelease(const QPointF &point) override; + QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::Switch); } + qreal position = 0; }; @@ -234,9 +236,4 @@ QFont QQuickSwitch::defaultFont() const return QQuickTheme::font(QQuickTheme::Switch); } -QPalette QQuickSwitch::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::Switch); -} - QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquickswitch_p.h b/src/quicktemplates2/qquickswitch_p.h index ddc32395..e4c55c2b 100644 --- a/src/quicktemplates2/qquickswitch_p.h +++ b/src/quicktemplates2/qquickswitch_p.h @@ -84,7 +84,6 @@ protected: void buttonChange(ButtonChange change) override; QFont defaultFont() const override; - QPalette defaultPalette() const override; private: Q_DISABLE_COPY(QQuickSwitch) diff --git a/src/quicktemplates2/qquickswitchdelegate.cpp b/src/quicktemplates2/qquickswitchdelegate.cpp index 86ce690b..d0e3afc8 100644 --- a/src/quicktemplates2/qquickswitchdelegate.cpp +++ b/src/quicktemplates2/qquickswitchdelegate.cpp @@ -85,6 +85,8 @@ public: void handleMove(const QPointF &point) override; void handleRelease(const QPointF &point) override; + QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::ListView); } + qreal position = 0; }; @@ -203,11 +205,6 @@ QFont QQuickSwitchDelegate::defaultFont() const return QQuickTheme::font(QQuickTheme::ListView); } -QPalette QQuickSwitchDelegate::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::ListView); -} - void QQuickSwitchDelegate::mirrorChange() { QQuickItemDelegate::mirrorChange(); diff --git a/src/quicktemplates2/qquickswitchdelegate_p.h b/src/quicktemplates2/qquickswitchdelegate_p.h index 1fb35aea..383a662d 100644 --- a/src/quicktemplates2/qquickswitchdelegate_p.h +++ b/src/quicktemplates2/qquickswitchdelegate_p.h @@ -79,7 +79,6 @@ protected: #endif QFont defaultFont() const override; - QPalette defaultPalette() const override; void mirrorChange() override; diff --git a/src/quicktemplates2/qquicktabbar.cpp b/src/quicktemplates2/qquicktabbar.cpp index 3bf21f25..75bbbda7 100644 --- a/src/quicktemplates2/qquicktabbar.cpp +++ b/src/quicktemplates2/qquicktabbar.cpp @@ -111,6 +111,8 @@ public: void itemImplicitWidthChanged(QQuickItem *item) override; void itemImplicitHeightChanged(QQuickItem *item) override; + QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::TabBar); } + bool updatingLayout = false; QQuickTabBar::Position position = QQuickTabBar::Header; }; @@ -386,11 +388,6 @@ QFont QQuickTabBar::defaultFont() const return QQuickTheme::font(QQuickTheme::TabBar); } -QPalette QQuickTabBar::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::TabBar); -} - #if QT_CONFIG(accessibility) QAccessible::Role QQuickTabBar::accessibleRole() const { diff --git a/src/quicktemplates2/qquicktabbar_p.h b/src/quicktemplates2/qquicktabbar_p.h index 5367118c..4c36f5e8 100644 --- a/src/quicktemplates2/qquicktabbar_p.h +++ b/src/quicktemplates2/qquicktabbar_p.h @@ -91,7 +91,6 @@ protected: void itemRemoved(int index, QQuickItem *item) override; QFont defaultFont() const override; - QPalette defaultPalette() const override; #if QT_CONFIG(accessibility) QAccessible::Role accessibleRole() const override; diff --git a/src/quicktemplates2/qquicktabbutton.cpp b/src/quicktemplates2/qquicktabbutton.cpp index 0af81278..540f1280 100644 --- a/src/quicktemplates2/qquicktabbutton.cpp +++ b/src/quicktemplates2/qquicktabbutton.cpp @@ -36,6 +36,7 @@ #include "qquicktabbutton_p.h" #include "qquickcontrol_p_p.h" +#include "qquickabstractbutton_p_p.h" #include <QtGui/qpa/qplatformtheme.h> @@ -63,8 +64,16 @@ QT_BEGIN_NAMESPACE \sa TabBar, {Customizing TabButton}, {Button Controls}, {Navigation Controls} */ +class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickTabButtonPrivate : public QQuickAbstractButtonPrivate +{ + Q_DECLARE_PUBLIC(QQuickTabButton) + +public: + QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::TabBar); } +}; + QQuickTabButton::QQuickTabButton(QQuickItem *parent) - : QQuickAbstractButton(parent) + : QQuickAbstractButton(*(new QQuickTabButtonPrivate), parent) { setCheckable(true); setAutoExclusive(true); @@ -75,11 +84,6 @@ QFont QQuickTabButton::defaultFont() const return QQuickTheme::font(QQuickTheme::TabBar); } -QPalette QQuickTabButton::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::TabBar); -} - #if QT_CONFIG(accessibility) QAccessible::Role QQuickTabButton::accessibleRole() const { diff --git a/src/quicktemplates2/qquicktabbutton_p.h b/src/quicktemplates2/qquicktabbutton_p.h index 9ca9df9f..bcaf7c29 100644 --- a/src/quicktemplates2/qquicktabbutton_p.h +++ b/src/quicktemplates2/qquicktabbutton_p.h @@ -52,6 +52,8 @@ QT_BEGIN_NAMESPACE +class QQuickTabButtonPrivate; + class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickTabButton : public QQuickAbstractButton { Q_OBJECT @@ -61,11 +63,13 @@ public: protected: QFont defaultFont() const override; - QPalette defaultPalette() const override; #if QT_CONFIG(accessibility) QAccessible::Role accessibleRole() const override; #endif + +private: + Q_DECLARE_PRIVATE(QQuickTabButton) }; QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquicktextarea.cpp b/src/quicktemplates2/qquicktextarea.cpp index 56dc946d..45d6184a 100644 --- a/src/quicktemplates2/qquicktextarea.cpp +++ b/src/quicktemplates2/qquicktextarea.cpp @@ -279,43 +279,6 @@ void QQuickTextAreaPrivate::updateFont(const QFont &font) emit q->fontChanged(); } -/*! - \internal - - Determine which palette is implicitly imposed on this control by its ancestors - and QGuiApplication::palette, resolve this against its own palette (attributes from - the implicit palette are copied over). Then propagate this palette to this - control's children. -*/ -void QQuickTextAreaPrivate::resolvePalette() -{ - Q_Q(QQuickTextArea); - inheritPalette(QQuickControlPrivate::parentPalette(q)); -} - -void QQuickTextAreaPrivate::inheritPalette(const QPalette &palette) -{ - QPalette parentPalette = extra.isAllocated() ? extra->requestedPalette.resolve(palette) : palette; - parentPalette.resolve(extra.isAllocated() ? extra->requestedPalette.resolve() | palette.resolve() : palette.resolve()); - - const QPalette defaultPalette = QQuickTheme::palette(QQuickTheme::TextArea); - const QPalette resolvedPalette = parentPalette.resolve(defaultPalette); - - setPalette_helper(resolvedPalette); -} - -void QQuickTextAreaPrivate::updatePalette(const QPalette &palette) -{ - Q_Q(QQuickTextArea); - QPalette oldPalette = resolvedPalette; - resolvedPalette = palette; - - QQuickControlPrivate::updatePaletteRecur(q, palette); - - if (oldPalette != palette) - emit q->paletteChanged(); -} - #if QT_CONFIG(quicktemplates2_hover) void QQuickTextAreaPrivate::updateHoverEnabled(bool enabled, bool xplicit) { @@ -556,6 +519,11 @@ void QQuickTextAreaPrivate::itemDestroyed(QQuickItem *item) } } +QPalette QQuickTextAreaPrivate::defaultPalette() const +{ + return QQuickTheme::palette(QQuickTheme::TextArea); +} + QQuickTextArea::QQuickTextArea(QQuickItem *parent) : QQuickTextEdit(*(new QQuickTextAreaPrivate), parent) { @@ -818,38 +786,6 @@ void QQuickTextArea::resetHoverEnabled() } /*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty palette QtQuick.Controls::TextArea::palette - - This property holds the palette currently set for the text area. - - \sa Control::palette -*/ -QPalette QQuickTextArea::palette() const -{ - Q_D(const QQuickTextArea); - QPalette palette = d->resolvedPalette; - if (!isEnabled()) - palette.setCurrentColorGroup(QPalette::Disabled); - return palette; -} - -void QQuickTextArea::setPalette(const QPalette &palette) -{ - Q_D(QQuickTextArea); - if (d->extra.value().requestedPalette.resolve() == palette.resolve() && d->extra.value().requestedPalette == palette) - return; - - d->extra.value().requestedPalette = palette; - d->resolvePalette(); -} - -void QQuickTextArea::resetPalette() -{ - setPalette(QPalette()); -} - -/*! \since QtQuick.Controls 2.5 (Qt 5.12) \qmlproperty real QtQuick.Controls::TextArea::implicitBackgroundWidth \readonly @@ -996,7 +932,6 @@ void QQuickTextArea::classBegin() Q_D(QQuickTextArea); QQuickTextEdit::classBegin(); d->resolveFont(); - d->resolvePalette(); } void QQuickTextArea::componentComplete() @@ -1021,13 +956,11 @@ void QQuickTextArea::itemChange(QQuickItem::ItemChange change, const QQuickItem: QQuickTextEdit::itemChange(change, value); switch (change) { case ItemEnabledHasChanged: - emit paletteChanged(); break; case ItemSceneChange: case ItemParentHasChanged: if ((change == ItemParentHasChanged && value.item) || (change == ItemSceneChange && value.window)) { d->resolveFont(); - d->resolvePalette(); #if QT_CONFIG(quicktemplates2_hover) if (!d->explicitHoverEnabled) d->updateHoverEnabled(QQuickControlPrivate::calcHoverEnabled(d->parentItem), false); // explicit=false diff --git a/src/quicktemplates2/qquicktextarea_p.h b/src/quicktemplates2/qquicktextarea_p.h index 15182a84..adbaf1df 100644 --- a/src/quicktemplates2/qquicktextarea_p.h +++ b/src/quicktemplates2/qquicktextarea_p.h @@ -71,8 +71,6 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickTextArea : public QQuickTextEdit // 2.1 (Qt 5.8) Q_PROPERTY(bool hovered READ isHovered NOTIFY hoveredChanged FINAL REVISION 1) Q_PROPERTY(bool hoverEnabled READ isHoverEnabled WRITE setHoverEnabled RESET resetHoverEnabled NOTIFY hoverEnabledChanged FINAL REVISION 1) - // 2.3 (Qt 5.10) - Q_PROPERTY(QPalette palette READ palette WRITE setPalette RESET resetPalette NOTIFY paletteChanged FINAL REVISION 3) // 2.5 (Qt 5.12) Q_PROPERTY(QColor placeholderTextColor READ placeholderTextColor WRITE setPlaceholderTextColor NOTIFY placeholderTextColorChanged FINAL REVISION 5) Q_PROPERTY(qreal implicitBackgroundWidth READ implicitBackgroundWidth NOTIFY implicitBackgroundWidthChanged FINAL REVISION 5) @@ -111,11 +109,6 @@ public: void setHoverEnabled(bool enabled); void resetHoverEnabled(); - // 2.3 (Qt 5.10) - QPalette palette() const; - void setPalette(const QPalette &palette); - void resetPalette(); - // 2.5 (Qt 5.12) QColor placeholderTextColor() const; void setPlaceholderTextColor(const QColor &color); @@ -152,8 +145,6 @@ Q_SIGNALS: Q_REVISION(1) void released(QQuickMouseEvent *event); Q_REVISION(1) void hoveredChanged(); Q_REVISION(1) void hoverEnabledChanged(); - // 2.3 (Qt 5.10) - Q_REVISION(3) void paletteChanged(); // 2.5 (Qt 5.12) Q_REVISION(5) void placeholderTextColorChanged(); Q_REVISION(5) void implicitBackgroundWidthChanged(); diff --git a/src/quicktemplates2/qquicktextarea_p_p.h b/src/quicktemplates2/qquicktextarea_p_p.h index 613551e4..02c77b07 100644 --- a/src/quicktemplates2/qquicktextarea_p_p.h +++ b/src/quicktemplates2/qquicktextarea_p_p.h @@ -53,6 +53,7 @@ #include <QtQuick/private/qquickitemchangelistener_p.h> #include <QtQuickTemplates2/private/qquickpresshandler_p_p.h> #include <QtQuickTemplates2/private/qquickdeferredpointer_p_p.h> +#include <QtQuickTemplates2/private/qquicktheme_p.h> #include <QtQuickTemplates2/private/qquicktextarea_p.h> @@ -102,15 +103,6 @@ public: updateFont(font); } - void resolvePalette(); - void inheritPalette(const QPalette &palette); - void updatePalette(const QPalette &palette); - inline void setPalette_helper(const QPalette &palette) { - if (resolvedPalette.resolve() == palette.resolve() && resolvedPalette == palette) - return; - updatePalette(palette); - } - #if QT_CONFIG(quicktemplates2_hover) void updateHoverEnabled(bool h, bool e); #endif @@ -143,6 +135,8 @@ public: void itemImplicitHeightChanged(QQuickItem *item) override; void itemDestroyed(QQuickItem *item) override; + QPalette defaultPalette() const override; + #if QT_CONFIG(quicktemplates2_hover) bool hovered = false; bool explicitHoverEnabled = false; diff --git a/src/quicktemplates2/qquicktextfield.cpp b/src/quicktemplates2/qquicktextfield.cpp index 8fa04bd3..4ddc0778 100644 --- a/src/quicktemplates2/qquicktextfield.cpp +++ b/src/quicktemplates2/qquicktextfield.cpp @@ -250,43 +250,6 @@ void QQuickTextFieldPrivate::updateFont(const QFont &font) emit q->fontChanged(); } -/*! - \internal - - Determine which palette is implicitly imposed on this control by its ancestors - and QGuiApplication::palette, resolve this against its own palette (attributes from - the implicit palette are copied over). Then propagate this palette to this - control's children. -*/ -void QQuickTextFieldPrivate::resolvePalette() -{ - Q_Q(QQuickTextField); - inheritPalette(QQuickControlPrivate::parentPalette(q)); -} - -void QQuickTextFieldPrivate::inheritPalette(const QPalette &palette) -{ - QPalette parentPalette = extra.isAllocated() ? extra->requestedPalette.resolve(palette) : palette; - parentPalette.resolve(extra.isAllocated() ? extra->requestedPalette.resolve() | palette.resolve() : palette.resolve()); - - const QPalette defaultPalette = QQuickTheme::palette(QQuickTheme::TextField); - const QPalette resolvedPalette = parentPalette.resolve(defaultPalette); - - setPalette_helper(resolvedPalette); -} - -void QQuickTextFieldPrivate::updatePalette(const QPalette &palette) -{ - Q_Q(QQuickTextField); - QPalette oldPalette = resolvedPalette; - resolvedPalette = palette; - - QQuickControlPrivate::updatePaletteRecur(q, palette); - - if (oldPalette != palette) - emit q->paletteChanged(); -} - #if QT_CONFIG(quicktemplates2_hover) void QQuickTextFieldPrivate::updateHoverEnabled(bool enabled, bool xplicit) { @@ -432,6 +395,11 @@ void QQuickTextFieldPrivate::itemDestroyed(QQuickItem *item) } } +QPalette QQuickTextFieldPrivate::defaultPalette() const +{ + return QQuickTheme::palette(QQuickTheme::TextField); +} + QQuickTextField::QQuickTextField(QQuickItem *parent) : QQuickTextInput(*(new QQuickTextFieldPrivate), parent) { @@ -675,44 +643,11 @@ void QQuickTextField::resetHoverEnabled() #endif } -/*! - \since QtQuick.Controls 2.3 (Qt 5.10) - \qmlproperty palette QtQuick.Controls::TextField::palette - - This property holds the palette currently set for the text field. - - \sa Control::palette -*/ -QPalette QQuickTextField::palette() const -{ - Q_D(const QQuickTextField); - QPalette palette = d->resolvedPalette; - if (!isEnabled()) - palette.setCurrentColorGroup(QPalette::Disabled); - return palette; -} - -void QQuickTextField::setPalette(const QPalette &palette) -{ - Q_D(QQuickTextField); - if (d->extra.value().requestedPalette.resolve() == palette.resolve() && d->extra.value().requestedPalette == palette) - return; - - d->extra.value().requestedPalette = palette; - d->resolvePalette(); -} - -void QQuickTextField::resetPalette() -{ - setPalette(QPalette()); -} - void QQuickTextField::classBegin() { Q_D(QQuickTextField); QQuickTextInput::classBegin(); d->resolveFont(); - d->resolvePalette(); } /*! @@ -879,13 +814,11 @@ void QQuickTextField::itemChange(QQuickItem::ItemChange change, const QQuickItem QQuickTextInput::itemChange(change, value); switch (change) { case ItemEnabledHasChanged: - emit paletteChanged(); break; case ItemSceneChange: case ItemParentHasChanged: if ((change == ItemParentHasChanged && value.item) || (change == ItemSceneChange && value.window)) { d->resolveFont(); - d->resolvePalette(); #if QT_CONFIG(quicktemplates2_hover) if (!d->explicitHoverEnabled) d->updateHoverEnabled(QQuickControlPrivate::calcHoverEnabled(d->parentItem), false); // explicit=false diff --git a/src/quicktemplates2/qquicktextfield_p.h b/src/quicktemplates2/qquicktextfield_p.h index ae2681d1..5308ee0a 100644 --- a/src/quicktemplates2/qquicktextfield_p.h +++ b/src/quicktemplates2/qquicktextfield_p.h @@ -70,8 +70,6 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickTextField : public QQuickTextInput // 2.1 (Qt 5.8) Q_PROPERTY(bool hovered READ isHovered NOTIFY hoveredChanged FINAL REVISION 1) Q_PROPERTY(bool hoverEnabled READ isHoverEnabled WRITE setHoverEnabled RESET resetHoverEnabled NOTIFY hoverEnabledChanged FINAL REVISION 1) - // 2.3 (Qt 5.10) - Q_PROPERTY(QPalette palette READ palette WRITE setPalette RESET resetPalette NOTIFY paletteChanged FINAL REVISION 3) // 2.5 (Qt 5.12) Q_PROPERTY(QColor placeholderTextColor READ placeholderTextColor WRITE setPlaceholderTextColor NOTIFY placeholderTextColorChanged FINAL REVISION 5) Q_PROPERTY(qreal implicitBackgroundWidth READ implicitBackgroundWidth NOTIFY implicitBackgroundWidthChanged FINAL REVISION 5) @@ -106,11 +104,6 @@ public: void setHoverEnabled(bool enabled); void resetHoverEnabled(); - // 2.3 (Qt 5.10) - QPalette palette() const; - void setPalette(const QPalette &palette); - void resetPalette(); - // 2.5 (Qt 5.12) QColor placeholderTextColor() const; void setPlaceholderTextColor(const QColor &color); @@ -147,8 +140,6 @@ Q_SIGNALS: Q_REVISION(1) void released(QQuickMouseEvent *event); Q_REVISION(1) void hoveredChanged(); Q_REVISION(1) void hoverEnabledChanged(); - // 2.3 (Qt 5.10) - Q_REVISION(3) void paletteChanged(); // 2.5 (Qt 5.12) Q_REVISION(5) void placeholderTextColorChanged(); Q_REVISION(5) void implicitBackgroundWidthChanged(); diff --git a/src/quicktemplates2/qquicktextfield_p_p.h b/src/quicktemplates2/qquicktextfield_p_p.h index 3389d3dc..a816614d 100644 --- a/src/quicktemplates2/qquicktextfield_p_p.h +++ b/src/quicktemplates2/qquicktextfield_p_p.h @@ -53,6 +53,7 @@ #include <QtQuick/private/qquickitemchangelistener_p.h> #include <QtQuickTemplates2/private/qquickpresshandler_p_p.h> #include <QtQuickTemplates2/private/qquickdeferredpointer_p_p.h> +#include <QtQuickTemplates2/private/qquicktheme_p.h> #include <QtQuickTemplates2/private/qquicktextfield_p.h> @@ -98,15 +99,6 @@ public: updateFont(font); } - void resolvePalette(); - void inheritPalette(const QPalette &palette); - void updatePalette(const QPalette &palette); - inline void setPalette_helper(const QPalette &palette) { - if (resolvedPalette.resolve() == palette.resolve() && resolvedPalette == palette) - return; - updatePalette(palette); - } - #if QT_CONFIG(quicktemplates2_hover) void updateHoverEnabled(bool h, bool e); #endif @@ -133,6 +125,8 @@ public: void itemImplicitHeightChanged(QQuickItem *item) override; void itemDestroyed(QQuickItem *item) override; + QPalette defaultPalette() const override; + #if QT_CONFIG(quicktemplates2_hover) bool hovered = false; bool explicitHoverEnabled = false; @@ -150,12 +144,10 @@ public: qreal rightInset = 0; qreal bottomInset = 0; QFont requestedFont; - QPalette requestedPalette; }; QLazilyAllocated<ExtraData> extra; bool resizingBackground = false; - QPalette resolvedPalette; QQuickDeferredPointer<QQuickItem> background; QString placeholder; QColor placeholderColor; diff --git a/src/quicktemplates2/qquicktoolbar.cpp b/src/quicktemplates2/qquicktoolbar.cpp index 817ee8a9..f77bf3e8 100644 --- a/src/quicktemplates2/qquicktoolbar.cpp +++ b/src/quicktemplates2/qquicktoolbar.cpp @@ -99,6 +99,8 @@ QT_BEGIN_NAMESPACE class QQuickToolBarPrivate : public QQuickPanePrivate { public: + QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::ToolBar); } + QQuickToolBar::Position position = QQuickToolBar::Header; }; @@ -144,11 +146,6 @@ QFont QQuickToolBar::defaultFont() const return QQuickTheme::font(QQuickTheme::ToolBar); } -QPalette QQuickToolBar::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::ToolBar); -} - #if QT_CONFIG(accessibility) QAccessible::Role QQuickToolBar::accessibleRole() const { diff --git a/src/quicktemplates2/qquicktoolbar_p.h b/src/quicktemplates2/qquicktoolbar_p.h index ef2ceb7e..631f553e 100644 --- a/src/quicktemplates2/qquicktoolbar_p.h +++ b/src/quicktemplates2/qquicktoolbar_p.h @@ -76,7 +76,6 @@ Q_SIGNALS: protected: QFont defaultFont() const override; - QPalette defaultPalette() const override; #if QT_CONFIG(accessibility) QAccessible::Role accessibleRole() const override; diff --git a/src/quicktemplates2/qquicktoolbutton.cpp b/src/quicktemplates2/qquicktoolbutton.cpp index 01cf17f6..80987887 100644 --- a/src/quicktemplates2/qquicktoolbutton.cpp +++ b/src/quicktemplates2/qquicktoolbutton.cpp @@ -36,6 +36,7 @@ #include "qquicktoolbutton_p.h" #include "qquickcontrol_p_p.h" +#include "qquickbutton_p_p.h" #include <QtGui/qpa/qplatformtheme.h> @@ -64,8 +65,16 @@ QT_BEGIN_NAMESPACE \sa ToolBar, {Customizing ToolButton}, {Button Controls} */ +class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickToolPrivate : public QQuickButtonPrivate +{ + Q_DECLARE_PUBLIC(QQuickToolButton) + +public: + QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::ToolBar); } +}; + QQuickToolButton::QQuickToolButton(QQuickItem *parent) - : QQuickButton(parent) + : QQuickButton(*(new QQuickToolPrivate), parent) { } @@ -74,9 +83,4 @@ QFont QQuickToolButton::defaultFont() const return QQuickTheme::font(QQuickTheme::ToolBar); } -QPalette QQuickToolButton::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::ToolBar); -} - QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquicktoolbutton_p.h b/src/quicktemplates2/qquicktoolbutton_p.h index 0e376f7b..c8d70aef 100644 --- a/src/quicktemplates2/qquicktoolbutton_p.h +++ b/src/quicktemplates2/qquicktoolbutton_p.h @@ -52,6 +52,8 @@ QT_BEGIN_NAMESPACE +class QQuickToolButtonPrivate; + class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickToolButton : public QQuickButton { Q_OBJECT @@ -61,7 +63,9 @@ public: protected: QFont defaultFont() const override; - QPalette defaultPalette() const override; + +private: + Q_DECLARE_PRIVATE(QQuickToolButton) }; QT_END_NAMESPACE diff --git a/src/quicktemplates2/qquicktoolseparator.cpp b/src/quicktemplates2/qquicktoolseparator.cpp index e33e9f9d..ae2f7f19 100644 --- a/src/quicktemplates2/qquicktoolseparator.cpp +++ b/src/quicktemplates2/qquicktoolseparator.cpp @@ -66,6 +66,8 @@ class QQuickToolSeparatorPrivate : public QQuickControlPrivate Q_DECLARE_PUBLIC(QQuickToolSeparator) public: + QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::ToolBar); } + Qt::Orientation orientation = Qt::Vertical; }; @@ -136,11 +138,6 @@ QFont QQuickToolSeparator::defaultFont() const return QQuickTheme::font(QQuickTheme::ToolBar); } -QPalette QQuickToolSeparator::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::ToolBar); -} - #if QT_CONFIG(accessibility) QAccessible::Role QQuickToolSeparator::accessibleRole() const { diff --git a/src/quicktemplates2/qquicktoolseparator_p.h b/src/quicktemplates2/qquicktoolseparator_p.h index c3c14b82..30bcf7df 100644 --- a/src/quicktemplates2/qquicktoolseparator_p.h +++ b/src/quicktemplates2/qquicktoolseparator_p.h @@ -75,7 +75,6 @@ Q_SIGNALS: protected: QFont defaultFont() const override; - QPalette defaultPalette() const override; #if QT_CONFIG(accessibility) QAccessible::Role accessibleRole() const override; diff --git a/src/quicktemplates2/qquicktooltip.cpp b/src/quicktemplates2/qquicktooltip.cpp index 8b61375e..36b6ef5a 100644 --- a/src/quicktemplates2/qquicktooltip.cpp +++ b/src/quicktemplates2/qquicktooltip.cpp @@ -130,6 +130,8 @@ public: void startTimeout(); void stopTimeout(); + QPalette defaultPalette() const override { return QQuickTheme::palette(QQuickTheme::ToolTip); } + int delay = 0; int timeout = -1; QString text; @@ -311,11 +313,6 @@ QFont QQuickToolTip::defaultFont() const return QQuickTheme::font(QQuickTheme::ToolTip); } -QPalette QQuickToolTip::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::ToolTip); -} - void QQuickToolTip::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data) { Q_D(QQuickToolTip); diff --git a/src/quicktemplates2/qquicktooltip_p.h b/src/quicktemplates2/qquicktooltip_p.h index 432bdd8e..a143452d 100644 --- a/src/quicktemplates2/qquicktooltip_p.h +++ b/src/quicktemplates2/qquicktooltip_p.h @@ -90,7 +90,6 @@ public Q_SLOTS: protected: QFont defaultFont() const override; - QPalette defaultPalette() const override; void itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data) override; void timerEvent(QTimerEvent *event) override; diff --git a/src/quicktemplates2/qquicktumbler.cpp b/src/quicktemplates2/qquicktumbler.cpp index c1d1c00f..37755dbc 100644 --- a/src/quicktemplates2/qquicktumbler.cpp +++ b/src/quicktemplates2/qquicktumbler.cpp @@ -284,6 +284,11 @@ void QQuickTumblerPrivate::itemGeometryChanged(QQuickItem *item, QQuickGeometryC calculateDisplacements(); } +QPalette QQuickTumblerPrivate::defaultPalette() const +{ + return QQuickTheme::palette(QQuickTheme::Tumbler); +} + QQuickTumbler::QQuickTumbler(QQuickItem *parent) : QQuickControl(*(new QQuickTumblerPrivate), parent) { @@ -880,11 +885,6 @@ QFont QQuickTumbler::defaultFont() const return QQuickTheme::font(QQuickTheme::Tumbler); } -QPalette QQuickTumbler::defaultPalette() const -{ - return QQuickTheme::palette(QQuickTheme::Tumbler); -} - void QQuickTumblerAttachedPrivate::init(QQuickItem *delegateItem) { if (!delegateItem->parentItem()) { diff --git a/src/quicktemplates2/qquicktumbler_p.h b/src/quicktemplates2/qquicktumbler_p.h index 3f7c06db..79be75eb 100644 --- a/src/quicktemplates2/qquicktumbler_p.h +++ b/src/quicktemplates2/qquicktumbler_p.h @@ -133,7 +133,6 @@ protected: void updatePolish() override; QFont defaultFont() const override; - QPalette defaultPalette() const override; private: Q_DISABLE_COPY(QQuickTumbler) diff --git a/src/quicktemplates2/qquicktumbler_p_p.h b/src/quicktemplates2/qquicktumbler_p_p.h index 049ab8a1..aa5d58c0 100644 --- a/src/quicktemplates2/qquicktumbler_p_p.h +++ b/src/quicktemplates2/qquicktumbler_p_p.h @@ -71,6 +71,8 @@ public: static QQuickTumblerPrivate *get(QQuickTumbler *tumbler); + QPalette defaultPalette() const override; + QVariant model; QQmlComponent *delegate = nullptr; int visibleItemCount = 5; diff --git a/src/quicktemplates2/quicktemplates2.pri b/src/quicktemplates2/quicktemplates2.pri index fa6929f9..1b15d208 100644 --- a/src/quicktemplates2/quicktemplates2.pri +++ b/src/quicktemplates2/quicktemplates2.pri @@ -52,8 +52,6 @@ HEADERS += \ $$PWD/qquickpage_p.h \ $$PWD/qquickpage_p_p.h \ $$PWD/qquickpageindicator_p.h \ - $$PWD/qquickpalette_p.h \ - $$PWD/qquickpaletteprovider_p.h \ $$PWD/qquickpane_p.h \ $$PWD/qquickpane_p_p.h \ $$PWD/qquickpopup_p.h \ @@ -134,8 +132,6 @@ SOURCES += \ $$PWD/qquickoverlay.cpp \ $$PWD/qquickpage.cpp \ $$PWD/qquickpageindicator.cpp \ - $$PWD/qquickpalette.cpp \ - $$PWD/qquickpaletteprovider.cpp \ $$PWD/qquickpane.cpp \ $$PWD/qquickpopup.cpp \ $$PWD/qquickpopupanchors.cpp \ diff --git a/tests/auto/palette/data/bindings.qml b/tests/auto/palette/data/bindings.qml new file mode 100644 index 00000000..f87b6572 --- /dev/null +++ b/tests/auto/palette/data/bindings.qml @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 6.0 +import QtQuick.Window 2.14 +import QtQuick.Controls 2.14 +import QtQuick.Layouts 1.13 + +ApplicationWindow { + id: window + objectName: "window" + width: 600 + height: 800 + visible: true + + property alias disabledButton: disabledButton + property alias enabledButton: enabledButton + + palette { + active { + button: "khaki" + buttonText: "bisque" + } + + disabled { + buttonText: "lavender" + button: "coral" + } + } + + ColumnLayout { + Button { + id: disabledButton + text: "Disabled" + enabled: false + + palette.disabled.button: "aqua" + palette.disabled.buttonText: "azure" + } + + Button { + id: enabledButton + text: "Enabled" + + palette: disabledButton.palette + } + } +} diff --git a/tests/auto/palette/data/set-palette.qml b/tests/auto/palette/data/set-palette.qml new file mode 100644 index 00000000..f9f067e0 --- /dev/null +++ b/tests/auto/palette/data/set-palette.qml @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 6.0 +import QtQuick.Controls 2.14 + +Control { + palette { + active { + buttonText: "azure" + button: "khaki" + } + + disabled { + buttonText: "lavender" + button: "coral" + } + } +} diff --git a/tests/auto/palette/tst_palette.cpp b/tests/auto/palette/tst_palette.cpp index e91fd732..9d635ff7 100644 --- a/tests/auto/palette/tst_palette.cpp +++ b/tests/auto/palette/tst_palette.cpp @@ -41,11 +41,14 @@ #include <QtGui/private/qguiapplication_p.h> #include <QtQml/qqmlengine.h> #include <QtQml/qqmlcomponent.h> +#include <QtQuick/private/qquickitem_p.h> #include <QtQuickTemplates2/private/qquickapplicationwindow_p.h> #include <QtQuickTemplates2/private/qquickcontrol_p.h> #include <QtQuickTemplates2/private/qquickcontrol_p_p.h> #include <QtQuickTemplates2/private/qquickpopup_p.h> +#include <QtQuickTemplates2/private/qquickpopup_p_p.h> #include <QtQuickTemplates2/private/qquicktheme_p_p.h> +#include <QtQuickTemplates2/private/qquickbutton_p.h> using namespace QQuickVisualTestUtil; @@ -67,6 +70,10 @@ private slots: void listView_data(); void listView(); + + void setDynamicallyCreatedPalette(); + void createBindings(); + void updateBindings(); }; void tst_palette::initTestCase() @@ -136,8 +143,7 @@ void tst_palette::palette() QVariant var = object->property("palette"); QVERIFY(var.isValid()); - QPalette actualPalette = var.value<QPalette>(); - QCOMPARE(actualPalette, expectedPalette); + QCOMPARE(var.value<QQuickPalette*>()->toQPalette(), expectedPalette); } void tst_palette::inheritance_data() @@ -175,55 +181,54 @@ void tst_palette::inheritance() defaultPalette.setColor(QPalette::Base, QColor("#efefef")); defaultPalette.setColor(QPalette::Text, QColor("#101010")); - QCOMPARE(window->palette(), defaultPalette); - - QCOMPARE(control->property("palette").value<QPalette>(), defaultPalette); - QCOMPARE(child->property("palette").value<QPalette>(), defaultPalette); - QCOMPARE(grandChild->property("palette").value<QPalette>(), defaultPalette); - - QPalette childPalette(defaultPalette); - childPalette.setColor(QPalette::Base, Qt::red); - childPalette.setColor(QPalette::Text, Qt::green); - childPalette.setColor(QPalette::Button, Qt::blue); - child->setProperty("palette", childPalette); - QCOMPARE(child->property("palette").value<QPalette>(), childPalette); - QCOMPARE(grandChild->property("palette").value<QPalette>(), childPalette); - - QPalette grandChildPalette(childPalette); - grandChildPalette.setColor(QPalette::Base, Qt::cyan); - grandChildPalette.setColor(QPalette::Mid, Qt::magenta); - grandChild->setProperty("palette", grandChildPalette); - QCOMPARE(child->property("palette").value<QPalette>(), childPalette); - QCOMPARE(grandChild->property("palette").value<QPalette>(), grandChildPalette); - - QPalette windowPalette(defaultPalette); - windowPalette.setColor(QPalette::Window, Qt::gray); - window->setPalette(windowPalette); - QCOMPARE(window->palette(), windowPalette); - QCOMPARE(control->property("palette").value<QPalette>(), windowPalette); - - childPalette.setColor(QPalette::Window, Qt::gray); - QCOMPARE(child->property("palette").value<QPalette>(), childPalette); - - grandChildPalette.setColor(QPalette::Window, Qt::gray); - QCOMPARE(grandChild->property("palette").value<QPalette>(), grandChildPalette); - - child->setProperty("palette", QVariant()); - QCOMPARE(child->property("palette").value<QPalette>(), windowPalette); - QCOMPARE(grandChild->property("palette").value<QPalette>(), grandChildPalette); - - grandChild->setProperty("palette", QVariant()); - QCOMPARE(grandChild->property("palette").value<QPalette>(), windowPalette); + auto windowPalette = QQuickWindowPrivate::get(window.get())->palette(); + + QCOMPARE(windowPalette->toQPalette(), defaultPalette); + + auto controlPalette = control->property("palette").value<QQuickPalette*>(); + auto childPalette = child->property("palette").value<QQuickPalette*>(); + auto grandChildPalette = grandChild->property("palette").value<QQuickPalette*>(); + QVERIFY(controlPalette && childPalette && grandChildPalette); + + QCOMPARE(controlPalette->toQPalette(), defaultPalette); + QCOMPARE(childPalette->toQPalette(), defaultPalette); + QCOMPARE(grandChildPalette->toQPalette(), defaultPalette); + + childPalette->setBase(Qt::red); + childPalette->setText(Qt::green); + childPalette->setButton(Qt::blue); + + QCOMPARE(childPalette->base(), grandChildPalette->base()); + QCOMPARE(childPalette->text(), grandChildPalette->text()); + QCOMPARE(childPalette->button(), grandChildPalette->button()); + + windowPalette->setWindow(Qt::gray); + QCOMPARE(controlPalette->window(), windowPalette->window()); + + childPalette->setWindow(Qt::red); + QCOMPARE(childPalette->window(), Qt::red); + + grandChildPalette->setWindow(Qt::blue); + QCOMPARE(grandChildPalette->window(), Qt::blue); + + auto childMo = child->metaObject(); + childMo->property(childMo->indexOfProperty("palette")).reset(child); + QCOMPARE(childPalette->window(), windowPalette->window()); + QCOMPARE(grandChildPalette->window(), Qt::blue); + + auto grandChildMo = grandChild->metaObject(); + grandChildMo->property(grandChildMo->indexOfProperty("palette")).reset(grandChild); + QCOMPARE(grandChildPalette->window(), windowPalette->window()); } class TestTheme : public QQuickTheme { public: - static const int NPalettes = QQuickTheme::Tumbler + 1; + static const uint NPalettes = QQuickTheme::Tumbler + 1; TestTheme() { - for (int i = 0; i < NPalettes; ++i) + for (uint i = 0; i < NPalettes; ++i) setPalette(static_cast<Scope>(i), QPalette(QColor::fromRgb(i))); } }; @@ -291,6 +296,7 @@ void tst_palette::defaultPalette() // The call to setData() above causes QQuickDefaultTheme to be set as the current theme, // so we must make sure we only set our theme afterwards. + std::unique_ptr<QQuickTheme> oldTheme(QQuickThemePrivate::instance.take()); QQuickThemePrivate::instance.reset(new TestTheme); QScopedPointer<QObject> object(component.create()); @@ -300,8 +306,11 @@ void tst_palette::defaultPalette() QVERIFY(var.isValid()); QPalette expectedPalette = QQuickTheme::palette(scope); - QPalette actualPalette = var.value<QPalette>(); - QCOMPARE(actualPalette, expectedPalette); + auto actualPalette = var.value<QQuickPalette*>(); + QVERIFY(actualPalette); + QCOMPARE(actualPalette->toQPalette(), expectedPalette); + + QQuickThemePrivate::instance.reset(oldTheme.release()); } void tst_palette::listView_data() @@ -342,7 +351,75 @@ void tst_palette::listView() QQuickItem *control = column->property(objectName.toUtf8()).value<QQuickItem *>(); QVERIFY(control); - QCOMPARE(control->property("palette").value<QPalette>().color(QPalette::Highlight), QColor(Qt::red)); + QCOMPARE(QQuickItemPrivate::get(control)->palette()->highlight(), Qt::red); +} + +void tst_palette::setDynamicallyCreatedPalette() +{ + QQmlEngine engine; + QQmlComponent component(&engine); + component.loadUrl(testFileUrl("set-palette.qml")); + + QScopedPointer<QObject> object(component.create()); + QVERIFY2(!object.isNull(), qPrintable(component.errorString())); + + QVariant var = object->property("palette"); + QVERIFY(var.isValid()); + + auto palette = var.value<QQuickPalette*>(); + QVERIFY(palette); + + QCOMPARE(palette->buttonText(), QColor("azure")); + QCOMPARE(palette->button(), QColor("khaki")); + + QCOMPARE(palette->disabled()->buttonText(), QColor("lavender")); + QCOMPARE(palette->disabled()->button(), QColor("coral")); +} + +void tst_palette::createBindings() +{ + QQmlEngine engine; + QQmlComponent component(&engine); + component.loadUrl(testFileUrl("bindings.qml")); + + QScopedPointer<QObject> window(component.create()); + QVERIFY2(!window.isNull(), qPrintable(component.errorString())); + + auto disabledButton = window->property("disabledButton").value<QQuickButton*>(); + QVERIFY(disabledButton); + + auto enabledButton = window->property("enabledButton").value<QQuickButton*>(); + QVERIFY(enabledButton); + + QCOMPARE(QQuickItemPrivate::get(disabledButton)->palette()->button(), QColor("aqua")); + QCOMPARE(QQuickItemPrivate::get(disabledButton)->palette()->buttonText(), QColor("azure")); + + QCOMPARE(QQuickItemPrivate::get(enabledButton)->palette()->button(), QColor("khaki")); + QCOMPARE(QQuickItemPrivate::get(enabledButton)->palette()->buttonText(), QColor("bisque")); + + QCOMPARE(QQuickItemPrivate::get(enabledButton)->palette()->disabled()->button(), QColor("aqua")); + QCOMPARE(QQuickItemPrivate::get(enabledButton)->palette()->disabled()->buttonText(), QColor("azure")); +} + +void tst_palette::updateBindings() +{ + QQmlEngine engine; + QQmlComponent component(&engine); + component.loadUrl(testFileUrl("bindings.qml")); + + QScopedPointer<QObject> window(component.create()); + QVERIFY2(!window.isNull(), qPrintable(component.errorString())); + + auto disabledButton = window->property("disabledButton").value<QQuickButton*>(); + QVERIFY(disabledButton); + + auto enabledButton = window->property("enabledButton").value<QQuickButton*>(); + QVERIFY(enabledButton); + + QQuickItemPrivate::get(disabledButton)->palette()->disabled()->setButton(QColor("navy")); + enabledButton->setEnabled(false); + + QCOMPARE(QQuickItemPrivate::get(enabledButton)->palette()->button(), QColor("navy")); } QTEST_MAIN(tst_palette) diff --git a/tests/auto/qquickpopup/tst_qquickpopup.cpp b/tests/auto/qquickpopup/tst_qquickpopup.cpp index d96436de..0ec7870b 100644 --- a/tests/auto/qquickpopup/tst_qquickpopup.cpp +++ b/tests/auto/qquickpopup/tst_qquickpopup.cpp @@ -42,14 +42,17 @@ #include <QtGui/qpa/qwindowsysteminterface.h> #include <QtQuick/qquickview.h> +#include <QtQuick/private/qquickpalette_p.h> #include <QtQuickTemplates2/private/qquickapplicationwindow_p.h> #include <QtQuickTemplates2/private/qquickcombobox_p.h> #include <QtQuickTemplates2/private/qquickdialog_p.h> #include <QtQuickTemplates2/private/qquickoverlay_p.h> #include <QtQuickTemplates2/private/qquickpopup_p.h> +#include <QtQuickTemplates2/private/qquickpopupitem_p_p.h> #include <QtQuickTemplates2/private/qquickbutton_p.h> #include <QtQuickTemplates2/private/qquickslider_p.h> #include <QtQuickTemplates2/private/qquickstackview_p.h> +#include <QtQuickTemplates2/private/qquickpopup_p_p.h> using namespace QQuickVisualTestUtil; @@ -1174,29 +1177,28 @@ void tst_QQuickPopup::disabledPalette() QQuickPopup *popup = window->property("popup").value<QQuickPopup*>(); QVERIFY(popup); - QSignalSpy popupEnabledSpy(popup, SIGNAL(enabledChanged())); + QSignalSpy popupEnabledSpy(popup, &QQuickPopup::enabledChanged); QVERIFY(popupEnabledSpy.isValid()); - QSignalSpy popupPaletteSpy(popup, SIGNAL(paletteChanged())); + QSignalSpy popupPaletteSpy(popup, &QQuickPopup::paletteChanged); QVERIFY(popupPaletteSpy.isValid()); - QSignalSpy popupItemEnabledSpy(popup->popupItem(), SIGNAL(enabledChanged())); + QSignalSpy popupItemEnabledSpy(popup->popupItem(), &QQuickItem::enabledChanged); QVERIFY(popupItemEnabledSpy.isValid()); - QSignalSpy popupItemPaletteSpy(popup->popupItem(), SIGNAL(paletteChanged())); + QSignalSpy popupItemPaletteSpy(popup->popupItem(), &QQuickItem::paletteChanged); QVERIFY(popupItemPaletteSpy.isValid()); - QPalette palette = popup->palette(); - palette.setColor(QPalette::Active, QPalette::Base, Qt::green); - palette.setColor(QPalette::Disabled, QPalette::Base, Qt::red); - popup->setPalette(palette); - QCOMPARE(popupPaletteSpy.count(), 1); - QCOMPARE(popupItemPaletteSpy.count(), 1); + auto palette = QQuickPopupPrivate::get(popup)->palette(); + palette->setBase(Qt::green); + palette->disabled()->setBase(Qt::red); + QCOMPARE(popupPaletteSpy.count(), 2); + QCOMPARE(popupItemPaletteSpy.count(), 2); QCOMPARE(popup->background()->property("color").value<QColor>(), Qt::green); popup->setEnabled(false); QCOMPARE(popupEnabledSpy.count(), 1); QCOMPARE(popupItemEnabledSpy.count(), 1); - QCOMPARE(popupPaletteSpy.count(), 2); - QCOMPARE(popupItemPaletteSpy.count(), 2); + QCOMPARE(popupPaletteSpy.count(), 3); + QCOMPARE(popupItemPaletteSpy.count(), 3); QCOMPARE(popup->background()->property("color").value<QColor>(), Qt::red); } @@ -1221,12 +1223,11 @@ void tst_QQuickPopup::disabledParentPalette() QSignalSpy popupItemPaletteSpy(popup->popupItem(), SIGNAL(paletteChanged())); QVERIFY(popupItemPaletteSpy.isValid()); - QPalette palette = popup->palette(); - palette.setColor(QPalette::Active, QPalette::Base, Qt::green); - palette.setColor(QPalette::Disabled, QPalette::Base, Qt::red); - popup->setPalette(palette); - QCOMPARE(popupPaletteSpy.count(), 1); - QCOMPARE(popupItemPaletteSpy.count(), 1); + auto palette = QQuickPopupPrivate::get(popup)->palette(); + palette->setBase(Qt::green); + palette->disabled()->setBase(Qt::red); + QCOMPARE(popupPaletteSpy.count(), 2); + QCOMPARE(popupItemPaletteSpy.count(), 2); QCOMPARE(popup->background()->property("color").value<QColor>(), Qt::green); // Disable the overlay (which is QQuickPopupItem's parent) to ensure that @@ -1239,8 +1240,8 @@ void tst_QQuickPopup::disabledParentPalette() QCOMPARE(popup->background()->property("color").value<QColor>(), Qt::red); QCOMPARE(popupEnabledSpy.count(), 1); QCOMPARE(popupItemEnabledSpy.count(), 1); - QCOMPARE(popupPaletteSpy.count(), 2); - QCOMPARE(popupItemPaletteSpy.count(), 2); + QCOMPARE(popupPaletteSpy.count(), 3); + QCOMPARE(popupItemPaletteSpy.count(), 3); popup->close(); QTRY_VERIFY(!popup->isVisible()); diff --git a/tests/auto/qquickstyle/tst_qquickstyle.cpp b/tests/auto/qquickstyle/tst_qquickstyle.cpp index e99dad62..48cc88b7 100644 --- a/tests/auto/qquickstyle/tst_qquickstyle.cpp +++ b/tests/auto/qquickstyle/tst_qquickstyle.cpp @@ -40,6 +40,7 @@ #include <QtQuickControls2/qquickstyle.h> #include <QtQuickControls2/private/qquickstyle_p.h> #include <QtQuickTemplates2/private/qquicklabel_p.h> +#include <QtQuickTemplates2/private/qquicklabel_p_p.h> #include <QtQuickTemplates2/private/qquicktheme_p.h> #include <QtGui/private/qguiapplication_p.h> @@ -152,7 +153,7 @@ void tst_QQuickStyle::configurationFile() // Make it small so that there's less possibility for the default/system // pixel size to match it and give us false positives. QCOMPARE(label->font().pixelSize(), 3); - QCOMPARE(label->palette().windowText(), Qt::red); + QCOMPARE(QQuickLabelPrivate::get(label)->palette()->windowText(), Qt::red); } void tst_QQuickStyle::commandLineArgument() |