aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/controls/material
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2016-08-09 13:42:56 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2016-08-11 07:21:26 +0000
commit0bf6a3f4255c2e082db1f84de19034f05c48ce56 (patch)
tree249c285f319ceb85ffe6ac38f5cd7b3808c0009c /src/imports/controls/material
parent038a0c308a03977d3694e16b31c1cf7c7e1a5611 (diff)
Add ComboBox::flat
[ChangeLog][ComboBox] Added a flat property that provides more suitable looks for using ComboBox in a ToolBar. Task-number: QTBUG-54935 Change-Id: Id458a078486aeac5d542a57f3ed247d63d25e95c Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/imports/controls/material')
-rw-r--r--src/imports/controls/material/ComboBox.qml23
-rw-r--r--src/imports/controls/material/qquickmaterialstyle.cpp4
-rw-r--r--src/imports/controls/material/qtquickcontrols2materialstyleplugin.cpp3
3 files changed, 18 insertions, 12 deletions
diff --git a/src/imports/controls/material/ComboBox.qml b/src/imports/controls/material/ComboBox.qml
index d1e36003..c18a2624 100644
--- a/src/imports/controls/material/ComboBox.qml
+++ b/src/imports/controls/material/ComboBox.qml
@@ -44,8 +44,6 @@ import QtQuick.Controls.Material.impl 2.1
T.ComboBox {
id: control
- Material.elevation: control.pressed ? 8 : 2
-
implicitWidth: Math.max(background ? background.implicitWidth : 0,
contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0,
@@ -58,13 +56,15 @@ T.ComboBox {
hoverEnabled: Qt.styleHints.useHoverEffects
- // Don't use toolTextColor, as that is often white when we have a white background.
- Material.foreground: Material.foreground === Material.toolTextColor ? undefined : Material.foreground
+ Material.elevation: flat ? control.pressed || control.hovered ? 2 : 0
+ : control.pressed ? 8 : 2
+ Material.background: flat ? "transparent" : undefined
+ Material.foreground: flat ? undefined : Material.foreground
delegate: MenuItem {
width: control.width
text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData
- Material.foreground: control.currentIndex === index ? control.Material.accent : control.Material.foreground
+ Material.foreground: control.currentIndex === index ? control.popup.Material.accent : control.popup.Material.foreground
highlighted: control.highlightedIndex === index
hoverEnabled: control.hoverEnabled
}
@@ -72,8 +72,7 @@ T.ComboBox {
indicator: Image {
x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding
y: control.topPadding + (control.availableHeight - height) / 2
- opacity: !control.enabled ? 0.5 : 1.0
- source: "qrc:/qt-project.org/imports/QtQuick/Controls.2/Material/images/drop-indicator.png"
+ source: "image://material/drop-indicator/" + (control.enabled ? control.Material.primaryTextColor : control.Material.hintTextColor)
}
contentItem: Text {
@@ -92,7 +91,7 @@ T.ComboBox {
implicitWidth: 120
implicitHeight: 48
- radius: 2
+ radius: control.flat ? 0 : 2
color: control.Material.dialogColor
Behavior on color {
@@ -101,15 +100,17 @@ T.ComboBox {
}
}
- layer.enabled: control.enabled && control.Material.elevation > 0
+ layer.enabled: control.enabled && control.Material.background.a > 0
layer.effect: ElevationEffect {
elevation: control.Material.elevation
}
Ripple {
- clipRadius: 2
+ clip: control.flat
+ clipRadius: control.flat ? 0 : 2
width: parent.width
height: parent.height
+ trigger: Ripple.Press
pressed: control.pressed
anchor: control
active: control.pressed || control.visualFocus || control.hovered
@@ -151,7 +152,7 @@ T.ComboBox {
background: Rectangle {
radius: 2
- color: control.Material.dialogColor
+ color: control.popup.Material.dialogColor
layer.enabled: control.enabled
layer.effect: ElevationEffect {
diff --git a/src/imports/controls/material/qquickmaterialstyle.cpp b/src/imports/controls/material/qquickmaterialstyle.cpp
index a166e729..d71545b7 100644
--- a/src/imports/controls/material/qquickmaterialstyle.cpp
+++ b/src/imports/controls/material/qquickmaterialstyle.cpp
@@ -948,7 +948,9 @@ QColor QQuickMaterialStyle::drawerBackgroundColor() const
QColor QQuickMaterialStyle::dialogColor() const
{
- return QColor::fromRgba(m_theme == Light ? dialogColorLight : dialogColorDark);
+ if (!m_hasBackground)
+ return QColor::fromRgba(m_theme == Light ? dialogColorLight : dialogColorDark);
+ return backgroundColor();
}
QColor QQuickMaterialStyle::backgroundDimColor() const
diff --git a/src/imports/controls/material/qtquickcontrols2materialstyleplugin.cpp b/src/imports/controls/material/qtquickcontrols2materialstyleplugin.cpp
index 77dc67a5..27d2c5a6 100644
--- a/src/imports/controls/material/qtquickcontrols2materialstyleplugin.cpp
+++ b/src/imports/controls/material/qtquickcontrols2materialstyleplugin.cpp
@@ -44,6 +44,7 @@
#include <QtQuickControls2/private/qquickstyleselector_p.h>
#include <QtQuickControls2/private/qquickpaddedrectangle_p.h>
+#include <QtQuickControls2/private/qquickcolorimageprovider_p.h>
static inline void initResources()
{
@@ -85,6 +86,8 @@ void QtQuickControls2MaterialStylePlugin::initializeEngine(QQmlEngine *engine, c
{
QQuickStylePlugin::initializeEngine(engine, uri);
+ engine->addImageProvider(name(), new QQuickColorImageProvider(QStringLiteral(":/qt-project.org/imports/QtQuick/Controls.2/Material/images")));
+
QByteArray import = QByteArray(uri) + ".impl";
qmlRegisterType<QQuickPaddedRectangle>(import, 2, 0, "PaddedRectangle");
qmlRegisterRevision<QQuickPaddedRectangle, 1>(import, 2, 1);