diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2016-08-09 13:42:56 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2016-08-11 07:21:26 +0000 |
commit | 0bf6a3f4255c2e082db1f84de19034f05c48ce56 (patch) | |
tree | 249c285f319ceb85ffe6ac38f5cd7b3808c0009c /src/imports/controls/material | |
parent | 038a0c308a03977d3694e16b31c1cf7c7e1a5611 (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')
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); |