aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dependencies.yaml4
-rw-r--r--src/imports/controls/ApplicationWindow.qml2
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-palette.qdoc107
-rw-r--r--src/imports/controls/fusion/ApplicationWindow.qml2
-rw-r--r--src/imports/controls/fusion/ComboBox.qml1
-rw-r--r--src/imports/controls/fusion/Dial.qml2
-rw-r--r--src/imports/controls/fusion/qquickfusiondial.cpp20
-rw-r--r--src/imports/controls/fusion/qquickfusiondial_p.h6
-rw-r--r--src/imports/controls/fusion/qquickfusionknob.cpp19
-rw-r--r--src/imports/controls/fusion/qquickfusionknob_p.h8
-rw-r--r--src/imports/controls/fusion/qquickfusionstyle.cpp28
-rw-r--r--src/imports/controls/fusion/qquickfusionstyle_p.h18
-rw-r--r--src/imports/templates/qtquicktemplates2plugin.cpp23
-rw-r--r--src/quicktemplates2/qquickapplicationwindow.cpp108
-rw-r--r--src/quicktemplates2/qquickapplicationwindow_p.h10
-rw-r--r--src/quicktemplates2/qquickbutton.cpp10
-rw-r--r--src/quicktemplates2/qquickbutton_p.h1
-rw-r--r--src/quicktemplates2/qquickbutton_p_p.h2
-rw-r--r--src/quicktemplates2/qquickcheckbox.cpp7
-rw-r--r--src/quicktemplates2/qquickcheckbox_p.h1
-rw-r--r--src/quicktemplates2/qquickcheckdelegate.cpp7
-rw-r--r--src/quicktemplates2/qquickcheckdelegate_p.h1
-rw-r--r--src/quicktemplates2/qquickcombobox.cpp7
-rw-r--r--src/quicktemplates2/qquickcombobox_p.h1
-rw-r--r--src/quicktemplates2/qquickcontrol.cpp180
-rw-r--r--src/quicktemplates2/qquickcontrol_p.h13
-rw-r--r--src/quicktemplates2/qquickcontrol_p_p.h15
-rw-r--r--src/quicktemplates2/qquickdelaybutton.cpp7
-rw-r--r--src/quicktemplates2/qquickdelaybutton_p.h1
-rw-r--r--src/quicktemplates2/qquickgroupbox.cpp7
-rw-r--r--src/quicktemplates2/qquickgroupbox_p.h1
-rw-r--r--src/quicktemplates2/qquickitemdelegate.cpp10
-rw-r--r--src/quicktemplates2/qquickitemdelegate_p.h1
-rw-r--r--src/quicktemplates2/qquickitemdelegate_p_p.h2
-rw-r--r--src/quicktemplates2/qquicklabel.cpp77
-rw-r--r--src/quicktemplates2/qquicklabel_p.h9
-rw-r--r--src/quicktemplates2/qquicklabel_p_p.h13
-rw-r--r--src/quicktemplates2/qquickmenu.cpp10
-rw-r--r--src/quicktemplates2/qquickmenu_p.h1
-rw-r--r--src/quicktemplates2/qquickmenu_p_p.h2
-rw-r--r--src/quicktemplates2/qquickmenubar.cpp10
-rw-r--r--src/quicktemplates2/qquickmenubar_p.h1
-rw-r--r--src/quicktemplates2/qquickmenubar_p_p.h2
-rw-r--r--src/quicktemplates2/qquickmenubaritem.cpp10
-rw-r--r--src/quicktemplates2/qquickmenubaritem_p.h1
-rw-r--r--src/quicktemplates2/qquickmenubaritem_p_p.h2
-rw-r--r--src/quicktemplates2/qquickmenuitem.cpp10
-rw-r--r--src/quicktemplates2/qquickmenuitem_p.h1
-rw-r--r--src/quicktemplates2/qquickmenuitem_p_p.h2
-rw-r--r--src/quicktemplates2/qquickmenuseparator.cpp15
-rw-r--r--src/quicktemplates2/qquickmenuseparator_p.h4
-rw-r--r--src/quicktemplates2/qquickpalette.cpp328
-rw-r--r--src/quicktemplates2/qquickpalette_p.h163
-rw-r--r--src/quicktemplates2/qquickpaletteprovider.cpp175
-rw-r--r--src/quicktemplates2/qquickpaletteprovider_p.h72
-rw-r--r--src/quicktemplates2/qquickpopup.cpp94
-rw-r--r--src/quicktemplates2/qquickpopup_p.h9
-rw-r--r--src/quicktemplates2/qquickpopup_p_p.h9
-rw-r--r--src/quicktemplates2/qquickpopupitem.cpp81
-rw-r--r--src/quicktemplates2/qquickpopupitem_p_p.h38
-rw-r--r--src/quicktemplates2/qquickradiobutton.cpp16
-rw-r--r--src/quicktemplates2/qquickradiobutton_p.h4
-rw-r--r--src/quicktemplates2/qquickradiodelegate.cpp16
-rw-r--r--src/quicktemplates2/qquickradiodelegate_p.h4
-rw-r--r--src/quicktemplates2/qquickspinbox.cpp7
-rw-r--r--src/quicktemplates2/qquickspinbox_p.h1
-rw-r--r--src/quicktemplates2/qquickswipedelegate.cpp10
-rw-r--r--src/quicktemplates2/qquickswipedelegate_p.h1
-rw-r--r--src/quicktemplates2/qquickswipedelegate_p_p.h2
-rw-r--r--src/quicktemplates2/qquickswitch.cpp7
-rw-r--r--src/quicktemplates2/qquickswitch_p.h1
-rw-r--r--src/quicktemplates2/qquickswitchdelegate.cpp7
-rw-r--r--src/quicktemplates2/qquickswitchdelegate_p.h1
-rw-r--r--src/quicktemplates2/qquicktabbar.cpp7
-rw-r--r--src/quicktemplates2/qquicktabbar_p.h1
-rw-r--r--src/quicktemplates2/qquicktabbutton.cpp16
-rw-r--r--src/quicktemplates2/qquicktabbutton_p.h6
-rw-r--r--src/quicktemplates2/qquicktextarea.cpp77
-rw-r--r--src/quicktemplates2/qquicktextarea_p.h9
-rw-r--r--src/quicktemplates2/qquicktextarea_p_p.h12
-rw-r--r--src/quicktemplates2/qquicktextfield.cpp77
-rw-r--r--src/quicktemplates2/qquicktextfield_p.h9
-rw-r--r--src/quicktemplates2/qquicktextfield_p_p.h14
-rw-r--r--src/quicktemplates2/qquicktoolbar.cpp7
-rw-r--r--src/quicktemplates2/qquicktoolbar_p.h1
-rw-r--r--src/quicktemplates2/qquicktoolbutton.cpp16
-rw-r--r--src/quicktemplates2/qquicktoolbutton_p.h6
-rw-r--r--src/quicktemplates2/qquicktoolseparator.cpp7
-rw-r--r--src/quicktemplates2/qquicktoolseparator_p.h1
-rw-r--r--src/quicktemplates2/qquicktooltip.cpp7
-rw-r--r--src/quicktemplates2/qquicktooltip_p.h1
-rw-r--r--src/quicktemplates2/qquicktumbler.cpp10
-rw-r--r--src/quicktemplates2/qquicktumbler_p.h1
-rw-r--r--src/quicktemplates2/qquicktumbler_p_p.h2
-rw-r--r--src/quicktemplates2/quicktemplates2.pri4
-rw-r--r--tests/auto/palette/data/bindings.qml95
-rw-r--r--tests/auto/palette/data/set-palette.qml66
-rw-r--r--tests/auto/palette/tst_palette.cpp169
-rw-r--r--tests/auto/qquickpopup/tst_qquickpopup.cpp41
-rw-r--r--tests/auto/qquickstyle/tst_qquickstyle.cpp3
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()