diff options
51 files changed, 244 insertions, 166 deletions
diff --git a/examples/quick/controls/basiclayouts/basiclayouts.pro b/examples/quick/controls/basiclayouts/basiclayouts.pro index a5586fe6..fbb5f0c1 100644 --- a/examples/quick/controls/basiclayouts/basiclayouts.pro +++ b/examples/quick/controls/basiclayouts/basiclayouts.pro @@ -1,6 +1,6 @@ QT += qml quick TARGET = basiclayouts -!android: !ios: !blackberry: qtHaveModule(widgets): QT += widgets +!android:!ios:!blackberry:!qnx:!winrt:qtHaveModule(widgets): QT += widgets include(src/src.pri) include(../shared/shared.pri) diff --git a/examples/quick/controls/gallery/gallery.pro b/examples/quick/controls/gallery/gallery.pro index c6f67b6b..d7328918 100644 --- a/examples/quick/controls/gallery/gallery.pro +++ b/examples/quick/controls/gallery/gallery.pro @@ -1,6 +1,6 @@ QT += qml quick TARGET = gallery -!android: !ios: !blackberry: qtHaveModule(widgets): QT += widgets +!android:!ios:!blackberry:!qnx:!winrt:qtHaveModule(widgets): QT += widgets include(src/src.pri) include(../shared/shared.pri) diff --git a/examples/quick/controls/splitview/splitview.pro b/examples/quick/controls/splitview/splitview.pro index 11c55f74..79f1f7d5 100644 --- a/examples/quick/controls/splitview/splitview.pro +++ b/examples/quick/controls/splitview/splitview.pro @@ -1,6 +1,6 @@ QT += qml quick TARGET = splitview -!android: !ios: !blackberry: qtHaveModule(widgets): QT += widgets +!android:!ios:!blackberry:!qnx:!winrt:qtHaveModule(widgets): QT += widgets include(src/src.pri) include(../shared/shared.pri) diff --git a/examples/quick/controls/tableview/tableview.pro b/examples/quick/controls/tableview/tableview.pro index 7238d007..77520ea5 100644 --- a/examples/quick/controls/tableview/tableview.pro +++ b/examples/quick/controls/tableview/tableview.pro @@ -1,6 +1,6 @@ QT += qml quick TARGET = tableview -!android: !ios: !blackberry: qtHaveModule(widgets): QT += widgets +!android:!ios:!blackberry:!qnx:!winrt:qtHaveModule(widgets): QT += widgets include(src/src.pri) include(../shared/shared.pri) diff --git a/examples/quick/controls/texteditor/texteditor.pro b/examples/quick/controls/texteditor/texteditor.pro index 06e669d9..b6a908b4 100644 --- a/examples/quick/controls/texteditor/texteditor.pro +++ b/examples/quick/controls/texteditor/texteditor.pro @@ -1,6 +1,6 @@ QT += qml quick TARGET = texteditor -!android: !ios: !blackberry: qtHaveModule(widgets): QT += widgets +!android:!ios:!blackberry:!qnx:!winrt:qtHaveModule(widgets): QT += widgets include(src/src.pri) include(../shared/shared.pri) diff --git a/examples/quick/controls/touch/touch.pro b/examples/quick/controls/touch/touch.pro index 6afca140..e230797f 100644 --- a/examples/quick/controls/touch/touch.pro +++ b/examples/quick/controls/touch/touch.pro @@ -1,6 +1,6 @@ QT += qml quick TARGET = touch -!android: !ios: !blackberry: qtHaveModule(widgets): QT += widgets +!android:!ios:!blackberry:!qnx:!winrt:qtHaveModule(widgets): QT += widgets include(src/src.pri) include(../shared/shared.pri) diff --git a/examples/quick/dialogs/systemdialogs/systemdialogs.pro b/examples/quick/dialogs/systemdialogs/systemdialogs.pro index 52ab103c..d0489cd2 100644 --- a/examples/quick/dialogs/systemdialogs/systemdialogs.pro +++ b/examples/quick/dialogs/systemdialogs/systemdialogs.pro @@ -1,5 +1,5 @@ QT += qml quick -!android: !ios: !blackberry: qtHaveModule(widgets): QT += widgets +!android:!ios:!blackberry:!qnx:!winrt:qtHaveModule(widgets): QT += widgets QT += quick qml SOURCES += main.cpp diff --git a/src/controls/ApplicationWindow.qml b/src/controls/ApplicationWindow.qml index f0a42e93..5ac73fbe 100644 --- a/src/controls/ApplicationWindow.qml +++ b/src/controls/ApplicationWindow.qml @@ -182,7 +182,7 @@ Window { /*! \internal */ default property alias data: contentArea.data - color: syspal.window + color: SystemPaletteSingleton.window(true) flags: Qt.Window | Qt.WindowFullscreenButtonHint | Qt.WindowTitleHint | Qt.WindowSystemMenuHint | Qt.WindowMinMaxButtonsHint | @@ -190,8 +190,6 @@ Window { // QTBUG-35049: Windows is removing features we didn't ask for, even though Qt::CustomizeWindowHint is not set // Otherwise Qt.Window | Qt.WindowFullscreenButtonHint would be enough - SystemPalette {id: syspal} - Item { id: backgroundItem anchors.fill: parent diff --git a/src/controls/ComboBox.qml b/src/controls/ComboBox.qml index 7a101969..995cdcde 100644 --- a/src/controls/ComboBox.qml +++ b/src/controls/ComboBox.qml @@ -153,7 +153,7 @@ Control { /*! \qmlproperty bool ComboBox::pressed This property holds whether the button is being pressed. */ - readonly property bool pressed: mouseArea.pressed && mouseArea.containsMouse || popup.__popupVisible + readonly property bool pressed: mouseArea.effectivePressed || popup.__popupVisible /*! \qmlproperty bool ComboBox::hovered @@ -309,12 +309,23 @@ Control { MouseArea { id: mouseArea + property bool overridePressed: false + readonly property bool effectivePressed: (pressed || overridePressed) && containsMouse anchors.fill: parent hoverEnabled: true onPressed: { if (comboBox.activeFocusOnPress) forceActiveFocus() - popup.show() + if (!Settings.hasTouchScreen) + popup.show() + else + overridePressed = true + } + onCanceled: overridePressed = false + onClicked: { + if (Settings.hasTouchScreen) + popup.show() + overridePressed = false } onWheel: { if (wheel.angleDelta.y > 0) { @@ -361,9 +372,9 @@ Control { font: __style && __style.editorFont !== undefined ? __style.editorFont : TextSingleton.font renderType: __style ? __style.renderType : Text.NativeRendering selectByMouse: true - color: __style.__syspal.text - selectionColor: __style.__syspal.highlight - selectedTextColor: __style.__syspal.highlightedText + color: SystemPaletteSingleton.text(enabled) + selectionColor: SystemPaletteSingleton.highlight(enabled) + selectedTextColor: SystemPaletteSingleton.highlightedText(enabled) onAccepted: { var idx = input.find(editText, Qt.MatchFixedString) if (idx > -1) { diff --git a/src/controls/MenuBar.qml b/src/controls/MenuBar.qml index 0fe56ef1..4d577930 100644 --- a/src/controls/MenuBar.qml +++ b/src/controls/MenuBar.qml @@ -174,8 +174,13 @@ MenuBarPrivate { Keys.onLeftPressed: { if (d.openedMenuIndex > 0) { - d.preselectMenuItem = true - d.openedMenuIndex-- + var idx = d.openedMenuIndex - 1 + while (idx >= 0 && !root.menus[idx].enabled) + idx-- + if (idx >= 0) { + d.preselectMenuItem = true + d.openedMenuIndex = idx + } } else { event.accepted = false; } @@ -183,8 +188,13 @@ MenuBarPrivate { Keys.onRightPressed: { if (d.openedMenuIndex !== -1 && d.openedMenuIndex < root.menus.length - 1) { - d.preselectMenuItem = true - d.openedMenuIndex++ + var idx = d.openedMenuIndex + 1 + while (idx < root.menus.length && !root.menus[idx].enabled) + idx++ + if (idx < root.menus.length) { + d.preselectMenuItem = true + d.openedMenuIndex = idx + } } else { event.accepted = false; } @@ -223,6 +233,8 @@ MenuBarPrivate { Connections { target: d onOpenedMenuIndexChanged: { + if (!__menuItem.enabled) + return; if (d.openedMenuIndex === index) { if (__menuItem.__usingDefaultStyle) __menuItem.style = d.style.menuStyle diff --git a/src/controls/Private/BasicButton.qml b/src/controls/Private/BasicButton.qml index 849315e9..f482ad72 100644 --- a/src/controls/Private/BasicButton.qml +++ b/src/controls/Private/BasicButton.qml @@ -126,8 +126,6 @@ Control { property string iconName: action ? action.iconName : "" /*! \internal */ - property color __textColor: syspal.text - /*! \internal */ property string __position: "only" /*! \internal */ readonly property bool __iconOverriden: button.action && (button.action.iconSource !== button.iconSource || button.action.iconName !== button.iconName) @@ -218,8 +216,6 @@ Control { /*! \internal */ property bool __effectivePressed: behavior.effectivePressed - SystemPalette { id: syspal } - states: [ State { name: "boundAction" diff --git a/src/controls/Private/MenuContentItem.qml b/src/controls/Private/MenuContentItem.qml index dbbf26a9..669cde2f 100644 --- a/src/controls/Private/MenuContentItem.qml +++ b/src/controls/Private/MenuContentItem.qml @@ -165,7 +165,7 @@ Loader { itemsModel: __menu.items minWidth: __menu.__minimumWidth maxHeight: d.style ? d.style.__maxPopupHeight : 0 - onTriggered: d.triggerAndDismiss(item) + onTriggered: if (item.__menuItem.enabled) d.triggerAndDismiss(item) } Component { @@ -199,6 +199,8 @@ Loader { active: visible function __showSubMenu(immediately) { + if (!__menuItem.enabled) + return; if (immediately) { if (__menu.__currentIndex === __menuItemIndex) { if (__menuItem.__usingDefaultStyle) diff --git a/src/controls/Private/Style.qml b/src/controls/Private/Style.qml index e99db169..53497517 100644 --- a/src/controls/Private/Style.qml +++ b/src/controls/Private/Style.qml @@ -50,10 +50,4 @@ import QtQuick.Controls.Private 1.0 AbstractStyle { /*! The control attached to this style */ readonly property Item control: __control - - /*! \internal */ - property var __syspal: SystemPalette { - colorGroup: control.enabled ? - SystemPalette.Active : SystemPalette.Disabled - } } diff --git a/src/controls/Private/SystemPaletteSingleton.qml b/src/controls/Private/SystemPaletteSingleton.qml new file mode 100644 index 00000000..9354af03 --- /dev/null +++ b/src/controls/Private/SystemPaletteSingleton.qml @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/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 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 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 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +pragma Singleton +import QtQuick 2.2 + +QtObject { + property SystemPalette active: SystemPalette { colorGroup: SystemPalette.Active } + property SystemPalette disabled: SystemPalette { colorGroup: SystemPalette.Disabled } + + function alternateBase(enabled) { return enabled ? active.alternateBase : disabled.alternateBase } + function base(enabled) { return enabled ? active.base : disabled.base } + function button(enabled) { return enabled ? active.button : disabled.button } + function buttonText(enabled) { return enabled ? active.buttonText : disabled.buttonText } + function dark(enabled) { return enabled ? active.dark : disabled.dark } + function highlight(enabled) { return enabled ? active.highlight : disabled.highlight } + function highlightedText(enabled) { return enabled ? active.highlightedText : disabled.highlightedText } + function light(enabled) { return enabled ? active.light : disabled.light } + function mid(enabled) { return enabled ? active.mid : disabled.mid } + function midlight(enabled) { return enabled ? active.midlight : disabled.midlight } + function shadow(enabled) { return enabled ? active.shadow : disabled.shadow } + function text(enabled) { return enabled ? active.text : disabled.text } + function window(enabled) { return enabled ? active.window : disabled.window } + function windowText(enabled) { return enabled ? active.windowText : disabled.windowText } +} diff --git a/src/controls/Private/private.pri b/src/controls/Private/private.pri index f2da1ec9..e409ee4a 100644 --- a/src/controls/Private/private.pri +++ b/src/controls/Private/private.pri @@ -22,7 +22,7 @@ SOURCES += \ $$PWD/qquickabstractstyle.cpp -!android: !ios: !blackberry: qtHaveModule(widgets) { +!android:!ios:!blackberry:!qnx:!winrt:qtHaveModule(widgets) { QT += widgets HEADERS += $$PWD/qquickstyleitem_p.h SOURCES += $$PWD/qquickstyleitem.cpp @@ -46,6 +46,7 @@ PRIVATE_QML_FILES += \ $$PWD/StackView.js \ $$PWD/ScrollViewHelper.qml \ $$PWD/ScrollBar.qml \ + $$PWD/SystemPaletteSingleton.qml \ $$PWD/TableViewSelection.qml \ $$PWD/TextHandle.qml \ $$PWD/TextSingleton.qml \ diff --git a/src/controls/Private/qmldir b/src/controls/Private/qmldir index 589087bf..a40e2b4c 100644 --- a/src/controls/Private/qmldir +++ b/src/controls/Private/qmldir @@ -24,5 +24,6 @@ MenuContentScroller 1.0 MenuContentScroller.qml ColumnMenuContent 1.0 ColumnMenuContent.qml ContentItem 1.0 ContentItem.qml HoverButton 1.0 HoverButton.qml +singleton SystemPaletteSingleton 1.0 SystemPaletteSingleton.qml singleton TextSingleton 1.0 TextSingleton.qml TextHandle 1.0 TextHandle.qml diff --git a/src/controls/Private/qquickcontrolsettings.cpp b/src/controls/Private/qquickcontrolsettings.cpp index e1d0cabb..b7ebc213 100644 --- a/src/controls/Private/qquickcontrolsettings.cpp +++ b/src/controls/Private/qquickcontrolsettings.cpp @@ -53,7 +53,7 @@ QT_BEGIN_NAMESPACE static QString defaultStyleName() { //Only enable QStyle support when we are using QApplication -#if !defined(Q_OS_IOS) && !defined(Q_OS_ANDROID) && !defined (Q_OS_BLACKBERRY) +#if !defined(Q_OS_IOS) && !defined(Q_OS_ANDROID) && !defined(Q_OS_BLACKBERRY) && !defined(Q_OS_QNX) && !defined(Q_OS_WINRT) if (QCoreApplication::instance()->inherits("QApplication")) return QLatin1String("Desktop"); #endif diff --git a/src/controls/Slider.qml b/src/controls/Slider.qml index 2838ed7e..af5b89cd 100644 --- a/src/controls/Slider.qml +++ b/src/controls/Slider.qml @@ -237,18 +237,22 @@ Control { onMouseXChanged: { if (pressed && __horizontal) { var pos = clamp (mouse.x + clickOffset - fakeHandle.width/2) - fakeHandle.x = pos - if (Math.abs(mouse.x - pressX) >= Settings.dragThreshold) + var overThreshold = Math.abs(mouse.x - pressX) >= Settings.dragThreshold + if (overThreshold) preventStealing = true + if (overThreshold || !Settings.hasTouchScreen) + fakeHandle.x = pos } } onMouseYChanged: { if (pressed && !__horizontal) { var pos = clamp (mouse.y + clickOffset- fakeHandle.height/2) - fakeHandle.y = pos - if (Math.abs(mouse.y - pressY) >= Settings.dragThreshold) + var overThreshold = Math.abs(mouse.y - pressY) >= Settings.dragThreshold + if (overThreshold) preventStealing = true + if (overThreshold || !Settings.hasTouchScreen) + fakeHandle.y = pos } } diff --git a/src/controls/Styles/Base/ButtonStyle.qml b/src/controls/Styles/Base/ButtonStyle.qml index d0299a55..566f93e5 100644 --- a/src/controls/Styles/Base/ButtonStyle.qml +++ b/src/controls/Styles/Base/ButtonStyle.qml @@ -79,12 +79,6 @@ Style { /*! The \l {QtQuick.Controls::}{Button} attached to this style. */ readonly property Button control: __control - /*! \internal */ - property var __syspal: SystemPalette { - colorGroup: control.enabled ? - SystemPalette.Active : SystemPalette.Disabled - } - /*! The padding between the background and the label components. */ padding { top: 4 @@ -150,7 +144,7 @@ Style { renderType: Text.NativeRendering anchors.verticalCenter: parent.verticalCenter text: control.text - color: __syspal.buttonText + color: SystemPaletteSingleton.buttonText(control.enabled) } } } diff --git a/src/controls/Styles/Base/CalendarStyle.qml b/src/controls/Styles/Base/CalendarStyle.qml index b5485d82..26ca2048 100644 --- a/src/controls/Styles/Base/CalendarStyle.qml +++ b/src/controls/Styles/Base/CalendarStyle.qml @@ -272,7 +272,7 @@ Style { readonly property bool addExtraMargin: control.frameVisible && styleData.selected readonly property color sameMonthDateTextColor: "#444" - readonly property color selectedDateColor: Qt.platform.os === "osx" ? "#3778d0" : __syspal.highlight + readonly property color selectedDateColor: Qt.platform.os === "osx" ? "#3778d0" : SystemPaletteSingleton.highlight(control.enabled) readonly property color selectedDateTextColor: "white" readonly property color differentMonthDateTextColor: "#bbb" readonly property color invalidDateColor: "#dddddd" diff --git a/src/controls/Styles/Base/CheckBoxStyle.qml b/src/controls/Styles/Base/CheckBoxStyle.qml index 2dcaa9e9..c8592b76 100644 --- a/src/controls/Styles/Base/CheckBoxStyle.qml +++ b/src/controls/Styles/Base/CheckBoxStyle.qml @@ -78,11 +78,6 @@ Style { /*! The \l CheckBox attached to this style. */ readonly property CheckBox control: __control - /*! \internal */ - property var __syspal: SystemPalette { - colorGroup: control.enabled ? - SystemPalette.Active : SystemPalette.Disabled - } /*! This defines the text label. */ property Component label: Item { @@ -105,7 +100,7 @@ Style { id: text text: control.text anchors.centerIn: parent - color: __syspal.text + color: SystemPaletteSingleton.text(control.enabled) renderType: Text.NativeRendering } } diff --git a/src/controls/Styles/Base/ComboBoxStyle.qml b/src/controls/Styles/Base/ComboBoxStyle.qml index eed7e7f4..de78dc02 100644 --- a/src/controls/Styles/Base/ComboBoxStyle.qml +++ b/src/controls/Styles/Base/ComboBoxStyle.qml @@ -69,11 +69,7 @@ Style { \sa Text::renderType */ property int renderType: Text.NativeRendering - /*! \internal */ - property var __syspal: SystemPalette { - colorGroup: control.enabled ? - SystemPalette.Active : SystemPalette.Disabled - } + /*! The \l ComboBox attached to this style. */ readonly property ComboBox control: __control @@ -172,7 +168,7 @@ Style { anchors.verticalCenter: parent.verticalCenter text: control.currentText renderType: cbStyle.renderType - color: __syspal.text + color: SystemPaletteSingleton.text(control.enabled) elide: Text.ElideRight } } diff --git a/src/controls/Styles/Base/GroupBoxStyle.qml b/src/controls/Styles/Base/GroupBoxStyle.qml index af8d41b6..545ca07b 100644 --- a/src/controls/Styles/Base/GroupBoxStyle.qml +++ b/src/controls/Styles/Base/GroupBoxStyle.qml @@ -50,11 +50,6 @@ import QtQuick.Controls.Private 1.0 */ Style { - /*! \internal */ - property var __syspal: SystemPalette { - colorGroup: control.enabled ? - SystemPalette.Active : SystemPalette.Disabled - } /*! The \l GroupBox attached to this style. */ readonly property GroupBox control: __control @@ -67,7 +62,7 @@ Style { } /*! The title text color. */ - property color textColor: __syspal.text + property color textColor: SystemPaletteSingleton.text(control.enabled) /*! The check box. */ property Component checkbox: Item { diff --git a/src/controls/Styles/Base/MenuBarStyle.qml b/src/controls/Styles/Base/MenuBarStyle.qml index 8ab758f5..cff2b095 100644 --- a/src/controls/Styles/Base/MenuBarStyle.qml +++ b/src/controls/Styles/Base/MenuBarStyle.qml @@ -100,14 +100,12 @@ Style { implicitHeight: text.height + 4 color: styleData.open ? "#49d" : "transparent" - SystemPalette { id: syspal } - Text { id: text text: formatMnemonic(styleData.text, styleData.underlineMnemonic) anchors.centerIn: parent renderType: Text.NativeRendering - color: styleData.open ? "white" : syspal.windowText + color: styleData.open ? "white" : SystemPaletteSingleton.windowText(control.enabled) } } diff --git a/src/controls/Styles/Base/ProgressBarStyle.qml b/src/controls/Styles/Base/ProgressBarStyle.qml index 0a98beef..ec379884 100644 --- a/src/controls/Styles/Base/ProgressBarStyle.qml +++ b/src/controls/Styles/Base/ProgressBarStyle.qml @@ -111,11 +111,6 @@ import QtQuick.Controls.Private 1.0 Style { id: progressBarStyle - /*! \internal */ - property var __syspal: SystemPalette { - colorGroup: control.enabled ? - SystemPalette.Active : SystemPalette.Disabled - } /*! The \l ProgressBar attached to this style. */ readonly property ProgressBar control: __control diff --git a/src/controls/Styles/Base/RadioButtonStyle.qml b/src/controls/Styles/Base/RadioButtonStyle.qml index 0f242eb0..86b7c816 100644 --- a/src/controls/Styles/Base/RadioButtonStyle.qml +++ b/src/controls/Styles/Base/RadioButtonStyle.qml @@ -75,11 +75,6 @@ import QtQuick.Controls.Private 1.0 Style { id: radiobuttonStyle - /*! \internal */ - property var __syspal: SystemPalette { - colorGroup: control.enabled ? - SystemPalette.Active : SystemPalette.Disabled - } /*! The \l RadioButton attached to this style. */ readonly property RadioButton control: __control @@ -104,7 +99,7 @@ Style { id: text text: control.text anchors.centerIn: parent - color: __syspal.text + color: SystemPaletteSingleton.text(control.enabled) renderType: Text.NativeRendering } } diff --git a/src/controls/Styles/Base/ScrollViewStyle.qml b/src/controls/Styles/Base/ScrollViewStyle.qml index a962d807..20fc5a19 100644 --- a/src/controls/Styles/Base/ScrollViewStyle.qml +++ b/src/controls/Styles/Base/ScrollViewStyle.qml @@ -51,11 +51,6 @@ import QtQuick.Controls.Private 1.0 Style { id: root - /*! \internal */ - property var __syspal: SystemPalette { - colorGroup: control.enabled ? - SystemPalette.Active : SystemPalette.Disabled - } /*! The \l ScrollView attached to this style. */ readonly property ScrollView control: __control diff --git a/src/controls/Styles/Base/SliderStyle.qml b/src/controls/Styles/Base/SliderStyle.qml index d5109089..1e2750fb 100644 --- a/src/controls/Styles/Base/SliderStyle.qml +++ b/src/controls/Styles/Base/SliderStyle.qml @@ -82,11 +82,6 @@ import QtQuick.Controls.Private 1.0 Style { id: styleitem - /*! \internal */ - property var __syspal: SystemPalette { - colorGroup: control.enabled ? - SystemPalette.Active : SystemPalette.Disabled - } /*! The \l Slider attached to this style. */ readonly property Slider control: __control diff --git a/src/controls/Styles/Base/SpinBoxStyle.qml b/src/controls/Styles/Base/SpinBoxStyle.qml index 57b26ec4..6c76386f 100644 --- a/src/controls/Styles/Base/SpinBoxStyle.qml +++ b/src/controls/Styles/Base/SpinBoxStyle.qml @@ -69,12 +69,6 @@ Style { /*! The \l SpinBox attached to this style. */ readonly property SpinBox control: __control - /*! \internal */ - property var __syspal: SystemPalette { - colorGroup: control.enabled ? - SystemPalette.Active : SystemPalette.Disabled - } - /*! The content margins of the text field. */ padding { top: 1 ; left: Math.round(styleData.contentHeight/2) ; right: Math.max(22, Math.round(styleData.contentHeight)) ; bottom: 0 } /*! \qmlproperty enumeration horizontalAlignment @@ -93,13 +87,13 @@ Style { property int horizontalAlignment: Qt.AlignRight /*! The text color. */ - property color textColor: __syspal.text + property color textColor: SystemPaletteSingleton.text(control.enabled) /*! The text highlight color, used behind selections. */ - property color selectionColor: __syspal.highlight + property color selectionColor: SystemPaletteSingleton.highlight(control.enabled) /*! The highlighted text color, used in selections. */ - property color selectedTextColor: __syspal.highlightedText + property color selectedTextColor: SystemPaletteSingleton.highlightedText(control.enabled) /*! \qmlproperty enumeration renderType diff --git a/src/controls/Styles/Base/SwitchStyle.qml b/src/controls/Styles/Base/SwitchStyle.qml index 01779582..d5c5cf07 100644 --- a/src/controls/Styles/Base/SwitchStyle.qml +++ b/src/controls/Styles/Base/SwitchStyle.qml @@ -80,8 +80,10 @@ Style { implicitWidth: Math.round((parent.parent.width - padding.left - padding.right)/2) implicitHeight: control.height - padding.top - padding.bottom - border.color: control.activeFocus ? Qt.darker(__syspal.highlight, 2) : Qt.darker(__syspal.button, 2) - property color bg: control.activeFocus ? Qt.darker(__syspal.highlight, 1.2) : __syspal.button + border.color: control.activeFocus ? Qt.darker(highlight, 2) : Qt.darker(button, 2) + property color bg: control.activeFocus ? Qt.darker(highlight, 1.2) : button + property color highlight: SystemPaletteSingleton.highlight(control.enabled) + property color button: SystemPaletteSingleton.button(control.enabled) gradient: Gradient { GradientStop {color: Qt.lighter(bg, 1.4) ; position: 0} GradientStop {color: bg ; position: 1} @@ -92,8 +94,9 @@ Style { /*! This property holds the background groove of the switch. */ property Component groove: Rectangle { - property color shadow: control.checked ? Qt.darker(__syspal.highlight, 1.2): "#999" - property color bg: control.checked ? __syspal.highlight:"#bbb" + property color shadow: control.checked ? Qt.darker(highlight, 1.2): "#999" + property color bg: control.checked ? highlight:"#bbb" + property color highlight: SystemPaletteSingleton.highlight(control.enabled) implicitWidth: Math.round(implicitHeight * 3) implicitHeight: Math.max(16, Math.round(TextSingleton.implicitHeight)) diff --git a/src/controls/Styles/Base/TabViewStyle.qml b/src/controls/Styles/Base/TabViewStyle.qml index f13787ad..44c6ca72 100644 --- a/src/controls/Styles/Base/TabViewStyle.qml +++ b/src/controls/Styles/Base/TabViewStyle.qml @@ -169,11 +169,7 @@ Style { elide: Text.ElideMiddle renderType: Text.NativeRendering scale: control.tabPosition === Qt.TopEdge ? 1 : -1 - property var __syspal: SystemPalette { - colorGroup: styleData.enabled ? - SystemPalette.Active : SystemPalette.Disabled - } - color: __syspal.text + color: SystemPaletteSingleton.text(styleData.enabled) Rectangle { anchors.centerIn: parent width: textitem.paintedWidth + 6 diff --git a/src/controls/Styles/Base/TableViewStyle.qml b/src/controls/Styles/Base/TableViewStyle.qml index 5dca6631..b59a38ca 100644 --- a/src/controls/Styles/Base/TableViewStyle.qml +++ b/src/controls/Styles/Base/TableViewStyle.qml @@ -58,10 +58,10 @@ ScrollViewStyle { readonly property TableView control: __control /*! The text color. */ - property color textColor: __syspal.text + property color textColor: SystemPaletteSingleton.text(control.enabled) /*! The background color. */ - property color backgroundColor: control.backgroundVisible ? __syspal.base : "transparent" + property color backgroundColor: control.backgroundVisible ? SystemPaletteSingleton.base(control.enabled) : "transparent" /*! The alternate background color. */ property color alternateBackgroundColor: "#f5f5f5" diff --git a/src/controls/Styles/Base/TextAreaStyle.qml b/src/controls/Styles/Base/TextAreaStyle.qml index 4ffefe63..301ac165 100644 --- a/src/controls/Styles/Base/TextAreaStyle.qml +++ b/src/controls/Styles/Base/TextAreaStyle.qml @@ -71,16 +71,16 @@ ScrollViewStyle { property font font /*! The text color. */ - property color textColor: __syspal.text + property color textColor: SystemPaletteSingleton.text(control.enabled) /*! The text highlight color, used behind selections. */ - property color selectionColor: __syspal.highlight + property color selectionColor: SystemPaletteSingleton.highlight(control.enabled) /*! The highlighted text color, used in selections. */ - property color selectedTextColor: __syspal.highlightedText + property color selectedTextColor: SystemPaletteSingleton.highlightedText(control.enabled) /*! The background color. */ - property color backgroundColor: control.backgroundVisible ? __syspal.base : "transparent" + property color backgroundColor: control.backgroundVisible ? SystemPaletteSingleton.base(control.enabled) : "transparent" /*! \qmlproperty enumeration renderType diff --git a/src/controls/Styles/Base/TextFieldStyle.qml b/src/controls/Styles/Base/TextFieldStyle.qml index dc25033a..f33d4876 100644 --- a/src/controls/Styles/Base/TextFieldStyle.qml +++ b/src/controls/Styles/Base/TextFieldStyle.qml @@ -68,11 +68,6 @@ import QtQuick.Controls.Private 1.0 Style { id: style - /*! \internal */ - property var __syspal: SystemPalette { - colorGroup: control.enabled ? - SystemPalette.Active : SystemPalette.Disabled - } /*! The \l TextField attached to this style. */ readonly property TextField control: __control @@ -83,13 +78,13 @@ Style { property font font /*! The text color. */ - property color textColor: __syspal.text + property color textColor: SystemPaletteSingleton.text(control.enabled) /*! The text highlight color, used behind selections. */ - property color selectionColor: __syspal.highlight + property color selectionColor: SystemPaletteSingleton.highlight(control.enabled) /*! The highlighted text color, used in selections. */ - property color selectedTextColor: __syspal.highlightedText + property color selectedTextColor: SystemPaletteSingleton.highlightedText(control.enabled) /*! \qmlproperty enumeration renderType diff --git a/src/controls/Styles/Desktop/CheckBoxStyle.qml b/src/controls/Styles/Desktop/CheckBoxStyle.qml index 7a4c4639..4fb7d47a 100644 --- a/src/controls/Styles/Desktop/CheckBoxStyle.qml +++ b/src/controls/Styles/Desktop/CheckBoxStyle.qml @@ -74,7 +74,7 @@ Style { renderType: Text.NativeRendering elide: Text.ElideRight enabled: control.enabled - color: __syspal.windowText + color: SystemPaletteSingleton.windowText(control.enabled) StyleItem { elementType: "focusrect" anchors.margins: -1 diff --git a/src/controls/Styles/Desktop/MenuStyle.qml b/src/controls/Styles/Desktop/MenuStyle.qml index 4a0d5894..ecd898cf 100644 --- a/src/controls/Styles/Desktop/MenuStyle.qml +++ b/src/controls/Styles/Desktop/MenuStyle.qml @@ -61,7 +61,7 @@ Style { fill: parent margins: pixelMetric("menupanelwidth") } - color: __syspal.window + color: SystemPaletteSingleton.window(control.enabled) } Accessible.role: Accessible.PopupMenu diff --git a/src/controls/Styles/Desktop/RadioButtonStyle.qml b/src/controls/Styles/Desktop/RadioButtonStyle.qml index 2babc77c..a1809ad2 100644 --- a/src/controls/Styles/Desktop/RadioButtonStyle.qml +++ b/src/controls/Styles/Desktop/RadioButtonStyle.qml @@ -77,7 +77,7 @@ Style { renderType: Text.NativeRendering elide: Text.ElideRight enabled: control.enabled - color: __syspal.windowText + color: SystemPaletteSingleton.windowText(control.enabled) StyleItem { elementType: "focusrect" anchors.margins: -1 diff --git a/src/controls/Styles/Desktop/SpinBoxStyle.qml b/src/controls/Styles/Desktop/SpinBoxStyle.qml index da3beeff..d7d32916 100644 --- a/src/controls/Styles/Desktop/SpinBoxStyle.qml +++ b/src/controls/Styles/Desktop/SpinBoxStyle.qml @@ -44,11 +44,6 @@ import QtQuick.Controls.Private 1.0 Style { readonly property SpinBox control: __control - property var __syspal: SystemPalette { - colorGroup: control.enabled ? - SystemPalette.Active : SystemPalette.Disabled - } - padding { top: control.__panel ? control.__panel.topPadding + (styleitem.style === "mac" ? 2 : 0) : 0 left: control.__panel ? control.__panel.leftPadding : 0 @@ -70,10 +65,10 @@ Style { property alias font: styleitem.font - property color foregroundColor: __syspal.text - property color backgroundColor: __syspal.base - property color selectionColor: __syspal.highlight - property color selectedTextColor: __syspal.highlightedText + property color foregroundColor: SystemPaletteSingleton.text(control.enabled) + property color backgroundColor: SystemPaletteSingleton.base(control.enabled) + property color selectionColor: SystemPaletteSingleton.highlight(control.enabled) + property color selectedTextColor: SystemPaletteSingleton.highlightedText(control.enabled) property int topPadding: edit.anchors.topMargin property int leftPadding: 3 + edit.anchors.leftMargin diff --git a/src/controls/Styles/Desktop/TableViewStyle.qml b/src/controls/Styles/Desktop/TableViewStyle.qml index 5ad1f394..605c62d6 100644 --- a/src/controls/Styles/Desktop/TableViewStyle.qml +++ b/src/controls/Styles/Desktop/TableViewStyle.qml @@ -45,14 +45,10 @@ import "." ScrollViewStyle { id: root - property var __syspal: SystemPalette { - colorGroup: control.enabled ? - SystemPalette.Active : SystemPalette.Disabled - } readonly property TableView control: __control property bool activateItemOnSingleClick: __styleitem.styleHint("activateItemOnSingleClick") property color textColor: __styleitem.textColor - property color backgroundColor: __syspal.base + property color backgroundColor: SystemPaletteSingleton.base(control.enabled) property color highlightedTextColor: __styleitem.highlightedTextColor property StyleItem __styleitem: StyleItem{ diff --git a/src/controls/Styles/Desktop/TextAreaStyle.qml b/src/controls/Styles/Desktop/TextAreaStyle.qml index 46750c1a..9a177303 100644 --- a/src/controls/Styles/Desktop/TextAreaStyle.qml +++ b/src/controls/Styles/Desktop/TextAreaStyle.qml @@ -43,10 +43,10 @@ import QtQuick.Controls.Private 1.0 ScrollViewStyle { property font font: __styleitem.font - property color textColor: __syspal.text - property color selectionColor: __syspal.highlight - property color selectedTextColor: __syspal.highlightedText - property color backgroundColor: control.backgroundVisible ? __syspal.base : "transparent" + property color textColor: SystemPaletteSingleton.text(control.enabled) + property color selectionColor: SystemPaletteSingleton.highlight(control.enabled) + property color selectedTextColor: SystemPaletteSingleton.highlightedText(control.enabled) + property color backgroundColor: control.backgroundVisible ? SystemPaletteSingleton.base(control.enabled) : "transparent" property StyleItem __styleitem: StyleItem{ elementType: "edit" diff --git a/src/controls/Styles/Desktop/TextFieldStyle.qml b/src/controls/Styles/Desktop/TextFieldStyle.qml index c7e85ff4..585df03d 100644 --- a/src/controls/Styles/Desktop/TextFieldStyle.qml +++ b/src/controls/Styles/Desktop/TextFieldStyle.qml @@ -54,17 +54,10 @@ Style { hover: hovered hints: control.styleHints - SystemPalette { - id: syspal - colorGroup: control.enabled ? - SystemPalette.Active : - SystemPalette.Disabled - } - - property color textColor: syspal.text + property color textColor: SystemPaletteSingleton.text(control.enabled) property color placeholderTextColor: "darkGray" - property color selectionColor: syspal.highlight - property color selectedTextColor: syspal.highlightedText + property color selectionColor: SystemPaletteSingleton.highlight(control.enabled) + property color selectedTextColor: SystemPaletteSingleton.highlightedText(control.enabled) property bool rounded: !!hints["rounded"] diff --git a/src/controls/plugins.qmltypes b/src/controls/plugins.qmltypes index a9d6e527..d1a56b89 100644 --- a/src/controls/plugins.qmltypes +++ b/src/controls/plugins.qmltypes @@ -1201,7 +1201,6 @@ Module { Property { name: "tooltip"; type: "string" } Property { name: "iconSource"; type: "QUrl" } Property { name: "iconName"; type: "string" } - Property { name: "__textColor"; type: "QColor" } Property { name: "__position"; type: "string" } Property { name: "__iconOverriden"; type: "bool"; isReadonly: true } Property { name: "__action"; type: "QQuickAction"; isPointer: true } @@ -2182,7 +2181,6 @@ Module { Property { name: "tooltip"; type: "string" } Property { name: "iconSource"; type: "QUrl" } Property { name: "iconName"; type: "string" } - Property { name: "__textColor"; type: "QColor" } Property { name: "__position"; type: "string" } Property { name: "__iconOverriden"; type: "bool"; isReadonly: true } Property { name: "__action"; type: "QQuickAction"; isPointer: true } diff --git a/src/layouts/doc/images/columnlayout.png b/src/layouts/doc/images/columnlayout.png Binary files differnew file mode 100644 index 00000000..f03eb7b9 --- /dev/null +++ b/src/layouts/doc/images/columnlayout.png diff --git a/src/layouts/doc/images/gridlayout.png b/src/layouts/doc/images/gridlayout.png Binary files differnew file mode 100644 index 00000000..493813c4 --- /dev/null +++ b/src/layouts/doc/images/gridlayout.png diff --git a/src/layouts/doc/images/rowlayout.png b/src/layouts/doc/images/rowlayout.png Binary files differnew file mode 100644 index 00000000..519a62fd --- /dev/null +++ b/src/layouts/doc/images/rowlayout.png diff --git a/src/layouts/qquicklayout.cpp b/src/layouts/qquicklayout.cpp index 27de432f..f5d8c99f 100644 --- a/src/layouts/qquicklayout.cpp +++ b/src/layouts/qquicklayout.cpp @@ -317,7 +317,7 @@ void QQuickLayoutAttached::setMaximumImplicitSize(const QSizeF &sz) If this property is \c true, the item will be as wide as possible while respecting the given constraints. If the property is \c false, the item will have a fixed width set to the preferred width. - The default is \c false, except for layouts themselves which defaults to \c true. + The default is \c false, except for layouts themselves, which default to \c true. \sa fillHeight */ @@ -337,7 +337,7 @@ void QQuickLayoutAttached::setFillWidth(bool fill) If this property is \c true, the item will be as tall as possible while respecting the given constraints. If the property is \c false, the item will have a fixed height set to the preferred height. - The default is \c false, except for layouts themselves which defaults to \c true. + The default is \c false, except for layouts themselves, which default to \c true. \sa fillWidth */ diff --git a/src/layouts/qquicklinearlayout.cpp b/src/layouts/qquicklinearlayout.cpp index ea772225..2db7bee0 100644 --- a/src/layouts/qquicklinearlayout.cpp +++ b/src/layouts/qquicklinearlayout.cpp @@ -69,6 +69,39 @@ \li \l{Layout::alignment}{Layout.alignment} \endlist + \image rowlayout.png + + \code + RowLayout { + id: layout + anchors.fill: parent + spacing: 6 + Rectangle { + color: 'teal' + Layout.fillWidth: true + Layout.minimumWidth: 50 + Layout.preferredWidth: 100 + Layout.maximumWidth: 300 + Layout.minimumHeight: 150 + Text { + anchors.centerIn: parent + text: parent.width + 'x' + parent.height + } + } + Rectangle { + color: 'plum' + Layout.fillWidth: true + Layout.minimumWidth: 100 + Layout.preferredWidth: 200 + Layout.preferredHeight: 100 + Text { + anchors.centerIn: parent + text: parent.width + 'x' + parent.height + } + } + } + \endcode + Read more about attached properties \l{QML Object Attributes}{here}. \sa ColumnLayout \sa GridLayout @@ -98,6 +131,36 @@ \li \l{Layout::alignment}{Layout.alignment} \endlist + \image columnlayout.png + + \code + ColumnLayout{ + spacing: 2 + + Rectangle { + Layout.alignment: Qt.AlignCenter + color: "red" + Layout.preferredWidth: 40 + Layout.preferredHeight: 40 + } + + Rectangle { + Layout.alignment: Qt.AlignRight + color: "green" + Layout.preferredWidth: 40 + Layout.preferredHeight: 70 + } + + Rectangle { + Layout.alignment: Qt.AlignBottom + Layout.fillHeight: true + color: "blue" + Layout.preferredWidth: 70 + Layout.preferredHeight: 40 + } + } + \endcode + Read more about attached properties \l{QML Object Attributes}{here}. \sa RowLayout @@ -114,6 +177,8 @@ \ingroup layouts \brief Provides a way of dynamically arranging items in a grid. + + If the GridLayout is resized, all items in the layout will be rearranged. It is similar to the widget-based QGridLayout. All visible children of the GridLayout element will belong to the layout. If you want a layout with just one row or one column, you can use the @@ -127,16 +192,19 @@ columns the layout can have, before the auto-positioning wraps back to the beginning of the next row. The \l columns property is only used when \l flow is \c GridLayout.LeftToRight. + \image gridlayout.png + \code - GridLayout { - id: grid - columns: 3 - Text { text: "Three" } - Text { text: "words" } - Text { text: "in" } - Text { text: "a" } - Text { text: "row" } - } + GridLayout { + id: grid + columns: 3 + + Text { text: "Three"; font.bold: true; } + Text { text: "words"; color: "red" } + Text { text: "in"; font.underline: true } + Text { text: "a"; font.pixelSize: 20 } + Text { text: "row"; font.strikeout: true } + } \endcode The \l rows property works in a similar way, but items are auto-positioned vertically. The \l diff --git a/tests/auto/activeFocusOnTab/activeFocusOnTab.pro b/tests/auto/activeFocusOnTab/activeFocusOnTab.pro index 1a156805..d47a92e8 100644 --- a/tests/auto/activeFocusOnTab/activeFocusOnTab.pro +++ b/tests/auto/activeFocusOnTab/activeFocusOnTab.pro @@ -9,5 +9,5 @@ include (../shared/util.pri) TESTDATA = data/* QT += core-private gui-private qml-private quick-private testlib -!android: !ios: !blackberry: qtHaveModule(widgets): QT += widgets +!android:!ios:!blackberry:!qnx:!winrt:qtHaveModule(widgets): QT += widgets DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/controls/controls.pro b/tests/auto/controls/controls.pro index 1a3b0c0a..dad036a2 100644 --- a/tests/auto/controls/controls.pro +++ b/tests/auto/controls/controls.pro @@ -3,7 +3,7 @@ TARGET = tst_controls IMPORTPATH = $$OUT_PWD/../testplugin -!android: !ios: !blackberry: qtHaveModule(widgets): QT += widgets +!android:!ios:!blackberry:!qnx:!winrt:qtHaveModule(widgets): QT += widgets CONFIG += qmltestcase console diff --git a/tests/auto/testplugin/testplugin.pro b/tests/auto/testplugin/testplugin.pro index 6624daca..2b34ae77 100644 --- a/tests/auto/testplugin/testplugin.pro +++ b/tests/auto/testplugin/testplugin.pro @@ -4,7 +4,7 @@ TARGET = testplugin TARGETPATH = QtQuickControlsTests QT += qml quick core-private gui-private -!android: !ios: !blackberry: qtHaveModule(widgets): QT += widgets +!android:!ios:!blackberry:!qnx:!winrt:qtHaveModule(widgets): QT += widgets QMLDIR = $$PWD/$$TARGETPATH/qmldir diff --git a/tests/manual/combobox/combobox.pro b/tests/manual/combobox/combobox.pro index 249e8ca4..7d4a347f 100644 --- a/tests/manual/combobox/combobox.pro +++ b/tests/manual/combobox/combobox.pro @@ -1,6 +1,6 @@ QT += qml quick TARGET = combobox -!android: !ios: !blackberry: qtHaveModule(widgets): QT += widgets +!android:!ios:!blackberry:!qnx:!winrt:qtHaveModule(widgets): QT += widgets SOURCES += $$PWD/main.cpp |