aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVitaly Fanaskov <vitaly.fanaskov@qt.io>2019-08-06 15:50:22 +0200
committerVitaly Fanaskov <vitaly.fanaskov@qt.io>2020-03-18 17:29:24 +0100
commit31f5c21ddb571d744efd1885c0687816b3a12225 (patch)
tree1e7ccb81c2db278ed265638eb25a69c546430575
parentfccd63d1296a611a282ae15d0c437eb4b09e6eb1 (diff)
Remove old QQuickPalette implementation
The existing implementation was removed in order to reduce massive code duplication and simplify color resolving process. Unit tests were fixed accordingly. See related changes in the qtdeclarative module for the further details. [ChangeLog][General] the palette API is a part of QQuickItem now. Change-Id: Ic94ab4632e626c11d9b26f035e2a8a119c9088ef Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
-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()