aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/imports/controls/AbstractButton.qml4
-rw-r--r--src/imports/controls/Action.qml4
-rw-r--r--src/imports/controls/ActionGroup.qml4
-rw-r--r--src/imports/controls/ApplicationWindow.qml8
-rw-r--r--src/imports/controls/BusyIndicator.qml8
-rw-r--r--src/imports/controls/Button.qml11
-rw-r--r--src/imports/controls/ButtonGroup.qml4
-rw-r--r--src/imports/controls/CheckBox.qml8
-rw-r--r--src/imports/controls/CheckDelegate.qml8
-rw-r--r--src/imports/controls/ComboBox.qml8
-rw-r--r--src/imports/controls/Container.qml4
-rw-r--r--src/imports/controls/Control.qml4
-rw-r--r--src/imports/controls/DelayButton.qml11
-rw-r--r--src/imports/controls/Dial.qml8
-rw-r--r--src/imports/controls/Dialog.qml8
-rw-r--r--src/imports/controls/DialogButtonBox.qml4
-rw-r--r--src/imports/controls/Drawer.qml8
-rw-r--r--src/imports/controls/Frame.qml11
-rw-r--r--src/imports/controls/GroupBox.qml11
-rw-r--r--src/imports/controls/ItemDelegate.qml8
-rw-r--r--src/imports/controls/Label.qml8
-rw-r--r--src/imports/controls/Menu.qml8
-rw-r--r--src/imports/controls/MenuBar.qml8
-rw-r--r--src/imports/controls/MenuBarItem.qml8
-rw-r--r--src/imports/controls/MenuItem.qml8
-rw-r--r--src/imports/controls/MenuSeparator.qml11
-rw-r--r--src/imports/controls/Page.qml11
-rw-r--r--src/imports/controls/PageIndicator.qml8
-rw-r--r--src/imports/controls/Pane.qml11
-rw-r--r--src/imports/controls/Popup.qml8
-rw-r--r--src/imports/controls/ProgressBar.qml8
-rw-r--r--src/imports/controls/RadioButton.qml8
-rw-r--r--src/imports/controls/RadioDelegate.qml8
-rw-r--r--src/imports/controls/RangeSlider.qml8
-rw-r--r--src/imports/controls/RoundButton.qml8
-rw-r--r--src/imports/controls/ScrollBar.qml8
-rw-r--r--src/imports/controls/ScrollIndicator.qml8
-rw-r--r--src/imports/controls/ScrollView.qml8
-rw-r--r--src/imports/controls/Slider.qml8
-rw-r--r--src/imports/controls/SpinBox.qml8
-rw-r--r--src/imports/controls/StackView.qml6
-rw-r--r--src/imports/controls/SwipeDelegate.qml8
-rw-r--r--src/imports/controls/SwipeView.qml6
-rw-r--r--src/imports/controls/Switch.qml8
-rw-r--r--src/imports/controls/SwitchDelegate.qml8
-rw-r--r--src/imports/controls/TabBar.qml4
-rw-r--r--src/imports/controls/TabButton.qml8
-rw-r--r--src/imports/controls/TextArea.qml12
-rw-r--r--src/imports/controls/TextField.qml12
-rw-r--r--src/imports/controls/ToolBar.qml11
-rw-r--r--src/imports/controls/ToolButton.qml8
-rw-r--r--src/imports/controls/ToolSeparator.qml11
-rw-r--r--src/imports/controls/ToolTip.qml8
-rw-r--r--src/imports/controls/Tumbler.qml8
-rw-r--r--src/imports/controls/controls.pro2
-rw-r--r--src/imports/controls/designer/designer.pri6
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols2-material-variant-dense.pngbin0 -> 21059 bytes
-rw-r--r--src/imports/controls/doc/images/qtquickcontrols2-material-variant-normal.pngbin0 -> 22897 bytes
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols2-material-variant.qml212
-rw-r--r--src/imports/controls/doc/snippets/qtquickcontrols2-popup.qml46
-rw-r--r--src/imports/controls/doc/src/includes/qquickmaterialstyle.qdocinc16
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-imagine.qdoc2
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-index.qdoc7
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-material.qdoc29
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-qmltypes.qdoc4
-rw-r--r--src/imports/controls/doc/src/qtquickcontrols2-universal.qdoc2
-rw-r--r--src/imports/controls/fusion/ApplicationWindow.qml8
-rw-r--r--src/imports/controls/fusion/BusyIndicator.qml12
-rw-r--r--src/imports/controls/fusion/Button.qml12
-rw-r--r--src/imports/controls/fusion/ButtonPanel.qml10
-rw-r--r--src/imports/controls/fusion/CheckBox.qml12
-rw-r--r--src/imports/controls/fusion/CheckDelegate.qml12
-rw-r--r--src/imports/controls/fusion/CheckIndicator.qml10
-rw-r--r--src/imports/controls/fusion/ComboBox.qml12
-rw-r--r--src/imports/controls/fusion/DelayButton.qml12
-rw-r--r--src/imports/controls/fusion/Dial.qml12
-rw-r--r--src/imports/controls/fusion/Dialog.qml12
-rw-r--r--src/imports/controls/fusion/DialogButtonBox.qml12
-rw-r--r--src/imports/controls/fusion/Drawer.qml12
-rw-r--r--src/imports/controls/fusion/Frame.qml15
-rw-r--r--src/imports/controls/fusion/GroupBox.qml15
-rw-r--r--src/imports/controls/fusion/ItemDelegate.qml12
-rw-r--r--src/imports/controls/fusion/Label.qml12
-rw-r--r--src/imports/controls/fusion/Menu.qml12
-rw-r--r--src/imports/controls/fusion/MenuBar.qml12
-rw-r--r--src/imports/controls/fusion/MenuBarItem.qml12
-rw-r--r--src/imports/controls/fusion/MenuItem.qml12
-rw-r--r--src/imports/controls/fusion/MenuSeparator.qml15
-rw-r--r--src/imports/controls/fusion/Page.qml15
-rw-r--r--src/imports/controls/fusion/PageIndicator.qml12
-rw-r--r--src/imports/controls/fusion/Pane.qml15
-rw-r--r--src/imports/controls/fusion/Popup.qml12
-rw-r--r--src/imports/controls/fusion/ProgressBar.qml12
-rw-r--r--src/imports/controls/fusion/RadioButton.qml12
-rw-r--r--src/imports/controls/fusion/RadioDelegate.qml12
-rw-r--r--src/imports/controls/fusion/RadioIndicator.qml10
-rw-r--r--src/imports/controls/fusion/RangeSlider.qml12
-rw-r--r--src/imports/controls/fusion/RoundButton.qml12
-rw-r--r--src/imports/controls/fusion/ScrollBar.qml12
-rw-r--r--src/imports/controls/fusion/ScrollIndicator.qml12
-rw-r--r--src/imports/controls/fusion/ScrollView.qml12
-rw-r--r--src/imports/controls/fusion/Slider.qml12
-rw-r--r--src/imports/controls/fusion/SliderGroove.qml10
-rw-r--r--src/imports/controls/fusion/SliderHandle.qml10
-rw-r--r--src/imports/controls/fusion/SpinBox.qml12
-rw-r--r--src/imports/controls/fusion/SwipeDelegate.qml12
-rw-r--r--src/imports/controls/fusion/Switch.qml12
-rw-r--r--src/imports/controls/fusion/SwitchDelegate.qml12
-rw-r--r--src/imports/controls/fusion/SwitchIndicator.qml10
-rw-r--r--src/imports/controls/fusion/TabBar.qml12
-rw-r--r--src/imports/controls/fusion/TabButton.qml15
-rw-r--r--src/imports/controls/fusion/TextArea.qml16
-rw-r--r--src/imports/controls/fusion/TextField.qml16
-rw-r--r--src/imports/controls/fusion/ToolBar.qml18
-rw-r--r--src/imports/controls/fusion/ToolButton.qml12
-rw-r--r--src/imports/controls/fusion/ToolSeparator.qml15
-rw-r--r--src/imports/controls/fusion/ToolTip.qml12
-rw-r--r--src/imports/controls/fusion/Tumbler.qml12
-rw-r--r--src/imports/controls/fusion/fusion.pro2
-rw-r--r--src/imports/controls/fusion/qmldir2
-rw-r--r--src/imports/controls/fusion/qquickfusiontheme.cpp1
-rw-r--r--src/imports/controls/fusion/qquickfusiontheme_p.h2
-rw-r--r--src/imports/controls/fusion/qtquickcontrols2fusionstyleplugin.cpp6
-rw-r--r--src/imports/controls/imagine/ApplicationWindow.qml8
-rw-r--r--src/imports/controls/imagine/BusyIndicator.qml8
-rw-r--r--src/imports/controls/imagine/Button.qml12
-rw-r--r--src/imports/controls/imagine/CheckBox.qml8
-rw-r--r--src/imports/controls/imagine/CheckDelegate.qml12
-rw-r--r--src/imports/controls/imagine/ComboBox.qml10
-rw-r--r--src/imports/controls/imagine/DelayButton.qml8
-rw-r--r--src/imports/controls/imagine/Dial.qml8
-rw-r--r--src/imports/controls/imagine/Dialog.qml10
-rw-r--r--src/imports/controls/imagine/DialogButtonBox.qml10
-rw-r--r--src/imports/controls/imagine/Drawer.qml8
-rw-r--r--src/imports/controls/imagine/Frame.qml11
-rw-r--r--src/imports/controls/imagine/GroupBox.qml13
-rw-r--r--src/imports/controls/imagine/ItemDelegate.qml12
-rw-r--r--src/imports/controls/imagine/Label.qml8
-rw-r--r--src/imports/controls/imagine/Menu.qml10
-rw-r--r--src/imports/controls/imagine/MenuItem.qml12
-rw-r--r--src/imports/controls/imagine/MenuSeparator.qml8
-rw-r--r--src/imports/controls/imagine/Page.qml11
-rw-r--r--src/imports/controls/imagine/PageIndicator.qml8
-rw-r--r--src/imports/controls/imagine/Pane.qml11
-rw-r--r--src/imports/controls/imagine/Popup.qml8
-rw-r--r--src/imports/controls/imagine/ProgressBar.qml8
-rw-r--r--src/imports/controls/imagine/RadioButton.qml8
-rw-r--r--src/imports/controls/imagine/RadioDelegate.qml12
-rw-r--r--src/imports/controls/imagine/RangeSlider.qml8
-rw-r--r--src/imports/controls/imagine/RoundButton.qml12
-rw-r--r--src/imports/controls/imagine/ScrollBar.qml8
-rw-r--r--src/imports/controls/imagine/ScrollIndicator.qml8
-rw-r--r--src/imports/controls/imagine/ScrollView.qml10
-rw-r--r--src/imports/controls/imagine/Slider.qml8
-rw-r--r--src/imports/controls/imagine/SpinBox.qml8
-rw-r--r--src/imports/controls/imagine/StackView.qml8
-rw-r--r--src/imports/controls/imagine/SwipeDelegate.qml12
-rw-r--r--src/imports/controls/imagine/SwipeView.qml8
-rw-r--r--src/imports/controls/imagine/Switch.qml8
-rw-r--r--src/imports/controls/imagine/SwitchDelegate.qml12
-rw-r--r--src/imports/controls/imagine/TabBar.qml8
-rw-r--r--src/imports/controls/imagine/TabButton.qml12
-rw-r--r--src/imports/controls/imagine/TextArea.qml16
-rw-r--r--src/imports/controls/imagine/TextField.qml16
-rw-r--r--src/imports/controls/imagine/ToolBar.qml11
-rw-r--r--src/imports/controls/imagine/ToolButton.qml12
-rw-r--r--src/imports/controls/imagine/ToolSeparator.qml8
-rw-r--r--src/imports/controls/imagine/ToolTip.qml8
-rw-r--r--src/imports/controls/imagine/Tumbler.qml12
-rw-r--r--src/imports/controls/imagine/imagine.pro2
-rw-r--r--src/imports/controls/imagine/qmldir2
-rw-r--r--src/imports/controls/imagine/qquickimaginetheme.cpp20
-rw-r--r--src/imports/controls/imagine/qquickimaginetheme_p.h10
-rw-r--r--src/imports/controls/imagine/qtquickcontrols2imaginestyleplugin.cpp6
-rw-r--r--src/imports/controls/material/ApplicationWindow.qml6
-rw-r--r--src/imports/controls/material/BoxShadow.qml6
-rw-r--r--src/imports/controls/material/BusyIndicator.qml12
-rw-r--r--src/imports/controls/material/Button.qml17
-rw-r--r--src/imports/controls/material/CheckBox.qml11
-rw-r--r--src/imports/controls/material/CheckDelegate.qml17
-rw-r--r--src/imports/controls/material/CheckIndicator.qml6
-rw-r--r--src/imports/controls/material/ComboBox.qml14
-rw-r--r--src/imports/controls/material/CursorDelegate.qml4
-rw-r--r--src/imports/controls/material/DelayButton.qml17
-rw-r--r--src/imports/controls/material/Dial.qml8
-rw-r--r--src/imports/controls/material/Dialog.qml12
-rw-r--r--src/imports/controls/material/DialogButtonBox.qml20
-rw-r--r--src/imports/controls/material/Drawer.qml8
-rw-r--r--src/imports/controls/material/ElevationEffect.qml6
-rw-r--r--src/imports/controls/material/Frame.qml12
-rw-r--r--src/imports/controls/material/GroupBox.qml14
-rw-r--r--src/imports/controls/material/ItemDelegate.qml17
-rw-r--r--src/imports/controls/material/Label.qml6
-rw-r--r--src/imports/controls/material/Menu.qml15
-rw-r--r--src/imports/controls/material/MenuBar.qml12
-rw-r--r--src/imports/controls/material/MenuBarItem.qml15
-rw-r--r--src/imports/controls/material/MenuItem.qml17
-rw-r--r--src/imports/controls/material/MenuSeparator.qml9
-rw-r--r--src/imports/controls/material/Page.qml9
-rw-r--r--src/imports/controls/material/PageIndicator.qml6
-rw-r--r--src/imports/controls/material/Pane.qml11
-rw-r--r--src/imports/controls/material/Popup.qml8
-rw-r--r--src/imports/controls/material/ProgressBar.qml8
-rw-r--r--src/imports/controls/material/RadioButton.qml11
-rw-r--r--src/imports/controls/material/RadioDelegate.qml17
-rw-r--r--src/imports/controls/material/RadioIndicator.qml6
-rw-r--r--src/imports/controls/material/RangeSlider.qml8
-rw-r--r--src/imports/controls/material/RectangularGlow.qml2
-rw-r--r--src/imports/controls/material/RoundButton.qml16
-rw-r--r--src/imports/controls/material/ScrollBar.qml6
-rw-r--r--src/imports/controls/material/ScrollIndicator.qml6
-rw-r--r--src/imports/controls/material/Slider.qml8
-rw-r--r--src/imports/controls/material/SliderHandle.qml6
-rw-r--r--src/imports/controls/material/SpinBox.qml18
-rw-r--r--src/imports/controls/material/StackView.qml6
-rw-r--r--src/imports/controls/material/SwipeDelegate.qml17
-rw-r--r--src/imports/controls/material/SwipeView.qml6
-rw-r--r--src/imports/controls/material/Switch.qml8
-rw-r--r--src/imports/controls/material/SwitchDelegate.qml17
-rw-r--r--src/imports/controls/material/SwitchIndicator.qml6
-rw-r--r--src/imports/controls/material/TabBar.qml8
-rw-r--r--src/imports/controls/material/TabButton.qml14
-rw-r--r--src/imports/controls/material/TextArea.qml16
-rw-r--r--src/imports/controls/material/TextField.qml15
-rw-r--r--src/imports/controls/material/ToolBar.qml11
-rw-r--r--src/imports/controls/material/ToolButton.qml16
-rw-r--r--src/imports/controls/material/ToolSeparator.qml12
-rw-r--r--src/imports/controls/material/ToolTip.qml11
-rw-r--r--src/imports/controls/material/Tumbler.qml10
-rw-r--r--src/imports/controls/material/material.pro2
-rw-r--r--src/imports/controls/material/qmldir2
-rw-r--r--src/imports/controls/material/qquickmaterialstyle.cpp217
-rw-r--r--src/imports/controls/material/qquickmaterialstyle_p.h28
-rw-r--r--src/imports/controls/material/qquickmaterialtheme.cpp74
-rw-r--r--src/imports/controls/material/qquickmaterialtheme_p.h7
-rw-r--r--src/imports/controls/material/qtquickcontrols2materialstyleplugin.cpp7
-rw-r--r--src/imports/controls/qmldir2
-rw-r--r--src/imports/controls/qquickdefaulttheme.cpp11
-rw-r--r--src/imports/controls/qquickdefaulttheme_p.h7
-rw-r--r--src/imports/controls/qtquickcontrols2plugin.cpp13
-rw-r--r--src/imports/controls/universal/ApplicationWindow.qml8
-rw-r--r--src/imports/controls/universal/BusyIndicator.qml8
-rw-r--r--src/imports/controls/universal/Button.qml13
-rw-r--r--src/imports/controls/universal/CheckBox.qml8
-rw-r--r--src/imports/controls/universal/CheckDelegate.qml12
-rw-r--r--src/imports/controls/universal/CheckIndicator.qml10
-rw-r--r--src/imports/controls/universal/ComboBox.qml10
-rw-r--r--src/imports/controls/universal/DelayButton.qml9
-rw-r--r--src/imports/controls/universal/Dial.qml6
-rw-r--r--src/imports/controls/universal/Dialog.qml11
-rw-r--r--src/imports/controls/universal/DialogButtonBox.qml8
-rw-r--r--src/imports/controls/universal/Drawer.qml6
-rw-r--r--src/imports/controls/universal/Frame.qml9
-rw-r--r--src/imports/controls/universal/GroupBox.qml9
-rw-r--r--src/imports/controls/universal/ItemDelegate.qml10
-rw-r--r--src/imports/controls/universal/Label.qml6
-rw-r--r--src/imports/controls/universal/Menu.qml8
-rw-r--r--src/imports/controls/universal/MenuBar.qml10
-rw-r--r--src/imports/controls/universal/MenuBarItem.qml10
-rw-r--r--src/imports/controls/universal/MenuItem.qml10
-rw-r--r--src/imports/controls/universal/MenuSeparator.qml6
-rw-r--r--src/imports/controls/universal/Page.qml9
-rw-r--r--src/imports/controls/universal/PageIndicator.qml6
-rw-r--r--src/imports/controls/universal/Pane.qml9
-rw-r--r--src/imports/controls/universal/Popup.qml6
-rw-r--r--src/imports/controls/universal/ProgressBar.qml8
-rw-r--r--src/imports/controls/universal/RadioButton.qml8
-rw-r--r--src/imports/controls/universal/RadioDelegate.qml12
-rw-r--r--src/imports/controls/universal/RadioIndicator.qml4
-rw-r--r--src/imports/controls/universal/RangeSlider.qml6
-rw-r--r--src/imports/controls/universal/RoundButton.qml10
-rw-r--r--src/imports/controls/universal/ScrollBar.qml6
-rw-r--r--src/imports/controls/universal/ScrollIndicator.qml6
-rw-r--r--src/imports/controls/universal/Slider.qml6
-rw-r--r--src/imports/controls/universal/SpinBox.qml10
-rw-r--r--src/imports/controls/universal/StackView.qml6
-rw-r--r--src/imports/controls/universal/SwipeDelegate.qml10
-rw-r--r--src/imports/controls/universal/Switch.qml8
-rw-r--r--src/imports/controls/universal/SwitchDelegate.qml12
-rw-r--r--src/imports/controls/universal/SwitchIndicator.qml6
-rw-r--r--src/imports/controls/universal/TabBar.qml6
-rw-r--r--src/imports/controls/universal/TabButton.qml10
-rw-r--r--src/imports/controls/universal/TextArea.qml16
-rw-r--r--src/imports/controls/universal/TextField.qml16
-rw-r--r--src/imports/controls/universal/ToolBar.qml9
-rw-r--r--src/imports/controls/universal/ToolButton.qml10
-rw-r--r--src/imports/controls/universal/ToolSeparator.qml6
-rw-r--r--src/imports/controls/universal/ToolTip.qml6
-rw-r--r--src/imports/controls/universal/Tumbler.qml10
-rw-r--r--src/imports/controls/universal/qmldir2
-rw-r--r--src/imports/controls/universal/qquickuniversaltheme.cpp19
-rw-r--r--src/imports/controls/universal/qquickuniversaltheme_p.h7
-rw-r--r--src/imports/controls/universal/qtquickcontrols2universalstyleplugin.cpp6
-rw-r--r--src/imports/controls/universal/universal.pro2
-rw-r--r--src/imports/templates/doc/src/qtquicktemplates2-qmltypes.qdoc4
-rw-r--r--src/imports/templates/qtquicktemplates2plugin.cpp13
-rw-r--r--src/imports/templates/templates.pro2
-rw-r--r--src/quickcontrols2/qquickproxytheme.cpp170
-rw-r--r--src/quickcontrols2/qquickstyle.cpp95
-rw-r--r--src/quickcontrols2/qquickstyle.h2
-rw-r--r--src/quickcontrols2/qquickstyle_p.h2
-rw-r--r--src/quickcontrols2/qquickstyleplugin.cpp106
-rw-r--r--src/quickcontrols2/qquickstyleplugin_p.h7
-rw-r--r--src/quickcontrols2/qquickstyleselector.cpp126
-rw-r--r--src/quickcontrols2/qquickstyleselector_p.h9
-rw-r--r--src/quickcontrols2/qquickstyleselector_p_p.h9
-rw-r--r--src/quickcontrols2/qquicktheme.cpp165
-rw-r--r--src/quickcontrols2/quickcontrols2.pri8
-rw-r--r--src/quicktemplates2/qquickapplicationwindow.cpp11
-rw-r--r--src/quicktemplates2/qquickbutton.cpp4
-rw-r--r--src/quicktemplates2/qquickcheckbox.cpp4
-rw-r--r--src/quicktemplates2/qquickcheckdelegate.cpp7
-rw-r--r--src/quicktemplates2/qquickcheckdelegate_p.h1
-rw-r--r--src/quicktemplates2/qquickcombobox.cpp4
-rw-r--r--src/quicktemplates2/qquickcontentitem.cpp53
-rw-r--r--src/quicktemplates2/qquickcontentitem_p.h69
-rw-r--r--src/quicktemplates2/qquickcontrol.cpp253
-rw-r--r--src/quicktemplates2/qquickcontrol_p.h15
-rw-r--r--src/quicktemplates2/qquickcontrol_p_p.h34
-rw-r--r--src/quicktemplates2/qquickdelaybutton.cpp4
-rw-r--r--src/quicktemplates2/qquickdialogbuttonbox.cpp57
-rw-r--r--src/quicktemplates2/qquickdialogbuttonbox_p.h22
-rw-r--r--src/quicktemplates2/qquickdialogbuttonbox_p_p.h1
-rw-r--r--src/quicktemplates2/qquickgroupbox.cpp4
-rw-r--r--src/quicktemplates2/qquickitemdelegate.cpp4
-rw-r--r--src/quicktemplates2/qquicklabel.cpp4
-rw-r--r--src/quicktemplates2/qquickmenu.cpp4
-rw-r--r--src/quicktemplates2/qquickmenubar.cpp4
-rw-r--r--src/quicktemplates2/qquickmenubaritem.cpp4
-rw-r--r--src/quicktemplates2/qquickmenuitem.cpp4
-rw-r--r--src/quicktemplates2/qquickmenuseparator.cpp7
-rw-r--r--src/quicktemplates2/qquickmenuseparator_p.h1
-rw-r--r--src/quicktemplates2/qquickpage.cpp148
-rw-r--r--src/quicktemplates2/qquickpage_p.h22
-rw-r--r--src/quicktemplates2/qquickpane.cpp180
-rw-r--r--src/quicktemplates2/qquickpane_p.h7
-rw-r--r--src/quicktemplates2/qquickpane_p_p.h19
-rw-r--r--src/quicktemplates2/qquickpopup.cpp143
-rw-r--r--src/quicktemplates2/qquickpopup_p.h17
-rw-r--r--src/quicktemplates2/qquickpopup_p_p.h4
-rw-r--r--src/quicktemplates2/qquickpopupanchors.cpp90
-rw-r--r--src/quicktemplates2/qquickpopupanchors_p.h89
-rw-r--r--src/quicktemplates2/qquickpopupanchors_p_p.h77
-rw-r--r--src/quicktemplates2/qquickpopupitem.cpp8
-rw-r--r--src/quicktemplates2/qquickpopuppositioner.cpp34
-rw-r--r--src/quicktemplates2/qquickradiobutton.cpp4
-rw-r--r--src/quicktemplates2/qquickradiodelegate.cpp7
-rw-r--r--src/quicktemplates2/qquickradiodelegate_p.h1
-rw-r--r--src/quicktemplates2/qquickrangeslider.cpp38
-rw-r--r--src/quicktemplates2/qquickrangeslider_p.h9
-rw-r--r--src/quicktemplates2/qquickslider.cpp37
-rw-r--r--src/quicktemplates2/qquickslider_p.h10
-rw-r--r--src/quicktemplates2/qquickspinbox.cpp4
-rw-r--r--src/quicktemplates2/qquickswipedelegate.cpp7
-rw-r--r--src/quicktemplates2/qquickswipedelegate_p.h1
-rw-r--r--src/quicktemplates2/qquickswitch.cpp8
-rw-r--r--src/quicktemplates2/qquickswitch_p.h1
-rw-r--r--src/quicktemplates2/qquickswitchdelegate.cpp7
-rw-r--r--src/quicktemplates2/qquickswitchdelegate_p.h2
-rw-r--r--src/quicktemplates2/qquicktabbar.cpp7
-rw-r--r--src/quicktemplates2/qquicktabbar_p.h1
-rw-r--r--src/quicktemplates2/qquicktabbutton.cpp4
-rw-r--r--src/quicktemplates2/qquicktextarea.cpp28
-rw-r--r--src/quicktemplates2/qquicktextarea_p.h8
-rw-r--r--src/quicktemplates2/qquicktextarea_p_p.h1
-rw-r--r--src/quicktemplates2/qquicktextfield.cpp28
-rw-r--r--src/quicktemplates2/qquicktextfield_p.h7
-rw-r--r--src/quicktemplates2/qquicktextfield_p_p.h1
-rw-r--r--src/quicktemplates2/qquicktheme.cpp199
-rw-r--r--src/quicktemplates2/qquicktheme_p.h (renamed from src/quickcontrols2/qquickproxytheme_p.h)92
-rw-r--r--src/quicktemplates2/qquicktheme_p_p.h (renamed from src/quickcontrols2/qquicktheme_p.h)38
-rw-r--r--src/quicktemplates2/qquicktoolbar.cpp7
-rw-r--r--src/quicktemplates2/qquicktoolbar_p.h1
-rw-r--r--src/quicktemplates2/qquicktoolbutton.cpp4
-rw-r--r--src/quicktemplates2/qquicktoolseparator.cpp7
-rw-r--r--src/quicktemplates2/qquicktoolseparator_p.h1
-rw-r--r--src/quicktemplates2/qquicktooltip.cpp33
-rw-r--r--src/quicktemplates2/qquicktooltip_p.h4
-rw-r--r--src/quicktemplates2/qquicktumbler.cpp54
-rw-r--r--src/quicktemplates2/qquicktumbler_p.h13
-rw-r--r--src/quicktemplates2/qquicktumbler_p_p.h1
-rw-r--r--src/quicktemplates2/quicktemplates2.pri8
382 files changed, 3769 insertions, 2383 deletions
diff --git a/src/imports/controls/AbstractButton.qml b/src/imports/controls/AbstractButton.qml
index 2ff1b82c..58a1a102 100644
--- a/src/imports/controls/AbstractButton.qml
+++ b/src/imports/controls/AbstractButton.qml
@@ -34,8 +34,8 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
T.AbstractButton {
id: control
diff --git a/src/imports/controls/Action.qml b/src/imports/controls/Action.qml
index 0ba5822f..fe86213a 100644
--- a/src/imports/controls/Action.qml
+++ b/src/imports/controls/Action.qml
@@ -34,7 +34,7 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
T.Action { }
diff --git a/src/imports/controls/ActionGroup.qml b/src/imports/controls/ActionGroup.qml
index a8c49d8b..ae8772d6 100644
--- a/src/imports/controls/ActionGroup.qml
+++ b/src/imports/controls/ActionGroup.qml
@@ -34,7 +34,7 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
T.ActionGroup { }
diff --git a/src/imports/controls/ApplicationWindow.qml b/src/imports/controls/ApplicationWindow.qml
index 84b618e1..4ad97082 100644
--- a/src/imports/controls/ApplicationWindow.qml
+++ b/src/imports/controls/ApplicationWindow.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
+import QtQuick 2.12
import QtQuick.Window 2.3
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.ApplicationWindow {
id: window
diff --git a/src/imports/controls/BusyIndicator.qml b/src/imports/controls/BusyIndicator.qml
index bde5fa7c..13fd52c4 100644
--- a/src/imports/controls/BusyIndicator.qml
+++ b/src/imports/controls/BusyIndicator.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.BusyIndicator {
id: control
diff --git a/src/imports/controls/Button.qml b/src/imports/controls/Button.qml
index 7039dfc9..c0f96af3 100644
--- a/src/imports/controls/Button.qml
+++ b/src/imports/controls/Button.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.Button {
id: control
@@ -49,8 +49,7 @@ T.Button {
baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 6
- leftPadding: padding + 2
- rightPadding: padding + 2
+ horizontalPadding: padding + 2
spacing: 6
icon.width: 24
diff --git a/src/imports/controls/ButtonGroup.qml b/src/imports/controls/ButtonGroup.qml
index 4e8ae893..50d3b840 100644
--- a/src/imports/controls/ButtonGroup.qml
+++ b/src/imports/controls/ButtonGroup.qml
@@ -34,7 +34,7 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
T.ButtonGroup { }
diff --git a/src/imports/controls/CheckBox.qml b/src/imports/controls/CheckBox.qml
index 136c9b36..140ce8a1 100644
--- a/src/imports/controls/CheckBox.qml
+++ b/src/imports/controls/CheckBox.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
T.CheckBox {
id: control
diff --git a/src/imports/controls/CheckDelegate.qml b/src/imports/controls/CheckDelegate.qml
index 087c9d75..af3a72d7 100644
--- a/src/imports/controls/CheckDelegate.qml
+++ b/src/imports/controls/CheckDelegate.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
T.CheckDelegate {
id: control
diff --git a/src/imports/controls/ComboBox.qml b/src/imports/controls/ComboBox.qml
index 2bb26967..73ffb89e 100644
--- a/src/imports/controls/ComboBox.qml
+++ b/src/imports/controls/ComboBox.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
+import QtQuick 2.12
import QtQuick.Window 2.3
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.ComboBox {
id: control
diff --git a/src/imports/controls/Container.qml b/src/imports/controls/Container.qml
index e7cf8a2a..896091d8 100644
--- a/src/imports/controls/Container.qml
+++ b/src/imports/controls/Container.qml
@@ -34,8 +34,8 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
T.Container {
id: control
diff --git a/src/imports/controls/Control.qml b/src/imports/controls/Control.qml
index 5728da0a..4c673283 100644
--- a/src/imports/controls/Control.qml
+++ b/src/imports/controls/Control.qml
@@ -34,8 +34,8 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
T.Control {
id: control
diff --git a/src/imports/controls/DelayButton.qml b/src/imports/controls/DelayButton.qml
index b34caed6..ee4b227a 100644
--- a/src/imports/controls/DelayButton.qml
+++ b/src/imports/controls/DelayButton.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.DelayButton {
id: control
@@ -49,8 +49,7 @@ T.DelayButton {
baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 6
- leftPadding: padding + 2
- rightPadding: padding + 2
+ horizontalPadding: padding + 2
transition: Transition {
NumberAnimation {
diff --git a/src/imports/controls/Dial.qml b/src/imports/controls/Dial.qml
index f4132611..be029c37 100644
--- a/src/imports/controls/Dial.qml
+++ b/src/imports/controls/Dial.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.Dial {
id: control
diff --git a/src/imports/controls/Dialog.qml b/src/imports/controls/Dialog.qml
index 913e23f1..768d3ff1 100644
--- a/src/imports/controls/Dialog.qml
+++ b/src/imports/controls/Dialog.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
T.Dialog {
id: control
diff --git a/src/imports/controls/DialogButtonBox.qml b/src/imports/controls/DialogButtonBox.qml
index 3189967d..feff1492 100644
--- a/src/imports/controls/DialogButtonBox.qml
+++ b/src/imports/controls/DialogButtonBox.qml
@@ -34,8 +34,8 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
T.DialogButtonBox {
id: control
diff --git a/src/imports/controls/Drawer.qml b/src/imports/controls/Drawer.qml
index dbafbd92..78199695 100644
--- a/src/imports/controls/Drawer.qml
+++ b/src/imports/controls/Drawer.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.Drawer {
id: control
diff --git a/src/imports/controls/Frame.qml b/src/imports/controls/Frame.qml
index 7c8a4db7..2f647b64 100644
--- a/src/imports/controls/Frame.qml
+++ b/src/imports/controls/Frame.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.Frame {
id: control
@@ -45,9 +45,6 @@ T.Frame {
implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
- contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
- contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
-
padding: 12
background: Rectangle {
diff --git a/src/imports/controls/GroupBox.qml b/src/imports/controls/GroupBox.qml
index 2985c02e..165c5fff 100644
--- a/src/imports/controls/GroupBox.qml
+++ b/src/imports/controls/GroupBox.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.GroupBox {
id: control
@@ -47,9 +47,6 @@ T.GroupBox {
contentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
- contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
- contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
-
spacing: 6
padding: 12
topPadding: padding + (label && label.implicitWidth > 0 ? label.implicitHeight + spacing : 0)
diff --git a/src/imports/controls/ItemDelegate.qml b/src/imports/controls/ItemDelegate.qml
index 6367bc86..f5f03bca 100644
--- a/src/imports/controls/ItemDelegate.qml
+++ b/src/imports/controls/ItemDelegate.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.ItemDelegate {
id: control
diff --git a/src/imports/controls/Label.qml b/src/imports/controls/Label.qml
index aa02918f..6c3c05d4 100644
--- a/src/imports/controls/Label.qml
+++ b/src/imports/controls/Label.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.Label {
id: control
diff --git a/src/imports/controls/Menu.qml b/src/imports/controls/Menu.qml
index deadc274..770db8eb 100644
--- a/src/imports/controls/Menu.qml
+++ b/src/imports/controls/Menu.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.Menu {
id: control
diff --git a/src/imports/controls/MenuBar.qml b/src/imports/controls/MenuBar.qml
index 058c8736..677396ab 100644
--- a/src/imports/controls/MenuBar.qml
+++ b/src/imports/controls/MenuBar.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
T.MenuBar {
id: control
diff --git a/src/imports/controls/MenuBarItem.qml b/src/imports/controls/MenuBarItem.qml
index 02e3ac43..ee307532 100644
--- a/src/imports/controls/MenuBarItem.qml
+++ b/src/imports/controls/MenuBarItem.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
T.MenuBarItem {
id: control
diff --git a/src/imports/controls/MenuItem.qml b/src/imports/controls/MenuItem.qml
index 90a19f57..4c4ce005 100644
--- a/src/imports/controls/MenuItem.qml
+++ b/src/imports/controls/MenuItem.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.MenuItem {
id: control
diff --git a/src/imports/controls/MenuSeparator.qml b/src/imports/controls/MenuSeparator.qml
index ac47e32c..845bbdaa 100644
--- a/src/imports/controls/MenuSeparator.qml
+++ b/src/imports/controls/MenuSeparator.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.MenuSeparator {
id: control
@@ -46,8 +46,7 @@ T.MenuSeparator {
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentItem.implicitHeight + topPadding + bottomPadding)
padding: 2
- topPadding: padding + 4
- bottomPadding: padding + 4
+ verticalPadding: padding + 4
contentItem: Rectangle {
implicitWidth: 188
diff --git a/src/imports/controls/Page.qml b/src/imports/controls/Page.qml
index df56dcbe..3950d702 100644
--- a/src/imports/controls/Page.qml
+++ b/src/imports/controls/Page.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.Page {
id: control
@@ -51,9 +51,6 @@ T.Page {
+ (header && header.visible ? header.implicitHeight + spacing : 0)
+ (footer && footer.visible ? footer.implicitHeight + spacing : 0))
- contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
- contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
-
background: Rectangle {
color: control.palette.window
}
diff --git a/src/imports/controls/PageIndicator.qml b/src/imports/controls/PageIndicator.qml
index 9d048002..77958d19 100644
--- a/src/imports/controls/PageIndicator.qml
+++ b/src/imports/controls/PageIndicator.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.PageIndicator {
id: control
diff --git a/src/imports/controls/Pane.qml b/src/imports/controls/Pane.qml
index 7517e2f2..3bfad75d 100644
--- a/src/imports/controls/Pane.qml
+++ b/src/imports/controls/Pane.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.Pane {
id: control
@@ -45,9 +45,6 @@ T.Pane {
implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
- contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
- contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
-
padding: 12
background: Rectangle {
diff --git a/src/imports/controls/Popup.qml b/src/imports/controls/Popup.qml
index 7ea706ed..f7966be4 100644
--- a/src/imports/controls/Popup.qml
+++ b/src/imports/controls/Popup.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.Popup {
id: control
diff --git a/src/imports/controls/ProgressBar.qml b/src/imports/controls/ProgressBar.qml
index d91bcd57..17cf9560 100644
--- a/src/imports/controls/ProgressBar.qml
+++ b/src/imports/controls/ProgressBar.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
T.ProgressBar {
id: control
diff --git a/src/imports/controls/RadioButton.qml b/src/imports/controls/RadioButton.qml
index d95d2a7b..751f505a 100644
--- a/src/imports/controls/RadioButton.qml
+++ b/src/imports/controls/RadioButton.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.RadioButton {
id: control
diff --git a/src/imports/controls/RadioDelegate.qml b/src/imports/controls/RadioDelegate.qml
index 556d678f..71544108 100644
--- a/src/imports/controls/RadioDelegate.qml
+++ b/src/imports/controls/RadioDelegate.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.RadioDelegate {
id: control
diff --git a/src/imports/controls/RangeSlider.qml b/src/imports/controls/RangeSlider.qml
index f2c9266e..c096608e 100644
--- a/src/imports/controls/RangeSlider.qml
+++ b/src/imports/controls/RangeSlider.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.RangeSlider {
id: control
diff --git a/src/imports/controls/RoundButton.qml b/src/imports/controls/RoundButton.qml
index 9692b9de..934bbf1c 100644
--- a/src/imports/controls/RoundButton.qml
+++ b/src/imports/controls/RoundButton.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.RoundButton {
id: control
diff --git a/src/imports/controls/ScrollBar.qml b/src/imports/controls/ScrollBar.qml
index 2f8826bf..c62c1544 100644
--- a/src/imports/controls/ScrollBar.qml
+++ b/src/imports/controls/ScrollBar.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.ScrollBar {
id: control
diff --git a/src/imports/controls/ScrollIndicator.qml b/src/imports/controls/ScrollIndicator.qml
index 6616d6c6..d65a609f 100644
--- a/src/imports/controls/ScrollIndicator.qml
+++ b/src/imports/controls/ScrollIndicator.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.ScrollIndicator {
id: control
diff --git a/src/imports/controls/ScrollView.qml b/src/imports/controls/ScrollView.qml
index 725a50a9..338e755e 100644
--- a/src/imports/controls/ScrollView.qml
+++ b/src/imports/controls/ScrollView.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.ScrollView {
id: control
diff --git a/src/imports/controls/Slider.qml b/src/imports/controls/Slider.qml
index 9d4942c9..94f1ecb3 100644
--- a/src/imports/controls/Slider.qml
+++ b/src/imports/controls/Slider.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.Slider {
id: control
diff --git a/src/imports/controls/SpinBox.qml b/src/imports/controls/SpinBox.qml
index 51d635a6..43543656 100644
--- a/src/imports/controls/SpinBox.qml
+++ b/src/imports/controls/SpinBox.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.SpinBox {
id: control
diff --git a/src/imports/controls/StackView.qml b/src/imports/controls/StackView.qml
index cc4e1472..5da0c541 100644
--- a/src/imports/controls/StackView.qml
+++ b/src/imports/controls/StackView.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Templates 2.5 as T
T.StackView {
id: control
diff --git a/src/imports/controls/SwipeDelegate.qml b/src/imports/controls/SwipeDelegate.qml
index 4f2c9ee1..22162131 100644
--- a/src/imports/controls/SwipeDelegate.qml
+++ b/src/imports/controls/SwipeDelegate.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.SwipeDelegate {
id: control
diff --git a/src/imports/controls/SwipeView.qml b/src/imports/controls/SwipeView.qml
index 827c9cd6..e46c080e 100644
--- a/src/imports/controls/SwipeView.qml
+++ b/src/imports/controls/SwipeView.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Templates 2.5 as T
T.SwipeView {
id: control
diff --git a/src/imports/controls/Switch.qml b/src/imports/controls/Switch.qml
index 30da70f4..b59675ea 100644
--- a/src/imports/controls/Switch.qml
+++ b/src/imports/controls/Switch.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
T.Switch {
id: control
diff --git a/src/imports/controls/SwitchDelegate.qml b/src/imports/controls/SwitchDelegate.qml
index 21a11491..7ef1dc3c 100644
--- a/src/imports/controls/SwitchDelegate.qml
+++ b/src/imports/controls/SwitchDelegate.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
T.SwitchDelegate {
id: control
diff --git a/src/imports/controls/TabBar.qml b/src/imports/controls/TabBar.qml
index d95d7f39..edde8cc7 100644
--- a/src/imports/controls/TabBar.qml
+++ b/src/imports/controls/TabBar.qml
@@ -34,8 +34,8 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
T.TabBar {
id: control
diff --git a/src/imports/controls/TabButton.qml b/src/imports/controls/TabButton.qml
index 964f4e1f..3c24caf0 100644
--- a/src/imports/controls/TabButton.qml
+++ b/src/imports/controls/TabButton.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.TabButton {
id: control
diff --git a/src/imports/controls/TextArea.qml b/src/imports/controls/TextArea.qml
index 04a44eae..6a30b799 100644
--- a/src/imports/controls/TextArea.qml
+++ b/src/imports/controls/TextArea.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.TextArea {
id: control
@@ -53,6 +53,7 @@ T.TextArea {
leftPadding: padding + 4
color: control.palette.text
+ placeholderTextColor: Color.transparent(control.color, 0.5)
selectionColor: control.palette.highlight
selectedTextColor: control.palette.highlightedText
@@ -65,8 +66,7 @@ T.TextArea {
text: control.placeholderText
font: control.font
- opacity: 0.5
- color: control.color
+ color: control.placeholderTextColor
verticalAlignment: control.verticalAlignment
visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
elide: Text.ElideRight
diff --git a/src/imports/controls/TextField.qml b/src/imports/controls/TextField.qml
index 4b80d8be..0264f25e 100644
--- a/src/imports/controls/TextField.qml
+++ b/src/imports/controls/TextField.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.TextField {
id: control
@@ -55,6 +55,7 @@ T.TextField {
color: control.palette.text
selectionColor: control.palette.highlight
selectedTextColor: control.palette.highlightedText
+ placeholderTextColor: Color.transparent(control.color, 0.5)
verticalAlignment: TextInput.AlignVCenter
PlaceholderText {
@@ -66,8 +67,7 @@ T.TextField {
text: control.placeholderText
font: control.font
- opacity: 0.5
- color: control.color
+ color: control.placeholderTextColor
verticalAlignment: control.verticalAlignment
visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
elide: Text.ElideRight
diff --git a/src/imports/controls/ToolBar.qml b/src/imports/controls/ToolBar.qml
index ba6684b9..27a7f580 100644
--- a/src/imports/controls/ToolBar.qml
+++ b/src/imports/controls/ToolBar.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.ToolBar {
id: control
@@ -45,9 +45,6 @@ T.ToolBar {
implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
- contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
- contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
-
background: Rectangle {
implicitHeight: 40
color: control.palette.button
diff --git a/src/imports/controls/ToolButton.qml b/src/imports/controls/ToolButton.qml
index 371d1546..72983c94 100644
--- a/src/imports/controls/ToolButton.qml
+++ b/src/imports/controls/ToolButton.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.ToolButton {
id: control
diff --git a/src/imports/controls/ToolSeparator.qml b/src/imports/controls/ToolSeparator.qml
index 306ca575..db156762 100644
--- a/src/imports/controls/ToolSeparator.qml
+++ b/src/imports/controls/ToolSeparator.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.ToolSeparator {
id: control
@@ -46,8 +46,7 @@ T.ToolSeparator {
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentItem.implicitHeight + topPadding + bottomPadding)
padding: vertical ? 6 : 2
- topPadding: vertical ? 2 : 6
- bottomPadding: vertical ? 2 : 6
+ verticalPadding: vertical ? 2 : 6
contentItem: Rectangle {
implicitWidth: vertical ? 1 : 30
diff --git a/src/imports/controls/ToolTip.qml b/src/imports/controls/ToolTip.qml
index 46f7f577..57d28c53 100644
--- a/src/imports/controls/ToolTip.qml
+++ b/src/imports/controls/ToolTip.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.ToolTip {
id: control
diff --git a/src/imports/controls/Tumbler.qml b/src/imports/controls/Tumbler.qml
index b9cb51a1..24576b43 100644
--- a/src/imports/controls/Tumbler.qml
+++ b/src/imports/controls/Tumbler.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
T.Tumbler {
id: control
diff --git a/src/imports/controls/controls.pro b/src/imports/controls/controls.pro
index 6bbbe0d4..8624e243 100644
--- a/src/imports/controls/controls.pro
+++ b/src/imports/controls/controls.pro
@@ -1,6 +1,6 @@
TARGET = qtquickcontrols2plugin
TARGETPATH = QtQuick/Controls.2
-IMPORT_VERSION = 2.4
+IMPORT_VERSION = 2.5
QT += qml quick
QT_PRIVATE += core-private gui-private qml-private quick-private quicktemplates2-private quickcontrols2-private
diff --git a/src/imports/controls/designer/designer.pri b/src/imports/controls/designer/designer.pri
index 5be660c2..6ae9d5bb 100644
--- a/src/imports/controls/designer/designer.pri
+++ b/src/imports/controls/designer/designer.pri
@@ -1,7 +1,7 @@
-QML_FILES += \
+AUX_QML_FILES += \
$$PWD/qtquickcontrols2.metainfo
-QML_FILES += \
+AUX_QML_FILES += \
$$PWD/AbstractButtonSection.qml \
$$PWD/BusyIndicatorSpecifics.qml \
$$PWD/ButtonSection.qml \
@@ -47,5 +47,5 @@ QML_FILES += \
$$PWD/ToolSeparatorSpecifics.qml \
$$PWD/TumblerSpecifics.qml
-QML_FILES += \
+AUX_QML_FILES += \
$$PWD/images/*.png
diff --git a/src/imports/controls/doc/images/qtquickcontrols2-material-variant-dense.png b/src/imports/controls/doc/images/qtquickcontrols2-material-variant-dense.png
new file mode 100644
index 00000000..02f39b78
--- /dev/null
+++ b/src/imports/controls/doc/images/qtquickcontrols2-material-variant-dense.png
Binary files differ
diff --git a/src/imports/controls/doc/images/qtquickcontrols2-material-variant-normal.png b/src/imports/controls/doc/images/qtquickcontrols2-material-variant-normal.png
new file mode 100644
index 00000000..c1e366c5
--- /dev/null
+++ b/src/imports/controls/doc/images/qtquickcontrols2-material-variant-normal.png
Binary files differ
diff --git a/src/imports/controls/doc/snippets/qtquickcontrols2-material-variant.qml b/src/imports/controls/doc/snippets/qtquickcontrols2-material-variant.qml
new file mode 100644
index 00000000..fc2be179
--- /dev/null
+++ b/src/imports/controls/doc/snippets/qtquickcontrols2-material-variant.qml
@@ -0,0 +1,212 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 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$
+**
+****************************************************************************/
+
+import QtQuick 2.11
+import QtQuick.Controls 2.4
+import QtQuick.Controls.Material 2.4
+import QtQuick.Layouts 1.3
+
+Pane {
+ implicitWidth: 400
+ implicitHeight: 600
+ padding: 10
+
+ readonly property color measurementColor: "darkorange"
+ readonly property int barLeftMargin: 10
+ readonly property int textTopMargin: 12
+
+ Component {
+ id: measurementComponent
+
+ Rectangle {
+ color: measurementColor
+ width: 1
+ height: parent.height
+
+ Rectangle {
+ width: 5
+ height: 1
+ color: measurementColor
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ Rectangle {
+ width: 5
+ height: 1
+ color: measurementColor
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+ }
+
+ Text {
+ x: 8
+ text: parent.height
+ height: parent.height
+ color: measurementColor
+ verticalAlignment: Text.AlignVCenter
+ }
+ }
+ }
+
+ ColumnLayout {
+ anchors.fill: parent
+ spacing: 20
+
+ ColumnLayout {
+ spacing: textTopMargin
+
+ Button {
+ id: button
+ text: qsTr("Button")
+
+ Loader {
+ sourceComponent: measurementComponent
+ height: parent.height
+ anchors.left: parent.right
+ anchors.leftMargin: barLeftMargin
+ }
+
+ }
+ Text {
+ text: "Roboto " + button.font.pixelSize
+ color: measurementColor
+ }
+ }
+
+ ColumnLayout {
+ spacing: textTopMargin
+
+ ItemDelegate {
+ id: itemDelegate
+ text: qsTr("ItemDelegate")
+
+ Loader {
+ sourceComponent: measurementComponent
+ height: parent.height
+ anchors.left: parent.right
+ anchors.leftMargin: barLeftMargin
+ }
+
+ }
+ Text {
+ text: "Roboto " + itemDelegate.font.pixelSize
+ color: measurementColor
+ }
+ }
+
+ ColumnLayout {
+ spacing: textTopMargin
+
+ CheckDelegate {
+ id: checkDelegate
+ text: qsTr("CheckDelegate")
+
+ Loader {
+ sourceComponent: measurementComponent
+ height: parent.height
+ anchors.left: parent.right
+ anchors.leftMargin: barLeftMargin
+ }
+
+ }
+ Text {
+ text: "Roboto " + checkDelegate.font.pixelSize
+ color: measurementColor
+ }
+ }
+
+ ColumnLayout {
+ spacing: textTopMargin
+
+ RadioDelegate {
+ id: radioDelegate
+ text: qsTr("RadioDelegate")
+
+ Loader {
+ sourceComponent: measurementComponent
+ height: parent.height
+ anchors.left: parent.right
+ anchors.leftMargin: barLeftMargin
+ }
+
+ }
+ Text {
+ text: "Roboto " + radioDelegate.font.pixelSize
+ color: measurementColor
+ }
+ }
+
+ ColumnLayout {
+ spacing: textTopMargin
+
+ ComboBox {
+ id: comboBox
+ model: [ qsTr("ComboBox") ]
+
+ Loader {
+ sourceComponent: measurementComponent
+ height: parent.height
+ anchors.left: parent.right
+ anchors.leftMargin: barLeftMargin
+ }
+
+ }
+ Text {
+ text: "Roboto " + comboBox.font.pixelSize
+ color: measurementColor
+ }
+ }
+
+ ColumnLayout {
+ spacing: textTopMargin
+
+ Item {
+ implicitWidth: groupBox.implicitWidth
+ implicitHeight: groupBox.implicitHeight
+
+ GroupBox {
+ id: groupBox
+ title: qsTr("GroupBox")
+ }
+ Loader {
+ sourceComponent: measurementComponent
+ height: parent.height
+ anchors.left: parent.right
+ anchors.leftMargin: barLeftMargin
+ }
+ }
+ Text {
+ text: "Roboto " + groupBox.font.pixelSize
+ color: measurementColor
+ }
+ }
+
+ Item {
+ Layout.fillHeight: true
+ }
+ }
+}
diff --git a/src/imports/controls/doc/snippets/qtquickcontrols2-popup.qml b/src/imports/controls/doc/snippets/qtquickcontrols2-popup.qml
new file mode 100644
index 00000000..593058c6
--- /dev/null
+++ b/src/imports/controls/doc/snippets/qtquickcontrols2-popup.qml
@@ -0,0 +1,46 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 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$
+**
+****************************************************************************/
+
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+
+Item {
+//! [centerIn]
+ApplicationWindow {
+ id: window
+ // ...
+
+ Pane {
+ // ...
+
+ Popup {
+ anchors.centerIn: Overlay.overlay
+ }
+ }
+}
+//! [centerIn]
+}
diff --git a/src/imports/controls/doc/src/includes/qquickmaterialstyle.qdocinc b/src/imports/controls/doc/src/includes/qquickmaterialstyle.qdocinc
index c5d94279..72c97bb6 100644
--- a/src/imports/controls/doc/src/includes/qquickmaterialstyle.qdocinc
+++ b/src/imports/controls/doc/src/includes/qquickmaterialstyle.qdocinc
@@ -8,6 +8,14 @@
\li Specifies the default \l {material-theme-attached-prop}{Material theme}.
The value can be one of the available themes, for example \c "Dark".
\row
+ \li \c Variant
+ \li Specifies the Material variant. The Material Design has two
+ variants: a normal variant designed for touch devices, and a dense
+ variant for desktop. The dense variant uses smaller sizes for
+ controls and their fonts.
+
+ The value can be \c "Normal" or \c "Dense".
+ \row
\li \c Accent
\li Specifies the default \l {material-accent-attached-prop}{Material accent color}.
The value can be any \l {colorbasictypedocs}{color}, but it is recommended to use
@@ -40,6 +48,14 @@
\li Specifies the default \l {material-theme-attached-prop}{Material theme}.
The value can be one of the available themes, for example \c "Dark".
\row
+ \li \c QT_QUICK_CONTROLS_MATERIAL_VARIANT
+ \li Specifies the Material variant. The Material Design has two
+ variants: a normal variant designed for touch devices, and a dense
+ variant for desktop. The dense variant uses smaller sizes for
+ controls and their fonts.
+
+ The value can be \c "Normal" or \c "Dense".
+ \row
\li \c QT_QUICK_CONTROLS_MATERIAL_ACCENT
\li Specifies the default \l {material-accent-attached-prop}{Material accent color}.
The value can be any \l {colorbasictypedocs}{color}, but it is recommended to use
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-imagine.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-imagine.qdoc
index 9061097b..75dec936 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-imagine.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-imagine.qdoc
@@ -31,7 +31,7 @@
The Imagine Style is based on configurable image assets. \l{detailed-desc-imagine}{More...}
- \styleimport {QtQuick.Controls.Imagine 2.4} {Qt 5.10}
+ \styleimport {QtQuick.Controls.Imagine 2.5} {Qt 5.10}
\section1 Attached Properties
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-index.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-index.qdoc
index 9b737939..ba8d7527 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-index.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-index.qdoc
@@ -46,7 +46,7 @@
application using the following import statement in your \c {.qml} file:
\code
- import QtQuick.Controls 2.4
+ import QtQuick.Controls 2.5
\endcode
The \l{Qt Quick Controls 2 C++ Classes}{C++ classes} can be included into
@@ -107,6 +107,11 @@
\li 2.4
\li 1.0
\row
+ \li 5.12
+ \li 2.12
+ \li 2.5
+ \li 1.0
+ \row
\li ...
\li ...
\li ...
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-material.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-material.qdoc
index d0bcf63a..fa7874e5 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-material.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-material.qdoc
@@ -32,7 +32,7 @@
The Material Style is based on the Google Material Design Guidelines.
\l{detailed-desc-material}{More...}
- \styleimport {QtQuick.Controls.Material 2.4} {Qt 5.7}
+ \styleimport {QtQuick.Controls.Material 2.5} {Qt 5.7}
\section1 Attached Properties
@@ -222,6 +222,33 @@
\b {See also} \l {Default Style}, \l {Universal Style}
+ \section2 Variants
+
+ The Material style also supports a dense variant, where controls like
+ buttons and delegates are smaller in height and use smaller font sizes.
+ It is recommended to use the dense variant on desktop platforms, where
+ a mouse and keyboard allow more precise and flexible user interaction.
+
+ To use the dense variant, either set the
+ \c QT_QUICK_CONTROLS_MATERIAL_VARIANT environment variable to \c Dense,
+ or specify \c Variant=Dense in the
+ \l {Qt Quick Controls 2 Configuration File}{qtquickcontrols2.conf} file.
+ The default value in both cases is \c Normal.
+
+ The following images illustrate the differences between some of the
+ controls when using the normal and dense variants:
+
+ \table
+ \row
+ \li
+ \image qtquickcontrols2-material-variant-normal.png
+ \li
+ \image qtquickcontrols2-material-variant-dense.png
+ \endtable
+
+ Note that the heights shown above may vary based on differences in fonts
+ across platforms.
+
\section1 Attached Property Documentation
\styleproperty {Material.accent} {color} {material-accent-attached-prop}
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-qmltypes.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-qmltypes.qdoc
index d4576617..6ebe2fe9 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-qmltypes.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-qmltypes.qdoc
@@ -26,7 +26,7 @@
****************************************************************************/
/*!
- \qmlmodule QtQuick.Controls 2.4
+ \qmlmodule QtQuick.Controls 2.5
\title Qt Quick Controls 2 QML Types
\ingroup qmlmodules
\brief Provides QML types for user interfaces (Qt Quick Controls 2).
@@ -39,7 +39,7 @@
using the following import statement in your .qml file:
\badcode
- import QtQuick.Controls 2.4
+ import QtQuick.Controls 2.5
\endcode
\section1 QML Types
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-universal.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-universal.qdoc
index abd027e4..80bf9ef7 100644
--- a/src/imports/controls/doc/src/qtquickcontrols2-universal.qdoc
+++ b/src/imports/controls/doc/src/qtquickcontrols2-universal.qdoc
@@ -32,7 +32,7 @@
The Universal Style is based on the Microsoft Universal Design Guidelines.
\l {detailed-desc-universal}{More...}
- \styleimport {QtQuick.Controls.Universal 2.4} {Qt 5.7}
+ \styleimport {QtQuick.Controls.Universal 2.5} {Qt 5.7}
\section1 Attached Properties
diff --git a/src/imports/controls/fusion/ApplicationWindow.qml b/src/imports/controls/fusion/ApplicationWindow.qml
index 570d84b4..6abe832f 100644
--- a/src/imports/controls/fusion/ApplicationWindow.qml
+++ b/src/imports/controls/fusion/ApplicationWindow.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
+import QtQuick 2.12
import QtQuick.Window 2.2
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.ApplicationWindow {
id: window
diff --git a/src/imports/controls/fusion/BusyIndicator.qml b/src/imports/controls/fusion/BusyIndicator.qml
index cba5fc2e..2658f477 100644
--- a/src/imports/controls/fusion/BusyIndicator.qml
+++ b/src/imports/controls/fusion/BusyIndicator.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.BusyIndicator {
id: control
diff --git a/src/imports/controls/fusion/Button.qml b/src/imports/controls/fusion/Button.qml
index d33544ae..492fe1e2 100644
--- a/src/imports/controls/fusion/Button.qml
+++ b/src/imports/controls/fusion/Button.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.Button {
id: control
diff --git a/src/imports/controls/fusion/ButtonPanel.qml b/src/imports/controls/fusion/ButtonPanel.qml
index b1672bf0..fc1af2de 100644
--- a/src/imports/controls/fusion/ButtonPanel.qml
+++ b/src/imports/controls/fusion/ButtonPanel.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
Rectangle {
id: panel
diff --git a/src/imports/controls/fusion/CheckBox.qml b/src/imports/controls/fusion/CheckBox.qml
index 4a10238d..41cf1808 100644
--- a/src/imports/controls/fusion/CheckBox.qml
+++ b/src/imports/controls/fusion/CheckBox.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.CheckBox {
id: control
diff --git a/src/imports/controls/fusion/CheckDelegate.qml b/src/imports/controls/fusion/CheckDelegate.qml
index 9c6b97ff..99dbf794 100644
--- a/src/imports/controls/fusion/CheckDelegate.qml
+++ b/src/imports/controls/fusion/CheckDelegate.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.CheckDelegate {
id: control
diff --git a/src/imports/controls/fusion/CheckIndicator.qml b/src/imports/controls/fusion/CheckIndicator.qml
index 5a5837ae..8c49e6b2 100644
--- a/src/imports/controls/fusion/CheckIndicator.qml
+++ b/src/imports/controls/fusion/CheckIndicator.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
Rectangle {
id: indicator
diff --git a/src/imports/controls/fusion/ComboBox.qml b/src/imports/controls/fusion/ComboBox.qml
index bc232759..a7bacc66 100644
--- a/src/imports/controls/fusion/ComboBox.qml
+++ b/src/imports/controls/fusion/ComboBox.qml
@@ -34,13 +34,13 @@
**
****************************************************************************/
-import QtQuick 2.11
+import QtQuick 2.12
import QtQuick.Window 2.3
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.ComboBox {
id: control
diff --git a/src/imports/controls/fusion/DelayButton.qml b/src/imports/controls/fusion/DelayButton.qml
index 261db320..d515602a 100644
--- a/src/imports/controls/fusion/DelayButton.qml
+++ b/src/imports/controls/fusion/DelayButton.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.DelayButton {
id: control
diff --git a/src/imports/controls/fusion/Dial.qml b/src/imports/controls/fusion/Dial.qml
index c9ed0c68..3f353275 100644
--- a/src/imports/controls/fusion/Dial.qml
+++ b/src/imports/controls/fusion/Dial.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.Dial {
id: control
diff --git a/src/imports/controls/fusion/Dialog.qml b/src/imports/controls/fusion/Dialog.qml
index 4e43b038..a2366170 100644
--- a/src/imports/controls/fusion/Dialog.qml
+++ b/src/imports/controls/fusion/Dialog.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.Dialog {
id: control
diff --git a/src/imports/controls/fusion/DialogButtonBox.qml b/src/imports/controls/fusion/DialogButtonBox.qml
index 5d30c329..cfd4be3e 100644
--- a/src/imports/controls/fusion/DialogButtonBox.qml
+++ b/src/imports/controls/fusion/DialogButtonBox.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.DialogButtonBox {
id: control
diff --git a/src/imports/controls/fusion/Drawer.qml b/src/imports/controls/fusion/Drawer.qml
index 711040a2..2ee18a9b 100644
--- a/src/imports/controls/fusion/Drawer.qml
+++ b/src/imports/controls/fusion/Drawer.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.Drawer {
id: control
diff --git a/src/imports/controls/fusion/Frame.qml b/src/imports/controls/fusion/Frame.qml
index 4acce74a..bd4bb6f2 100644
--- a/src/imports/controls/fusion/Frame.qml
+++ b/src/imports/controls/fusion/Frame.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.Frame {
id: control
@@ -47,9 +47,6 @@ T.Frame {
implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
- contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
- contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
-
padding: 9
background: Rectangle {
diff --git a/src/imports/controls/fusion/GroupBox.qml b/src/imports/controls/fusion/GroupBox.qml
index 439783ac..5196f8b2 100644
--- a/src/imports/controls/fusion/GroupBox.qml
+++ b/src/imports/controls/fusion/GroupBox.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.GroupBox {
id: control
@@ -49,9 +49,6 @@ T.GroupBox {
contentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
- contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
- contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
-
spacing: 6
padding: 9
topPadding: padding + (label && label.implicitWidth > 0 ? label.implicitHeight + spacing : 0)
diff --git a/src/imports/controls/fusion/ItemDelegate.qml b/src/imports/controls/fusion/ItemDelegate.qml
index 0936c7c2..7cdc8890 100644
--- a/src/imports/controls/fusion/ItemDelegate.qml
+++ b/src/imports/controls/fusion/ItemDelegate.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.ItemDelegate {
id: control
diff --git a/src/imports/controls/fusion/Label.qml b/src/imports/controls/fusion/Label.qml
index 1c6951c2..23e337e2 100644
--- a/src/imports/controls/fusion/Label.qml
+++ b/src/imports/controls/fusion/Label.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.Label {
id: control
diff --git a/src/imports/controls/fusion/Menu.qml b/src/imports/controls/fusion/Menu.qml
index dc8e2eb2..2b38119e 100644
--- a/src/imports/controls/fusion/Menu.qml
+++ b/src/imports/controls/fusion/Menu.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.Menu {
id: control
diff --git a/src/imports/controls/fusion/MenuBar.qml b/src/imports/controls/fusion/MenuBar.qml
index d1530d75..d9776496 100644
--- a/src/imports/controls/fusion/MenuBar.qml
+++ b/src/imports/controls/fusion/MenuBar.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.MenuBar {
id: control
diff --git a/src/imports/controls/fusion/MenuBarItem.qml b/src/imports/controls/fusion/MenuBarItem.qml
index 2b4425a9..639c6ccb 100644
--- a/src/imports/controls/fusion/MenuBarItem.qml
+++ b/src/imports/controls/fusion/MenuBarItem.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.MenuBarItem {
id: control
diff --git a/src/imports/controls/fusion/MenuItem.qml b/src/imports/controls/fusion/MenuItem.qml
index 35d7248f..984f66f8 100644
--- a/src/imports/controls/fusion/MenuItem.qml
+++ b/src/imports/controls/fusion/MenuItem.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.MenuItem {
id: control
diff --git a/src/imports/controls/fusion/MenuSeparator.qml b/src/imports/controls/fusion/MenuSeparator.qml
index a426c0fe..95ad44a4 100644
--- a/src/imports/controls/fusion/MenuSeparator.qml
+++ b/src/imports/controls/fusion/MenuSeparator.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.MenuSeparator {
id: control
@@ -48,8 +48,7 @@ T.MenuSeparator {
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentItem.implicitHeight + topPadding + bottomPadding)
padding: 5
- topPadding: 1
- bottomPadding: 1
+ verticalPadding: 1
contentItem: Rectangle {
implicitWidth: 188
diff --git a/src/imports/controls/fusion/Page.qml b/src/imports/controls/fusion/Page.qml
index 20febd6a..cdc473e5 100644
--- a/src/imports/controls/fusion/Page.qml
+++ b/src/imports/controls/fusion/Page.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.Page {
id: control
@@ -53,9 +53,6 @@ T.Page {
+ (header && header.visible ? header.implicitHeight + spacing : 0)
+ (footer && footer.visible ? footer.implicitHeight + spacing : 0))
- contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
- contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
-
background: Rectangle {
color: palette.window
}
diff --git a/src/imports/controls/fusion/PageIndicator.qml b/src/imports/controls/fusion/PageIndicator.qml
index 39d28ca2..7958c03a 100644
--- a/src/imports/controls/fusion/PageIndicator.qml
+++ b/src/imports/controls/fusion/PageIndicator.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.PageIndicator {
id: control
diff --git a/src/imports/controls/fusion/Pane.qml b/src/imports/controls/fusion/Pane.qml
index 59c65cd9..24ed94a1 100644
--- a/src/imports/controls/fusion/Pane.qml
+++ b/src/imports/controls/fusion/Pane.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.Pane {
id: control
@@ -47,9 +47,6 @@ T.Pane {
implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
- contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
- contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
-
padding: 9
background: Rectangle {
diff --git a/src/imports/controls/fusion/Popup.qml b/src/imports/controls/fusion/Popup.qml
index 319e5b8a..1ac87a25 100644
--- a/src/imports/controls/fusion/Popup.qml
+++ b/src/imports/controls/fusion/Popup.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.Popup {
id: control
diff --git a/src/imports/controls/fusion/ProgressBar.qml b/src/imports/controls/fusion/ProgressBar.qml
index 547d5f7c..97b11a3f 100644
--- a/src/imports/controls/fusion/ProgressBar.qml
+++ b/src/imports/controls/fusion/ProgressBar.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.ProgressBar {
id: control
diff --git a/src/imports/controls/fusion/RadioButton.qml b/src/imports/controls/fusion/RadioButton.qml
index 612319b4..3ddd02b4 100644
--- a/src/imports/controls/fusion/RadioButton.qml
+++ b/src/imports/controls/fusion/RadioButton.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.RadioButton {
id: control
diff --git a/src/imports/controls/fusion/RadioDelegate.qml b/src/imports/controls/fusion/RadioDelegate.qml
index f5f57071..53bbe3e0 100644
--- a/src/imports/controls/fusion/RadioDelegate.qml
+++ b/src/imports/controls/fusion/RadioDelegate.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.RadioDelegate {
id: control
diff --git a/src/imports/controls/fusion/RadioIndicator.qml b/src/imports/controls/fusion/RadioIndicator.qml
index d3d40c11..790a5e24 100644
--- a/src/imports/controls/fusion/RadioIndicator.qml
+++ b/src/imports/controls/fusion/RadioIndicator.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
Rectangle {
id: indicator
diff --git a/src/imports/controls/fusion/RangeSlider.qml b/src/imports/controls/fusion/RangeSlider.qml
index 260c21cf..72ac9252 100644
--- a/src/imports/controls/fusion/RangeSlider.qml
+++ b/src/imports/controls/fusion/RangeSlider.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.RangeSlider {
id: control
diff --git a/src/imports/controls/fusion/RoundButton.qml b/src/imports/controls/fusion/RoundButton.qml
index 5d28b52c..121d9df5 100644
--- a/src/imports/controls/fusion/RoundButton.qml
+++ b/src/imports/controls/fusion/RoundButton.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.RoundButton {
id: control
diff --git a/src/imports/controls/fusion/ScrollBar.qml b/src/imports/controls/fusion/ScrollBar.qml
index 25881d2d..0e61f7cd 100644
--- a/src/imports/controls/fusion/ScrollBar.qml
+++ b/src/imports/controls/fusion/ScrollBar.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.ScrollBar {
id: control
diff --git a/src/imports/controls/fusion/ScrollIndicator.qml b/src/imports/controls/fusion/ScrollIndicator.qml
index 7d6372a3..c3e8d575 100644
--- a/src/imports/controls/fusion/ScrollIndicator.qml
+++ b/src/imports/controls/fusion/ScrollIndicator.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.ScrollIndicator {
id: control
diff --git a/src/imports/controls/fusion/ScrollView.qml b/src/imports/controls/fusion/ScrollView.qml
index 5cbd170a..728888c3 100644
--- a/src/imports/controls/fusion/ScrollView.qml
+++ b/src/imports/controls/fusion/ScrollView.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.ScrollView {
id: control
diff --git a/src/imports/controls/fusion/Slider.qml b/src/imports/controls/fusion/Slider.qml
index a4d28fe5..7cfe68e4 100644
--- a/src/imports/controls/fusion/Slider.qml
+++ b/src/imports/controls/fusion/Slider.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.Slider {
id: control
diff --git a/src/imports/controls/fusion/SliderGroove.qml b/src/imports/controls/fusion/SliderGroove.qml
index cd90bd54..678ac8c2 100644
--- a/src/imports/controls/fusion/SliderGroove.qml
+++ b/src/imports/controls/fusion/SliderGroove.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
Rectangle {
id: groove
diff --git a/src/imports/controls/fusion/SliderHandle.qml b/src/imports/controls/fusion/SliderHandle.qml
index 5ea2dd03..9bfa45a1 100644
--- a/src/imports/controls/fusion/SliderHandle.qml
+++ b/src/imports/controls/fusion/SliderHandle.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
Rectangle {
id: handle
diff --git a/src/imports/controls/fusion/SpinBox.qml b/src/imports/controls/fusion/SpinBox.qml
index 9d975fa8..c773ebf8 100644
--- a/src/imports/controls/fusion/SpinBox.qml
+++ b/src/imports/controls/fusion/SpinBox.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.SpinBox {
id: control
diff --git a/src/imports/controls/fusion/SwipeDelegate.qml b/src/imports/controls/fusion/SwipeDelegate.qml
index 0704f5b3..047cf976 100644
--- a/src/imports/controls/fusion/SwipeDelegate.qml
+++ b/src/imports/controls/fusion/SwipeDelegate.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.SwipeDelegate {
id: control
diff --git a/src/imports/controls/fusion/Switch.qml b/src/imports/controls/fusion/Switch.qml
index 0f5d484b..0d104604 100644
--- a/src/imports/controls/fusion/Switch.qml
+++ b/src/imports/controls/fusion/Switch.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.Switch {
id: control
diff --git a/src/imports/controls/fusion/SwitchDelegate.qml b/src/imports/controls/fusion/SwitchDelegate.qml
index 4a09ba25..23b64147 100644
--- a/src/imports/controls/fusion/SwitchDelegate.qml
+++ b/src/imports/controls/fusion/SwitchDelegate.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.SwitchDelegate {
id: control
diff --git a/src/imports/controls/fusion/SwitchIndicator.qml b/src/imports/controls/fusion/SwitchIndicator.qml
index 22430dc3..7948a794 100644
--- a/src/imports/controls/fusion/SwitchIndicator.qml
+++ b/src/imports/controls/fusion/SwitchIndicator.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
Rectangle {
id: indicator
diff --git a/src/imports/controls/fusion/TabBar.qml b/src/imports/controls/fusion/TabBar.qml
index d6f3194b..fa21fb66 100644
--- a/src/imports/controls/fusion/TabBar.qml
+++ b/src/imports/controls/fusion/TabBar.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.TabBar {
id: control
diff --git a/src/imports/controls/fusion/TabButton.qml b/src/imports/controls/fusion/TabButton.qml
index bdcee759..7f378d14 100644
--- a/src/imports/controls/fusion/TabButton.qml
+++ b/src/imports/controls/fusion/TabButton.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.TabButton {
id: control
@@ -51,8 +51,7 @@ T.TabButton {
baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 2
- leftPadding: 4
- rightPadding: 4
+ horizontalPadding: 4
spacing: 6
icon.width: 16
diff --git a/src/imports/controls/fusion/TextArea.qml b/src/imports/controls/fusion/TextArea.qml
index 36d9db04..573353dc 100644
--- a/src/imports/controls/fusion/TextArea.qml
+++ b/src/imports/controls/fusion/TextArea.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.TextArea {
id: control
@@ -57,6 +57,7 @@ T.TextArea {
color: control.palette.text
selectionColor: control.palette.highlight
selectedTextColor: control.palette.highlightedText
+ placeholderTextColor: Color.transparent(control.color, 0.5)
PlaceholderText {
id: placeholder
@@ -65,10 +66,9 @@ T.TextArea {
width: control.width - (control.leftPadding + control.rightPadding)
height: control.height - (control.topPadding + control.bottomPadding)
- opacity: 0.5
text: control.placeholderText
font: control.font
- color: control.color
+ color: control.placeholderTextColor
verticalAlignment: control.verticalAlignment
visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
elide: Text.ElideRight
diff --git a/src/imports/controls/fusion/TextField.qml b/src/imports/controls/fusion/TextField.qml
index 2ea5c967..8c5fa634 100644
--- a/src/imports/controls/fusion/TextField.qml
+++ b/src/imports/controls/fusion/TextField.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.TextField {
id: control
@@ -56,6 +56,7 @@ T.TextField {
color: control.palette.text
selectionColor: control.palette.highlight
selectedTextColor: control.palette.highlightedText
+ placeholderTextColor: Color.transparent(control.color, 0.5)
verticalAlignment: TextInput.AlignVCenter
PlaceholderText {
@@ -65,10 +66,9 @@ T.TextField {
width: control.width - (control.leftPadding + control.rightPadding)
height: control.height - (control.topPadding + control.bottomPadding)
- opacity: 0.5
text: control.placeholderText
font: control.font
- color: control.color
+ color: control.placeholderTextColor
verticalAlignment: control.verticalAlignment
visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
elide: Text.ElideRight
diff --git a/src/imports/controls/fusion/ToolBar.qml b/src/imports/controls/fusion/ToolBar.qml
index ab272517..b7f685ad 100644
--- a/src/imports/controls/fusion/ToolBar.qml
+++ b/src/imports/controls/fusion/ToolBar.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.ToolBar {
id: control
@@ -47,11 +47,7 @@ T.ToolBar {
implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
- contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
- contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
-
- leftPadding: 6
- rightPadding: 6
+ horizontalPadding: 6
topPadding: control.position === T.ToolBar.Footer ? 1 : 0
bottomPadding: control.position === T.ToolBar.Header ? 1 : 0
diff --git a/src/imports/controls/fusion/ToolButton.qml b/src/imports/controls/fusion/ToolButton.qml
index dc3c9663..20b4e642 100644
--- a/src/imports/controls/fusion/ToolButton.qml
+++ b/src/imports/controls/fusion/ToolButton.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.ToolButton {
id: control
diff --git a/src/imports/controls/fusion/ToolSeparator.qml b/src/imports/controls/fusion/ToolSeparator.qml
index fd10dd72..b218604f 100644
--- a/src/imports/controls/fusion/ToolSeparator.qml
+++ b/src/imports/controls/fusion/ToolSeparator.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.ToolSeparator {
id: control
@@ -48,8 +48,7 @@ T.ToolSeparator {
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentItem.implicitHeight + topPadding + bottomPadding)
padding: vertical ? 6 : 2
- topPadding: vertical ? 2 : 6
- bottomPadding: vertical ? 2 : 6
+ verticalPadding: vertical ? 2 : 6
contentItem: Rectangle {
implicitWidth: vertical ? 2 : 8
diff --git a/src/imports/controls/fusion/ToolTip.qml b/src/imports/controls/fusion/ToolTip.qml
index 2b404a5e..59f64899 100644
--- a/src/imports/controls/fusion/ToolTip.qml
+++ b/src/imports/controls/fusion/ToolTip.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.ToolTip {
id: control
diff --git a/src/imports/controls/fusion/Tumbler.qml b/src/imports/controls/fusion/Tumbler.qml
index b66e4f2d..e6f2381f 100644
--- a/src/imports/controls/fusion/Tumbler.qml
+++ b/src/imports/controls/fusion/Tumbler.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Fusion 2.4
-import QtQuick.Controls.Fusion.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Fusion 2.5
+import QtQuick.Controls.Fusion.impl 2.5
T.Tumbler {
id: control
diff --git a/src/imports/controls/fusion/fusion.pro b/src/imports/controls/fusion/fusion.pro
index 2934778b..705157b7 100644
--- a/src/imports/controls/fusion/fusion.pro
+++ b/src/imports/controls/fusion/fusion.pro
@@ -1,6 +1,6 @@
TARGET = qtquickcontrols2fusionstyleplugin
TARGETPATH = QtQuick/Controls.2/Fusion
-IMPORT_VERSION = 2.4
+IMPORT_VERSION = 2.5
QT += qml quick
QT_PRIVATE += core-private gui-private qml-private quick-private quicktemplates2-private quickcontrols2-private
diff --git a/src/imports/controls/fusion/qmldir b/src/imports/controls/fusion/qmldir
index 6857b398..b584adc8 100644
--- a/src/imports/controls/fusion/qmldir
+++ b/src/imports/controls/fusion/qmldir
@@ -1,4 +1,4 @@
module QtQuick.Controls.Fusion
plugin qtquickcontrols2fusionstyleplugin
classname QtQuickControls2FusionStylePlugin
-depends QtQuick.Controls 2.4
+depends QtQuick.Controls 2.5
diff --git a/src/imports/controls/fusion/qquickfusiontheme.cpp b/src/imports/controls/fusion/qquickfusiontheme.cpp
index 31494efb..78465b6b 100644
--- a/src/imports/controls/fusion/qquickfusiontheme.cpp
+++ b/src/imports/controls/fusion/qquickfusiontheme.cpp
@@ -39,7 +39,6 @@
QT_BEGIN_NAMESPACE
QQuickFusionTheme::QQuickFusionTheme()
- : QQuickTheme(QStringLiteral("Fusion"))
{
}
diff --git a/src/imports/controls/fusion/qquickfusiontheme_p.h b/src/imports/controls/fusion/qquickfusiontheme_p.h
index 5dcfcf61..0cd77f77 100644
--- a/src/imports/controls/fusion/qquickfusiontheme_p.h
+++ b/src/imports/controls/fusion/qquickfusiontheme_p.h
@@ -50,7 +50,7 @@
#include <QtCore/qvariant.h>
#include <QtGui/qpalette.h>
-#include <QtQuickControls2/private/qquicktheme_p.h>
+#include <QtQuickTemplates2/private/qquicktheme_p.h>
QT_BEGIN_NAMESPACE
diff --git a/src/imports/controls/fusion/qtquickcontrols2fusionstyleplugin.cpp b/src/imports/controls/fusion/qtquickcontrols2fusionstyleplugin.cpp
index 542f088c..5bb1d062 100644
--- a/src/imports/controls/fusion/qtquickcontrols2fusionstyleplugin.cpp
+++ b/src/imports/controls/fusion/qtquickcontrols2fusionstyleplugin.cpp
@@ -71,7 +71,7 @@ public:
void registerTypes(const char *uri) override;
QString name() const override;
- QQuickProxyTheme *createTheme() const override;
+ QQuickTheme *createTheme() const override;
};
QtQuickControls2FusionStylePlugin::QtQuickControls2FusionStylePlugin(QObject *parent) : QQuickStylePlugin(parent)
@@ -103,10 +103,10 @@ void QtQuickControls2FusionStylePlugin::registerTypes(const char *uri)
QString QtQuickControls2FusionStylePlugin::name() const
{
- return QStringLiteral("fusion");
+ return QStringLiteral("Fusion");
}
-QQuickProxyTheme *QtQuickControls2FusionStylePlugin::createTheme() const
+QQuickTheme *QtQuickControls2FusionStylePlugin::createTheme() const
{
return new QQuickFusionTheme;
}
diff --git a/src/imports/controls/imagine/ApplicationWindow.qml b/src/imports/controls/imagine/ApplicationWindow.qml
index 8600e8d6..00922f63 100644
--- a/src/imports/controls/imagine/ApplicationWindow.qml
+++ b/src/imports/controls/imagine/ApplicationWindow.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
+import QtQuick 2.12
import QtQuick.Window 2.2
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.ApplicationWindow {
id: window
diff --git a/src/imports/controls/imagine/BusyIndicator.qml b/src/imports/controls/imagine/BusyIndicator.qml
index a9a5ac40..e532bb18 100644
--- a/src/imports/controls/imagine/BusyIndicator.qml
+++ b/src/imports/controls/imagine/BusyIndicator.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.BusyIndicator {
id: control
diff --git a/src/imports/controls/imagine/Button.qml b/src/imports/controls/imagine/Button.qml
index 7c8ab584..a1c0c15f 100644
--- a/src/imports/controls/imagine/Button.qml
+++ b/src/imports/controls/imagine/Button.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.Button {
id: control
diff --git a/src/imports/controls/imagine/CheckBox.qml b/src/imports/controls/imagine/CheckBox.qml
index 8c5cd918..f8a1841b 100644
--- a/src/imports/controls/imagine/CheckBox.qml
+++ b/src/imports/controls/imagine/CheckBox.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.CheckBox {
id: control
diff --git a/src/imports/controls/imagine/CheckDelegate.qml b/src/imports/controls/imagine/CheckDelegate.qml
index 76cd89c4..28782013 100644
--- a/src/imports/controls/imagine/CheckDelegate.qml
+++ b/src/imports/controls/imagine/CheckDelegate.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.CheckDelegate {
id: control
diff --git a/src/imports/controls/imagine/ComboBox.qml b/src/imports/controls/imagine/ComboBox.qml
index fa22ab90..604be993 100644
--- a/src/imports/controls/imagine/ComboBox.qml
+++ b/src/imports/controls/imagine/ComboBox.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
+import QtQuick 2.12
import QtQuick.Window 2.3
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.ComboBox {
id: control
diff --git a/src/imports/controls/imagine/DelayButton.qml b/src/imports/controls/imagine/DelayButton.qml
index f0a2c568..fc604c5b 100644
--- a/src/imports/controls/imagine/DelayButton.qml
+++ b/src/imports/controls/imagine/DelayButton.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
import QtGraphicalEffects 1.0
T.DelayButton {
diff --git a/src/imports/controls/imagine/Dial.qml b/src/imports/controls/imagine/Dial.qml
index e9652249..726fbef2 100644
--- a/src/imports/controls/imagine/Dial.qml
+++ b/src/imports/controls/imagine/Dial.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.Dial {
id: control
diff --git a/src/imports/controls/imagine/Dialog.qml b/src/imports/controls/imagine/Dialog.qml
index 67215ec5..241d426f 100644
--- a/src/imports/controls/imagine/Dialog.qml
+++ b/src/imports/controls/imagine/Dialog.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.Dialog {
id: control
diff --git a/src/imports/controls/imagine/DialogButtonBox.qml b/src/imports/controls/imagine/DialogButtonBox.qml
index 69211ed9..eb756548 100644
--- a/src/imports/controls/imagine/DialogButtonBox.qml
+++ b/src/imports/controls/imagine/DialogButtonBox.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.DialogButtonBox {
id: control
diff --git a/src/imports/controls/imagine/Drawer.qml b/src/imports/controls/imagine/Drawer.qml
index d4bf5a7c..f653375b 100644
--- a/src/imports/controls/imagine/Drawer.qml
+++ b/src/imports/controls/imagine/Drawer.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.Drawer {
id: control
diff --git a/src/imports/controls/imagine/Frame.qml b/src/imports/controls/imagine/Frame.qml
index 4c9b87d3..a149ae24 100644
--- a/src/imports/controls/imagine/Frame.qml
+++ b/src/imports/controls/imagine/Frame.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.Frame {
id: control
@@ -45,9 +45,6 @@ T.Frame {
implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
- contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
- contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
-
topPadding: background ? background.topPadding : 0
leftPadding: background ? background.leftPadding : 0
rightPadding: background ? background.rightPadding : 0
diff --git a/src/imports/controls/imagine/GroupBox.qml b/src/imports/controls/imagine/GroupBox.qml
index b2868cec..c16f90e1 100644
--- a/src/imports/controls/imagine/GroupBox.qml
+++ b/src/imports/controls/imagine/GroupBox.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.GroupBox {
id: control
@@ -48,9 +48,6 @@ T.GroupBox {
contentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
- contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
- contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
-
topPadding: (background ? background.topPadding : 0) + (label && label.implicitWidth > 0 ? label.implicitHeight + spacing : 0)
leftPadding: background ? background.leftPadding : 0
rightPadding: background ? background.rightPadding : 0
diff --git a/src/imports/controls/imagine/ItemDelegate.qml b/src/imports/controls/imagine/ItemDelegate.qml
index 6d1d7bbe..759a68db 100644
--- a/src/imports/controls/imagine/ItemDelegate.qml
+++ b/src/imports/controls/imagine/ItemDelegate.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.ItemDelegate {
id: control
diff --git a/src/imports/controls/imagine/Label.qml b/src/imports/controls/imagine/Label.qml
index c73954b2..84e2a914 100644
--- a/src/imports/controls/imagine/Label.qml
+++ b/src/imports/controls/imagine/Label.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.Label {
id: control
diff --git a/src/imports/controls/imagine/Menu.qml b/src/imports/controls/imagine/Menu.qml
index 83953d05..1846fe90 100644
--- a/src/imports/controls/imagine/Menu.qml
+++ b/src/imports/controls/imagine/Menu.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.Menu {
id: control
diff --git a/src/imports/controls/imagine/MenuItem.qml b/src/imports/controls/imagine/MenuItem.qml
index 80d6f2cd..d55497a3 100644
--- a/src/imports/controls/imagine/MenuItem.qml
+++ b/src/imports/controls/imagine/MenuItem.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.MenuItem {
id: control
diff --git a/src/imports/controls/imagine/MenuSeparator.qml b/src/imports/controls/imagine/MenuSeparator.qml
index a14fe9a6..42577af4 100644
--- a/src/imports/controls/imagine/MenuSeparator.qml
+++ b/src/imports/controls/imagine/MenuSeparator.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.MenuSeparator {
id: control
diff --git a/src/imports/controls/imagine/Page.qml b/src/imports/controls/imagine/Page.qml
index 72f54830..8dcd6dfc 100644
--- a/src/imports/controls/imagine/Page.qml
+++ b/src/imports/controls/imagine/Page.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.Page {
id: control
@@ -51,9 +51,6 @@ T.Page {
+ (header && header.visible ? header.implicitHeight + spacing : 0)
+ (footer && footer.visible ? footer.implicitHeight + spacing : 0))
- contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
- contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
-
topPadding: background ? background.topPadding : 0
leftPadding: background ? background.leftPadding : 0
rightPadding: background ? background.rightPadding : 0
diff --git a/src/imports/controls/imagine/PageIndicator.qml b/src/imports/controls/imagine/PageIndicator.qml
index 156033e2..2234e18c 100644
--- a/src/imports/controls/imagine/PageIndicator.qml
+++ b/src/imports/controls/imagine/PageIndicator.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.PageIndicator {
id: control
diff --git a/src/imports/controls/imagine/Pane.qml b/src/imports/controls/imagine/Pane.qml
index a1899149..4061bd78 100644
--- a/src/imports/controls/imagine/Pane.qml
+++ b/src/imports/controls/imagine/Pane.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.Pane {
id: control
@@ -45,9 +45,6 @@ T.Pane {
implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
- contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
- contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
-
topPadding: background ? background.topPadding : 0
leftPadding: background ? background.leftPadding : 0
rightPadding: background ? background.rightPadding : 0
diff --git a/src/imports/controls/imagine/Popup.qml b/src/imports/controls/imagine/Popup.qml
index a111df3a..089bc158 100644
--- a/src/imports/controls/imagine/Popup.qml
+++ b/src/imports/controls/imagine/Popup.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.Popup {
id: control
diff --git a/src/imports/controls/imagine/ProgressBar.qml b/src/imports/controls/imagine/ProgressBar.qml
index 7fd0ce1b..2d207efb 100644
--- a/src/imports/controls/imagine/ProgressBar.qml
+++ b/src/imports/controls/imagine/ProgressBar.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
import QtGraphicalEffects 1.0
T.ProgressBar {
diff --git a/src/imports/controls/imagine/RadioButton.qml b/src/imports/controls/imagine/RadioButton.qml
index 57bdedaa..59e2729a 100644
--- a/src/imports/controls/imagine/RadioButton.qml
+++ b/src/imports/controls/imagine/RadioButton.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.RadioButton {
id: control
diff --git a/src/imports/controls/imagine/RadioDelegate.qml b/src/imports/controls/imagine/RadioDelegate.qml
index e7e37b0b..42b08b81 100644
--- a/src/imports/controls/imagine/RadioDelegate.qml
+++ b/src/imports/controls/imagine/RadioDelegate.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.RadioDelegate {
id: control
diff --git a/src/imports/controls/imagine/RangeSlider.qml b/src/imports/controls/imagine/RangeSlider.qml
index 5c7ee70e..45390595 100644
--- a/src/imports/controls/imagine/RangeSlider.qml
+++ b/src/imports/controls/imagine/RangeSlider.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.RangeSlider {
id: control
diff --git a/src/imports/controls/imagine/RoundButton.qml b/src/imports/controls/imagine/RoundButton.qml
index b9f4ae06..8ae96620 100644
--- a/src/imports/controls/imagine/RoundButton.qml
+++ b/src/imports/controls/imagine/RoundButton.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.RoundButton {
id: control
diff --git a/src/imports/controls/imagine/ScrollBar.qml b/src/imports/controls/imagine/ScrollBar.qml
index 49c8d1f0..2581654c 100644
--- a/src/imports/controls/imagine/ScrollBar.qml
+++ b/src/imports/controls/imagine/ScrollBar.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.ScrollBar {
id: control
diff --git a/src/imports/controls/imagine/ScrollIndicator.qml b/src/imports/controls/imagine/ScrollIndicator.qml
index a2d0e94f..45eb139b 100644
--- a/src/imports/controls/imagine/ScrollIndicator.qml
+++ b/src/imports/controls/imagine/ScrollIndicator.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.ScrollIndicator {
id: control
diff --git a/src/imports/controls/imagine/ScrollView.qml b/src/imports/controls/imagine/ScrollView.qml
index 9ab64881..f7b30b6b 100644
--- a/src/imports/controls/imagine/ScrollView.qml
+++ b/src/imports/controls/imagine/ScrollView.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.ScrollView {
id: control
diff --git a/src/imports/controls/imagine/Slider.qml b/src/imports/controls/imagine/Slider.qml
index a206c03b..8a82ec3e 100644
--- a/src/imports/controls/imagine/Slider.qml
+++ b/src/imports/controls/imagine/Slider.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.Slider {
id: control
diff --git a/src/imports/controls/imagine/SpinBox.qml b/src/imports/controls/imagine/SpinBox.qml
index 1ef862f5..4978402a 100644
--- a/src/imports/controls/imagine/SpinBox.qml
+++ b/src/imports/controls/imagine/SpinBox.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.SpinBox {
id: control
diff --git a/src/imports/controls/imagine/StackView.qml b/src/imports/controls/imagine/StackView.qml
index 8d749519..ffdf4f23 100644
--- a/src/imports/controls/imagine/StackView.qml
+++ b/src/imports/controls/imagine/StackView.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.StackView {
id: control
diff --git a/src/imports/controls/imagine/SwipeDelegate.qml b/src/imports/controls/imagine/SwipeDelegate.qml
index 23edfc58..cabd9f2e 100644
--- a/src/imports/controls/imagine/SwipeDelegate.qml
+++ b/src/imports/controls/imagine/SwipeDelegate.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.SwipeDelegate {
id: control
diff --git a/src/imports/controls/imagine/SwipeView.qml b/src/imports/controls/imagine/SwipeView.qml
index f997be0d..6f7f2ada 100644
--- a/src/imports/controls/imagine/SwipeView.qml
+++ b/src/imports/controls/imagine/SwipeView.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.SwipeView {
id: control
diff --git a/src/imports/controls/imagine/Switch.qml b/src/imports/controls/imagine/Switch.qml
index 085d6879..38e49117 100644
--- a/src/imports/controls/imagine/Switch.qml
+++ b/src/imports/controls/imagine/Switch.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.Switch {
id: control
diff --git a/src/imports/controls/imagine/SwitchDelegate.qml b/src/imports/controls/imagine/SwitchDelegate.qml
index b53cf321..4b6f6319 100644
--- a/src/imports/controls/imagine/SwitchDelegate.qml
+++ b/src/imports/controls/imagine/SwitchDelegate.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.SwitchDelegate {
id: control
diff --git a/src/imports/controls/imagine/TabBar.qml b/src/imports/controls/imagine/TabBar.qml
index be143bf1..1e7a2e58 100644
--- a/src/imports/controls/imagine/TabBar.qml
+++ b/src/imports/controls/imagine/TabBar.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.TabBar {
id: control
diff --git a/src/imports/controls/imagine/TabButton.qml b/src/imports/controls/imagine/TabButton.qml
index d4098c9e..0076bd83 100644
--- a/src/imports/controls/imagine/TabButton.qml
+++ b/src/imports/controls/imagine/TabButton.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.TabButton {
id: control
diff --git a/src/imports/controls/imagine/TextArea.qml b/src/imports/controls/imagine/TextArea.qml
index 9867a0bd..d61565b8 100644
--- a/src/imports/controls/imagine/TextArea.qml
+++ b/src/imports/controls/imagine/TextArea.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.TextArea {
id: control
@@ -60,6 +60,7 @@ T.TextArea {
selectionColor: control.palette.highlight
selectedTextColor: control.palette.highlightedText
verticalAlignment: Qt.AlignVCenter
+ placeholderTextColor: Color.transparent(control.color, 0.5)
PlaceholderText {
id: placeholder
@@ -70,11 +71,10 @@ T.TextArea {
text: control.placeholderText
font: control.font
- color: control.color
+ color: control.placeholderTextColor
verticalAlignment: control.verticalAlignment
visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
elide: Text.ElideRight
- opacity: 0.5
}
background: NinePatchImage {
diff --git a/src/imports/controls/imagine/TextField.qml b/src/imports/controls/imagine/TextField.qml
index 17827b95..5c8347ad 100644
--- a/src/imports/controls/imagine/TextField.qml
+++ b/src/imports/controls/imagine/TextField.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.TextField {
id: control
@@ -59,6 +59,7 @@ T.TextField {
color: control.palette.text
selectionColor: control.palette.highlight
selectedTextColor: control.palette.highlightedText
+ placeholderTextColor: Color.transparent(control.color, 0.5)
verticalAlignment: Qt.AlignVCenter
PlaceholderText {
@@ -70,11 +71,10 @@ T.TextField {
text: control.placeholderText
font: control.font
- color: control.color
+ color: control.placeholderTextColor
verticalAlignment: control.verticalAlignment
visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
elide: Text.ElideRight
- opacity: 0.5
}
background: NinePatchImage {
diff --git a/src/imports/controls/imagine/ToolBar.qml b/src/imports/controls/imagine/ToolBar.qml
index 289566ec..a391bc9b 100644
--- a/src/imports/controls/imagine/ToolBar.qml
+++ b/src/imports/controls/imagine/ToolBar.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.ToolBar {
id: control
@@ -45,9 +45,6 @@ T.ToolBar {
implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
- contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
- contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
-
topPadding: background ? background.topPadding : 0
leftPadding: background ? background.leftPadding : 0
rightPadding: background ? background.rightPadding : 0
diff --git a/src/imports/controls/imagine/ToolButton.qml b/src/imports/controls/imagine/ToolButton.qml
index 63260ff5..0bbd523c 100644
--- a/src/imports/controls/imagine/ToolButton.qml
+++ b/src/imports/controls/imagine/ToolButton.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.ToolButton {
id: control
diff --git a/src/imports/controls/imagine/ToolSeparator.qml b/src/imports/controls/imagine/ToolSeparator.qml
index 88b645cb..f61b0e49 100644
--- a/src/imports/controls/imagine/ToolSeparator.qml
+++ b/src/imports/controls/imagine/ToolSeparator.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.ToolSeparator {
id: control
diff --git a/src/imports/controls/imagine/ToolTip.qml b/src/imports/controls/imagine/ToolTip.qml
index 81a5e8aa..bd82b5a7 100644
--- a/src/imports/controls/imagine/ToolTip.qml
+++ b/src/imports/controls/imagine/ToolTip.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.ToolTip {
id: control
diff --git a/src/imports/controls/imagine/Tumbler.qml b/src/imports/controls/imagine/Tumbler.qml
index 7beb39c5..8c1ebec2 100644
--- a/src/imports/controls/imagine/Tumbler.qml
+++ b/src/imports/controls/imagine/Tumbler.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Imagine 2.4
-import QtQuick.Controls.Imagine.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Imagine 2.5
+import QtQuick.Controls.Imagine.impl 2.5
T.Tumbler {
id: control
diff --git a/src/imports/controls/imagine/imagine.pro b/src/imports/controls/imagine/imagine.pro
index 1f63d572..10582543 100644
--- a/src/imports/controls/imagine/imagine.pro
+++ b/src/imports/controls/imagine/imagine.pro
@@ -1,6 +1,6 @@
TARGET = qtquickcontrols2imaginestyleplugin
TARGETPATH = QtQuick/Controls.2/Imagine
-IMPORT_VERSION = 2.4
+IMPORT_VERSION = 2.5
QT += qml quick
QT_PRIVATE += core-private gui-private qml-private quick-private quicktemplates2-private quickcontrols2-private
diff --git a/src/imports/controls/imagine/qmldir b/src/imports/controls/imagine/qmldir
index 48fd3bdb..7b4b3ea0 100644
--- a/src/imports/controls/imagine/qmldir
+++ b/src/imports/controls/imagine/qmldir
@@ -1,5 +1,5 @@
module QtQuick.Controls.Imagine
plugin qtquickcontrols2imaginestyleplugin
classname QtQuickControls2ImagineStylePlugin
-depends QtQuick.Controls 2.4
+depends QtQuick.Controls 2.5
depends QtGraphicalEffects 1.0
diff --git a/src/imports/controls/imagine/qquickimaginetheme.cpp b/src/imports/controls/imagine/qquickimaginetheme.cpp
index 5505e7ce..bfde0c6b 100644
--- a/src/imports/controls/imagine/qquickimaginetheme.cpp
+++ b/src/imports/controls/imagine/qquickimaginetheme.cpp
@@ -41,11 +41,17 @@
QT_BEGIN_NAMESPACE
QQuickImagineTheme::QQuickImagineTheme()
- : QQuickTheme(QStringLiteral("Imagine"))
+{
+}
+
+void QQuickImagineTheme::resolveFonts(const QFont &defaultFont)
{
systemFont.setFamily(QLatin1String("Open Sans"));
- systemFont = resolveFont(systemFont);
+ systemFont = defaultFont.resolve(systemFont);
+}
+void QQuickImagineTheme::resolvePalettes(const QPalette &defaultPalette)
+{
const QColor accentColor = QColor::fromRgb(0x4fc1e9);
const QColor windowTextColor = QColor::fromRgb(0x434a54);
const QColor disabledWindowTextColor = QColor::fromRgb(0xccd1d9);
@@ -59,18 +65,18 @@ QQuickImagineTheme::QQuickImagineTheme()
systemPalette.setColor(QPalette::WindowText, windowTextColor);
systemPalette.setColor(QPalette::Disabled, QPalette::Text, disabledWindowTextColor);
systemPalette.setColor(QPalette::Disabled, QPalette::WindowText, disabledWindowTextColor);
- systemPalette = resolvePalette(systemPalette);
+ systemPalette = defaultPalette.resolve(systemPalette);
}
-const QFont *QQuickImagineTheme::font(QPlatformTheme::Font type) const
+const QFont *QQuickImagineTheme::font(Scope scope) const
{
- Q_UNUSED(type);
+ Q_UNUSED(scope);
return &systemFont;
}
-const QPalette *QQuickImagineTheme::palette(QPlatformTheme::Palette type) const
+const QPalette *QQuickImagineTheme::palette(Scope scope) const
{
- Q_UNUSED(type);
+ Q_UNUSED(scope);
return &systemPalette;
}
diff --git a/src/imports/controls/imagine/qquickimaginetheme_p.h b/src/imports/controls/imagine/qquickimaginetheme_p.h
index ea3a1cbd..c663e940 100644
--- a/src/imports/controls/imagine/qquickimaginetheme_p.h
+++ b/src/imports/controls/imagine/qquickimaginetheme_p.h
@@ -48,7 +48,7 @@
// We mean it.
//
-#include <QtQuickControls2/private/qquicktheme_p.h>
+#include <QtQuickTemplates2/private/qquicktheme_p.h>
QT_BEGIN_NAMESPACE
@@ -57,8 +57,12 @@ class QQuickImagineTheme : public QQuickTheme
public:
explicit QQuickImagineTheme();
- const QFont *font(Font type = SystemFont) const override;
- const QPalette *palette(Palette type = SystemPalette) const override;
+protected:
+ const QFont *font(Scope scope) const override;
+ const QPalette *palette(Scope scope) const override;
+
+ void resolveFonts(const QFont &defaultFont) override;
+ void resolvePalettes(const QPalette &defaultPalette) override;
private:
QFont systemFont;
diff --git a/src/imports/controls/imagine/qtquickcontrols2imaginestyleplugin.cpp b/src/imports/controls/imagine/qtquickcontrols2imaginestyleplugin.cpp
index 2a613f1c..292b8719 100644
--- a/src/imports/controls/imagine/qtquickcontrols2imaginestyleplugin.cpp
+++ b/src/imports/controls/imagine/qtquickcontrols2imaginestyleplugin.cpp
@@ -66,7 +66,7 @@ public:
void registerTypes(const char *uri) override;
QString name() const override;
- QQuickProxyTheme *createTheme() const override;
+ QQuickTheme *createTheme() const override;
};
QtQuickControls2ImagineStylePlugin::QtQuickControls2ImagineStylePlugin(QObject *parent) : QQuickStylePlugin(parent)
@@ -90,10 +90,10 @@ void QtQuickControls2ImagineStylePlugin::registerTypes(const char *uri)
QString QtQuickControls2ImagineStylePlugin::name() const
{
- return QStringLiteral("imagine");
+ return QStringLiteral("Imagine");
}
-QQuickProxyTheme *QtQuickControls2ImagineStylePlugin::createTheme() const
+QQuickTheme *QtQuickControls2ImagineStylePlugin::createTheme() const
{
return new QQuickImagineTheme;
}
diff --git a/src/imports/controls/material/ApplicationWindow.qml b/src/imports/controls/material/ApplicationWindow.qml
index c3d866ce..94aaeff3 100644
--- a/src/imports/controls/material/ApplicationWindow.qml
+++ b/src/imports/controls/material/ApplicationWindow.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
+import QtQuick 2.12
import QtQuick.Window 2.3
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
T.ApplicationWindow {
id: window
diff --git a/src/imports/controls/material/BoxShadow.qml b/src/imports/controls/material/BoxShadow.qml
index 3d352195..5004c7f6 100644
--- a/src/imports/controls/material/BoxShadow.qml
+++ b/src/imports/controls/material/BoxShadow.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
/*
A implementation of CSS's box-shadow, used by ElevationEffect for a Material Design
diff --git a/src/imports/controls/material/BusyIndicator.qml b/src/imports/controls/material/BusyIndicator.qml
index 5e53bdb9..349b3cb5 100644
--- a/src/imports/controls/material/BusyIndicator.qml
+++ b/src/imports/controls/material/BusyIndicator.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.BusyIndicator {
id: control
@@ -48,8 +48,8 @@ T.BusyIndicator {
padding: 6
contentItem: BusyIndicatorImpl {
- implicitWidth: 48
- implicitHeight: 48
+ implicitWidth: control.Material.buttonHeight
+ implicitHeight: control.Material.buttonHeight
color: control.Material.accentColor
running: control.running
diff --git a/src/imports/controls/material/Button.qml b/src/imports/controls/material/Button.qml
index 6401b2ad..2157a3a8 100644
--- a/src/imports/controls/material/Button.qml
+++ b/src/imports/controls/material/Button.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.Button {
id: control
@@ -52,8 +52,7 @@ T.Button {
// external vertical padding is 6 (to increase touch area)
padding: 12
- leftPadding: padding - 4
- rightPadding: padding - 4
+ horizontalPadding: padding - 4
spacing: 6
icon.width: 24
@@ -82,7 +81,7 @@ T.Button {
// TODO: Add a proper ripple/ink effect for mouse/touch input and focus state
background: Rectangle {
implicitWidth: 64
- implicitHeight: 48
+ implicitHeight: control.Material.buttonHeight
// external vertical padding is 6 (to increase touch area)
y: 6
diff --git a/src/imports/controls/material/CheckBox.qml b/src/imports/controls/material/CheckBox.qml
index 1f818e6e..56f2f221 100644
--- a/src/imports/controls/material/CheckBox.qml
+++ b/src/imports/controls/material/CheckBox.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.CheckBox {
id: control
@@ -51,8 +51,7 @@ T.CheckBox {
spacing: 8
padding: 8
- topPadding: padding + 7
- bottomPadding: padding + 7
+ verticalPadding: padding + 7
indicator: CheckIndicator {
x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2
diff --git a/src/imports/controls/material/CheckDelegate.qml b/src/imports/controls/material/CheckDelegate.qml
index 1d3ff61d..f349dfbc 100644
--- a/src/imports/controls/material/CheckDelegate.qml
+++ b/src/imports/controls/material/CheckDelegate.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.CheckDelegate {
id: control
@@ -52,8 +52,7 @@ T.CheckDelegate {
baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 16
- topPadding: 8
- bottomPadding: 8
+ verticalPadding: 8
spacing: 16
icon.width: 24
@@ -82,7 +81,7 @@ T.CheckDelegate {
}
background: Rectangle {
- implicitHeight: 48
+ implicitHeight: control.Material.delegateHeight
color: control.highlighted ? control.Material.listHighlightColor : "transparent"
diff --git a/src/imports/controls/material/CheckIndicator.qml b/src/imports/controls/material/CheckIndicator.qml
index 078b1637..bfeda537 100644
--- a/src/imports/controls/material/CheckIndicator.qml
+++ b/src/imports/controls/material/CheckIndicator.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
Rectangle {
id: indicatorItem
diff --git a/src/imports/controls/material/ComboBox.qml b/src/imports/controls/material/ComboBox.qml
index 3dd3cf30..55a503d0 100644
--- a/src/imports/controls/material/ComboBox.qml
+++ b/src/imports/controls/material/ComboBox.qml
@@ -34,13 +34,13 @@
**
****************************************************************************/
-import QtQuick 2.11
+import QtQuick 2.12
import QtQuick.Window 2.3
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.ComboBox {
id: control
@@ -99,7 +99,7 @@ T.ComboBox {
background: Rectangle {
implicitWidth: 120
- implicitHeight: 48
+ implicitHeight: control.Material.buttonHeight
// external vertical padding is 6 (to increase touch area)
y: 6
diff --git a/src/imports/controls/material/CursorDelegate.qml b/src/imports/controls/material/CursorDelegate.qml
index 5b2140a7..ffb3b3dd 100644
--- a/src/imports/controls/material/CursorDelegate.qml
+++ b/src/imports/controls/material/CursorDelegate.qml
@@ -34,8 +34,8 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls.Material 2.4
+import QtQuick 2.12
+import QtQuick.Controls.Material 2.5
Rectangle {
id: cursor
diff --git a/src/imports/controls/material/DelayButton.qml b/src/imports/controls/material/DelayButton.qml
index 4043949c..3fd97301 100644
--- a/src/imports/controls/material/DelayButton.qml
+++ b/src/imports/controls/material/DelayButton.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.DelayButton {
id: control
@@ -52,8 +52,7 @@ T.DelayButton {
// external vertical padding is 6 (to increase touch area)
padding: 12
- leftPadding: padding - 4
- rightPadding: padding - 4
+ verticalPadding: padding - 4
Material.elevation: control.down ? 8 : 2
@@ -75,7 +74,7 @@ T.DelayButton {
// TODO: Add a proper ripple/ink effect for mouse/touch input and focus state
background: Rectangle {
implicitWidth: 64
- implicitHeight: 48
+ implicitHeight: control.Material.buttonHeight
// external vertical padding is 6 (to increase touch area)
y: 6
diff --git a/src/imports/controls/material/Dial.qml b/src/imports/controls/material/Dial.qml
index 54469c92..f4d49175 100644
--- a/src/imports/controls/material/Dial.qml
+++ b/src/imports/controls/material/Dial.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.Dial {
id: control
diff --git a/src/imports/controls/material/Dialog.qml b/src/imports/controls/material/Dialog.qml
index 5bbafc68..51d2c654 100644
--- a/src/imports/controls/material/Dialog.qml
+++ b/src/imports/controls/material/Dialog.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.Dialog {
id: control
diff --git a/src/imports/controls/material/DialogButtonBox.qml b/src/imports/controls/material/DialogButtonBox.qml
index 35df6362..7c217f59 100644
--- a/src/imports/controls/material/DialogButtonBox.qml
+++ b/src/imports/controls/material/DialogButtonBox.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.DialogButtonBox {
id: control
@@ -51,9 +51,9 @@ T.DialogButtonBox {
spacing: 8
padding: 8
- topPadding: 2
- bottomPadding: 2
+ verticalPadding: 2
alignment: Qt.AlignRight
+ buttonLayout: DialogButtonBox.AndroidLayout
Material.foreground: Material.accent
@@ -61,7 +61,7 @@ T.DialogButtonBox {
contentItem: ListView {
implicitWidth: contentWidth
- implicitHeight: 48
+ implicitHeight: control.Material.buttonHeight
model: control.contentModel
spacing: control.spacing
@@ -71,7 +71,7 @@ T.DialogButtonBox {
}
background: PaddedRectangle {
- implicitHeight: 52
+ implicitHeight: control.Material.dialogButtonBoxHeight
radius: 2
color: control.Material.dialogColor
// Rounded corners should be only at the top or at the bottom
diff --git a/src/imports/controls/material/Drawer.qml b/src/imports/controls/material/Drawer.qml
index 827e0b21..1d9314b8 100644
--- a/src/imports/controls/material/Drawer.qml
+++ b/src/imports/controls/material/Drawer.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.Drawer {
id: control
diff --git a/src/imports/controls/material/ElevationEffect.qml b/src/imports/controls/material/ElevationEffect.qml
index 71eccf4e..7e5d79aa 100644
--- a/src/imports/controls/material/ElevationEffect.qml
+++ b/src/imports/controls/material/ElevationEffect.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
/*
An effect for standard Material Design elevation shadows. Useful for using as \c layer.effect.
diff --git a/src/imports/controls/material/Frame.qml b/src/imports/controls/material/Frame.qml
index 51721c2c..95ea7c84 100644
--- a/src/imports/controls/material/Frame.qml
+++ b/src/imports/controls/material/Frame.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.Frame {
id: control
@@ -45,10 +45,8 @@ T.Frame {
implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
- contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
- contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
-
padding: 12
+ verticalPadding: Material.frameVerticalPadding
background: Rectangle {
radius: 2
diff --git a/src/imports/controls/material/GroupBox.qml b/src/imports/controls/material/GroupBox.qml
index 7ac30ec6..552bbb17 100644
--- a/src/imports/controls/material/GroupBox.qml
+++ b/src/imports/controls/material/GroupBox.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.GroupBox {
id: control
@@ -47,12 +47,10 @@ T.GroupBox {
contentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
- contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
- contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
-
spacing: 6
padding: 12
- topPadding: padding + (label && label.implicitWidth > 0 ? label.implicitHeight + spacing : 0)
+ topPadding: Material.frameVerticalPadding + (label && label.implicitWidth > 0 ? label.implicitHeight + spacing : 0)
+ bottomPadding: Material.frameVerticalPadding
label: Text {
x: control.leftPadding
diff --git a/src/imports/controls/material/ItemDelegate.qml b/src/imports/controls/material/ItemDelegate.qml
index 3230ff26..d4425844 100644
--- a/src/imports/controls/material/ItemDelegate.qml
+++ b/src/imports/controls/material/ItemDelegate.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.ItemDelegate {
id: control
@@ -52,8 +52,7 @@ T.ItemDelegate {
baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 16
- topPadding: 8
- bottomPadding: 8
+ verticalPadding: 8
spacing: 16
icon.width: 24
@@ -73,7 +72,7 @@ T.ItemDelegate {
}
background: Rectangle {
- implicitHeight: 48
+ implicitHeight: control.Material.delegateHeight
color: control.highlighted ? control.Material.listHighlightColor : "transparent"
diff --git a/src/imports/controls/material/Label.qml b/src/imports/controls/material/Label.qml
index 26998a9e..49333e86 100644
--- a/src/imports/controls/material/Label.qml
+++ b/src/imports/controls/material/Label.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
T.Label {
id: control
diff --git a/src/imports/controls/material/Menu.qml b/src/imports/controls/material/Menu.qml
index 0f40380c..14006a91 100644
--- a/src/imports/controls/material/Menu.qml
+++ b/src/imports/controls/material/Menu.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.Menu {
id: control
@@ -51,8 +51,7 @@ T.Menu {
contentItem ? contentItem.implicitHeight : 0) + topPadding + bottomPadding
margins: 0
- topPadding: 8
- bottomPadding: 8
+ verticalPadding: 8
transformOrigin: !cascade ? Item.Top : (mirrored ? Item.TopRight : Item.TopLeft)
@@ -84,7 +83,7 @@ T.Menu {
background: Rectangle {
implicitWidth: 200
- implicitHeight: 48
+ implicitHeight: control.Material.menuItemHeight
radius: 3
color: control.Material.dialogColor
diff --git a/src/imports/controls/material/MenuBar.qml b/src/imports/controls/material/MenuBar.qml
index da12c9e9..c1ab9d1e 100644
--- a/src/imports/controls/material/MenuBar.qml
+++ b/src/imports/controls/material/MenuBar.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.MenuBar {
id: control
diff --git a/src/imports/controls/material/MenuBarItem.qml b/src/imports/controls/material/MenuBarItem.qml
index 3c99cc15..9cbbb2e9 100644
--- a/src/imports/controls/material/MenuBarItem.qml
+++ b/src/imports/controls/material/MenuBarItem.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.MenuBarItem {
id: control
@@ -51,8 +51,7 @@ T.MenuBarItem {
baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 16
- topPadding: 12
- bottomPadding: 12
+ verticalPadding: 12
spacing: 16
icon.width: 24
diff --git a/src/imports/controls/material/MenuItem.qml b/src/imports/controls/material/MenuItem.qml
index 13d4694c..4a26fa47 100644
--- a/src/imports/controls/material/MenuItem.qml
+++ b/src/imports/controls/material/MenuItem.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.MenuItem {
id: control
@@ -52,8 +52,7 @@ T.MenuItem {
baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 16
- topPadding: 12
- bottomPadding: 12
+ verticalPadding: Material.menuItemVerticalPadding
spacing: 16
icon.width: 24
@@ -96,7 +95,7 @@ T.MenuItem {
background: Rectangle {
implicitWidth: 200
- implicitHeight: 48
+ implicitHeight: control.Material.menuItemHeight
color: control.highlighted ? control.Material.listHighlightColor : "transparent"
Ripple {
diff --git a/src/imports/controls/material/MenuSeparator.qml b/src/imports/controls/material/MenuSeparator.qml
index d2059d3a..c9ef35db 100644
--- a/src/imports/controls/material/MenuSeparator.qml
+++ b/src/imports/controls/material/MenuSeparator.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
T.MenuSeparator {
id: control
@@ -44,8 +44,7 @@ T.MenuSeparator {
implicitWidth: Math.max(background ? background.implicitWidth : 0, contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentItem.implicitHeight + topPadding + bottomPadding)
- topPadding: 8
- bottomPadding: 8
+ verticalPadding: 8
contentItem: Rectangle {
implicitWidth: 200
diff --git a/src/imports/controls/material/Page.qml b/src/imports/controls/material/Page.qml
index 9993aa0f..71420ed1 100644
--- a/src/imports/controls/material/Page.qml
+++ b/src/imports/controls/material/Page.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
T.Page {
id: control
@@ -50,9 +50,6 @@ T.Page {
+ (header && header.visible ? header.implicitHeight + spacing : 0)
+ (footer && footer.visible ? footer.implicitHeight + spacing : 0))
- contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
- contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
-
background: Rectangle {
color: control.Material.backgroundColor
}
diff --git a/src/imports/controls/material/PageIndicator.qml b/src/imports/controls/material/PageIndicator.qml
index 2ab9cd33..62444e1e 100644
--- a/src/imports/controls/material/PageIndicator.qml
+++ b/src/imports/controls/material/PageIndicator.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
T.PageIndicator {
id: control
diff --git a/src/imports/controls/material/Pane.qml b/src/imports/controls/material/Pane.qml
index 0e232a9d..6dfa13fb 100644
--- a/src/imports/controls/material/Pane.qml
+++ b/src/imports/controls/material/Pane.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.Pane {
id: control
@@ -45,9 +45,6 @@ T.Pane {
implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
- contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
- contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
-
padding: 12
background: Rectangle {
diff --git a/src/imports/controls/material/Popup.qml b/src/imports/controls/material/Popup.qml
index 0d255f7d..adc070a4 100644
--- a/src/imports/controls/material/Popup.qml
+++ b/src/imports/controls/material/Popup.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.Popup {
id: control
diff --git a/src/imports/controls/material/ProgressBar.qml b/src/imports/controls/material/ProgressBar.qml
index 0f08c732..68b99111 100644
--- a/src/imports/controls/material/ProgressBar.qml
+++ b/src/imports/controls/material/ProgressBar.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.ProgressBar {
id: control
diff --git a/src/imports/controls/material/RadioButton.qml b/src/imports/controls/material/RadioButton.qml
index 2a95f989..9cd48a2d 100644
--- a/src/imports/controls/material/RadioButton.qml
+++ b/src/imports/controls/material/RadioButton.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.RadioButton {
id: control
@@ -51,8 +51,7 @@ T.RadioButton {
spacing: 8
padding: 8
- topPadding: padding + 6
- bottomPadding: padding + 6
+ verticalPadding: padding + 6
indicator: RadioIndicator {
x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2
diff --git a/src/imports/controls/material/RadioDelegate.qml b/src/imports/controls/material/RadioDelegate.qml
index d498ee80..5aaa142e 100644
--- a/src/imports/controls/material/RadioDelegate.qml
+++ b/src/imports/controls/material/RadioDelegate.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.RadioDelegate {
id: control
@@ -52,8 +52,7 @@ T.RadioDelegate {
baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 16
- topPadding: 8
- bottomPadding: 8
+ verticalPadding: 8
spacing: 16
icon.width: 24
@@ -82,7 +81,7 @@ T.RadioDelegate {
}
background: Rectangle {
- implicitHeight: 48
+ implicitHeight: control.Material.delegateHeight
color: control.highlighted ? control.Material.listHighlightColor : "transparent"
diff --git a/src/imports/controls/material/RadioIndicator.qml b/src/imports/controls/material/RadioIndicator.qml
index 47505903..0ed632a6 100644
--- a/src/imports/controls/material/RadioIndicator.qml
+++ b/src/imports/controls/material/RadioIndicator.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
Rectangle {
implicitWidth: 20
diff --git a/src/imports/controls/material/RangeSlider.qml b/src/imports/controls/material/RangeSlider.qml
index cbe21400..3bbf9807 100644
--- a/src/imports/controls/material/RangeSlider.qml
+++ b/src/imports/controls/material/RangeSlider.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.RangeSlider {
id: control
diff --git a/src/imports/controls/material/RectangularGlow.qml b/src/imports/controls/material/RectangularGlow.qml
index 35ca8b46..58e11b9f 100644
--- a/src/imports/controls/material/RectangularGlow.qml
+++ b/src/imports/controls/material/RectangularGlow.qml
@@ -34,7 +34,7 @@
**
****************************************************************************/
-import QtQuick 2.11
+import QtQuick 2.12
/*
A cross-graphics API implementation of QtGraphicalEffects' RectangularGlow.
diff --git a/src/imports/controls/material/RoundButton.qml b/src/imports/controls/material/RoundButton.qml
index 92e6bc84..31ad6e5a 100644
--- a/src/imports/controls/material/RoundButton.qml
+++ b/src/imports/controls/material/RoundButton.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.RoundButton {
id: control
@@ -79,8 +79,8 @@ T.RoundButton {
// TODO: Add a proper ripple/ink effect for mouse/touch input and focus state
background: Rectangle {
- implicitWidth: 48
- implicitHeight: 48
+ implicitWidth: control.Material.buttonHeight
+ implicitHeight: control.Material.buttonHeight
// external vertical padding is 6 (to increase touch area)
x: 6
diff --git a/src/imports/controls/material/ScrollBar.qml b/src/imports/controls/material/ScrollBar.qml
index 2ff925af..8abb622c 100644
--- a/src/imports/controls/material/ScrollBar.qml
+++ b/src/imports/controls/material/ScrollBar.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
T.ScrollBar {
id: control
diff --git a/src/imports/controls/material/ScrollIndicator.qml b/src/imports/controls/material/ScrollIndicator.qml
index 92727822..ecd264a0 100644
--- a/src/imports/controls/material/ScrollIndicator.qml
+++ b/src/imports/controls/material/ScrollIndicator.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
T.ScrollIndicator {
id: control
diff --git a/src/imports/controls/material/Slider.qml b/src/imports/controls/material/Slider.qml
index 1044354a..0a957102 100644
--- a/src/imports/controls/material/Slider.qml
+++ b/src/imports/controls/material/Slider.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.Slider {
id: control
diff --git a/src/imports/controls/material/SliderHandle.qml b/src/imports/controls/material/SliderHandle.qml
index 64879a46..2ebbcccd 100644
--- a/src/imports/controls/material/SliderHandle.qml
+++ b/src/imports/controls/material/SliderHandle.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
Item {
id: root
diff --git a/src/imports/controls/material/SpinBox.qml b/src/imports/controls/material/SpinBox.qml
index cf9196ac..9100f0b8 100644
--- a/src/imports/controls/material/SpinBox.qml
+++ b/src/imports/controls/material/SpinBox.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.SpinBox {
id: control
@@ -83,8 +83,8 @@ T.SpinBox {
up.indicator: Item {
x: control.mirrored ? 0 : parent.width - width
- implicitWidth: 48
- implicitHeight: 48
+ implicitWidth: control.Material.buttonHeight
+ implicitHeight: control.Material.buttonHeight
height: parent.height
width: height
@@ -117,8 +117,8 @@ T.SpinBox {
down.indicator: Item {
x: control.mirrored ? parent.width - width : 0
- implicitWidth: 48
- implicitHeight: 48
+ implicitWidth: control.Material.buttonHeight
+ implicitHeight: control.Material.buttonHeight
height: parent.height
width: height
@@ -144,7 +144,7 @@ T.SpinBox {
background: Item {
implicitWidth: 192
- implicitHeight: 48
+ implicitHeight: control.Material.buttonHeight
Rectangle {
x: parent.width / 2 - width / 2
diff --git a/src/imports/controls/material/StackView.qml b/src/imports/controls/material/StackView.qml
index 8b69121b..6f76e2e3 100644
--- a/src/imports/controls/material/StackView.qml
+++ b/src/imports/controls/material/StackView.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
T.StackView {
id: control
diff --git a/src/imports/controls/material/SwipeDelegate.qml b/src/imports/controls/material/SwipeDelegate.qml
index 1095ac68..dce336d0 100644
--- a/src/imports/controls/material/SwipeDelegate.qml
+++ b/src/imports/controls/material/SwipeDelegate.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.SwipeDelegate {
id: control
@@ -52,8 +52,7 @@ T.SwipeDelegate {
baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 16
- topPadding: 8
- bottomPadding: 8
+ verticalPadding: 8
spacing: 16
icon.width: 24
@@ -75,7 +74,7 @@ T.SwipeDelegate {
}
background: Rectangle {
- implicitHeight: 48
+ implicitHeight: control.Material.delegateHeight
color: control.Material.backgroundColor
diff --git a/src/imports/controls/material/SwipeView.qml b/src/imports/controls/material/SwipeView.qml
index eb753579..eedb36e3 100644
--- a/src/imports/controls/material/SwipeView.qml
+++ b/src/imports/controls/material/SwipeView.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
T.SwipeView {
id: control
diff --git a/src/imports/controls/material/Switch.qml b/src/imports/controls/material/Switch.qml
index d44a9f2c..92b2cbf7 100644
--- a/src/imports/controls/material/Switch.qml
+++ b/src/imports/controls/material/Switch.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
-import QtQuick.Templates 2.4 as T
+import QtQuick 2.12
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
+import QtQuick.Templates 2.5 as T
T.Switch {
id: control
diff --git a/src/imports/controls/material/SwitchDelegate.qml b/src/imports/controls/material/SwitchDelegate.qml
index 308e9772..a5483146 100644
--- a/src/imports/controls/material/SwitchDelegate.qml
+++ b/src/imports/controls/material/SwitchDelegate.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.SwitchDelegate {
id: control
@@ -52,8 +52,7 @@ T.SwitchDelegate {
baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 16
- topPadding: 8
- bottomPadding: 8
+ verticalPadding: Material.switchDelegateVerticalPadding
spacing: 16
icon.width: 24
@@ -82,7 +81,7 @@ T.SwitchDelegate {
}
background: Rectangle {
- implicitHeight: 48
+ implicitHeight: control.Material.delegateHeight
color: control.highlighted ? control.Material.listHighlightColor : "transparent"
diff --git a/src/imports/controls/material/SwitchIndicator.qml b/src/imports/controls/material/SwitchIndicator.qml
index 2c5fc33d..f7567059 100644
--- a/src/imports/controls/material/SwitchIndicator.qml
+++ b/src/imports/controls/material/SwitchIndicator.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
Item {
id: indicator
diff --git a/src/imports/controls/material/TabBar.qml b/src/imports/controls/material/TabBar.qml
index c9410dfc..bd9b8491 100644
--- a/src/imports/controls/material/TabBar.qml
+++ b/src/imports/controls/material/TabBar.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.TabBar {
id: control
diff --git a/src/imports/controls/material/TabButton.qml b/src/imports/controls/material/TabButton.qml
index 3134cca9..00fad423 100644
--- a/src/imports/controls/material/TabButton.qml
+++ b/src/imports/controls/material/TabButton.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.TabButton {
id: control
@@ -69,7 +69,7 @@ T.TabButton {
}
background: Ripple {
- implicitHeight: 48
+ implicitHeight: control.Material.buttonHeight
clip: true
pressed: control.pressed
diff --git a/src/imports/controls/material/TextArea.qml b/src/imports/controls/material/TextArea.qml
index 2dc64570..7ba68017 100644
--- a/src/imports/controls/material/TextArea.qml
+++ b/src/imports/controls/material/TextArea.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.TextArea {
id: control
@@ -57,7 +57,7 @@ T.TextArea {
color: enabled ? Material.foreground : Material.hintTextColor
selectionColor: Material.accentColor
selectedTextColor: Material.primaryHighlightedTextColor
-
+ placeholderTextColor: Material.hintTextColor
cursorDelegate: CursorDelegate { }
PlaceholderText {
@@ -68,7 +68,7 @@ T.TextArea {
height: control.height - (control.topPadding + control.bottomPadding)
text: control.placeholderText
font: control.font
- color: control.Material.hintTextColor
+ color: control.placeholderTextColor
verticalAlignment: control.verticalAlignment
elide: Text.ElideRight
visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
diff --git a/src/imports/controls/material/TextField.qml b/src/imports/controls/material/TextField.qml
index 6ce905af..62843774 100644
--- a/src/imports/controls/material/TextField.qml
+++ b/src/imports/controls/material/TextField.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.TextField {
id: control
@@ -57,6 +57,7 @@ T.TextField {
color: enabled ? Material.foreground : Material.hintTextColor
selectionColor: Material.accentColor
selectedTextColor: Material.primaryHighlightedTextColor
+ placeholderTextColor: Material.hintTextColor
verticalAlignment: TextInput.AlignVCenter
cursorDelegate: CursorDelegate { }
@@ -69,7 +70,7 @@ T.TextField {
height: control.height - (control.topPadding + control.bottomPadding)
text: control.placeholderText
font: control.font
- color: control.Material.hintTextColor
+ color: control.placeholderTextColor
verticalAlignment: control.verticalAlignment
elide: Text.ElideRight
visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
diff --git a/src/imports/controls/material/ToolBar.qml b/src/imports/controls/material/ToolBar.qml
index 766856d0..be0d8dc7 100644
--- a/src/imports/controls/material/ToolBar.qml
+++ b/src/imports/controls/material/ToolBar.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.ToolBar {
id: control
@@ -47,9 +47,6 @@ T.ToolBar {
implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
- contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
- contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
-
Material.foreground: Material.toolTextColor
spacing: 16
diff --git a/src/imports/controls/material/ToolButton.qml b/src/imports/controls/material/ToolButton.qml
index 86a9f5c0..f4b03fa5 100644
--- a/src/imports/controls/material/ToolButton.qml
+++ b/src/imports/controls/material/ToolButton.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Material 2.4
-import QtQuick.Controls.Material.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Material 2.5
+import QtQuick.Controls.Material.impl 2.5
T.ToolButton {
id: control
@@ -70,8 +70,8 @@ T.ToolButton {
}
background: Ripple {
- implicitWidth: 48
- implicitHeight: 48
+ implicitWidth: control.Material.buttonHeight
+ implicitHeight: control.Material.buttonHeight
readonly property bool square: control.contentItem.width <= control.contentItem.height
diff --git a/src/imports/controls/material/ToolSeparator.qml b/src/imports/controls/material/ToolSeparator.qml
index d6feeb85..a3837e71 100644
--- a/src/imports/controls/material/ToolSeparator.qml
+++ b/src/imports/controls/material/ToolSeparator.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
T.ToolSeparator {
id: control
@@ -44,10 +44,8 @@ T.ToolSeparator {
implicitWidth: Math.max(background ? background.implicitWidth : 0, contentItem.implicitWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentItem.implicitHeight + topPadding + bottomPadding)
- leftPadding: vertical ? 12 : 5
- rightPadding: vertical ? 12 : 5
- topPadding: vertical ? 5 : 12
- bottomPadding: vertical ? 5 : 12
+ horizontalPadding: vertical ? 12 : 5
+ verticalPadding: vertical ? 5 : 12
contentItem: Rectangle {
implicitWidth: vertical ? 1 : 38
diff --git a/src/imports/controls/material/ToolTip.qml b/src/imports/controls/material/ToolTip.qml
index bb7a9d7c..098dc8e6 100644
--- a/src/imports/controls/material/ToolTip.qml
+++ b/src/imports/controls/material/ToolTip.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
T.ToolTip {
id: control
@@ -51,8 +51,7 @@ T.ToolTip {
margins: 12
padding: 8
- leftPadding: padding + 8
- rightPadding: padding + 8
+ horizontalPadding: padding + 8
closePolicy: T.Popup.CloseOnEscape | T.Popup.CloseOnPressOutsideParent | T.Popup.CloseOnReleaseOutsideParent
@@ -76,7 +75,7 @@ T.ToolTip {
}
background: Rectangle {
- implicitHeight: 32
+ implicitHeight: control.Material.tooltipHeight
color: control.Material.tooltipColor
opacity: 0.9
radius: 2
diff --git a/src/imports/controls/material/Tumbler.qml b/src/imports/controls/material/Tumbler.qml
index d5c42422..836d9456 100644
--- a/src/imports/controls/material/Tumbler.qml
+++ b/src/imports/controls/material/Tumbler.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Material 2.4
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Material 2.5
T.Tumbler {
id: control
diff --git a/src/imports/controls/material/material.pro b/src/imports/controls/material/material.pro
index 9e04a23d..c66cdb92 100644
--- a/src/imports/controls/material/material.pro
+++ b/src/imports/controls/material/material.pro
@@ -1,6 +1,6 @@
TARGET = qtquickcontrols2materialstyleplugin
TARGETPATH = QtQuick/Controls.2/Material
-IMPORT_VERSION = 2.4
+IMPORT_VERSION = 2.5
QT += qml quick
QT_PRIVATE += core-private gui-private qml-private quick-private quicktemplates2-private quickcontrols2-private
diff --git a/src/imports/controls/material/qmldir b/src/imports/controls/material/qmldir
index d6ab0177..870a0382 100644
--- a/src/imports/controls/material/qmldir
+++ b/src/imports/controls/material/qmldir
@@ -1,4 +1,4 @@
module QtQuick.Controls.Material
plugin qtquickcontrols2materialstyleplugin
classname QtQuickControls2MaterialStylePlugin
-depends QtQuick.Controls 2.4
+depends QtQuick.Controls 2.5
diff --git a/src/imports/controls/material/qquickmaterialstyle.cpp b/src/imports/controls/material/qquickmaterialstyle.cpp
index 08d88ec7..8d348026 100644
--- a/src/imports/controls/material/qquickmaterialstyle.cpp
+++ b/src/imports/controls/material/qquickmaterialstyle.cpp
@@ -387,6 +387,10 @@ static bool globalPrimaryCustom = false;
static bool globalAccentCustom = false;
static bool globalForegroundCustom = true;
static bool globalBackgroundCustom = true;
+// This is global because:
+// 1) The theme needs access to it to determine font sizes.
+// 2) There can only be one variant used for the whole application.
+static QQuickMaterialStyle::Variant globalVariant = QQuickMaterialStyle::Normal;
static const QRgb backgroundColorLight = 0xFFFAFAFA;
static const QRgb backgroundColorDark = 0xFF303030;
@@ -445,7 +449,7 @@ QQuickMaterialStyle::QQuickMaterialStyle(QObject *parent) : QQuickAttachedObject
m_background(globalBackground),
m_elevation(0)
{
- init();
+ QQuickAttachedObject::init();
}
QQuickMaterialStyle *QQuickMaterialStyle::qmlAttachedProperties(QObject *object)
@@ -1135,17 +1139,55 @@ QColor QQuickMaterialStyle::shade(const QColor &color, Shade shade) const
}
}
-void QQuickMaterialStyle::attachedParentChange(QQuickAttachedObject *newParent, QQuickAttachedObject *oldParent)
+int QQuickMaterialStyle::buttonHeight() const
{
- Q_UNUSED(oldParent);
- QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(newParent);
- if (material) {
- inheritPrimary(material->m_primary, material->m_customPrimary);
- inheritAccent(material->m_accent, material->m_customAccent);
- inheritForeground(material->m_foreground, material->m_customForeground, material->m_hasForeground);
- inheritBackground(material->m_background, material->m_customBackground, material->m_hasBackground);
- inheritTheme(material->theme());
- }
+ // https://material.io/guidelines/components/buttons.html#buttons-style
+ return globalVariant == Dense ? 44 : 48;
+}
+
+int QQuickMaterialStyle::delegateHeight() const
+{
+ // https://material.io/guidelines/components/lists.html#lists-specs
+ return globalVariant == Dense ? 40 : 48;
+}
+
+int QQuickMaterialStyle::dialogButtonBoxHeight() const
+{
+ return globalVariant == Dense ? 48 : 52;
+}
+
+int QQuickMaterialStyle::frameVerticalPadding() const
+{
+ return globalVariant == Dense ? 8 : 12;
+}
+
+int QQuickMaterialStyle::menuItemHeight() const
+{
+ // https://material.io/guidelines/components/menus.html#menus-simple-menus
+ return globalVariant == Dense ? 32 : 48;
+}
+
+int QQuickMaterialStyle::menuItemVerticalPadding() const
+{
+ return globalVariant == Dense ? 8 : 12;
+}
+
+int QQuickMaterialStyle::switchDelegateVerticalPadding() const
+{
+ // SwitchDelegate's indicator is much larger than the others due to the shadow,
+ // so we must reduce its padding to ensure its implicitHeight is 40 when dense.
+ return globalVariant == Dense ? 4 : 8;
+}
+
+int QQuickMaterialStyle::tooltipHeight() const
+{
+ // https://material.io/guidelines/components/tooltips.html
+ return globalVariant == Dense ? 22 : 32;
+}
+
+QQuickMaterialStyle::Variant QQuickMaterialStyle::variant()
+{
+ return globalVariant;
}
template <typename Enum>
@@ -1165,88 +1207,101 @@ static QByteArray resolveSetting(const QByteArray &env, const QSharedPointer<QSe
return value;
}
-void QQuickMaterialStyle::init()
+void QQuickMaterialStyle::initGlobals()
{
- static bool globalsInitialized = false;
- if (!globalsInitialized) {
- QSharedPointer<QSettings> settings = QQuickStylePrivate::settings(QStringLiteral("Material"));
+ QSharedPointer<QSettings> settings = QQuickStylePrivate::settings(QStringLiteral("Material"));
- bool ok = false;
- QByteArray themeValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_THEME", settings, QStringLiteral("Theme"));
- Theme themeEnum = toEnumValue<Theme>(themeValue, &ok);
- if (ok)
- globalTheme = m_theme = effectiveTheme(themeEnum);
- else if (!themeValue.isEmpty())
- qWarning().nospace().noquote() << "Material: unknown theme value: " << themeValue;
+ bool ok = false;
+ QByteArray themeValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_THEME", settings, QStringLiteral("Theme"));
+ Theme themeEnum = toEnumValue<Theme>(themeValue, &ok);
+ if (ok)
+ globalTheme = effectiveTheme(themeEnum);
+ else if (!themeValue.isEmpty())
+ qWarning().nospace().noquote() << "Material: unknown theme value: " << themeValue;
- QByteArray primaryValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_PRIMARY", settings, QStringLiteral("Primary"));
- Color primaryEnum = toEnumValue<Color>(primaryValue, &ok);
- if (ok) {
- globalPrimaryCustom = m_customPrimary = false;
- globalPrimary = m_primary = primaryEnum;
- } else {
- QColor color(primaryValue.constData());
- if (color.isValid()) {
- globalPrimaryCustom = m_customPrimary = true;
- globalPrimary = m_primary = color.rgba();
- } else if (!primaryValue.isEmpty()) {
- qWarning().nospace().noquote() << "Material: unknown primary value: " << primaryValue;
- }
- }
+ QByteArray variantValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_VARIANT", settings, QStringLiteral("Variant"));
+ Variant variantEnum = toEnumValue<Variant>(variantValue, &ok);
+ if (ok)
+ globalVariant = variantEnum;
+ else if (!variantValue.isEmpty())
+ qWarning().nospace().noquote() << "Material: unknown variant value: " << variantValue;
- QByteArray accentValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_ACCENT", settings, QStringLiteral("Accent"));
- Color accentEnum = toEnumValue<Color>(accentValue, &ok);
- if (ok) {
- globalAccentCustom = m_customAccent = false;
- globalAccent = m_accent = accentEnum;
- } else if (!accentValue.isEmpty()) {
- QColor color(accentValue.constData());
- if (color.isValid()) {
- globalAccentCustom = m_customAccent = true;
- globalAccent = m_accent = color.rgba();
- } else {
- qWarning().nospace().noquote() << "Material: unknown accent value: " << accentValue;
- }
+ QByteArray primaryValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_PRIMARY", settings, QStringLiteral("Primary"));
+ Color primaryEnum = toEnumValue<Color>(primaryValue, &ok);
+ if (ok) {
+ globalPrimaryCustom = false;
+ globalPrimary = primaryEnum;
+ } else {
+ QColor color(primaryValue.constData());
+ if (color.isValid()) {
+ globalPrimaryCustom = true;
+ globalPrimary = color.rgba();
+ } else if (!primaryValue.isEmpty()) {
+ qWarning().nospace().noquote() << "Material: unknown primary value: " << primaryValue;
}
+ }
- QByteArray foregroundValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_FOREGROUND", settings, QStringLiteral("Foreground"));
- Color foregroundEnum = toEnumValue<Color>(foregroundValue, &ok);
- if (ok) {
- globalForegroundCustom = m_customForeground = false;
- globalForeground = m_foreground = foregroundEnum;
- hasGlobalForeground = m_hasForeground = true;
- } else if (!foregroundValue.isEmpty()) {
- QColor color(foregroundValue.constData());
- if (color.isValid()) {
- globalForegroundCustom = m_customForeground = true;
- globalForeground = m_foreground = color.rgba();
- hasGlobalForeground = m_hasForeground = true;
- } else {
- qWarning().nospace().noquote() << "Material: unknown foreground value: " << foregroundValue;
- }
+ QByteArray accentValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_ACCENT", settings, QStringLiteral("Accent"));
+ Color accentEnum = toEnumValue<Color>(accentValue, &ok);
+ if (ok) {
+ globalAccentCustom = false;
+ globalAccent = accentEnum;
+ } else if (!accentValue.isEmpty()) {
+ QColor color(accentValue.constData());
+ if (color.isValid()) {
+ globalAccentCustom = true;
+ globalAccent = color.rgba();
+ } else {
+ qWarning().nospace().noquote() << "Material: unknown accent value: " << accentValue;
}
+ }
- QByteArray backgroundValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_BACKGROUND", settings, QStringLiteral("Background"));
- Color backgroundEnum = toEnumValue<Color>(backgroundValue, &ok);
- if (ok) {
- globalBackgroundCustom = m_customBackground = false;
- globalBackground = m_background = backgroundEnum;
- hasGlobalBackground = m_hasBackground = true;
- } else if (!backgroundValue.isEmpty()) {
- QColor color(backgroundValue.constData());
- if (color.isValid()) {
- globalBackgroundCustom = m_customBackground = true;
- globalBackground = m_background = color.rgba();
- hasGlobalBackground = m_hasBackground = true;
- } else {
- qWarning().nospace().noquote() << "Material: unknown background value: " << backgroundValue;
- }
+ QByteArray foregroundValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_FOREGROUND", settings, QStringLiteral("Foreground"));
+ Color foregroundEnum = toEnumValue<Color>(foregroundValue, &ok);
+ if (ok) {
+ globalForegroundCustom = false;
+ globalForeground = foregroundEnum;
+ hasGlobalForeground = true;
+ } else if (!foregroundValue.isEmpty()) {
+ QColor color(foregroundValue.constData());
+ if (color.isValid()) {
+ globalForegroundCustom = true;
+ globalForeground = color.rgba();
+ hasGlobalForeground = true;
+ } else {
+ qWarning().nospace().noquote() << "Material: unknown foreground value: " << foregroundValue;
}
+ }
- globalsInitialized = true;
+ QByteArray backgroundValue = resolveSetting("QT_QUICK_CONTROLS_MATERIAL_BACKGROUND", settings, QStringLiteral("Background"));
+ Color backgroundEnum = toEnumValue<Color>(backgroundValue, &ok);
+ if (ok) {
+ globalBackgroundCustom = false;
+ globalBackground = backgroundEnum;
+ hasGlobalBackground = true;
+ } else if (!backgroundValue.isEmpty()) {
+ QColor color(backgroundValue.constData());
+ if (color.isValid()) {
+ globalBackgroundCustom = true;
+ globalBackground = color.rgba();
+ hasGlobalBackground = true;
+ } else {
+ qWarning().nospace().noquote() << "Material: unknown background value: " << backgroundValue;
+ }
}
+}
- QQuickAttachedObject::init(); // TODO: lazy init?
+void QQuickMaterialStyle::attachedParentChange(QQuickAttachedObject *newParent, QQuickAttachedObject *oldParent)
+{
+ Q_UNUSED(oldParent);
+ QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(newParent);
+ if (material) {
+ inheritPrimary(material->m_primary, material->m_customPrimary);
+ inheritAccent(material->m_accent, material->m_customAccent);
+ inheritForeground(material->m_foreground, material->m_customForeground, material->m_hasForeground);
+ inheritBackground(material->m_background, material->m_customBackground, material->m_hasBackground);
+ inheritTheme(material->theme());
+ }
}
bool QQuickMaterialStyle::variantToRgba(const QVariant &var, const char *name, QRgb *rgba, bool *custom) const
diff --git a/src/imports/controls/material/qquickmaterialstyle_p.h b/src/imports/controls/material/qquickmaterialstyle_p.h
index 2374eefb..0cb168a9 100644
--- a/src/imports/controls/material/qquickmaterialstyle_p.h
+++ b/src/imports/controls/material/qquickmaterialstyle_p.h
@@ -98,6 +98,15 @@ class QQuickMaterialStyle : public QQuickAttachedObject
Q_PROPERTY(QColor toolTextColor READ toolTextColor NOTIFY paletteChanged FINAL)
Q_PROPERTY(QColor spinBoxDisabledIconColor READ spinBoxDisabledIconColor NOTIFY paletteChanged FINAL)
+ Q_PROPERTY(int buttonHeight READ buttonHeight CONSTANT FINAL)
+ Q_PROPERTY(int delegateHeight READ delegateHeight CONSTANT FINAL)
+ Q_PROPERTY(int dialogButtonBoxHeight READ dialogButtonBoxHeight CONSTANT FINAL)
+ Q_PROPERTY(int frameVerticalPadding READ frameVerticalPadding CONSTANT FINAL)
+ Q_PROPERTY(int menuItemHeight READ menuItemHeight CONSTANT FINAL)
+ Q_PROPERTY(int menuItemVerticalPadding READ menuItemVerticalPadding CONSTANT FINAL)
+ Q_PROPERTY(int switchDelegateVerticalPadding READ switchDelegateVerticalPadding CONSTANT FINAL)
+ Q_PROPERTY(int tooltipHeight READ tooltipHeight CONSTANT FINAL)
+
public:
enum Theme {
Light,
@@ -105,6 +114,11 @@ public:
System
};
+ enum Variant {
+ Normal,
+ Dense
+ };
+
enum Color {
Red,
Pink,
@@ -145,6 +159,7 @@ public:
};
Q_ENUM(Theme)
+ Q_ENUM(Variant)
Q_ENUM(Color)
Q_ENUM(Shade)
@@ -225,6 +240,19 @@ public:
Q_INVOKABLE QColor color(Color color, Shade shade = Shade500) const;
Q_INVOKABLE QColor shade(const QColor &color, Shade shade) const;
+ int buttonHeight() const;
+ int delegateHeight() const;
+ int dialogButtonBoxHeight() const;
+ int frameVerticalPadding() const;
+ int menuItemHeight() const;
+ int menuItemVerticalPadding() const;
+ int switchDelegateVerticalPadding() const;
+ int tooltipHeight() const;
+
+ static void initGlobals();
+
+ static Variant variant();
+
Q_SIGNALS:
void themeChanged();
void primaryChanged();
diff --git a/src/imports/controls/material/qquickmaterialtheme.cpp b/src/imports/controls/material/qquickmaterialtheme.cpp
index c697b2a5..378a5bf7 100644
--- a/src/imports/controls/material/qquickmaterialtheme.cpp
+++ b/src/imports/controls/material/qquickmaterialtheme.cpp
@@ -35,6 +35,7 @@
****************************************************************************/
#include "qquickmaterialtheme_p.h"
+#include "qquickmaterialstyle_p.h"
#include <QtGui/qpa/qplatformdialoghelper.h>
#include <QtGui/qfont.h>
@@ -43,7 +44,10 @@
QT_BEGIN_NAMESPACE
QQuickMaterialTheme::QQuickMaterialTheme()
- : QQuickTheme(QStringLiteral("Material"))
+{
+}
+
+void QQuickMaterialTheme::resolveFonts(const QFont &defaultFont)
{
QFont font;
font.setFamily(QLatin1String("Roboto"));
@@ -64,64 +68,60 @@ QQuickMaterialTheme::QQuickMaterialTheme()
editorFont.setFamily(family);
}
- systemFont.setPixelSize(14);
- systemFont = resolveFont(systemFont);
+ const bool dense = QQuickMaterialStyle::variant() == QQuickMaterialStyle::Dense;
+ systemFont.setPixelSize(dense ? 13 : 14);
+ systemFont = defaultFont.resolve(systemFont);
- buttonFont.setPixelSize(14);
+ // https://material.io/guidelines/components/buttons.html#buttons-style
+ buttonFont.setPixelSize(dense ? 13 : 14);
buttonFont.setCapitalization(QFont::AllUppercase);
buttonFont.setWeight(QFont::Medium);
- buttonFont = resolveFont(buttonFont);
+ buttonFont = defaultFont.resolve(buttonFont);
- toolTipFont.setPixelSize(14);
+ // https://material.io/guidelines/components/tooltips.html
+ toolTipFont.setPixelSize(dense ? 10 : 14);
toolTipFont.setWeight(QFont::Medium);
- toolTipFont = resolveFont(toolTipFont);
+ toolTipFont = defaultFont.resolve(toolTipFont);
- itemViewFont.setPixelSize(14);
+ itemViewFont.setPixelSize(dense ? 13 : 14);
itemViewFont.setWeight(QFont::Medium);
- itemViewFont = resolveFont(itemViewFont);
+ itemViewFont = defaultFont.resolve(itemViewFont);
- listViewFont.setPixelSize(16);
- listViewFont = resolveFont(listViewFont);
+ // https://material.io/guidelines/components/lists.html#lists-specs
+ listViewFont.setPixelSize(dense ? 13 : 16);
+ listViewFont = defaultFont.resolve(listViewFont);
- menuItemFont.setPixelSize(16);
- menuItemFont = resolveFont(menuItemFont);
+ menuItemFont.setPixelSize(dense ? 13 : 16);
+ menuItemFont = defaultFont.resolve(menuItemFont);
- editorFont.setPixelSize(16);
- editorFont = resolveFont(editorFont);
+ editorFont.setPixelSize(dense ? 13 : 16);
+ editorFont = defaultFont.resolve(editorFont);
}
-const QFont *QQuickMaterialTheme::font(QPlatformTheme::Font type) const
+const QFont *QQuickMaterialTheme::font(Scope scope) const
{
- switch (type) {
- case QPlatformTheme::TabButtonFont:
- case QPlatformTheme::PushButtonFont:
- case QPlatformTheme::ToolButtonFont:
+ switch (scope) {
+ case Button:
+ case TabBar:
+ case ToolBar:
return &buttonFont;
- case QPlatformTheme::TipLabelFont:
+ case ToolTip:
return &toolTipFont;
- case QPlatformTheme::ItemViewFont:
+ case ItemView:
return &itemViewFont;
- case QPlatformTheme::ListViewFont:
+ case ListView:
return &listViewFont;
- case QPlatformTheme::MenuBarFont:
- case QPlatformTheme::MenuItemFont:
- case QPlatformTheme::ComboMenuItemFont:
+ case Menu:
+ case MenuBar:
+ case ComboBox:
return &menuItemFont;
- case QPlatformTheme::EditorFont:
+ case TextArea:
+ case TextField:
+ case SpinBox:
return &editorFont;
default:
return &systemFont;
}
}
-QVariant QQuickMaterialTheme::themeHint(ThemeHint hint) const
-{
- switch (hint) {
- case QPlatformTheme::DialogButtonBoxLayout:
- return QVariant(QPlatformDialogHelper::AndroidLayout);
- default:
- return QQuickProxyTheme::themeHint(hint);
- }
-}
-
QT_END_NAMESPACE
diff --git a/src/imports/controls/material/qquickmaterialtheme_p.h b/src/imports/controls/material/qquickmaterialtheme_p.h
index 0e791386..717990ad 100644
--- a/src/imports/controls/material/qquickmaterialtheme_p.h
+++ b/src/imports/controls/material/qquickmaterialtheme_p.h
@@ -50,7 +50,7 @@
#include <QtCore/qvariant.h>
#include <QtGui/qfont.h>
-#include <QtQuickControls2/private/qquicktheme_p.h>
+#include <QtQuickTemplates2/private/qquicktheme_p.h>
QT_BEGIN_NAMESPACE
@@ -59,9 +59,10 @@ class QQuickMaterialTheme : public QQuickTheme
public:
explicit QQuickMaterialTheme();
- const QFont *font(Font type = SystemFont) const override;
+protected:
+ const QFont *font(Scope scope) const override;
- QVariant themeHint(ThemeHint hint) const override;
+ void resolveFonts(const QFont &defaultFont) override;
private:
QFont systemFont;
diff --git a/src/imports/controls/material/qtquickcontrols2materialstyleplugin.cpp b/src/imports/controls/material/qtquickcontrols2materialstyleplugin.cpp
index 33c14d04..f0cf8f3f 100644
--- a/src/imports/controls/material/qtquickcontrols2materialstyleplugin.cpp
+++ b/src/imports/controls/material/qtquickcontrols2materialstyleplugin.cpp
@@ -66,12 +66,13 @@ public:
void registerTypes(const char *uri) override;
QString name() const override;
- QQuickProxyTheme *createTheme() const override;
+ QQuickTheme *createTheme() const override;
};
QtQuickControls2MaterialStylePlugin::QtQuickControls2MaterialStylePlugin(QObject *parent) : QQuickStylePlugin(parent)
{
initResources();
+ QQuickMaterialStyle::initGlobals();
}
void QtQuickControls2MaterialStylePlugin::registerTypes(const char *uri)
@@ -97,10 +98,10 @@ void QtQuickControls2MaterialStylePlugin::registerTypes(const char *uri)
QString QtQuickControls2MaterialStylePlugin::name() const
{
- return QStringLiteral("material");
+ return QStringLiteral("Material");
}
-QQuickProxyTheme *QtQuickControls2MaterialStylePlugin::createTheme() const
+QQuickTheme *QtQuickControls2MaterialStylePlugin::createTheme() const
{
return new QQuickMaterialTheme;
}
diff --git a/src/imports/controls/qmldir b/src/imports/controls/qmldir
index de40013f..c9ccb8f9 100644
--- a/src/imports/controls/qmldir
+++ b/src/imports/controls/qmldir
@@ -1,5 +1,5 @@
module QtQuick.Controls
plugin qtquickcontrols2plugin
classname QtQuickControls2Plugin
-depends QtQuick.Templates 2.4
+depends QtQuick.Templates 2.5
designersupported
diff --git a/src/imports/controls/qquickdefaulttheme.cpp b/src/imports/controls/qquickdefaulttheme.cpp
index f4b6f5d7..40ed269a 100644
--- a/src/imports/controls/qquickdefaulttheme.cpp
+++ b/src/imports/controls/qquickdefaulttheme.cpp
@@ -39,7 +39,10 @@
QT_BEGIN_NAMESPACE
QQuickDefaultTheme::QQuickDefaultTheme()
- : QQuickTheme(QStringLiteral("Default"))
+{
+}
+
+void QQuickDefaultTheme::resolvePalettes(const QPalette &defaultPalette)
{
systemPalette.setColor(QPalette::Base, QColor::fromRgba(0xFFFFFFFF));
systemPalette.setColor(QPalette::Disabled, QPalette::Base, QColor::fromRgba(0xFFD6D6D6));
@@ -80,12 +83,12 @@ QQuickDefaultTheme::QQuickDefaultTheme()
systemPalette.setColor(QPalette::WindowText, QColor::fromRgba(0xFF26282A));
systemPalette.setColor(QPalette::Disabled, QPalette::WindowText, QColor::fromRgba(0xFFBDBEBF));
- systemPalette = resolvePalette(systemPalette);
+ systemPalette = defaultPalette.resolve(systemPalette);
}
-const QPalette *QQuickDefaultTheme::palette(QPlatformTheme::Palette type) const
+const QPalette *QQuickDefaultTheme::palette(Scope scope) const
{
- Q_UNUSED(type);
+ Q_UNUSED(scope);
return &systemPalette;
}
diff --git a/src/imports/controls/qquickdefaulttheme_p.h b/src/imports/controls/qquickdefaulttheme_p.h
index 16e4d061..1d5897bd 100644
--- a/src/imports/controls/qquickdefaulttheme_p.h
+++ b/src/imports/controls/qquickdefaulttheme_p.h
@@ -48,7 +48,7 @@
// We mean it.
//
-#include <QtQuickControls2/private/qquicktheme_p.h>
+#include <QtQuickTemplates2/private/qquicktheme_p.h>
QT_BEGIN_NAMESPACE
@@ -57,7 +57,10 @@ class QQuickDefaultTheme : public QQuickTheme
public:
explicit QQuickDefaultTheme();
- const QPalette *palette(Palette type) const override;
+protected:
+ const QPalette *palette(Scope scope) const override;
+
+ void resolvePalettes(const QPalette &defaultPalette) override;
private:
QPalette systemPalette;
diff --git a/src/imports/controls/qtquickcontrols2plugin.cpp b/src/imports/controls/qtquickcontrols2plugin.cpp
index 76086376..d0018901 100644
--- a/src/imports/controls/qtquickcontrols2plugin.cpp
+++ b/src/imports/controls/qtquickcontrols2plugin.cpp
@@ -82,7 +82,7 @@ public:
void registerTypes(const char *uri) override;
QString name() const override;
- QQuickProxyTheme *createTheme() const override;
+ QQuickTheme *createTheme() const override;
};
QtQuickControls2Plugin::QtQuickControls2Plugin(QObject *parent) : QQuickStylePlugin(parent)
@@ -98,12 +98,17 @@ QtQuickControls2Plugin::~QtQuickControls2Plugin()
void QtQuickControls2Plugin::registerTypes(const char *uri)
{
QQuickStylePrivate::init(typeUrl());
+
const QString style = QQuickStyle::name();
+ const QString fallback = QQuickStylePrivate::fallbackStyle();
if (!style.isEmpty())
QFileSelectorPrivate::addStatics(QStringList() << style.toLower());
QQuickStyleSelector selector;
- selector.setBaseUrl(typeUrl());
+ selector.addSelector(style);
+ if (!fallback.isEmpty())
+ selector.addSelector(fallback);
+ selector.setPaths(QQuickStylePrivate::stylePaths(true));
qmlRegisterModule(uri, 2, QT_VERSION_MINOR - 7); // Qt 5.7->2.0, 5.8->2.1, 5.9->2.2...
@@ -212,10 +217,10 @@ void QtQuickControls2Plugin::registerTypes(const char *uri)
QString QtQuickControls2Plugin::name() const
{
- return QStringLiteral("default");
+ return QStringLiteral("Default");
}
-QQuickProxyTheme *QtQuickControls2Plugin::createTheme() const
+QQuickTheme *QtQuickControls2Plugin::createTheme() const
{
return new QQuickDefaultTheme;
}
diff --git a/src/imports/controls/universal/ApplicationWindow.qml b/src/imports/controls/universal/ApplicationWindow.qml
index 0b119693..313b980e 100644
--- a/src/imports/controls/universal/ApplicationWindow.qml
+++ b/src/imports/controls/universal/ApplicationWindow.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
+import QtQuick 2.12
import QtQuick.Window 2.3
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
-import QtQuick.Controls.Universal.impl 2.4
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
+import QtQuick.Controls.Universal.impl 2.5
T.ApplicationWindow {
id: window
diff --git a/src/imports/controls/universal/BusyIndicator.qml b/src/imports/controls/universal/BusyIndicator.qml
index cc9e6b85..80f8ae1c 100644
--- a/src/imports/controls/universal/BusyIndicator.qml
+++ b/src/imports/controls/universal/BusyIndicator.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
-import QtQuick.Controls.Universal.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
+import QtQuick.Controls.Universal.impl 2.5
T.BusyIndicator {
id: control
diff --git a/src/imports/controls/universal/Button.qml b/src/imports/controls/universal/Button.qml
index d8b6836d..b1742fa8 100644
--- a/src/imports/controls/universal/Button.qml
+++ b/src/imports/controls/universal/Button.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Universal 2.5
T.Button {
id: control
@@ -50,8 +50,7 @@ T.Button {
baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 8
- topPadding: padding - 4
- bottomPadding: padding - 4
+ verticalPadding: padding - 4
spacing: 8
icon.width: 20
diff --git a/src/imports/controls/universal/CheckBox.qml b/src/imports/controls/universal/CheckBox.qml
index 7566c33a..008733b1 100644
--- a/src/imports/controls/universal/CheckBox.qml
+++ b/src/imports/controls/universal/CheckBox.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
-import QtQuick.Controls.Universal.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
+import QtQuick.Controls.Universal.impl 2.5
T.CheckBox {
id: control
diff --git a/src/imports/controls/universal/CheckDelegate.qml b/src/imports/controls/universal/CheckDelegate.qml
index 8419ac1e..d4f441e4 100644
--- a/src/imports/controls/universal/CheckDelegate.qml
+++ b/src/imports/controls/universal/CheckDelegate.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Universal 2.4
-import QtQuick.Controls.Universal.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Universal 2.5
+import QtQuick.Controls.Universal.impl 2.5
T.CheckDelegate {
id: control
diff --git a/src/imports/controls/universal/CheckIndicator.qml b/src/imports/controls/universal/CheckIndicator.qml
index 63bbc3d0..cf8ce3c6 100644
--- a/src/imports/controls/universal/CheckIndicator.qml
+++ b/src/imports/controls/universal/CheckIndicator.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Universal 2.5
Rectangle {
implicitWidth: 20
diff --git a/src/imports/controls/universal/ComboBox.qml b/src/imports/controls/universal/ComboBox.qml
index f8ea2874..38d9c445 100644
--- a/src/imports/controls/universal/ComboBox.qml
+++ b/src/imports/controls/universal/ComboBox.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
+import QtQuick 2.12
import QtQuick.Window 2.3
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
T.ComboBox {
id: control
diff --git a/src/imports/controls/universal/DelayButton.qml b/src/imports/controls/universal/DelayButton.qml
index be0cccad..bc18d3e3 100644
--- a/src/imports/controls/universal/DelayButton.qml
+++ b/src/imports/controls/universal/DelayButton.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
T.DelayButton {
id: control
@@ -48,8 +48,7 @@ T.DelayButton {
baselineOffset: contentItem.y + contentItem.baselineOffset
padding: 8
- topPadding: padding - 4
- bottomPadding: padding - 4
+ verticalPadding: padding - 4
property bool useSystemFocusVisuals: true
diff --git a/src/imports/controls/universal/Dial.qml b/src/imports/controls/universal/Dial.qml
index d2634713..ffeee7c1 100644
--- a/src/imports/controls/universal/Dial.qml
+++ b/src/imports/controls/universal/Dial.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
T.Dial {
id: control
diff --git a/src/imports/controls/universal/Dialog.qml b/src/imports/controls/universal/Dialog.qml
index 08cc441a..3d17e77b 100644
--- a/src/imports/controls/universal/Dialog.qml
+++ b/src/imports/controls/universal/Dialog.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.Universal 2.5
T.Dialog {
id: control
@@ -55,8 +55,7 @@ T.Dialog {
contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
padding: 24
- topPadding: 18
- bottomPadding: 18
+ verticalPadding: 18
background: Rectangle {
color: control.Universal.chromeMediumLowColor
diff --git a/src/imports/controls/universal/DialogButtonBox.qml b/src/imports/controls/universal/DialogButtonBox.qml
index 17a9156d..6dff51d1 100644
--- a/src/imports/controls/universal/DialogButtonBox.qml
+++ b/src/imports/controls/universal/DialogButtonBox.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.Universal 2.5
T.DialogButtonBox {
id: control
diff --git a/src/imports/controls/universal/Drawer.qml b/src/imports/controls/universal/Drawer.qml
index 8fbd57c6..dbb3f2a9 100644
--- a/src/imports/controls/universal/Drawer.qml
+++ b/src/imports/controls/universal/Drawer.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
T.Drawer {
id: control
diff --git a/src/imports/controls/universal/Frame.qml b/src/imports/controls/universal/Frame.qml
index 4f11bc18..fa4efc19 100644
--- a/src/imports/controls/universal/Frame.qml
+++ b/src/imports/controls/universal/Frame.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
T.Frame {
id: control
@@ -44,9 +44,6 @@ T.Frame {
implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
- contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
- contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
-
padding: 12
background: Rectangle {
diff --git a/src/imports/controls/universal/GroupBox.qml b/src/imports/controls/universal/GroupBox.qml
index 8fb68e29..aaae298b 100644
--- a/src/imports/controls/universal/GroupBox.qml
+++ b/src/imports/controls/universal/GroupBox.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
T.GroupBox {
id: control
@@ -46,9 +46,6 @@ T.GroupBox {
contentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
- contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
- contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
-
spacing: 12
padding: 12
topPadding: padding + (label && label.implicitWidth > 0 ? label.implicitHeight + spacing : 0)
diff --git a/src/imports/controls/universal/ItemDelegate.qml b/src/imports/controls/universal/ItemDelegate.qml
index 65d52729..28a97837 100644
--- a/src/imports/controls/universal/ItemDelegate.qml
+++ b/src/imports/controls/universal/ItemDelegate.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Universal 2.5
T.ItemDelegate {
id: control
diff --git a/src/imports/controls/universal/Label.qml b/src/imports/controls/universal/Label.qml
index bad9ac04..2e6bb1c3 100644
--- a/src/imports/controls/universal/Label.qml
+++ b/src/imports/controls/universal/Label.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
T.Label {
id: control
diff --git a/src/imports/controls/universal/Menu.qml b/src/imports/controls/universal/Menu.qml
index 36241f3a..803bb96f 100644
--- a/src/imports/controls/universal/Menu.qml
+++ b/src/imports/controls/universal/Menu.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls 2.4
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
T.Menu {
id: control
diff --git a/src/imports/controls/universal/MenuBar.qml b/src/imports/controls/universal/MenuBar.qml
index a1d7e88a..add049e9 100644
--- a/src/imports/controls/universal/MenuBar.qml
+++ b/src/imports/controls/universal/MenuBar.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Universal 2.5
T.MenuBar {
id: control
diff --git a/src/imports/controls/universal/MenuBarItem.qml b/src/imports/controls/universal/MenuBarItem.qml
index e88a3ced..a04835a6 100644
--- a/src/imports/controls/universal/MenuBarItem.qml
+++ b/src/imports/controls/universal/MenuBarItem.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Universal 2.5
T.MenuBarItem {
id: control
diff --git a/src/imports/controls/universal/MenuItem.qml b/src/imports/controls/universal/MenuItem.qml
index c9c38cb5..c7546fa9 100644
--- a/src/imports/controls/universal/MenuItem.qml
+++ b/src/imports/controls/universal/MenuItem.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Universal 2.5
T.MenuItem {
id: control
diff --git a/src/imports/controls/universal/MenuSeparator.qml b/src/imports/controls/universal/MenuSeparator.qml
index 6d0d9dd5..186a50d5 100644
--- a/src/imports/controls/universal/MenuSeparator.qml
+++ b/src/imports/controls/universal/MenuSeparator.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
T.MenuSeparator {
id: control
diff --git a/src/imports/controls/universal/Page.qml b/src/imports/controls/universal/Page.qml
index de8482d8..7eda011e 100644
--- a/src/imports/controls/universal/Page.qml
+++ b/src/imports/controls/universal/Page.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
T.Page {
id: control
@@ -50,9 +50,6 @@ T.Page {
+ (header && header.visible ? header.implicitHeight + spacing : 0)
+ (footer && footer.visible ? footer.implicitHeight + spacing : 0))
- contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
- contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
-
background: Rectangle {
color: control.Universal.background
}
diff --git a/src/imports/controls/universal/PageIndicator.qml b/src/imports/controls/universal/PageIndicator.qml
index c14a3365..ed6c6a7d 100644
--- a/src/imports/controls/universal/PageIndicator.qml
+++ b/src/imports/controls/universal/PageIndicator.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
T.PageIndicator {
id: control
diff --git a/src/imports/controls/universal/Pane.qml b/src/imports/controls/universal/Pane.qml
index 340653ea..adb4b9f2 100644
--- a/src/imports/controls/universal/Pane.qml
+++ b/src/imports/controls/universal/Pane.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
T.Pane {
id: control
@@ -44,9 +44,6 @@ T.Pane {
implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
- contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
- contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
-
padding: 12
background: Rectangle {
diff --git a/src/imports/controls/universal/Popup.qml b/src/imports/controls/universal/Popup.qml
index 567fa7d2..9d250782 100644
--- a/src/imports/controls/universal/Popup.qml
+++ b/src/imports/controls/universal/Popup.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
T.Popup {
id: control
diff --git a/src/imports/controls/universal/ProgressBar.qml b/src/imports/controls/universal/ProgressBar.qml
index e7aa6bbe..a4ed1e42 100644
--- a/src/imports/controls/universal/ProgressBar.qml
+++ b/src/imports/controls/universal/ProgressBar.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
-import QtQuick.Controls.Universal.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
+import QtQuick.Controls.Universal.impl 2.5
T.ProgressBar {
id: control
diff --git a/src/imports/controls/universal/RadioButton.qml b/src/imports/controls/universal/RadioButton.qml
index 763725b6..ed098fa9 100644
--- a/src/imports/controls/universal/RadioButton.qml
+++ b/src/imports/controls/universal/RadioButton.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
-import QtQuick.Controls.Universal.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
+import QtQuick.Controls.Universal.impl 2.5
T.RadioButton {
id: control
diff --git a/src/imports/controls/universal/RadioDelegate.qml b/src/imports/controls/universal/RadioDelegate.qml
index 90d023b3..e88f8de3 100644
--- a/src/imports/controls/universal/RadioDelegate.qml
+++ b/src/imports/controls/universal/RadioDelegate.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Universal 2.4
-import QtQuick.Controls.Universal.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Universal 2.5
+import QtQuick.Controls.Universal.impl 2.5
T.RadioDelegate {
id: control
diff --git a/src/imports/controls/universal/RadioIndicator.qml b/src/imports/controls/universal/RadioIndicator.qml
index 11f388c2..71cb7098 100644
--- a/src/imports/controls/universal/RadioIndicator.qml
+++ b/src/imports/controls/universal/RadioIndicator.qml
@@ -34,8 +34,8 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Controls.Universal 2.5
Rectangle {
implicitWidth: 20
diff --git a/src/imports/controls/universal/RangeSlider.qml b/src/imports/controls/universal/RangeSlider.qml
index 6ee923e1..90e33d3b 100644
--- a/src/imports/controls/universal/RangeSlider.qml
+++ b/src/imports/controls/universal/RangeSlider.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
T.RangeSlider {
id: control
diff --git a/src/imports/controls/universal/RoundButton.qml b/src/imports/controls/universal/RoundButton.qml
index 34983ac9..dde60a3b 100644
--- a/src/imports/controls/universal/RoundButton.qml
+++ b/src/imports/controls/universal/RoundButton.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Universal 2.5
T.RoundButton {
id: control
diff --git a/src/imports/controls/universal/ScrollBar.qml b/src/imports/controls/universal/ScrollBar.qml
index 91b77366..8de9eb5b 100644
--- a/src/imports/controls/universal/ScrollBar.qml
+++ b/src/imports/controls/universal/ScrollBar.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
T.ScrollBar {
id: control
diff --git a/src/imports/controls/universal/ScrollIndicator.qml b/src/imports/controls/universal/ScrollIndicator.qml
index f09124db..edcb9920 100644
--- a/src/imports/controls/universal/ScrollIndicator.qml
+++ b/src/imports/controls/universal/ScrollIndicator.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
T.ScrollIndicator {
id: control
diff --git a/src/imports/controls/universal/Slider.qml b/src/imports/controls/universal/Slider.qml
index 49b6d371..768b752d 100644
--- a/src/imports/controls/universal/Slider.qml
+++ b/src/imports/controls/universal/Slider.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
T.Slider {
id: control
diff --git a/src/imports/controls/universal/SpinBox.qml b/src/imports/controls/universal/SpinBox.qml
index d9ceed78..8dec9d1b 100644
--- a/src/imports/controls/universal/SpinBox.qml
+++ b/src/imports/controls/universal/SpinBox.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Universal 2.5
T.SpinBox {
id: control
diff --git a/src/imports/controls/universal/StackView.qml b/src/imports/controls/universal/StackView.qml
index 77d70255..c4cf70e7 100644
--- a/src/imports/controls/universal/StackView.qml
+++ b/src/imports/controls/universal/StackView.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
T.StackView {
id: control
diff --git a/src/imports/controls/universal/SwipeDelegate.qml b/src/imports/controls/universal/SwipeDelegate.qml
index ffcdf0a9..7070372c 100644
--- a/src/imports/controls/universal/SwipeDelegate.qml
+++ b/src/imports/controls/universal/SwipeDelegate.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Universal 2.5
T.SwipeDelegate {
id: control
diff --git a/src/imports/controls/universal/Switch.qml b/src/imports/controls/universal/Switch.qml
index b0d1923b..4ace9809 100644
--- a/src/imports/controls/universal/Switch.qml
+++ b/src/imports/controls/universal/Switch.qml
@@ -34,10 +34,10 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
-import QtQuick.Controls.Universal.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
+import QtQuick.Controls.Universal.impl 2.5
T.Switch {
id: control
diff --git a/src/imports/controls/universal/SwitchDelegate.qml b/src/imports/controls/universal/SwitchDelegate.qml
index 48248193..8e5384d7 100644
--- a/src/imports/controls/universal/SwitchDelegate.qml
+++ b/src/imports/controls/universal/SwitchDelegate.qml
@@ -34,12 +34,12 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Universal 2.4
-import QtQuick.Controls.Universal.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Universal 2.5
+import QtQuick.Controls.Universal.impl 2.5
T.SwitchDelegate {
id: control
diff --git a/src/imports/controls/universal/SwitchIndicator.qml b/src/imports/controls/universal/SwitchIndicator.qml
index b1072b88..12a71f16 100644
--- a/src/imports/controls/universal/SwitchIndicator.qml
+++ b/src/imports/controls/universal/SwitchIndicator.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
Item {
implicitWidth: 44
diff --git a/src/imports/controls/universal/TabBar.qml b/src/imports/controls/universal/TabBar.qml
index 81003b48..70cf38f2 100644
--- a/src/imports/controls/universal/TabBar.qml
+++ b/src/imports/controls/universal/TabBar.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
T.TabBar {
id: control
diff --git a/src/imports/controls/universal/TabButton.qml b/src/imports/controls/universal/TabButton.qml
index 3a9e6d45..bec6951b 100644
--- a/src/imports/controls/universal/TabButton.qml
+++ b/src/imports/controls/universal/TabButton.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Universal 2.5
T.TabButton {
id: control
diff --git a/src/imports/controls/universal/TextArea.qml b/src/imports/controls/universal/TextArea.qml
index 5dc78c80..82421c78 100644
--- a/src/imports/controls/universal/TextArea.qml
+++ b/src/imports/controls/universal/TextArea.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Universal 2.5
T.TextArea {
id: control
@@ -61,6 +61,9 @@ T.TextArea {
color: !enabled ? Universal.chromeDisabledLowColor : Universal.foreground
selectionColor: Universal.accent
selectedTextColor: Universal.chromeWhiteColor
+ placeholderTextColor: !enabled ? Universal.chromeDisabledLowColor :
+ activeFocus ? Universal.chromeBlackMediumLowColor :
+ Universal.baseMediumColor
PlaceholderText {
id: placeholder
@@ -71,8 +74,7 @@ T.TextArea {
text: control.placeholderText
font: control.font
- color: !control.enabled ? control.Universal.chromeDisabledLowColor :
- control.activeFocus ? control.Universal.chromeBlackMediumLowColor : control.Universal.baseMediumColor
+ color: control.placeholderTextColor
visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
verticalAlignment: control.verticalAlignment
elide: Text.ElideRight
diff --git a/src/imports/controls/universal/TextField.qml b/src/imports/controls/universal/TextField.qml
index f4164fed..96736fe0 100644
--- a/src/imports/controls/universal/TextField.qml
+++ b/src/imports/controls/universal/TextField.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Universal 2.5
T.TextField {
id: control
@@ -61,6 +61,9 @@ T.TextField {
color: !enabled ? Universal.chromeDisabledLowColor : Universal.foreground
selectionColor: Universal.accent
selectedTextColor: Universal.chromeWhiteColor
+ placeholderTextColor: !enabled ? Universal.chromeDisabledLowColor :
+ activeFocus ? Universal.chromeBlackMediumLowColor :
+ Universal.baseMediumColor
verticalAlignment: TextInput.AlignVCenter
PlaceholderText {
@@ -72,8 +75,7 @@ T.TextField {
text: control.placeholderText
font: control.font
- color: !control.enabled ? control.Universal.chromeDisabledLowColor :
- control.activeFocus ? control.Universal.chromeBlackMediumLowColor : control.Universal.baseMediumColor
+ color: control.placeholderTextColor
visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter)
verticalAlignment: control.verticalAlignment
elide: Text.ElideRight
diff --git a/src/imports/controls/universal/ToolBar.qml b/src/imports/controls/universal/ToolBar.qml
index 65dca3bb..6a11a1ce 100644
--- a/src/imports/controls/universal/ToolBar.qml
+++ b/src/imports/controls/universal/ToolBar.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
T.ToolBar {
id: control
@@ -44,9 +44,6 @@ T.ToolBar {
implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding)
- contentWidth: contentItem.implicitWidth || (contentChildren.length === 1 ? contentChildren[0].implicitWidth : 0)
- contentHeight: contentItem.implicitHeight || (contentChildren.length === 1 ? contentChildren[0].implicitHeight : 0)
-
background: Rectangle {
implicitHeight: 48 // AppBarThemeCompactHeight
color: control.Universal.chromeMediumColor
diff --git a/src/imports/controls/universal/ToolButton.qml b/src/imports/controls/universal/ToolButton.qml
index 118d4baa..c69de89a 100644
--- a/src/imports/controls/universal/ToolButton.qml
+++ b/src/imports/controls/universal/ToolButton.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
+import QtQuick.Controls.Universal 2.5
T.ToolButton {
id: control
diff --git a/src/imports/controls/universal/ToolSeparator.qml b/src/imports/controls/universal/ToolSeparator.qml
index 2e7b6a01..5ce24d7e 100644
--- a/src/imports/controls/universal/ToolSeparator.qml
+++ b/src/imports/controls/universal/ToolSeparator.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
T.ToolSeparator {
id: control
diff --git a/src/imports/controls/universal/ToolTip.qml b/src/imports/controls/universal/ToolTip.qml
index 1c7c7b69..961c38a3 100644
--- a/src/imports/controls/universal/ToolTip.qml
+++ b/src/imports/controls/universal/ToolTip.qml
@@ -34,9 +34,9 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
T.ToolTip {
id: control
diff --git a/src/imports/controls/universal/Tumbler.qml b/src/imports/controls/universal/Tumbler.qml
index f0dbc163..93f9f678 100644
--- a/src/imports/controls/universal/Tumbler.qml
+++ b/src/imports/controls/universal/Tumbler.qml
@@ -34,11 +34,11 @@
**
****************************************************************************/
-import QtQuick 2.11
-import QtQuick.Templates 2.4 as T
-import QtQuick.Controls.Universal 2.4
-import QtQuick.Controls 2.4
-import QtQuick.Controls.impl 2.4
+import QtQuick 2.12
+import QtQuick.Templates 2.5 as T
+import QtQuick.Controls.Universal 2.5
+import QtQuick.Controls 2.5
+import QtQuick.Controls.impl 2.5
T.Tumbler {
id: control
diff --git a/src/imports/controls/universal/qmldir b/src/imports/controls/universal/qmldir
index 6555626f..6870a4e1 100644
--- a/src/imports/controls/universal/qmldir
+++ b/src/imports/controls/universal/qmldir
@@ -1,4 +1,4 @@
module QtQuick.Controls.Universal
plugin qtquickcontrols2universalstyleplugin
classname QtQuickControls2UniversalStylePlugin
-depends QtQuick.Controls 2.4
+depends QtQuick.Controls 2.5
diff --git a/src/imports/controls/universal/qquickuniversaltheme.cpp b/src/imports/controls/universal/qquickuniversaltheme.cpp
index 549840b6..0f85261d 100644
--- a/src/imports/controls/universal/qquickuniversaltheme.cpp
+++ b/src/imports/controls/universal/qquickuniversaltheme.cpp
@@ -42,7 +42,10 @@
QT_BEGIN_NAMESPACE
QQuickUniversalTheme::QQuickUniversalTheme()
- : QQuickTheme(QStringLiteral("Universal"))
+{
+}
+
+void QQuickUniversalTheme::resolveFonts(const QFont &defaultFont)
{
const QFont font(QLatin1String("Segoe UI"));
if (QFontInfo(font).family() == QLatin1String("Segoe UI")) {
@@ -53,23 +56,23 @@ QQuickUniversalTheme::QQuickUniversalTheme()
}
systemFont.setPixelSize(15);
- systemFont = resolveFont(systemFont);
+ systemFont = defaultFont.resolve(systemFont);
groupBoxTitleFont.setPixelSize(15);
groupBoxTitleFont.setWeight(QFont::DemiBold);
- groupBoxTitleFont = resolveFont(groupBoxTitleFont);
+ groupBoxTitleFont = defaultFont.resolve(groupBoxTitleFont);
tabButtonFont.setPixelSize(24);
tabButtonFont.setWeight(QFont::Light);
- tabButtonFont = resolveFont(tabButtonFont);
+ tabButtonFont = defaultFont.resolve(tabButtonFont);
}
-const QFont *QQuickUniversalTheme::font(QPlatformTheme::Font type) const
+const QFont *QQuickUniversalTheme::font(Scope scope) const
{
- switch (type) {
- case QPlatformTheme::GroupBoxTitleFont:
+ switch (scope) {
+ case GroupBox:
return &groupBoxTitleFont;
- case QPlatformTheme::TabButtonFont:
+ case TabBar:
return &tabButtonFont;
default:
return &systemFont;
diff --git a/src/imports/controls/universal/qquickuniversaltheme_p.h b/src/imports/controls/universal/qquickuniversaltheme_p.h
index f15dee3e..5782ff93 100644
--- a/src/imports/controls/universal/qquickuniversaltheme_p.h
+++ b/src/imports/controls/universal/qquickuniversaltheme_p.h
@@ -49,7 +49,7 @@
//
#include <QtGui/qfont.h>
-#include <QtQuickControls2/private/qquicktheme_p.h>
+#include <QtQuickTemplates2/private/qquicktheme_p.h>
QT_BEGIN_NAMESPACE
@@ -58,7 +58,10 @@ class QQuickUniversalTheme : public QQuickTheme
public:
explicit QQuickUniversalTheme();
- const QFont *font(Font type = SystemFont) const override;
+protected:
+ const QFont *font(Scope scope) const override;
+
+ void resolveFonts(const QFont &defaultFont) override;
private:
QFont systemFont;
diff --git a/src/imports/controls/universal/qtquickcontrols2universalstyleplugin.cpp b/src/imports/controls/universal/qtquickcontrols2universalstyleplugin.cpp
index 139acab9..fa55e18a 100644
--- a/src/imports/controls/universal/qtquickcontrols2universalstyleplugin.cpp
+++ b/src/imports/controls/universal/qtquickcontrols2universalstyleplugin.cpp
@@ -63,7 +63,7 @@ public:
void registerTypes(const char *uri) override;
QString name() const override;
- QQuickProxyTheme *createTheme() const override;
+ QQuickTheme *createTheme() const override;
};
QtQuickControls2UniversalStylePlugin::QtQuickControls2UniversalStylePlugin(QObject *parent) : QQuickStylePlugin(parent)
@@ -91,10 +91,10 @@ void QtQuickControls2UniversalStylePlugin::registerTypes(const char *uri)
QString QtQuickControls2UniversalStylePlugin::name() const
{
- return QStringLiteral("universal");
+ return QStringLiteral("Universal");
}
-QQuickProxyTheme *QtQuickControls2UniversalStylePlugin::createTheme() const
+QQuickTheme *QtQuickControls2UniversalStylePlugin::createTheme() const
{
return new QQuickUniversalTheme;
}
diff --git a/src/imports/controls/universal/universal.pro b/src/imports/controls/universal/universal.pro
index c437328c..bce86bac 100644
--- a/src/imports/controls/universal/universal.pro
+++ b/src/imports/controls/universal/universal.pro
@@ -1,6 +1,6 @@
TARGET = qtquickcontrols2universalstyleplugin
TARGETPATH = QtQuick/Controls.2/Universal
-IMPORT_VERSION = 2.4
+IMPORT_VERSION = 2.5
QT += qml quick
QT_PRIVATE += core-private gui-private qml-private quick-private quicktemplates2-private quickcontrols2-private
diff --git a/src/imports/templates/doc/src/qtquicktemplates2-qmltypes.qdoc b/src/imports/templates/doc/src/qtquicktemplates2-qmltypes.qdoc
index 695156b4..01e70bb2 100644
--- a/src/imports/templates/doc/src/qtquicktemplates2-qmltypes.qdoc
+++ b/src/imports/templates/doc/src/qtquicktemplates2-qmltypes.qdoc
@@ -26,7 +26,7 @@
****************************************************************************/
/*!
- \qmlmodule QtQuick.Templates 2.4
+ \qmlmodule QtQuick.Templates 2.5
\title Qt Quick Templates 2 QML Types
\ingroup qmlmodules
\brief Provides QML types for templates (Qt Quick Templates).
@@ -38,7 +38,7 @@
\c .qml file:
\badcode
- import QtQuick.Templates 2.4 as T
+ import QtQuick.Templates 2.5 as T
\endcode
For the sake of clarity, there is a one-to-one mapping between the types
diff --git a/src/imports/templates/qtquicktemplates2plugin.cpp b/src/imports/templates/qtquicktemplates2plugin.cpp
index 72e84c3a..f565dafb 100644
--- a/src/imports/templates/qtquicktemplates2plugin.cpp
+++ b/src/imports/templates/qtquicktemplates2plugin.cpp
@@ -70,6 +70,7 @@
#include <QtQuickTemplates2/private/qquickpaletteprovider_p.h>
#include <QtQuickTemplates2/private/qquickpane_p.h>
#include <QtQuickTemplates2/private/qquickpopup_p.h>
+#include <QtQuickTemplates2/private/qquickpopupanchors_p.h>
#include <QtQuickTemplates2/private/qquickprogressbar_p.h>
#include <QtQuickTemplates2/private/qquickradiobutton_p.h>
#include <QtQuickTemplates2/private/qquickradiodelegate_p.h>
@@ -328,6 +329,18 @@ void QtQuickTemplates2Plugin::registerTypes(const char *uri)
qmlRegisterType<QQuickScrollBar, 4>(uri, 2, 4, "ScrollBar");
qmlRegisterType<QQuickScrollIndicator, 4>(uri, 2, 4, "ScrollIndicator");
qmlRegisterType<QQuickSpinBox, 4>(uri, 2, 4, "SpinBox");
+
+ // QtQuick.Templates 2.5 (new types and revisions in Qt 5.12)
+ qmlRegisterType<QQuickDialogButtonBox, 5>(uri, 2, 5, "DialogButtonBox");
+ qmlRegisterType<QQuickControl, 5>(uri, 2, 5, "Control");
+ qmlRegisterType<QQuickPopup, 5>(uri, 2, 5, "Popup");
+ qmlRegisterType<QQuickPopupAnchors>();
+ qmlRegisterType<QQuickRangeSlider, 5>(uri, 2, 5, "RangeSlider");
+ qmlRegisterType<QQuickSlider, 5>(uri, 2, 5, "Slider");
+ qmlRegisterType<QQuickTextArea, 5>(uri, 2, 5, "TextArea");
+ qmlRegisterType<QQuickTextField, 5>(uri, 2, 5, "TextField");
+ qmlRegisterType<QQuickToolTip, 5>(uri, 2, 5, "ToolTip");
+
}
QT_END_NAMESPACE
diff --git a/src/imports/templates/templates.pro b/src/imports/templates/templates.pro
index b505dceb..b132f47d 100644
--- a/src/imports/templates/templates.pro
+++ b/src/imports/templates/templates.pro
@@ -1,6 +1,6 @@
TARGET = qtquicktemplates2plugin
TARGETPATH = QtQuick/Templates.2
-IMPORT_VERSION = 2.4
+IMPORT_VERSION = 2.5
QT += qml quick
QT_PRIVATE += core-private gui-private qml-private quick-private quicktemplates2-private
diff --git a/src/quickcontrols2/qquickproxytheme.cpp b/src/quickcontrols2/qquickproxytheme.cpp
deleted file mode 100644
index 9b395b28..00000000
--- a/src/quickcontrols2/qquickproxytheme.cpp
+++ /dev/null
@@ -1,170 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the Qt Quick Controls 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 "qquickproxytheme_p.h"
-
-#include <QtGui/private/qguiapplication_p.h>
-#include <QtGui/qpixmap.h>
-#include <QtGui/qfont.h>
-
-QT_BEGIN_NAMESPACE
-
-QQuickProxyTheme::QQuickProxyTheme(QPlatformTheme *theme)
- : m_theme(theme ? theme : QGuiApplicationPrivate::platform_theme)
-{
-}
-
-QQuickProxyTheme::~QQuickProxyTheme()
-{
- if (QGuiApplicationPrivate::platform_theme == this)
- QGuiApplicationPrivate::platform_theme = m_theme;
-}
-
-QPlatformTheme *QQuickProxyTheme::theme() const
-{
- return m_theme;
-}
-
-QPlatformMenuItem *QQuickProxyTheme::createPlatformMenuItem() const
-{
- if (m_theme)
- return m_theme->createPlatformMenuItem();
- return QPlatformTheme::createPlatformMenuItem();
-}
-
-QPlatformMenu *QQuickProxyTheme::createPlatformMenu() const
-{
- if (m_theme)
- return m_theme->createPlatformMenu();
- return QPlatformTheme::createPlatformMenu();
-}
-
-QPlatformMenuBar *QQuickProxyTheme::createPlatformMenuBar() const
-{
- if (m_theme)
- return m_theme->createPlatformMenuBar();
- return QPlatformTheme::createPlatformMenuBar();
-}
-
-void QQuickProxyTheme::showPlatformMenuBar()
-{
- if (m_theme)
- m_theme->showPlatformMenuBar();
- QPlatformTheme::showPlatformMenuBar();
-}
-
-bool QQuickProxyTheme::usePlatformNativeDialog(QPlatformTheme::DialogType type) const
-{
- if (m_theme)
- return m_theme->usePlatformNativeDialog(type);
- return QPlatformTheme::usePlatformNativeDialog(type);
-}
-
-QPlatformDialogHelper *QQuickProxyTheme::createPlatformDialogHelper(QPlatformTheme::DialogType type) const
-{
- if (m_theme)
- return m_theme->createPlatformDialogHelper(type);
- return QPlatformTheme::createPlatformDialogHelper(type);
-}
-
-#ifndef QT_NO_SYSTEMTRAYICON
-QPlatformSystemTrayIcon *QQuickProxyTheme::createPlatformSystemTrayIcon() const
-{
- if (m_theme)
- return m_theme->createPlatformSystemTrayIcon();
- return QPlatformTheme::createPlatformSystemTrayIcon();
-}
-#endif
-
-const QPalette *QQuickProxyTheme::palette(QPlatformTheme::Palette type) const
-{
- if (m_theme)
- return m_theme->palette(type);
- return QPlatformTheme::palette(type);
-}
-
-const QFont *QQuickProxyTheme::font(QPlatformTheme::Font type) const
-{
- if (m_theme)
- return m_theme->font(type);
- return QPlatformTheme::font(type);
-}
-
-QVariant QQuickProxyTheme::themeHint(QPlatformTheme::ThemeHint hint) const
-{
- if (m_theme)
- return m_theme->themeHint(hint);
- return QPlatformTheme::themeHint(hint);
-}
-
-QPixmap QQuickProxyTheme::standardPixmap(QPlatformTheme::StandardPixmap sp, const QSizeF &size) const
-{
- if (m_theme)
- return m_theme->standardPixmap(sp, size);
- return QPlatformTheme::standardPixmap(sp, size);
-}
-
-QIcon QQuickProxyTheme::fileIcon(const QFileInfo &fileInfo, QPlatformTheme::IconOptions iconOptions) const
-{
- if (m_theme)
- return m_theme->fileIcon(fileInfo, iconOptions);
- return QPlatformTheme::fileIcon(fileInfo, iconOptions);
-}
-
-QIconEngine *QQuickProxyTheme::createIconEngine(const QString &iconName) const
-{
- if (m_theme)
- return m_theme->createIconEngine(iconName);
- return QPlatformTheme::createIconEngine(iconName);
-}
-
-#if QT_CONFIG(shortcut)
-QList<QKeySequence> QQuickProxyTheme::keyBindings(QKeySequence::StandardKey key) const
-{
- if (m_theme)
- return m_theme->keyBindings(key);
- return QPlatformTheme::keyBindings(key);
-}
-#endif
-
-QString QQuickProxyTheme::standardButtonText(int button) const
-{
- if (m_theme)
- return m_theme->standardButtonText(button);
- return QPlatformTheme::standardButtonText(button);
-}
-
-QT_END_NAMESPACE
diff --git a/src/quickcontrols2/qquickstyle.cpp b/src/quickcontrols2/qquickstyle.cpp
index 804b53fd..162f3526 100644
--- a/src/quickcontrols2/qquickstyle.cpp
+++ b/src/quickcontrols2/qquickstyle.cpp
@@ -101,19 +101,23 @@ QT_BEGIN_NAMESPACE
\sa {Styling Qt Quick Controls 2}
*/
-// TODO: QQmlImportDatabase::defaultImportPathList()
+static QStringList envPathList(const QByteArray &var)
+{
+ QStringList paths;
+ if (Q_UNLIKELY(!qEnvironmentVariableIsEmpty(var))) {
+ const QByteArray value = qgetenv(var);
+ paths += QString::fromLocal8Bit(value).split(QDir::listSeparator(), QString::SkipEmptyParts);
+ }
+ return paths;
+}
+
static QStringList defaultImportPathList()
{
QStringList importPaths;
importPaths.reserve(3);
importPaths += QLibraryInfo::location(QLibraryInfo::Qml2ImportsPath);
-
- if (Q_UNLIKELY(!qEnvironmentVariableIsEmpty("QML2_IMPORT_PATH"))) {
- const QByteArray envImportPath = qgetenv("QML2_IMPORT_PATH");
- importPaths += QString::fromLocal8Bit(envImportPath).split(QDir::listSeparator(), QString::SkipEmptyParts);
- }
-
- importPaths += QStringLiteral("qrc:/qt-project.org/imports");
+ importPaths += envPathList("QML2_IMPORT_PATH");
+ importPaths += QStringLiteral(":/qt-project.org/imports");
importPaths += QCoreApplication::applicationDirPath();
return importPaths;
}
@@ -256,19 +260,27 @@ struct QQuickStyleSpec
QString fallbackStyle;
QByteArray fallbackMethod;
QString configFilePath;
+ QStringList customStylePaths;
};
Q_GLOBAL_STATIC(QQuickStyleSpec, styleSpec)
-QStringList QQuickStylePrivate::stylePaths()
+QStringList QQuickStylePrivate::stylePaths(bool resolve)
{
- // system/custom style paths
+ // user-requested style path
QStringList paths;
- if (Q_UNLIKELY(!qEnvironmentVariableIsEmpty("QT_QUICK_CONTROLS_STYLE_PATH"))) {
- const QByteArray value = qgetenv("QT_QUICK_CONTROLS_STYLE_PATH");
- paths += QString::fromLocal8Bit(value).split(QDir::listSeparator(), QString::SkipEmptyParts);
+ if (resolve) {
+ QString path = styleSpec()->path();
+ if (path.endsWith(QLatin1Char('/')))
+ path.chop(1);
+ if (!path.isEmpty())
+ paths += path;
}
+ // system/custom style paths
+ paths += styleSpec()->customStylePaths;
+ paths += envPathList("QT_QUICK_CONTROLS_STYLE_PATH");
+
// built-in import paths
const QString targetPath = QStringLiteral("QtQuick/Controls.2");
const QStringList importPaths = defaultImportPathList();
@@ -278,6 +290,7 @@ QStringList QQuickStylePrivate::stylePaths()
paths += dir.absolutePath();
}
+ paths.removeDuplicates();
return paths;
}
@@ -420,9 +433,11 @@ void QQuickStyle::setFallbackStyle(const QString &style)
/*!
\since 5.9
- Returns the names of the available built-in styles.
+ Returns the names of the available styles.
\note The method must be called \b after creating an instance of QGuiApplication.
+
+ \sa stylePathList(), addStylePath()
*/
QStringList QQuickStyle::availableStyles()
{
@@ -446,4 +461,56 @@ QStringList QQuickStyle::availableStyles()
return styles;
}
+/*!
+ \since 5.12
+
+ Returns the list of directories where Qt Quick Controls 2 searches for available styles.
+
+ By default, the list contains paths specified in the \c QT_QUICK_CONTROLS_STYLE_PATH
+ environment variable, and any existing \c QtQuick/Controls.2 sub-directories in
+ \l QQmlEngine::importPathList().
+
+ \sa addStylePath(), availableStyles()
+*/
+QStringList QQuickStyle::stylePathList()
+{
+ return QQuickStylePrivate::stylePaths();
+}
+
+/*!
+ \since 5.12
+
+ Adds \a path as a directory where Qt Quick Controls 2 searches for available styles.
+
+ The \a path may be any local filesystem directory or \l {The Qt Resource System}{Qt Resource} directory.
+ For example, the following paths are all valid:
+
+ \list
+ \li \c {/path/to/styles/}
+ \li \c {file:///path/to/styles/}
+ \li \c {:/path/to/styles/}
+ \li \c {qrc:/path/to/styles/})
+ \endlist
+
+ The \a path will be converted into \l {QDir::canonicalPath}{canonical form} before it is added to
+ the style path list.
+
+ The newly added \a path will be first in the stylePathList().
+
+ \sa stylePathList(), availableStyles()
+*/
+void QQuickStyle::addStylePath(const QString &path)
+{
+ if (path.isEmpty())
+ return;
+
+ const QUrl url = QUrl(path);
+ if (url.isRelative() || url.scheme() == QLatin1String("file")
+ || (url.scheme().length() == 1 && QFile::exists(path)) ) { // windows path
+ styleSpec()->customStylePaths.prepend(QDir(path).canonicalPath());
+ } else {
+ styleSpec()->customStylePaths.prepend(path);
+ }
+}
+
QT_END_NAMESPACE
diff --git a/src/quickcontrols2/qquickstyle.h b/src/quickcontrols2/qquickstyle.h
index ab79c3e0..ce55b76b 100644
--- a/src/quickcontrols2/qquickstyle.h
+++ b/src/quickcontrols2/qquickstyle.h
@@ -51,6 +51,8 @@ public:
static void setStyle(const QString &style);
static void setFallbackStyle(const QString &style);
static QStringList availableStyles();
+ static QStringList stylePathList();
+ static void addStylePath(const QString &path);
};
QT_END_NAMESPACE
diff --git a/src/quickcontrols2/qquickstyle_p.h b/src/quickcontrols2/qquickstyle_p.h
index b92df3c2..f6034fa0 100644
--- a/src/quickcontrols2/qquickstyle_p.h
+++ b/src/quickcontrols2/qquickstyle_p.h
@@ -59,7 +59,7 @@ class QSettings;
class Q_QUICKCONTROLS2_PRIVATE_EXPORT QQuickStylePrivate
{
public:
- static QStringList stylePaths();
+ static QStringList stylePaths(bool resolve = false);
static QString fallbackStyle();
static bool isCustomStyle();
static void init(const QUrl &baseUrl);
diff --git a/src/quickcontrols2/qquickstyleplugin.cpp b/src/quickcontrols2/qquickstyleplugin.cpp
index fa8e9785..7f54c033 100644
--- a/src/quickcontrols2/qquickstyleplugin.cpp
+++ b/src/quickcontrols2/qquickstyleplugin.cpp
@@ -35,19 +35,102 @@
****************************************************************************/
#include "qquickstyleplugin_p.h"
-#include "qquickproxytheme_p.h"
#include "qquickstyle.h"
+#include "qquickstyle_p.h"
+#include <QtCore/qmetaobject.h>
+#include <QtCore/qsettings.h>
#include <QtGui/private/qguiapplication_p.h>
+#include <QtQuickTemplates2/private/qquicktheme_p_p.h>
+
+#include <functional>
QT_BEGIN_NAMESPACE
+#if QT_CONFIG(settings)
+static void readValue(const QSharedPointer<QSettings> &settings, const QString &name, std::function<void(const QVariant &)> setValue)
+{
+ const QVariant var = settings->value(name);
+ if (var.isValid())
+ setValue(var);
+}
+
+template <typename Enum>
+static Enum toEnumValue(const QVariant &var)
+{
+ // ### TODO: expose QFont enums to the meta object system using Q_ENUM
+ //QMetaEnum enumeration = QMetaEnum::fromType<Enum>();
+ //bool ok = false;
+ //int value = enumeration.keyToValue(var.toByteArray(), &ok);
+ //if (!ok)
+ // value = var.toInt();
+ //return static_cast<Enum>(value);
+
+ return static_cast<Enum>(var.toInt());
+}
+
+static const QFont *readFont(const QSharedPointer<QSettings> &settings)
+{
+ const QVariant var = settings->value(QStringLiteral("Font"));
+ if (var.isValid())
+ return new QFont(var.value<QFont>());
+
+ QFont f;
+ settings->beginGroup(QStringLiteral("Font"));
+ readValue(settings, QStringLiteral("Family"), [&f](const QVariant &var) { f.setFamily(var.toString()); });
+ readValue(settings, QStringLiteral("PointSize"), [&f](const QVariant &var) { f.setPointSizeF(var.toReal()); });
+ readValue(settings, QStringLiteral("PixelSize"), [&f](const QVariant &var) { f.setPixelSize(var.toInt()); });
+ readValue(settings, QStringLiteral("StyleHint"), [&f](const QVariant &var) { f.setStyleHint(toEnumValue<QFont::StyleHint>(var.toInt())); });
+ readValue(settings, QStringLiteral("Weight"), [&f](const QVariant &var) { f.setWeight(toEnumValue<QFont::Weight>(var)); });
+ readValue(settings, QStringLiteral("Style"), [&f](const QVariant &var) { f.setStyle(toEnumValue<QFont::Style>(var.toInt())); });
+ settings->endGroup();
+ return new QFont(f);
+}
+
+static void readColorGroup(const QSharedPointer<QSettings> &settings, QPalette::ColorGroup group, QPalette *palette)
+{
+ const QStringList keys = settings->childKeys();
+ if (keys.isEmpty())
+ return;
+
+ static const int index = QPalette::staticMetaObject.indexOfEnumerator("ColorRole");
+ Q_ASSERT(index != -1);
+ QMetaEnum metaEnum = QPalette::staticMetaObject.enumerator(index);
+
+ for (const QString &key : keys) {
+ bool ok = false;
+ int role = metaEnum.keyToValue(key.toUtf8(), &ok);
+ if (ok)
+ palette->setColor(group, static_cast<QPalette::ColorRole>(role), settings->value(key).value<QColor>());
+ }
+}
+
+static const QPalette *readPalette(const QSharedPointer<QSettings> &settings)
+{
+ QPalette p;
+ settings->beginGroup(QStringLiteral("Palette"));
+ readColorGroup(settings, QPalette::All, &p);
+
+ settings->beginGroup(QStringLiteral("Normal"));
+ readColorGroup(settings, QPalette::Normal, &p);
+ settings->endGroup();
+
+ settings->beginGroup(QStringLiteral("Disabled"));
+ readColorGroup(settings, QPalette::Disabled, &p);
+ settings->endGroup();
+ return new QPalette(p);
+}
+
+#endif // QT_CONFIG(settings)
+
QQuickStylePlugin::QQuickStylePlugin(QObject *parent) : QQmlExtensionPlugin(parent)
{
}
QQuickStylePlugin::~QQuickStylePlugin()
{
+ if (QQuickTheme::current() == m_theme)
+ QQuickTheme::setCurrent(nullptr);
}
void QQuickStylePlugin::registerTypes(const char *uri)
@@ -60,15 +143,24 @@ void QQuickStylePlugin::initializeEngine(QQmlEngine *engine, const char *uri)
Q_UNUSED(engine);
Q_UNUSED(uri);
- // make sure not to re-create the proxy theme if initializeEngine()
+ // make sure not to re-create the theme if initializeEngine()
// is called multiple times, like in case of qml2puppet (QTBUG-54995)
- if (!m_theme.isNull())
+ if (m_theme)
return;
if (isCurrent()) {
- m_theme.reset(createTheme());
- if (m_theme)
- QGuiApplicationPrivate::platform_theme = m_theme.data();
+ m_theme = createTheme();
+ if (m_theme) {
+#if QT_CONFIG(settings)
+ QQuickThemePrivate *p = QQuickThemePrivate::get(m_theme);
+ QSharedPointer<QSettings> settings = QQuickStylePrivate::settings(name());
+ if (settings) {
+ p->defaultFont.reset(readFont(settings));
+ p->defaultPalette.reset(readPalette(settings));
+ }
+#endif
+ QQuickTheme::setCurrent(m_theme);
+ }
}
}
@@ -87,7 +179,7 @@ QString QQuickStylePlugin::name() const
return QString();
}
-QQuickProxyTheme *QQuickStylePlugin::createTheme() const
+QQuickTheme *QQuickStylePlugin::createTheme() const
{
return nullptr;
}
diff --git a/src/quickcontrols2/qquickstyleplugin_p.h b/src/quickcontrols2/qquickstyleplugin_p.h
index 9457b472..771a07e2 100644
--- a/src/quickcontrols2/qquickstyleplugin_p.h
+++ b/src/quickcontrols2/qquickstyleplugin_p.h
@@ -48,13 +48,12 @@
// We mean it.
//
-#include <QtCore/qscopedpointer.h>
#include <QtQml/qqmlextensionplugin.h>
#include <QtQuickControls2/private/qtquickcontrols2global_p.h>
QT_BEGIN_NAMESPACE
-class QQuickProxyTheme;
+class QQuickTheme;
class Q_QUICKCONTROLS2_PRIVATE_EXPORT QQuickStylePlugin : public QQmlExtensionPlugin
{
@@ -69,12 +68,12 @@ public:
bool isCurrent() const;
virtual QString name() const;
- virtual QQuickProxyTheme *createTheme() const;
+ virtual QQuickTheme *createTheme() const;
QUrl typeUrl(const QString &name = QString()) const;
private:
- QScopedPointer<QQuickProxyTheme> m_theme;
+ QQuickTheme *m_theme = nullptr;
};
QT_END_NAMESPACE
diff --git a/src/quickcontrols2/qquickstyleselector.cpp b/src/quickcontrols2/qquickstyleselector.cpp
index d5543c17..d11a95bd 100644
--- a/src/quickcontrols2/qquickstyleselector.cpp
+++ b/src/quickcontrols2/qquickstyleselector.cpp
@@ -40,33 +40,19 @@
#include "qquickstyleselector_p.h"
#include "qquickstyleselector_p_p.h"
-#include "qquickstyle.h"
-#include "qquickstyle_p.h"
-#include <QtCore/qdir.h>
-#include <QtCore/qfile.h>
#include <QtCore/qfileinfo.h>
-#include <QtCore/qsysinfo.h>
#include <QtCore/qlocale.h>
-#include <QtQml/qqmlfile.h>
-
+#include <QtCore/qloggingcategory.h>
#include <QtCore/private/qfileselector_p.h>
-#include <QtGui/private/qguiapplication_p.h>
QT_BEGIN_NAMESPACE
-static bool isLocalScheme(const QString &scheme)
-{
- bool local = scheme == QLatin1String("qrc");
-#ifdef Q_OS_ANDROID
- local |= scheme == QLatin1String("assets");
-#endif
- return local;
-}
+Q_LOGGING_CATEGORY(lcQtQuickControlsStyle, "qt.quick.controls.style")
static QString ensureSlash(const QString &path)
{
- if (path.endsWith(QLatin1Char('/')))
+ if (path.isEmpty() || path.endsWith(QLatin1Char('/')))
return path;
return path + QLatin1Char('/');
}
@@ -79,105 +65,93 @@ static QStringList prefixedPlatformSelectors(const QChar &prefix)
return selectors;
}
-static QStringList allSelectors(const QString &style = QString())
+static QStringList allSelectors()
{
static const QStringList platformSelectors = prefixedPlatformSelectors(QLatin1Char('+'));
QStringList selectors = platformSelectors;
const QString locale = QLocale().name();
if (!locale.isEmpty())
selectors += QLatin1Char('+') + locale;
- if (!style.isEmpty())
- selectors.prepend(style);
return selectors;
}
-QString QQuickStyleSelectorPrivate::select(const QString &filePath) const
+QUrl QQuickStyleSelectorPrivate::select(const QString &filePath) const
{
QFileInfo fi(filePath);
// If file doesn't exist, don't select
if (!fi.exists())
- return filePath;
+ return QUrl();
- const QString path = fi.path();
- const QString ret = QFileSelectorPrivate::selectionHelper(path.isEmpty() ? QString() : path + QLatin1Char('/'),
- fi.fileName(), allSelectors(styleName), QChar());
+ const QString selected = QFileSelectorPrivate::selectionHelper(ensureSlash(fi.canonicalPath()),
+ fi.fileName(), allSelectors(), QChar());
- if (!ret.isEmpty())
- return ret;
- return filePath;
-}
+ if (selected.startsWith(QLatin1Char(':')))
+ return QUrl(QLatin1String("qrc") + selected);
-QString QQuickStyleSelectorPrivate::trySelect(const QString &filePath, const QString &fallback) const
-{
- QFileInfo fi(filePath);
- if (!fi.exists())
- return fallback;
-
- // the path contains the name of the custom/fallback style, so exclude it from
- // the selectors. the rest of the selectors (os, locale) are still valid, though.
- const QString path = fi.path();
- const QString selectedPath = QFileSelectorPrivate::selectionHelper(path.isEmpty() ? QString() : path + QLatin1Char('/'),
- fi.fileName(), allSelectors(), QChar());
- if (selectedPath.startsWith(QLatin1Char(':')))
- return QLatin1String("qrc") + selectedPath;
- return QUrl::fromLocalFile(QFileInfo(selectedPath).absoluteFilePath()).toString();
+ return QUrl::fromLocalFile(selected.isEmpty() ? filePath : selected);
}
QQuickStyleSelector::QQuickStyleSelector() : d_ptr(new QQuickStyleSelectorPrivate)
{
- Q_D(QQuickStyleSelector);
- d->styleName = QQuickStyle::name();
- d->stylePath = QQuickStyle::path();
}
QQuickStyleSelector::~QQuickStyleSelector()
{
}
-QUrl QQuickStyleSelector::baseUrl() const
+QStringList QQuickStyleSelector::selectors() const
{
Q_D(const QQuickStyleSelector);
- return d->baseUrl;
+ return d->selectors;
}
-void QQuickStyleSelector::setBaseUrl(const QUrl &url)
+void QQuickStyleSelector::addSelector(const QString &selector)
{
Q_D(QQuickStyleSelector);
- d->baseUrl = url;
- d->basePath = QQmlFile::urlToLocalFileOrQrc(url.toString(QUrl::StripTrailingSlash) + QLatin1Char('/'));
+ if (d->selectors.contains(selector))
+ return;
+
+ d->selectors += selector;
}
-QString QQuickStyleSelector::select(const QString &fileName) const
+QStringList QQuickStyleSelector::paths() const
{
Q_D(const QQuickStyleSelector);
+ return d->paths;
+}
- // 1) try selecting from a custom style path, for example ":/mystyle"
- if (QQuickStylePrivate::isCustomStyle()) {
- // NOTE: this path may contain a subset of controls
- const QString selectedPath = d->trySelect(ensureSlash(d->stylePath) + d->styleName + QLatin1Char('/') + fileName);
- if (!selectedPath.isEmpty())
- return selectedPath;
- }
+void QQuickStyleSelector::setPaths(const QStringList &paths)
+{
+ Q_D(QQuickStyleSelector);
+ d->paths = paths;
+}
- // 2) try selecting from the fallback style path, for example QT_INSTALL_QML/QtQuick/Controls.2/Material
- const QString fallbackStyle = QQuickStylePrivate::fallbackStyle();
- if (!fallbackStyle.isEmpty()) {
- // NOTE: this path may also contain a subset of controls
- const QString selectedPath = d->trySelect(ensureSlash(d->basePath) + fallbackStyle + QLatin1Char('/') + fileName);
- if (!selectedPath.isEmpty())
- return selectedPath;
+QUrl QQuickStyleSelector::select(const QString &fileName) const
+{
+ Q_D(const QQuickStyleSelector);
+ // The lookup order is
+ // 1) requested style (e.g. "MyStyle", included in d->selectors)
+ // 2) fallback style (e.g. "Material", included in d->selectors)
+ // 3) default style (empty selector, not in d->selectors)
+ qCDebug(lcQtQuickControlsStyle) << "selecting" << fileName << "from" << d->paths << "with selectors" << d->selectors;
+
+ int to = d->selectors.count() - 1;
+ if (d->selectors.isEmpty() || !d->selectors.first().isEmpty())
+ ++to; // lookup #3 unless #1 is also empty (redundant)
+
+ // NOTE: last iteration intentionally out of bounds => empty selector
+ for (int i = 0; i <= to; ++i) {
+ const QString selector = d->selectors.value(i);
+ for (const QString &path : d->paths) {
+ const QUrl selectedUrl = d->select(ensureSlash(path) + selector + QLatin1Char('/') + fileName);
+ if (selectedUrl.isValid()) {
+ qCDebug(lcQtQuickControlsStyle) << "==>" << selectedUrl << "from" << path << "with selector" << selector;
+ return selectedUrl;
+ }
+ }
}
- // 3) fallback to the default style that is guaranteed to contain all controls
- QUrl url(ensureSlash(d->baseUrl.toString()) + fileName);
- if (isLocalScheme(url.scheme())) {
- QString equivalentPath = QLatin1Char(':') + url.path();
- QString selectedPath = d->select(equivalentPath);
- url.setPath(selectedPath.remove(0, 1));
- } else if (url.isLocalFile()) {
- url = QUrl::fromLocalFile(d->select(url.toLocalFile()));
- }
- return url.toString(QUrl::NormalizePathSegments);
+ return fileName;
}
QT_END_NAMESPACE
diff --git a/src/quickcontrols2/qquickstyleselector_p.h b/src/quickcontrols2/qquickstyleselector_p.h
index 29dba836..c4c0f540 100644
--- a/src/quickcontrols2/qquickstyleselector_p.h
+++ b/src/quickcontrols2/qquickstyleselector_p.h
@@ -67,10 +67,13 @@ public:
QQuickStyleSelector();
~QQuickStyleSelector();
- QUrl baseUrl() const;
- void setBaseUrl(const QUrl &url);
+ QStringList selectors() const;
+ void addSelector(const QString &selector);
- QString select(const QString &fileName) const;
+ QStringList paths() const;
+ void setPaths(const QStringList &paths);
+
+ QUrl select(const QString &fileName) const;
private:
Q_DISABLE_COPY(QQuickStyleSelector)
diff --git a/src/quickcontrols2/qquickstyleselector_p_p.h b/src/quickcontrols2/qquickstyleselector_p_p.h
index e940cd87..e69e7db2 100644
--- a/src/quickcontrols2/qquickstyleselector_p_p.h
+++ b/src/quickcontrols2/qquickstyleselector_p_p.h
@@ -59,13 +59,10 @@ QT_BEGIN_NAMESPACE
class QQuickStyleSelectorPrivate
{
public:
- QString select(const QString &filePath) const;
- QString trySelect(const QString &filePath, const QString &fallback = QString()) const;
+ QUrl select(const QString &filePath) const;
- QUrl baseUrl;
- QString basePath;
- QString styleName;
- QString stylePath;
+ QStringList paths;
+ QStringList selectors;
};
QT_END_NAMESPACE
diff --git a/src/quickcontrols2/qquicktheme.cpp b/src/quickcontrols2/qquicktheme.cpp
deleted file mode 100644
index 3643e975..00000000
--- a/src/quickcontrols2/qquicktheme.cpp
+++ /dev/null
@@ -1,165 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2017 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the Qt Quick Controls 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 "qquicktheme_p.h"
-#include "qquickstyle_p.h"
-
-#include <QtCore/qmetaobject.h>
-#include <QtCore/qsettings.h>
-
-#include <functional>
-
-QT_BEGIN_NAMESPACE
-
-#if QT_CONFIG(settings)
-static void readValue(const QSharedPointer<QSettings> &settings, const QString &name, std::function<void(const QVariant &)> setValue)
-{
- const QVariant var = settings->value(name);
- if (var.isValid())
- setValue(var);
-}
-
-template <typename Enum>
-static Enum toEnumValue(const QVariant &var)
-{
- // ### TODO: expose QFont enums to the meta object system using Q_ENUM
- //QMetaEnum enumeration = QMetaEnum::fromType<Enum>();
- //bool ok = false;
- //int value = enumeration.keyToValue(var.toByteArray(), &ok);
- //if (!ok)
- // value = var.toInt();
- //return static_cast<Enum>(value);
-
- return static_cast<Enum>(var.toInt());
-}
-
-QFont *readFont(const QSharedPointer<QSettings> &settings)
-{
- const QVariant var = settings->value(QStringLiteral("Font"));
- if (var.isValid())
- return new QFont(var.value<QFont>());
-
- QFont f;
- settings->beginGroup(QStringLiteral("Font"));
- readValue(settings, QStringLiteral("Family"), [&f](const QVariant &var) { f.setFamily(var.toString()); });
- readValue(settings, QStringLiteral("PointSize"), [&f](const QVariant &var) { f.setPointSizeF(var.toReal()); });
- readValue(settings, QStringLiteral("PixelSize"), [&f](const QVariant &var) { f.setPixelSize(var.toInt()); });
- readValue(settings, QStringLiteral("StyleHint"), [&f](const QVariant &var) { f.setStyleHint(toEnumValue<QFont::StyleHint>(var.toInt())); });
- readValue(settings, QStringLiteral("Weight"), [&f](const QVariant &var) { f.setWeight(toEnumValue<QFont::Weight>(var)); });
- readValue(settings, QStringLiteral("Style"), [&f](const QVariant &var) { f.setStyle(toEnumValue<QFont::Style>(var.toInt())); });
- settings->endGroup();
- return new QFont(f);
-}
-
-static void readColorGroup(const QSharedPointer<QSettings> &settings, QPalette::ColorGroup group, QPalette *palette)
-{
- const QStringList keys = settings->childKeys();
- if (keys.isEmpty())
- return;
-
- static const int index = QPalette::staticMetaObject.indexOfEnumerator("ColorRole");
- Q_ASSERT(index != -1);
- QMetaEnum metaEnum = QPalette::staticMetaObject.enumerator(index);
-
- for (const QString &key : keys) {
- bool ok = false;
- int role = metaEnum.keyToValue(key.toUtf8(), &ok);
- if (ok)
- palette->setColor(group, static_cast<QPalette::ColorRole>(role), settings->value(key).value<QColor>());
- }
-}
-
-static QPalette *readPalette(const QSharedPointer<QSettings> &settings)
-{
- QPalette p;
- settings->beginGroup(QStringLiteral("Palette"));
- readColorGroup(settings, QPalette::All, &p);
-
- settings->beginGroup(QStringLiteral("Normal"));
- readColorGroup(settings, QPalette::Normal, &p);
- settings->endGroup();
-
- settings->beginGroup(QStringLiteral("Disabled"));
- readColorGroup(settings, QPalette::Disabled, &p);
- settings->endGroup();
- return new QPalette(p);
-}
-
-#endif // QT_CONFIG(settings)
-
-QQuickTheme::QQuickTheme(const QString &style)
- : QQuickProxyTheme()
-{
-#if QT_CONFIG(settings)
- QSharedPointer<QSettings> settings = QQuickStylePrivate::settings(style);
- if (settings) {
- m_styleFont.reset(readFont(settings));
- m_stylePalette.reset(readPalette(settings));
- }
-#endif
-}
-
-const QFont *QQuickTheme::font(Font type) const
-{
- if (m_styleFont)
- return m_styleFont.data();
- return QQuickProxyTheme::font(type);
-}
-
-const QPalette *QQuickTheme::palette(Palette type) const
-{
- if (m_stylePalette)
- return m_stylePalette.data();
- return QQuickProxyTheme::palette(type);
-}
-
-QFont QQuickTheme::resolveFont(const QFont &font) const
-{
- if (!m_styleFont)
- return font;
-
- return m_styleFont->resolve(font);
-}
-
-QPalette QQuickTheme::resolvePalette(const QPalette &palette) const
-{
- if (!m_stylePalette)
- return palette;
-
- return m_stylePalette->resolve(palette);
-}
-
-QT_END_NAMESPACE
diff --git a/src/quickcontrols2/quickcontrols2.pri b/src/quickcontrols2/quickcontrols2.pri
index ac20b78d..781658ef 100644
--- a/src/quickcontrols2/quickcontrols2.pri
+++ b/src/quickcontrols2/quickcontrols2.pri
@@ -13,13 +13,11 @@ HEADERS += \
$$PWD/qquickmnemoniclabel_p.h \
$$PWD/qquickpaddedrectangle_p.h \
$$PWD/qquickplaceholdertext_p.h \
- $$PWD/qquickproxytheme_p.h \
$$PWD/qquickstyle.h \
$$PWD/qquickstyle_p.h \
$$PWD/qquickstyleplugin_p.h \
$$PWD/qquickstyleselector_p.h \
- $$PWD/qquickstyleselector_p_p.h \
- $$PWD/qquicktheme_p.h
+ $$PWD/qquickstyleselector_p_p.h
SOURCES += \
$$PWD/qquickanimatednode.cpp \
@@ -34,11 +32,9 @@ SOURCES += \
$$PWD/qquickmnemoniclabel.cpp \
$$PWD/qquickpaddedrectangle.cpp \
$$PWD/qquickplaceholdertext.cpp \
- $$PWD/qquickproxytheme.cpp \
$$PWD/qquickstyle.cpp \
$$PWD/qquickstyleplugin.cpp \
- $$PWD/qquickstyleselector.cpp \
- $$PWD/qquicktheme.cpp
+ $$PWD/qquickstyleselector.cpp
qtConfig(quick-listview):qtConfig(quick-pathview) {
HEADERS += \
diff --git a/src/quicktemplates2/qquickapplicationwindow.cpp b/src/quicktemplates2/qquickapplicationwindow.cpp
index 77cf5465..97624b9d 100644
--- a/src/quicktemplates2/qquickapplicationwindow.cpp
+++ b/src/quicktemplates2/qquickapplicationwindow.cpp
@@ -35,6 +35,7 @@
****************************************************************************/
#include "qquickapplicationwindow_p.h"
+#include "qquickcontentitem_p.h"
#include "qquickoverlay_p.h"
#include "qquickpopup_p_p.h"
#include "qquickcontrol_p_p.h"
@@ -274,7 +275,7 @@ void QQuickApplicationWindowPrivate::updateFont(const QFont &f)
void QQuickApplicationWindowPrivate::resolveFont()
{
- QFont resolvedFont = font.resolve(QQuickControlPrivate::themeFont(QPlatformTheme::SystemFont));
+ QFont resolvedFont = font.resolve(QQuickTheme::themeFont(QQuickTheme::System));
setFont_helper(resolvedFont);
}
@@ -296,7 +297,7 @@ void QQuickApplicationWindowPrivate::updatePalette(const QPalette &p)
void QQuickApplicationWindowPrivate::resolvePalette()
{
- QPalette resolvedPalette = palette.resolve(QQuickControlPrivate::themePalette(QPlatformTheme::SystemPalette));
+ QPalette resolvedPalette = palette.resolve(QQuickTheme::themePalette(QQuickTheme::System));
setPalette_helper(resolvedPalette);
}
@@ -584,7 +585,7 @@ QQuickItem *QQuickApplicationWindow::contentItem() const
{
QQuickApplicationWindowPrivate *d = const_cast<QQuickApplicationWindowPrivate *>(d_func());
if (!d->contentItem) {
- d->contentItem = new QQuickItem(QQuickWindow::contentItem());
+ d->contentItem = new QQuickContentItem(QStringLiteral("ApplicationWindow"), QQuickWindow::contentItem());
d->contentItem->setFlag(QQuickItem::ItemIsFocusScope);
d->contentItem->setFocus(true);
d->relayout();
@@ -691,7 +692,7 @@ void QQuickApplicationWindow::setFont(const QFont &font)
if (d->font.resolve() == font.resolve() && d->font == font)
return;
- QFont resolvedFont = font.resolve(QQuickControlPrivate::themeFont(QPlatformTheme::SystemFont));
+ QFont resolvedFont = font.resolve(QQuickTheme::themeFont(QQuickTheme::System));
d->setFont_helper(resolvedFont);
}
@@ -770,7 +771,7 @@ void QQuickApplicationWindow::setPalette(const QPalette &palette)
if (d->palette.resolve() == palette.resolve() && d->palette == palette)
return;
- QPalette resolvedPalette = palette.resolve(QQuickControlPrivate::themePalette(QPlatformTheme::SystemPalette));
+ QPalette resolvedPalette = palette.resolve(QQuickTheme::themePalette(QQuickTheme::System));
d->setPalette_helper(resolvedPalette);
}
diff --git a/src/quicktemplates2/qquickbutton.cpp b/src/quicktemplates2/qquickbutton.cpp
index a1bea792..ce8cede7 100644
--- a/src/quicktemplates2/qquickbutton.cpp
+++ b/src/quicktemplates2/qquickbutton.cpp
@@ -102,12 +102,12 @@ QQuickButton::QQuickButton(QQuickButtonPrivate &dd, QQuickItem *parent)
QFont QQuickButton::defaultFont() const
{
- return QQuickControlPrivate::themeFont(QPlatformTheme::PushButtonFont);
+ return QQuickTheme::themeFont(QQuickTheme::Button);
}
QPalette QQuickButton::defaultPalette() const
{
- return QQuickControlPrivate::themePalette(QPlatformTheme::ButtonPalette);
+ return QQuickTheme::themePalette(QQuickTheme::Button);
}
/*!
diff --git a/src/quicktemplates2/qquickcheckbox.cpp b/src/quicktemplates2/qquickcheckbox.cpp
index c6519338..cb2e62e7 100644
--- a/src/quicktemplates2/qquickcheckbox.cpp
+++ b/src/quicktemplates2/qquickcheckbox.cpp
@@ -189,12 +189,12 @@ void QQuickCheckBox::setCheckState(Qt::CheckState state)
QFont QQuickCheckBox::defaultFont() const
{
- return QQuickControlPrivate::themeFont(QPlatformTheme::CheckBoxFont);
+ return QQuickTheme::themeFont(QQuickTheme::CheckBox);
}
QPalette QQuickCheckBox::defaultPalette() const
{
- return QQuickControlPrivate::themePalette(QPlatformTheme::CheckBoxPalette);
+ return QQuickTheme::themePalette(QQuickTheme::CheckBox);
}
void QQuickCheckBox::buttonChange(ButtonChange change)
diff --git a/src/quicktemplates2/qquickcheckdelegate.cpp b/src/quicktemplates2/qquickcheckdelegate.cpp
index b53877df..35de80ec 100644
--- a/src/quicktemplates2/qquickcheckdelegate.cpp
+++ b/src/quicktemplates2/qquickcheckdelegate.cpp
@@ -176,7 +176,12 @@ void QQuickCheckDelegate::setCheckState(Qt::CheckState state)
QFont QQuickCheckDelegate::defaultFont() const
{
- return QQuickControlPrivate::themeFont(QPlatformTheme::ListViewFont);
+ return QQuickTheme::themeFont(QQuickTheme::ListView);
+}
+
+QPalette QQuickCheckDelegate::defaultPalette() const
+{
+ return QQuickTheme::themePalette(QQuickTheme::ListView);
}
void QQuickCheckDelegate::buttonChange(ButtonChange change)
diff --git a/src/quicktemplates2/qquickcheckdelegate_p.h b/src/quicktemplates2/qquickcheckdelegate_p.h
index 67dcf706..2d5a5cb2 100644
--- a/src/quicktemplates2/qquickcheckdelegate_p.h
+++ b/src/quicktemplates2/qquickcheckdelegate_p.h
@@ -79,6 +79,7 @@ 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 d992c649..1238ec08 100644
--- a/src/quicktemplates2/qquickcombobox.cpp
+++ b/src/quicktemplates2/qquickcombobox.cpp
@@ -1703,12 +1703,12 @@ void QQuickComboBox::localeChange(const QLocale &newLocale, const QLocale &oldLo
QFont QQuickComboBox::defaultFont() const
{
- return QQuickControlPrivate::themeFont(QPlatformTheme::ComboMenuItemFont);
+ return QQuickTheme::themeFont(QQuickTheme::ComboBox);
}
QPalette QQuickComboBox::defaultPalette() const
{
- return QQuickControlPrivate::themePalette(QPlatformTheme::ComboBoxPalette);
+ return QQuickTheme::themePalette(QQuickTheme::ComboBox);
}
#if QT_CONFIG(accessibility)
diff --git a/src/quicktemplates2/qquickcontentitem.cpp b/src/quicktemplates2/qquickcontentitem.cpp
new file mode 100644
index 00000000..286e7209
--- /dev/null
+++ b/src/quicktemplates2/qquickcontentitem.cpp
@@ -0,0 +1,53 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 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 "qquickcontentitem_p.h"
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \internal
+
+ Helper class that aids debugging by producing more useful debugging output.
+*/
+
+QQuickContentItem::QQuickContentItem(const QString &objectName, QQuickItem *parent)
+ : QQuickItem(parent)
+{
+ setObjectName(objectName);
+}
+
+QT_END_NAMESPACE
diff --git a/src/quicktemplates2/qquickcontentitem_p.h b/src/quicktemplates2/qquickcontentitem_p.h
new file mode 100644
index 00000000..3babc7bb
--- /dev/null
+++ b/src/quicktemplates2/qquickcontentitem_p.h
@@ -0,0 +1,69 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 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 QQUICKCONTENTITEM_P_H
+#define QQUICKCONTENTITEM_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 <QtQuick/qquickitem.h>
+#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h>
+
+QT_BEGIN_NAMESPACE
+
+class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickContentItem : public QQuickItem
+{
+ Q_OBJECT
+
+public:
+ explicit QQuickContentItem(const QString &objectName, QQuickItem *parent = nullptr);
+
+private:
+ Q_DISABLE_COPY(QQuickContentItem)
+};
+
+QT_END_NAMESPACE
+
+#endif // QQUICKCONTENTITEM_P_H
diff --git a/src/quicktemplates2/qquickcontrol.cpp b/src/quicktemplates2/qquickcontrol.cpp
index 9f796a70..fd206eea 100644
--- a/src/quicktemplates2/qquickcontrol.cpp
+++ b/src/quicktemplates2/qquickcontrol.cpp
@@ -50,9 +50,6 @@
#include "qquickapplicationwindow_p.h"
#include "qquickdeferredexecute_p_p.h"
-#include <QtGui/private/qguiapplication_p.h>
-#include <QtGui/qpa/qplatformtheme.h>
-
#if QT_CONFIG(accessibility)
#include <QtQuick/private/qquickaccessibleattached_p.h>
#endif
@@ -106,14 +103,20 @@ static bool isKeyFocusReason(Qt::FocusReason reason)
}
QQuickControlPrivate::ExtraData::ExtraData()
-{
-}
-
-QQuickControlPrivate::QQuickControlPrivate()
: hasTopPadding(false),
hasLeftPadding(false),
hasRightPadding(false),
hasBottomPadding(false),
+ topPadding(0),
+ leftPadding(0),
+ rightPadding(0),
+ bottomPadding(0)
+{
+}
+
+QQuickControlPrivate::QQuickControlPrivate()
+ : hasHorizontalPadding(false),
+ hasVerticalPadding(false),
hasLocale(false),
wheelEnabled(false),
#if QT_CONFIG(quicktemplates2_hover)
@@ -122,10 +125,8 @@ QQuickControlPrivate::QQuickControlPrivate()
#endif
touchId(-1),
padding(0),
- topPadding(0),
- leftPadding(0),
- rightPadding(0),
- bottomPadding(0),
+ horizontalPadding(0),
+ verticalPadding(0),
spacing(0),
focusPolicy(Qt::NoFocus),
focusReason(Qt::OtherFocusReason),
@@ -207,56 +208,90 @@ void QQuickControlPrivate::mirrorChange()
void QQuickControlPrivate::setTopPadding(qreal value, bool reset)
{
Q_Q(QQuickControl);
- qreal oldPadding = q->topPadding();
- topPadding = value;
- hasTopPadding = !reset;
- if ((!reset && !qFuzzyCompare(oldPadding, value)) || (reset && !qFuzzyCompare(oldPadding, padding))) {
+ const QMarginsF oldPadding = getPadding();
+ extra.value().topPadding = value;
+ extra.value().hasTopPadding = !reset;
+ if ((!reset && !qFuzzyCompare(oldPadding.top(), value)) || (reset && !qFuzzyCompare(oldPadding.top(), getVerticalPadding()))) {
emit q->topPaddingChanged();
emit q->availableHeightChanged();
- q->paddingChange(QMarginsF(leftPadding, topPadding, rightPadding, bottomPadding),
- QMarginsF(leftPadding, oldPadding, rightPadding, bottomPadding));
+ q->paddingChange(getPadding(), oldPadding);
}
}
void QQuickControlPrivate::setLeftPadding(qreal value, bool reset)
{
Q_Q(QQuickControl);
- qreal oldPadding = q->leftPadding();
- leftPadding = value;
- hasLeftPadding = !reset;
- if ((!reset && !qFuzzyCompare(oldPadding, value)) || (reset && !qFuzzyCompare(oldPadding, padding))) {
+ const QMarginsF oldPadding = getPadding();
+ extra.value().leftPadding = value;
+ extra.value().hasLeftPadding = !reset;
+ if ((!reset && !qFuzzyCompare(oldPadding.left(), value)) || (reset && !qFuzzyCompare(oldPadding.left(), getHorizontalPadding()))) {
emit q->leftPaddingChanged();
emit q->availableWidthChanged();
- q->paddingChange(QMarginsF(leftPadding, topPadding, rightPadding, bottomPadding),
- QMarginsF(oldPadding, topPadding, rightPadding, bottomPadding));
+ q->paddingChange(getPadding(), oldPadding);
}
}
void QQuickControlPrivate::setRightPadding(qreal value, bool reset)
{
Q_Q(QQuickControl);
- qreal oldPadding = q->rightPadding();
- rightPadding = value;
- hasRightPadding = !reset;
- if ((!reset && !qFuzzyCompare(oldPadding, value)) || (reset && !qFuzzyCompare(oldPadding, padding))) {
+ const QMarginsF oldPadding = getPadding();
+ extra.value().rightPadding = value;
+ extra.value().hasRightPadding = !reset;
+ if ((!reset && !qFuzzyCompare(oldPadding.right(), value)) || (reset && !qFuzzyCompare(oldPadding.right(), getHorizontalPadding()))) {
emit q->rightPaddingChanged();
emit q->availableWidthChanged();
- q->paddingChange(QMarginsF(leftPadding, topPadding, rightPadding, bottomPadding),
- QMarginsF(leftPadding, topPadding, oldPadding, bottomPadding));
+ q->paddingChange(getPadding(), oldPadding);
}
}
void QQuickControlPrivate::setBottomPadding(qreal value, bool reset)
{
Q_Q(QQuickControl);
- qreal oldPadding = q->bottomPadding();
- bottomPadding = value;
- hasBottomPadding = !reset;
- if ((!reset && !qFuzzyCompare(oldPadding, value)) || (reset && !qFuzzyCompare(oldPadding, padding))) {
+ const QMarginsF oldPadding = getPadding();
+ extra.value().bottomPadding = value;
+ extra.value().hasBottomPadding = !reset;
+ if ((!reset && !qFuzzyCompare(oldPadding.bottom(), value)) || (reset && !qFuzzyCompare(oldPadding.bottom(), getVerticalPadding()))) {
emit q->bottomPaddingChanged();
emit q->availableHeightChanged();
- q->paddingChange(QMarginsF(leftPadding, topPadding, rightPadding, bottomPadding),
- QMarginsF(leftPadding, topPadding, rightPadding, oldPadding));
+ q->paddingChange(getPadding(), oldPadding);
+ }
+}
+
+void QQuickControlPrivate::setHorizontalPadding(qreal value, bool reset)
+{
+ Q_Q(QQuickControl);
+ const QMarginsF oldPadding = getPadding();
+ const qreal oldHorizontalPadding = getHorizontalPadding();
+ horizontalPadding = value;
+ hasHorizontalPadding = !reset;
+ if ((!reset && !qFuzzyCompare(oldHorizontalPadding, value)) || (reset && !qFuzzyCompare(oldHorizontalPadding, padding))) {
+ const QMarginsF newPadding = getPadding();
+ if (!qFuzzyCompare(newPadding.left(), oldPadding.left()))
+ emit q->leftPaddingChanged();
+ if (!qFuzzyCompare(newPadding.right(), oldPadding.right()))
+ emit q->rightPaddingChanged();
+ emit q->horizontalPaddingChanged();
+ emit q->availableWidthChanged();
+ q->paddingChange(newPadding, oldPadding);
+ }
+}
+
+void QQuickControlPrivate::setVerticalPadding(qreal value, bool reset)
+{
+ Q_Q(QQuickControl);
+ const QMarginsF oldPadding = getPadding();
+ const qreal oldVerticalPadding = getVerticalPadding();
+ verticalPadding = value;
+ hasVerticalPadding = !reset;
+ if ((!reset && !qFuzzyCompare(oldVerticalPadding, value)) || (reset && !qFuzzyCompare(oldVerticalPadding, padding))) {
+ const QMarginsF newPadding = getPadding();
+ if (!qFuzzyCompare(newPadding.top(), oldPadding.top()))
+ emit q->topPaddingChanged();
+ if (!qFuzzyCompare(newPadding.bottom(), oldPadding.bottom()))
+ emit q->bottomPaddingChanged();
+ emit q->verticalPaddingChanged();
+ emit q->availableHeightChanged();
+ q->paddingChange(newPadding, oldPadding);
}
}
@@ -301,9 +336,10 @@ void QQuickControlPrivate::setContentItem_helper(QQuickItem *item, bool notify)
if (!contentItem.isExecuting())
cancelContentItem();
- q->contentItemChange(item, contentItem);
- delete contentItem;
+ QQuickItem *oldContentItem = contentItem;
contentItem = item;
+ q->contentItemChange(item, oldContentItem);
+ delete oldContentItem;
if (item) {
if (!item->parentItem())
@@ -362,21 +398,7 @@ QFont QQuickControlPrivate::parentFont(const QQuickItem *item)
if (QQuickApplicationWindow *window = qobject_cast<QQuickApplicationWindow *>(item->window()))
return window->font();
- return themeFont(QPlatformTheme::SystemFont);
-}
-
-QFont QQuickControlPrivate::themeFont(QPlatformTheme::Font type)
-{
- if (QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) {
- if (const QFont *font = theme->font(type)) {
- QFont f = *font;
- if (type == QPlatformTheme::SystemFont)
- f.resolve(0);
- return f;
- }
- }
-
- return QFont();
+ return QQuickTheme::themeFont(QQuickTheme::System);
}
/*!
@@ -467,21 +489,7 @@ QPalette QQuickControlPrivate::parentPalette(const QQuickItem *item)
if (QQuickApplicationWindow *window = qobject_cast<QQuickApplicationWindow *>(item->window()))
return window->palette();
- return themePalette(QPlatformTheme::SystemPalette);
-}
-
-QPalette QQuickControlPrivate::themePalette(QPlatformTheme::Palette type)
-{
- if (QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) {
- if (const QPalette *palette = theme->palette(type)) {
- QPalette p = *palette;
- if (type == QPlatformTheme::SystemPalette)
- p.resolve(0);
- return p;
- }
- }
-
- return QPalette();
+ return QQuickTheme::themePalette(QQuickTheme::System);
}
/*!
@@ -866,10 +874,18 @@ void QQuickControl::setPadding(qreal padding)
Q_D(QQuickControl);
if (qFuzzyCompare(d->padding, padding))
return;
- QMarginsF oldPadding(leftPadding(), topPadding(), rightPadding(), bottomPadding());
+
+ const QMarginsF oldPadding = d->getPadding();
+ const qreal oldVerticalPadding = d->getVerticalPadding();
+ const qreal oldHorizontalPadding = d->getHorizontalPadding();
+
d->padding = padding;
emit paddingChanged();
- QMarginsF newPadding(leftPadding(), topPadding(), rightPadding(), bottomPadding());
+
+ const QMarginsF newPadding = d->getPadding();
+ const qreal newVerticalPadding = d->getVerticalPadding();
+ const qreal newHorizontalPadding = d->getHorizontalPadding();
+
if (!qFuzzyCompare(newPadding.top(), oldPadding.top()))
emit topPaddingChanged();
if (!qFuzzyCompare(newPadding.left(), oldPadding.left()))
@@ -878,10 +894,15 @@ void QQuickControl::setPadding(qreal padding)
emit rightPaddingChanged();
if (!qFuzzyCompare(newPadding.bottom(), oldPadding.bottom()))
emit bottomPaddingChanged();
+ if (!qFuzzyCompare(newVerticalPadding, oldVerticalPadding))
+ emit verticalPaddingChanged();
+ if (!qFuzzyCompare(newHorizontalPadding, oldHorizontalPadding))
+ emit horizontalPaddingChanged();
if (!qFuzzyCompare(newPadding.top(), oldPadding.top()) || !qFuzzyCompare(newPadding.bottom(), oldPadding.bottom()))
emit availableHeightChanged();
if (!qFuzzyCompare(newPadding.left(), oldPadding.left()) || !qFuzzyCompare(newPadding.right(), oldPadding.right()))
emit availableWidthChanged();
+
paddingChange(newPadding, oldPadding);
}
@@ -893,16 +914,15 @@ void QQuickControl::resetPadding()
/*!
\qmlproperty real QtQuick.Controls::Control::topPadding
- This property holds the top padding.
+ This property holds the top padding. Unless explicitly set, the value
+ is equal to \c verticalPadding.
- \sa {Control Layout}, padding, bottomPadding, availableHeight
+ \sa {Control Layout}, padding, bottomPadding, verticalPadding, availableHeight
*/
qreal QQuickControl::topPadding() const
{
Q_D(const QQuickControl);
- if (d->hasTopPadding)
- return d->topPadding;
- return d->padding;
+ return d->getTopPadding();
}
void QQuickControl::setTopPadding(qreal padding)
@@ -920,16 +940,15 @@ void QQuickControl::resetTopPadding()
/*!
\qmlproperty real QtQuick.Controls::Control::leftPadding
- This property holds the left padding.
+ This property holds the left padding. Unless explicitly set, the value
+ is equal to \c horizontalPadding.
- \sa {Control Layout}, padding, rightPadding, availableWidth
+ \sa {Control Layout}, padding, rightPadding, horizontalPadding, availableWidth
*/
qreal QQuickControl::leftPadding() const
{
Q_D(const QQuickControl);
- if (d->hasLeftPadding)
- return d->leftPadding;
- return d->padding;
+ return d->getLeftPadding();
}
void QQuickControl::setLeftPadding(qreal padding)
@@ -947,16 +966,15 @@ void QQuickControl::resetLeftPadding()
/*!
\qmlproperty real QtQuick.Controls::Control::rightPadding
- This property holds the right padding.
+ This property holds the right padding. Unless explicitly set, the value
+ is equal to \c horizontalPadding.
- \sa {Control Layout}, padding, leftPadding, availableWidth
+ \sa {Control Layout}, padding, leftPadding, horizontalPadding, availableWidth
*/
qreal QQuickControl::rightPadding() const
{
Q_D(const QQuickControl);
- if (d->hasRightPadding)
- return d->rightPadding;
- return d->padding;
+ return d->getRightPadding();
}
void QQuickControl::setRightPadding(qreal padding)
@@ -974,16 +992,15 @@ void QQuickControl::resetRightPadding()
/*!
\qmlproperty real QtQuick.Controls::Control::bottomPadding
- This property holds the bottom padding.
+ This property holds the bottom padding. Unless explicitly set, the value
+ is equal to \c verticalPadding.
- \sa {Control Layout}, padding, topPadding, availableHeight
+ \sa {Control Layout}, padding, topPadding, verticalPadding, availableHeight
*/
qreal QQuickControl::bottomPadding() const
{
Q_D(const QQuickControl);
- if (d->hasBottomPadding)
- return d->bottomPadding;
- return d->padding;
+ return d->getBottomPadding();
}
void QQuickControl::setBottomPadding(qreal padding)
@@ -1440,6 +1457,60 @@ void QQuickControl::resetPalette()
setPalette(QPalette());
}
+/*!
+ \since QtQuick.Controls 2.5 (Qt 5.12)
+ \qmlproperty real QtQuick.Controls::Control::horizontalPadding
+
+ This property holds the horizontal padding. Unless explicitly set, the value
+ is equal to \c padding.
+
+ \sa {Control Layout}, padding, leftPadding, rightPadding, verticalPadding
+*/
+qreal QQuickControl::horizontalPadding() const
+{
+ Q_D(const QQuickControl);
+ return d->getHorizontalPadding();
+}
+
+void QQuickControl::setHorizontalPadding(qreal padding)
+{
+ Q_D(QQuickControl);
+ d->setHorizontalPadding(padding);
+}
+
+void QQuickControl::resetHorizontalPadding()
+{
+ Q_D(QQuickControl);
+ d->setHorizontalPadding(0, true);
+}
+
+/*!
+ \since QtQuick.Controls 2.5 (Qt 5.12)
+ \qmlproperty real QtQuick.Controls::Control::verticalPadding
+
+ This property holds the vertical padding. Unless explicitly set, the value
+ is equal to \c padding.
+
+ \sa {Control Layout}, padding, topPadding, bottomPadding, horizontalPadding
+*/
+qreal QQuickControl::verticalPadding() const
+{
+ Q_D(const QQuickControl);
+ return d->getVerticalPadding();
+}
+
+void QQuickControl::setVerticalPadding(qreal padding)
+{
+ Q_D(QQuickControl);
+ d->setVerticalPadding(padding);
+}
+
+void QQuickControl::resetVerticalPadding()
+{
+ Q_D(QQuickControl);
+ d->setVerticalPadding(0, true);
+}
+
void QQuickControl::classBegin()
{
Q_D(QQuickControl);
@@ -1470,12 +1541,12 @@ void QQuickControl::componentComplete()
QFont QQuickControl::defaultFont() const
{
- return QQuickControlPrivate::themeFont(QPlatformTheme::SystemFont);
+ return QQuickTheme::themeFont(QQuickTheme::System);
}
QPalette QQuickControl::defaultPalette() const
{
- return QQuickControlPrivate::themePalette(QPlatformTheme::SystemPalette);
+ return QQuickTheme::themePalette(QQuickTheme::System);
}
void QQuickControl::focusInEvent(QFocusEvent *event)
diff --git a/src/quicktemplates2/qquickcontrol_p.h b/src/quicktemplates2/qquickcontrol_p.h
index 6b2d48d6..cd317850 100644
--- a/src/quicktemplates2/qquickcontrol_p.h
+++ b/src/quicktemplates2/qquickcontrol_p.h
@@ -81,6 +81,9 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickControl : public QQuickItem
Q_PROPERTY(QQuickItem *contentItem READ contentItem WRITE setContentItem NOTIFY contentItemChanged 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)
Q_CLASSINFO("DeferredPropertyNames", "background,contentItem")
public:
@@ -152,6 +155,15 @@ public:
void setPalette(const QPalette &palette);
void resetPalette();
+ // 2.5 (Qt 5.12)
+ qreal horizontalPadding() const;
+ void setHorizontalPadding(qreal padding);
+ void resetHorizontalPadding();
+
+ qreal verticalPadding() const;
+ void setVerticalPadding(qreal padding);
+ void resetVerticalPadding();
+
Q_SIGNALS:
void fontChanged();
void availableWidthChanged();
@@ -174,6 +186,9 @@ Q_SIGNALS:
void contentItemChanged();
// 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();
protected:
virtual QFont defaultFont() const;
diff --git a/src/quicktemplates2/qquickcontrol_p_p.h b/src/quicktemplates2/qquickcontrol_p_p.h
index 7d040ded..250c383b 100644
--- a/src/quicktemplates2/qquickcontrol_p_p.h
+++ b/src/quicktemplates2/qquickcontrol_p_p.h
@@ -50,10 +50,10 @@
#include <QtQuickTemplates2/private/qquickcontrol_p.h>
#include <QtQuickTemplates2/private/qquickdeferredpointer_p_p.h>
+#include <QtQuickTemplates2/private/qquicktheme_p.h>
#include <QtQuick/private/qquickitem_p.h>
#include <QtQml/private/qlazilyallocated_p.h>
-#include <qpa/qplatformtheme.h>
#if QT_CONFIG(accessibility)
#include <QtGui/qaccessible.h>
@@ -89,10 +89,20 @@ public:
void mirrorChange() override;
+ inline QMarginsF getPadding() const { return QMarginsF(getLeftPadding(), getTopPadding(), getRightPadding(), getBottomPadding()); }
+ inline qreal getTopPadding() const { return extra.isAllocated() && extra->hasTopPadding ? extra->topPadding : getVerticalPadding(); }
+ inline qreal getLeftPadding() const { return extra.isAllocated() && extra->hasLeftPadding ? extra->leftPadding : getHorizontalPadding(); }
+ inline qreal getRightPadding() const { return extra.isAllocated() && extra->hasRightPadding ? extra->rightPadding : getHorizontalPadding(); }
+ inline qreal getBottomPadding() const { return extra.isAllocated() && extra->hasBottomPadding ? extra->bottomPadding : getVerticalPadding(); }
+ inline qreal getHorizontalPadding() const { return hasHorizontalPadding ? horizontalPadding : padding; }
+ inline qreal getVerticalPadding() const { return hasVerticalPadding ? verticalPadding : padding; }
+
void setTopPadding(qreal value, bool reset = false);
void setLeftPadding(qreal value, bool reset = false);
void setRightPadding(qreal value, bool reset = false);
void setBottomPadding(qreal value, bool reset = false);
+ void setHorizontalPadding(qreal value, bool reset = false);
+ void setVerticalPadding(qreal value, bool reset = false);
void resizeBackground();
virtual void resizeContent();
@@ -116,7 +126,6 @@ public:
updateFont(font);
}
static QFont parentFont(const QQuickItem *item);
- static QFont themeFont(QPlatformTheme::Font type);
virtual void resolvePalette();
void inheritPalette(const QPalette &palette);
@@ -128,7 +137,6 @@ public:
updatePalette(palette);
}
static QPalette parentPalette(const QQuickItem *item);
- static QPalette themePalette(QPlatformTheme::Palette type);
void updateLocale(const QLocale &l, bool e);
static void updateLocaleRecur(QQuickItem *item, const QLocale &l);
@@ -148,15 +156,21 @@ public:
struct ExtraData {
ExtraData();
+ bool hasTopPadding;
+ bool hasLeftPadding;
+ bool hasRightPadding;
+ bool hasBottomPadding;
+ qreal topPadding;
+ qreal leftPadding;
+ qreal rightPadding;
+ qreal bottomPadding;
QFont requestedFont;
QPalette requestedPalette;
};
QLazilyAllocated<ExtraData> extra;
- bool hasTopPadding;
- bool hasLeftPadding;
- bool hasRightPadding;
- bool hasBottomPadding;
+ bool hasHorizontalPadding;
+ bool hasVerticalPadding;
bool hasLocale;
bool wheelEnabled;
#if QT_CONFIG(quicktemplates2_hover)
@@ -165,10 +179,8 @@ public:
#endif
int touchId;
qreal padding;
- qreal topPadding;
- qreal leftPadding;
- qreal rightPadding;
- qreal bottomPadding;
+ qreal horizontalPadding;
+ qreal verticalPadding;
qreal spacing;
QLocale locale;
QFont resolvedFont;
diff --git a/src/quicktemplates2/qquickdelaybutton.cpp b/src/quicktemplates2/qquickdelaybutton.cpp
index 128f0c78..02efc3a2 100644
--- a/src/quicktemplates2/qquickdelaybutton.cpp
+++ b/src/quicktemplates2/qquickdelaybutton.cpp
@@ -265,12 +265,12 @@ void QQuickDelayButton::nextCheckState()
QFont QQuickDelayButton::defaultFont() const
{
- return QQuickControlPrivate::themeFont(QPlatformTheme::PushButtonFont);
+ return QQuickTheme::themeFont(QQuickTheme::Button);
}
QPalette QQuickDelayButton::defaultPalette() const
{
- return QQuickControlPrivate::themePalette(QPlatformTheme::ButtonPalette);
+ return QQuickTheme::themePalette(QQuickTheme::Button);
}
QT_END_NAMESPACE
diff --git a/src/quicktemplates2/qquickdialogbuttonbox.cpp b/src/quicktemplates2/qquickdialogbuttonbox.cpp
index 52171f5b..7e178f2a 100644
--- a/src/quicktemplates2/qquickdialogbuttonbox.cpp
+++ b/src/quicktemplates2/qquickdialogbuttonbox.cpp
@@ -192,10 +192,16 @@ QT_BEGIN_NAMESPACE
\sa accepted(), rejected(), helpRequested()
*/
+static QQuickDialogButtonBox::ButtonLayout platformButtonLayout()
+{
+ return QGuiApplicationPrivate::platformTheme()->themeHint(QPlatformTheme::DialogButtonBoxLayout).value<QQuickDialogButtonBox::ButtonLayout>();
+}
+
QQuickDialogButtonBoxPrivate::QQuickDialogButtonBoxPrivate()
: alignment(0),
position(QQuickDialogButtonBox::Footer),
standardButtons(QPlatformDialogHelper::NoButton),
+ buttonLayout(platformButtonLayout()),
delegate(nullptr)
{
}
@@ -282,6 +288,11 @@ void QQuickDialogButtonBoxPrivate::updateLayout()
}
struct ButtonLayout {
+ ButtonLayout(QPlatformDialogHelper::ButtonLayout layout)
+ : m_layout(QPlatformDialogHelper::buttonLayout(Qt::Horizontal, layout))
+ {
+ }
+
bool operator()(QQuickAbstractButton *first, QQuickAbstractButton *second)
{
const QPlatformDialogHelper::ButtonRole firstRole = QQuickDialogPrivate::buttonRole(first);
@@ -304,15 +315,10 @@ void QQuickDialogButtonBoxPrivate::updateLayout()
return firstRole != QPlatformDialogHelper::InvalidRole;
}
- static const int *themeButtonLayout()
- {
- const int hint = QGuiApplicationPrivate::platformTheme()->themeHint(QPlatformTheme::DialogButtonBoxLayout).toInt();
- return QPlatformDialogHelper::buttonLayout(Qt::Horizontal, static_cast<QPlatformDialogHelper::ButtonLayout>(hint));
- }
- const int *m_layout = themeButtonLayout();
+ const int *m_layout;
};
- std::sort(buttons.begin(), buttons.end(), ButtonLayout());
+ std::sort(buttons.begin(), buttons.end(), ButtonLayout(static_cast<QPlatformDialogHelper::ButtonLayout>(buttonLayout)));
for (int i = 0; i < buttons.count() - 1; ++i)
q->insertItem(i, buttons.at(i));
@@ -604,6 +610,43 @@ QQuickDialogButtonBoxAttached *QQuickDialogButtonBox::qmlAttachedProperties(QObj
return new QQuickDialogButtonBoxAttached(object);
}
+/*!
+ \since QtQuick.Controls 2.5 (Qt 5.12)
+ \qmlproperty enumeration QtQuick.Controls::DialogButtonBox::buttonLayout
+
+ This property holds the button layout policy to be used when arranging the buttons contained in the button box.
+ The default value is platform-specific.
+
+ Available values:
+ \value DialogButtonBox.WinLayout Use a policy appropriate for applications on Windows.
+ \value DialogButtonBox.MacLayout Use a policy appropriate for applications on macOS.
+ \value DialogButtonBox.KdeLayout Use a policy appropriate for applications on KDE.
+ \value DialogButtonBox.GnomeLayout Use a policy appropriate for applications on GNOME.
+ \value DialogButtonBox.AndroidLayout Use a policy appropriate for applications on Android.
+*/
+QQuickDialogButtonBox::ButtonLayout QQuickDialogButtonBox::buttonLayout() const
+{
+ Q_D(const QQuickDialogButtonBox);
+ return d->buttonLayout;
+}
+
+void QQuickDialogButtonBox::setButtonLayout(ButtonLayout layout)
+{
+ Q_D(QQuickDialogButtonBox);
+ if (d->buttonLayout == layout)
+ return;
+
+ d->buttonLayout = layout;
+ if (isComponentComplete())
+ d->updateLayout();
+ emit buttonLayoutChanged();
+}
+
+void QQuickDialogButtonBox::resetButtonLayout()
+{
+ setButtonLayout(platformButtonLayout());
+}
+
void QQuickDialogButtonBox::updatePolish()
{
Q_D(QQuickDialogButtonBox);
diff --git a/src/quicktemplates2/qquickdialogbuttonbox_p.h b/src/quicktemplates2/qquickdialogbuttonbox_p.h
index 1e3cdeef..df302e54 100644
--- a/src/quicktemplates2/qquickdialogbuttonbox_p.h
+++ b/src/quicktemplates2/qquickdialogbuttonbox_p.h
@@ -66,6 +66,8 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickDialogButtonBox : public QQuickCont
Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment RESET resetAlignment NOTIFY alignmentChanged FINAL)
Q_PROPERTY(QPlatformDialogHelper::StandardButtons standardButtons READ standardButtons WRITE setStandardButtons NOTIFY standardButtonsChanged FINAL)
Q_PROPERTY(QQmlComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged FINAL)
+ // 2.5 (Qt 5.12)
+ Q_PROPERTY(ButtonLayout buttonLayout READ buttonLayout WRITE setButtonLayout RESET resetButtonLayout NOTIFY buttonLayoutChanged FINAL REVISION 5)
Q_FLAGS(QPlatformDialogHelper::StandardButtons)
public:
@@ -94,6 +96,24 @@ public:
static QQuickDialogButtonBoxAttached *qmlAttachedProperties(QObject *object);
+ // 2.5 (Qt 5.12)
+
+ // ### TODO: use Q_ENUMS(QPlatformDialogHelper::ButtonLayout)
+ enum ButtonLayout {
+ UnknownLayout = -1,
+ WinLayout,
+ MacLayout,
+ KdeLayout,
+ GnomeLayout,
+ MacModelessLayout,
+ AndroidLayout
+ };
+ Q_ENUM(ButtonLayout)
+
+ ButtonLayout buttonLayout() const;
+ void setButtonLayout(ButtonLayout layout);
+ void resetButtonLayout();
+
Q_SIGNALS:
void accepted();
void rejected();
@@ -107,6 +127,8 @@ Q_SIGNALS:
Q_REVISION(3) void applied();
Q_REVISION(3) void reset();
Q_REVISION(3) void discarded();
+ // 2.5 (Qt 5.12)
+ Q_REVISION(5) void buttonLayoutChanged();
protected:
void updatePolish() override;
diff --git a/src/quicktemplates2/qquickdialogbuttonbox_p_p.h b/src/quicktemplates2/qquickdialogbuttonbox_p_p.h
index 7247d591..3c761d6b 100644
--- a/src/quicktemplates2/qquickdialogbuttonbox_p_p.h
+++ b/src/quicktemplates2/qquickdialogbuttonbox_p_p.h
@@ -78,6 +78,7 @@ public:
Qt::Alignment alignment;
QQuickDialogButtonBox::Position position;
QPlatformDialogHelper::StandardButtons standardButtons;
+ QQuickDialogButtonBox::ButtonLayout buttonLayout;
QQmlComponent *delegate;
};
diff --git a/src/quicktemplates2/qquickgroupbox.cpp b/src/quicktemplates2/qquickgroupbox.cpp
index 4f4c5eed..cc74cce9 100644
--- a/src/quicktemplates2/qquickgroupbox.cpp
+++ b/src/quicktemplates2/qquickgroupbox.cpp
@@ -189,12 +189,12 @@ void QQuickGroupBox::componentComplete()
QFont QQuickGroupBox::defaultFont() const
{
- return QQuickControlPrivate::themeFont(QPlatformTheme::GroupBoxTitleFont);
+ return QQuickTheme::themeFont(QQuickTheme::GroupBox);
}
QPalette QQuickGroupBox::defaultPalette() const
{
- return QQuickControlPrivate::themePalette(QPlatformTheme::GroupBoxPalette);
+ return QQuickTheme::themePalette(QQuickTheme::GroupBox);
}
#if QT_CONFIG(accessibility)
diff --git a/src/quicktemplates2/qquickitemdelegate.cpp b/src/quicktemplates2/qquickitemdelegate.cpp
index 044141f2..145eaaf4 100644
--- a/src/quicktemplates2/qquickitemdelegate.cpp
+++ b/src/quicktemplates2/qquickitemdelegate.cpp
@@ -122,12 +122,12 @@ void QQuickItemDelegate::setHighlighted(bool highlighted)
QFont QQuickItemDelegate::defaultFont() const
{
- return QQuickControlPrivate::themeFont(QPlatformTheme::ItemViewFont);
+ return QQuickTheme::themeFont(QQuickTheme::ItemView);
}
QPalette QQuickItemDelegate::defaultPalette() const
{
- return QQuickControlPrivate::themePalette(QPlatformTheme::ItemViewPalette);
+ return QQuickTheme::themePalette(QQuickTheme::ItemView);
}
#if QT_CONFIG(accessibility)
diff --git a/src/quicktemplates2/qquicklabel.cpp b/src/quicktemplates2/qquicklabel.cpp
index 41b2d93a..ad90a727 100644
--- a/src/quicktemplates2/qquicklabel.cpp
+++ b/src/quicktemplates2/qquicklabel.cpp
@@ -113,7 +113,7 @@ void QQuickLabelPrivate::inheritFont(const QFont &font)
QFont parentFont = extra.isAllocated() ? extra->requestedFont.resolve(font) : font;
parentFont.resolve(extra.isAllocated() ? extra->requestedFont.resolve() | font.resolve() : font.resolve());
- const QFont defaultFont = QQuickControlPrivate::themeFont(QPlatformTheme::LabelFont);
+ const QFont defaultFont = QQuickTheme::themeFont(QQuickTheme::Label);
const QFont resolvedFont = parentFont.resolve(defaultFont);
setFont_helper(resolvedFont);
@@ -155,7 +155,7 @@ 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 = QQuickControlPrivate::themePalette(QPlatformTheme::LabelPalette);
+ const QPalette defaultPalette = QQuickTheme::themePalette(QQuickTheme::Label);
const QPalette resolvedPalette = parentPalette.resolve(defaultPalette);
setPalette_helper(resolvedPalette);
diff --git a/src/quicktemplates2/qquickmenu.cpp b/src/quicktemplates2/qquickmenu.cpp
index 5dbfe3d9..4e334bba 100644
--- a/src/quicktemplates2/qquickmenu.cpp
+++ b/src/quicktemplates2/qquickmenu.cpp
@@ -1432,12 +1432,12 @@ void QQuickMenu::timerEvent(QTimerEvent *event)
QFont QQuickMenu::defaultFont() const
{
- return QQuickControlPrivate::themeFont(QPlatformTheme::MenuFont);
+ return QQuickTheme::themeFont(QQuickTheme::Menu);
}
QPalette QQuickMenu::defaultPalette() const
{
- return QQuickControlPrivate::themePalette(QPlatformTheme::MenuPalette);
+ return QQuickTheme::themePalette(QQuickTheme::Menu);
}
#if QT_CONFIG(accessibility)
diff --git a/src/quicktemplates2/qquickmenubar.cpp b/src/quicktemplates2/qquickmenubar.cpp
index 8398633c..9bd0ea9a 100644
--- a/src/quicktemplates2/qquickmenubar.cpp
+++ b/src/quicktemplates2/qquickmenubar.cpp
@@ -643,12 +643,12 @@ void QQuickMenuBar::itemRemoved(int index, QQuickItem *item)
QFont QQuickMenuBar::defaultFont() const
{
- return QQuickControlPrivate::themeFont(QPlatformTheme::MenuBarFont);
+ return QQuickTheme::themeFont(QQuickTheme::MenuBar);
}
QPalette QQuickMenuBar::defaultPalette() const
{
- return QQuickControlPrivate::themePalette(QPlatformTheme::MenuBarPalette);
+ return QQuickTheme::themePalette(QQuickTheme::MenuBar);
}
#if QT_CONFIG(accessibility)
diff --git a/src/quicktemplates2/qquickmenubaritem.cpp b/src/quicktemplates2/qquickmenubaritem.cpp
index cbf490b8..863e88e3 100644
--- a/src/quicktemplates2/qquickmenubaritem.cpp
+++ b/src/quicktemplates2/qquickmenubaritem.cpp
@@ -167,12 +167,12 @@ void QQuickMenuBarItem::geometryChanged(const QRectF &newGeometry, const QRectF
QFont QQuickMenuBarItem::defaultFont() const
{
- return QQuickControlPrivate::themeFont(QPlatformTheme::MenuBarFont);
+ return QQuickTheme::themeFont(QQuickTheme::MenuBar);
}
QPalette QQuickMenuBarItem::defaultPalette() const
{
- return QQuickControlPrivate::themePalette(QPlatformTheme::MenuBarPalette);
+ return QQuickTheme::themePalette(QQuickTheme::MenuBar);
}
#if QT_CONFIG(accessibility)
diff --git a/src/quicktemplates2/qquickmenuitem.cpp b/src/quicktemplates2/qquickmenuitem.cpp
index 6693d4f8..ca74dd60 100644
--- a/src/quicktemplates2/qquickmenuitem.cpp
+++ b/src/quicktemplates2/qquickmenuitem.cpp
@@ -264,12 +264,12 @@ void QQuickMenuItem::componentComplete()
QFont QQuickMenuItem::defaultFont() const
{
- return QQuickControlPrivate::themeFont(QPlatformTheme::MenuItemFont);
+ return QQuickTheme::themeFont(QQuickTheme::Menu);
}
QPalette QQuickMenuItem::defaultPalette() const
{
- return QQuickControlPrivate::themePalette(QPlatformTheme::MenuPalette);
+ return QQuickTheme::themePalette(QQuickTheme::Menu);
}
#if QT_CONFIG(accessibility)
diff --git a/src/quicktemplates2/qquickmenuseparator.cpp b/src/quicktemplates2/qquickmenuseparator.cpp
index dee5287a..1e7c58c6 100644
--- a/src/quicktemplates2/qquickmenuseparator.cpp
+++ b/src/quicktemplates2/qquickmenuseparator.cpp
@@ -71,9 +71,14 @@ QQuickMenuSeparator::QQuickMenuSeparator(QQuickItem *parent)
{
}
+QFont QQuickMenuSeparator::defaultFont() const
+{
+ return QQuickTheme::themeFont(QQuickTheme::Menu);
+}
+
QPalette QQuickMenuSeparator::defaultPalette() const
{
- return QQuickControlPrivate::themePalette(QPlatformTheme::MenuPalette);
+ return QQuickTheme::themePalette(QQuickTheme::Menu);
}
#if QT_CONFIG(accessibility)
diff --git a/src/quicktemplates2/qquickmenuseparator_p.h b/src/quicktemplates2/qquickmenuseparator_p.h
index 002b68ba..1e687fd0 100644
--- a/src/quicktemplates2/qquickmenuseparator_p.h
+++ b/src/quicktemplates2/qquickmenuseparator_p.h
@@ -60,6 +60,7 @@ public:
explicit QQuickMenuSeparator(QQuickItem *parent = nullptr);
protected:
+ QFont defaultFont() const override;
QPalette defaultPalette() const override;
#if QT_CONFIG(accessibility)
diff --git a/src/quicktemplates2/qquickpage.cpp b/src/quicktemplates2/qquickpage.cpp
index 8f34dca9..b8838f20 100644
--- a/src/quicktemplates2/qquickpage.cpp
+++ b/src/quicktemplates2/qquickpage.cpp
@@ -35,14 +35,14 @@
****************************************************************************/
#include "qquickpage_p.h"
-#include "qquickcontrol_p_p.h"
+#include "qquickpane_p_p.h"
#include "qquickpagelayout_p_p.h"
QT_BEGIN_NAMESPACE
/*!
\qmltype Page
- \inherits Control
+ \inherits Pane
\instantiates QQuickPage
\inqmlmodule QtQuick.Controls
\since 5.7
@@ -84,44 +84,19 @@ QT_BEGIN_NAMESPACE
{Focus Management in Qt Quick Controls 2}
*/
-class QQuickPagePrivate : public QQuickControlPrivate
+class QQuickPagePrivate : public QQuickPanePrivate
{
Q_DECLARE_PUBLIC(QQuickPage)
public:
- QQuickPagePrivate();
-
- QQuickItem *getContentItem() override;
-
- qreal contentWidth;
- qreal contentHeight;
QString title;
QScopedPointer<QQuickPageLayout> layout;
};
-QQuickPagePrivate::QQuickPagePrivate()
- : contentWidth(0),
- contentHeight(0)
-{
-}
-
-QQuickItem *QQuickPagePrivate::getContentItem()
-{
- Q_Q(QQuickPage);
- if (QQuickItem *item = QQuickControlPrivate::getContentItem())
- return item;
- return new QQuickItem(q);
-}
-
QQuickPage::QQuickPage(QQuickItem *parent)
- : QQuickControl(*(new QQuickPagePrivate), parent)
+ : QQuickPane(*(new QQuickPagePrivate), parent)
{
Q_D(QQuickPage);
- setFlag(ItemIsFocusScope);
- setAcceptedMouseButtons(Qt::AllButtons);
-#if QT_CONFIG(cursor)
- setCursor(Qt::ArrowCursor);
-#endif
d->layout.reset(new QQuickPageLayout(this));
}
@@ -234,136 +209,31 @@ void QQuickPage::setFooter(QQuickItem *footer)
emit footerChanged();
}
-/*!
- \qmlproperty list<Object> QtQuick.Controls::Page::contentData
- \default
-
- This property holds the list of content data.
-
- The list contains all objects that have been declared in QML as children
- of the container.
-
- \note Unlike \c contentChildren, \c contentData does include non-visual QML
- objects.
-
- \sa Item::data, contentChildren
-*/
-QQmlListProperty<QObject> QQuickPage::contentData()
-{
- return QQmlListProperty<QObject>(contentItem(), nullptr,
- QQuickItemPrivate::data_append,
- QQuickItemPrivate::data_count,
- QQuickItemPrivate::data_at,
- QQuickItemPrivate::data_clear);
-}
-
-/*!
- \qmlproperty list<Item> QtQuick.Controls::Page::contentChildren
-
- This property holds the list of content children.
-
- The list contains all items that have been declared in QML as children
- of the page.
-
- \note Unlike \c contentData, \c contentChildren does not include non-visual
- QML objects.
-
- \sa Item::children, contentData
-*/
-QQmlListProperty<QQuickItem> QQuickPage::contentChildren()
-{
- return QQmlListProperty<QQuickItem>(contentItem(), nullptr,
- QQuickItemPrivate::children_append,
- QQuickItemPrivate::children_count,
- QQuickItemPrivate::children_at,
- QQuickItemPrivate::children_clear);
-}
-
-/*!
- \qmlproperty real QtQuick.Controls::Page::contentWidth
- \since QtQuick.Controls 2.1 (Qt 5.8)
-
- This property holds the content width. It is used for calculating the total
- implicit width of the page.
-
- \sa contentHeight
-*/
-qreal QQuickPage::contentWidth() const
-{
- Q_D(const QQuickPage);
- return d->contentWidth;
-}
-
-void QQuickPage::setContentWidth(qreal width)
-{
- Q_D(QQuickPage);
- if (qFuzzyCompare(d->contentWidth, width))
- return;
-
- d->contentWidth = width;
- emit contentWidthChanged();
-}
-
-/*!
- \qmlproperty real QtQuick.Controls::Page::contentHeight
- \since QtQuick.Controls 2.1 (Qt 5.8)
-
- This property holds the content height. It is used for calculating the total
- implicit height of the page.
-
- \sa contentWidth
-*/
-qreal QQuickPage::contentHeight() const
-{
- Q_D(const QQuickPage);
- return d->contentHeight;
-}
-
-void QQuickPage::setContentHeight(qreal height)
-{
- Q_D(QQuickPage);
- if (qFuzzyCompare(d->contentHeight, height))
- return;
-
- d->contentHeight = height;
- emit contentHeightChanged();
-}
-
void QQuickPage::componentComplete()
{
Q_D(QQuickPage);
- QQuickControl::componentComplete();
+ QQuickPane::componentComplete();
d->layout->update();
}
-void QQuickPage::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem)
-{
- QQuickControl::contentItemChange(newItem, oldItem);
- if (oldItem)
- disconnect(oldItem, &QQuickItem::childrenChanged, this, &QQuickPage::contentChildrenChanged);
- if (newItem)
- connect(newItem, &QQuickItem::childrenChanged, this, &QQuickPage::contentChildrenChanged);
- emit contentChildrenChanged();
-}
-
void QQuickPage::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
{
Q_D(QQuickPage);
- QQuickControl::geometryChanged(newGeometry, oldGeometry);
+ QQuickPane::geometryChanged(newGeometry, oldGeometry);
d->layout->update();
}
void QQuickPage::paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding)
{
Q_D(QQuickPage);
- QQuickControl::paddingChange(newPadding, oldPadding);
+ QQuickPane::paddingChange(newPadding, oldPadding);
d->layout->update();
}
void QQuickPage::spacingChange(qreal newSpacing, qreal oldSpacing)
{
Q_D(QQuickPage);
- QQuickControl::spacingChange(newSpacing, oldSpacing);
+ QQuickPane::spacingChange(newSpacing, oldSpacing);
d->layout->update();
}
@@ -376,7 +246,7 @@ QAccessible::Role QQuickPage::accessibleRole() const
void QQuickPage::accessibilityActiveChanged(bool active)
{
Q_D(QQuickPage);
- QQuickControl::accessibilityActiveChanged(active);
+ QQuickPane::accessibilityActiveChanged(active);
if (active)
setAccessibleName(d->title);
diff --git a/src/quicktemplates2/qquickpage_p.h b/src/quicktemplates2/qquickpage_p.h
index 0789e996..49f9f85f 100644
--- a/src/quicktemplates2/qquickpage_p.h
+++ b/src/quicktemplates2/qquickpage_p.h
@@ -48,25 +48,22 @@
// We mean it.
//
-#include <QtQuickTemplates2/private/qquickcontrol_p.h>
+#include <QtQuickTemplates2/private/qquickpane_p.h>
#include <QtQml/qqmllist.h>
QT_BEGIN_NAMESPACE
class QQuickPagePrivate;
-class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPage : public QQuickControl
+class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPage : public QQuickPane
{
Q_OBJECT
Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged FINAL)
Q_PROPERTY(QQuickItem *header READ header WRITE setHeader NOTIFY headerChanged FINAL)
Q_PROPERTY(QQuickItem *footer READ footer WRITE setFooter NOTIFY footerChanged FINAL)
- Q_PROPERTY(QQmlListProperty<QObject> contentData READ contentData FINAL)
- Q_PROPERTY(QQmlListProperty<QQuickItem> contentChildren READ contentChildren NOTIFY contentChildrenChanged FINAL)
// 2.1 (Qt 5.8)
Q_PROPERTY(qreal contentWidth READ contentWidth WRITE setContentWidth NOTIFY contentWidthChanged FINAL REVISION 1)
Q_PROPERTY(qreal contentHeight READ contentHeight WRITE setContentHeight NOTIFY contentHeightChanged FINAL REVISION 1)
- Q_CLASSINFO("DefaultProperty", "contentData")
public:
explicit QQuickPage(QQuickItem *parent = nullptr);
@@ -80,29 +77,14 @@ public:
QQuickItem *footer() const;
void setFooter(QQuickItem *footer);
- QQmlListProperty<QObject> contentData();
- QQmlListProperty<QQuickItem> contentChildren();
-
- // 2.1 (Qt 5.8)
- qreal contentWidth() const;
- void setContentWidth(qreal width);
-
- qreal contentHeight() const;
- void setContentHeight(qreal height);
-
Q_SIGNALS:
void titleChanged();
void headerChanged();
void footerChanged();
- void contentChildrenChanged();
- // 2.1 (Qt 5.8)
- Q_REVISION(1) void contentWidthChanged();
- Q_REVISION(1) void contentHeightChanged();
protected:
void componentComplete() override;
- void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) override;
void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) override;
void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) override;
void spacingChange(qreal newSpacing, qreal oldSpacing) override;
diff --git a/src/quicktemplates2/qquickpane.cpp b/src/quicktemplates2/qquickpane.cpp
index 8038f1b1..a744b8b9 100644
--- a/src/quicktemplates2/qquickpane.cpp
+++ b/src/quicktemplates2/qquickpane.cpp
@@ -36,6 +36,7 @@
#include "qquickpane_p.h"
#include "qquickpane_p_p.h"
+#include "qquickcontentitem_p.h"
QT_BEGIN_NAMESPACE
@@ -106,9 +107,14 @@ QT_BEGIN_NAMESPACE
{Focus Management in Qt Quick Controls 2}
*/
+static const QQuickItemPrivate::ChangeTypes ImplicitSizeChanges = QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight | QQuickItemPrivate::Destroyed;
+
QQuickPanePrivate::QQuickPanePrivate()
- : contentWidth(0),
- contentHeight(0)
+ : hasContentWidth(false),
+ hasContentHeight(false),
+ contentWidth(0),
+ contentHeight(0),
+ firstChild(nullptr)
{
}
@@ -117,7 +123,123 @@ QQuickItem *QQuickPanePrivate::getContentItem()
Q_Q(QQuickPane);
if (QQuickItem *item = QQuickControlPrivate::getContentItem())
return item;
- return new QQuickItem(q);
+
+ return new QQuickContentItem(QStringLiteral("Pane"), q);
+}
+
+void QQuickPanePrivate::addImplicitSizeListener(QQuickItem *item)
+{
+ if (!item)
+ return;
+
+ QQuickItemPrivate::get(item)->addItemChangeListener(this, ImplicitSizeChanges);
+}
+
+void QQuickPanePrivate::removeImplicitSizeListener(QQuickItem *item)
+{
+ if (!item)
+ return;
+
+ QQuickItemPrivate::get(item)->removeItemChangeListener(this, ImplicitSizeChanges);
+}
+
+void QQuickPanePrivate::itemImplicitWidthChanged(QQuickItem *item)
+{
+ Q_Q(QQuickPane);
+ if ((item == contentItem || item == firstChild) && updateContentWidth())
+ emit q->contentWidthChanged();
+}
+
+void QQuickPanePrivate::itemImplicitHeightChanged(QQuickItem *item)
+{
+ Q_Q(QQuickPane);
+ if ((item == contentItem || item == firstChild) && updateContentHeight())
+ emit q->contentHeightChanged();
+}
+
+void QQuickPanePrivate::itemDestroyed(QQuickItem *item)
+{
+ if (item == contentItem)
+ updateContentSize();
+}
+
+void QQuickPanePrivate::contentChildrenChange()
+{
+ Q_Q(QQuickPane);
+ QQuickItem *newFirstChild = contentItem->childItems().value(0);
+ if (newFirstChild != firstChild) {
+ if (firstChild)
+ removeImplicitSizeListener(firstChild);
+ if (newFirstChild)
+ addImplicitSizeListener(newFirstChild);
+ firstChild = newFirstChild;
+ }
+
+ updateContentSize();
+ emit q->contentChildrenChanged();
+}
+
+static qreal getContentWidth(QQuickItem *item)
+{
+ if (!item)
+ return 0;
+
+ const qreal cw = item->implicitWidth();
+ if (!qFuzzyIsNull(cw))
+ return cw;
+
+ const auto contentChildren = item->childItems();
+ if (contentChildren.count() == 1)
+ return contentChildren.first()->implicitWidth();
+
+ return 0;
+}
+
+static qreal getContentHeight(QQuickItem *item)
+{
+ if (!item)
+ return 0;
+
+ const qreal ch = item->implicitHeight();
+ if (!qFuzzyIsNull(ch))
+ return ch;
+
+ const auto contentChildren = item->childItems();
+ if (contentChildren.count() == 1)
+ return contentChildren.first()->implicitHeight();
+
+ return 0;
+}
+
+bool QQuickPanePrivate::updateContentWidth()
+{
+ if (hasContentWidth)
+ return false;
+
+ qreal oldContentWidth = contentWidth;
+ contentWidth = getContentWidth(contentItem);
+ return !qFuzzyCompare(contentWidth, oldContentWidth);
+}
+
+bool QQuickPanePrivate::updateContentHeight()
+{
+ if (hasContentHeight)
+ return false;
+
+ qreal oldContentHeight = contentHeight;
+ contentHeight = getContentHeight(contentItem);
+ return !qFuzzyCompare(contentHeight, oldContentHeight);
+}
+
+void QQuickPanePrivate::updateContentSize()
+{
+ Q_Q(QQuickPane);
+ bool widthChanged = updateContentWidth();
+ bool heightChanged = updateContentHeight();
+ if (widthChanged)
+ emit q->contentWidthChanged();
+ if (heightChanged)
+ emit q->contentHeightChanged();
}
QQuickPane::QQuickPane(QQuickItem *parent)
@@ -130,6 +252,13 @@ QQuickPane::QQuickPane(QQuickItem *parent)
#endif
}
+QQuickPane::~QQuickPane()
+{
+ Q_D(QQuickPane);
+ d->removeImplicitSizeListener(d->contentItem);
+ d->removeImplicitSizeListener(d->firstChild);
+}
+
QQuickPane::QQuickPane(QQuickPanePrivate &dd, QQuickItem *parent)
: QQuickControl(dd, parent)
{
@@ -159,6 +288,7 @@ qreal QQuickPane::contentWidth() const
void QQuickPane::setContentWidth(qreal width)
{
Q_D(QQuickPane);
+ d->hasContentWidth = true;
if (qFuzzyCompare(d->contentWidth, width))
return;
@@ -166,6 +296,17 @@ void QQuickPane::setContentWidth(qreal width)
emit contentWidthChanged();
}
+void QQuickPane::resetContentWidth()
+{
+ Q_D(QQuickPane);
+ if (!d->hasContentWidth)
+ return;
+
+ d->hasContentHeight = false;
+ if (d->updateContentWidth())
+ emit contentWidthChanged();
+}
+
/*!
\qmlproperty real QtQuick.Controls::Pane::contentHeight
@@ -185,6 +326,7 @@ qreal QQuickPane::contentHeight() const
void QQuickPane::setContentHeight(qreal height)
{
Q_D(QQuickPane);
+ d->hasContentHeight = true;
if (qFuzzyCompare(d->contentHeight, height))
return;
@@ -192,6 +334,17 @@ void QQuickPane::setContentHeight(qreal height)
emit contentHeightChanged();
}
+void QQuickPane::resetContentHeight()
+{
+ Q_D(QQuickPane);
+ if (!d->hasContentHeight)
+ return;
+
+ d->hasContentHeight = false;
+ if (d->updateContentHeight())
+ emit contentHeightChanged();
+}
+
/*!
\qmlproperty list<Object> QtQuick.Controls::Pane::contentData
\default
@@ -239,11 +392,24 @@ QQmlListProperty<QQuickItem> QQuickPane::contentChildren()
void QQuickPane::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem)
{
+ Q_D(QQuickPane);
QQuickControl::contentItemChange(newItem, oldItem);
- if (oldItem)
- disconnect(oldItem, &QQuickItem::childrenChanged, this, &QQuickPane::contentChildrenChanged);
- if (newItem)
- connect(newItem, &QQuickItem::childrenChanged, this, &QQuickPane::contentChildrenChanged);
+ if (oldItem) {
+ d->removeImplicitSizeListener(oldItem);
+ if (d->firstChild) {
+ d->removeImplicitSizeListener(d->firstChild);
+ d->firstChild = nullptr;
+ }
+ QObjectPrivate::disconnect(oldItem, &QQuickItem::childrenChanged, d, &QQuickPanePrivate::contentChildrenChange);
+ }
+ if (newItem) {
+ d->addImplicitSizeListener(newItem);
+ d->firstChild = newItem->childItems().value(0);
+ if (d->firstChild)
+ d->addImplicitSizeListener(d->firstChild);
+ QObjectPrivate::connect(newItem, &QQuickItem::childrenChanged, d, &QQuickPanePrivate::contentChildrenChange);
+ }
+ d->updateContentSize();
emit contentChildrenChanged();
}
diff --git a/src/quicktemplates2/qquickpane_p.h b/src/quicktemplates2/qquickpane_p.h
index 759c59d8..53bf7067 100644
--- a/src/quicktemplates2/qquickpane_p.h
+++ b/src/quicktemplates2/qquickpane_p.h
@@ -58,20 +58,23 @@ class QQuickPanePrivate;
class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPane : public QQuickControl
{
Q_OBJECT
- Q_PROPERTY(qreal contentWidth READ contentWidth WRITE setContentWidth NOTIFY contentWidthChanged FINAL)
- Q_PROPERTY(qreal contentHeight READ contentHeight WRITE setContentHeight NOTIFY contentHeightChanged FINAL)
+ Q_PROPERTY(qreal contentWidth READ contentWidth WRITE setContentWidth RESET resetContentWidth NOTIFY contentWidthChanged FINAL)
+ Q_PROPERTY(qreal contentHeight READ contentHeight WRITE setContentHeight RESET resetContentHeight NOTIFY contentHeightChanged FINAL)
Q_PROPERTY(QQmlListProperty<QObject> contentData READ contentData FINAL)
Q_PROPERTY(QQmlListProperty<QQuickItem> contentChildren READ contentChildren NOTIFY contentChildrenChanged FINAL)
Q_CLASSINFO("DefaultProperty", "contentData")
public:
explicit QQuickPane(QQuickItem *parent = nullptr);
+ ~QQuickPane();
qreal contentWidth() const;
void setContentWidth(qreal width);
+ void resetContentWidth();
qreal contentHeight() const;
void setContentHeight(qreal height);
+ void resetContentHeight();
QQmlListProperty<QObject> contentData();
QQmlListProperty<QQuickItem> contentChildren();
diff --git a/src/quicktemplates2/qquickpane_p_p.h b/src/quicktemplates2/qquickpane_p_p.h
index 16a07f08..9d091792 100644
--- a/src/quicktemplates2/qquickpane_p_p.h
+++ b/src/quicktemplates2/qquickpane_p_p.h
@@ -49,12 +49,13 @@
//
#include <QtQuickTemplates2/private/qquickcontrol_p_p.h>
+#include <QtQuick/private/qquickitemchangelistener_p.h>
QT_BEGIN_NAMESPACE
class QQuickPane;
-class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPanePrivate : public QQuickControlPrivate
+class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPanePrivate : public QQuickControlPrivate, public QQuickItemChangeListener
{
Q_DECLARE_PUBLIC(QQuickPane)
@@ -63,8 +64,24 @@ public:
QQuickItem *getContentItem() override;
+ void addImplicitSizeListener(QQuickItem *item);
+ void removeImplicitSizeListener(QQuickItem *item);
+
+ void itemImplicitWidthChanged(QQuickItem *item) override;
+ void itemImplicitHeightChanged(QQuickItem *item) override;
+ void itemDestroyed(QQuickItem *item) override;
+
+ void contentChildrenChange();
+
+ bool updateContentWidth();
+ bool updateContentHeight();
+ void updateContentSize();
+
+ bool hasContentWidth;
+ bool hasContentHeight;
qreal contentWidth;
qreal contentHeight;
+ QQuickItem *firstChild;
};
QT_END_NAMESPACE
diff --git a/src/quicktemplates2/qquickpopup.cpp b/src/quicktemplates2/qquickpopup.cpp
index e3ab952d..03dd3dd0 100644
--- a/src/quicktemplates2/qquickpopup.cpp
+++ b/src/quicktemplates2/qquickpopup.cpp
@@ -36,6 +36,7 @@
#include "qquickpopup_p.h"
#include "qquickpopup_p_p.h"
+#include "qquickpopupanchors_p.h"
#include "qquickpopupitem_p_p.h"
#include "qquickpopuppositioner_p_p.h"
#include "qquickapplicationwindow_p.h"
@@ -178,6 +179,11 @@ QT_BEGIN_NAMESPACE
\include qquickoverlay-popup-parent.qdocinc
+ Another way to center a popup in the window regardless of its parent item
+ is to use \l {anchors.centerIn}:
+
+ \snippet qtquickcontrols2-popup.qml centerIn
+
\sa {Popup Controls}, {Customizing Popup}, ApplicationWindow
*/
@@ -259,7 +265,8 @@ QQuickPopupPrivate::QQuickPopupPrivate()
exit(nullptr),
popupItem(nullptr),
positioner(nullptr),
- transitionManager(this)
+ transitionManager(this),
+ anchors(nullptr)
{
}
@@ -572,6 +579,48 @@ void QQuickPopupPrivate::setBottomMargin(qreal value, bool reset)
}
}
+/*!
+ \since QtQuick.Controls 2.5 (Qt 5.12)
+ \qmlpropertygroup QtQuick.Controls::Popup::anchors
+ \qmlproperty Object QtQuick.Controls::Popup::anchors.centerIn
+
+ Anchors provide a way to position an item by specifying its
+ relationship with other items.
+
+ A common use case is to center a popup within its parent. One way to do
+ this is with the \l {Item::}{x} and \l {Item::}{y} properties. Anchors offer
+ a more convenient approach:
+
+ \qml
+ Pane {
+ // ...
+
+ Popup {
+ anchors.centerIn: parent
+ }
+ }
+ \endqml
+
+ It is also possible to center the popup in the window by using \l Overlay:
+
+ \snippet qtquickcontrols2-popup.qml centerIn
+
+ This makes it easy to center a popup in the window from any component.
+
+ \note Popups can only be centered within their immediate parent or
+ the window overlay; trying to center in other items will produce a warning.
+
+ \sa {Popup Positioning}, {Item::anchors}
+*/
+QQuickPopupAnchors *QQuickPopupPrivate::getAnchors()
+{
+ if (!anchors) {
+ Q_Q(QQuickPopup);
+ anchors = new QQuickPopupAnchors(positioner, q);
+ }
+ return anchors;
+}
+
void QQuickPopupPrivate::setWindow(QQuickWindow *newWindow)
{
Q_Q(QQuickPopup);
@@ -1294,11 +1343,12 @@ void QQuickPopup::resetPadding()
/*!
\qmlproperty real QtQuick.Controls::Popup::topPadding
- This property holds the top padding.
+ This property holds the top padding. Unless explicitly set, the value
+ is equal to \c verticalPadding.
\include qquickpopup-padding.qdocinc
- \sa padding, bottomPadding, availableHeight
+ \sa padding, bottomPadding, verticalPadding, availableHeight
*/
qreal QQuickPopup::topPadding() const
{
@@ -1321,11 +1371,12 @@ void QQuickPopup::resetTopPadding()
/*!
\qmlproperty real QtQuick.Controls::Popup::leftPadding
- This property holds the left padding.
+ This property holds the left padding. Unless explicitly set, the value
+ is equal to \c horizontalPadding.
\include qquickpopup-padding.qdocinc
- \sa padding, rightPadding, availableWidth
+ \sa padding, rightPadding, horizontalPadding, availableWidth
*/
qreal QQuickPopup::leftPadding() const
{
@@ -1348,11 +1399,12 @@ void QQuickPopup::resetLeftPadding()
/*!
\qmlproperty real QtQuick.Controls::Popup::rightPadding
- This property holds the right padding.
+ This property holds the right padding. Unless explicitly set, the value
+ is equal to \c horizontalPadding.
\include qquickpopup-padding.qdocinc
- \sa padding, leftPadding, availableWidth
+ \sa padding, leftPadding, horizontalPadding, availableWidth
*/
qreal QQuickPopup::rightPadding() const
{
@@ -1375,11 +1427,12 @@ void QQuickPopup::resetRightPadding()
/*!
\qmlproperty real QtQuick.Controls::Popup::bottomPadding
- This property holds the bottom padding.
+ This property holds the bottom padding. Unless explicitly set, the value
+ is equal to \c verticalPadding.
\include qquickpopup-padding.qdocinc
- \sa padding, topPadding, availableHeight
+ \sa padding, topPadding, verticalPadding, availableHeight
*/
qreal QQuickPopup::bottomPadding() const
{
@@ -2087,6 +2140,64 @@ void QQuickPopup::setExit(QQuickTransition *transition)
emit exitChanged();
}
+/*!
+ \since QtQuick.Controls 2.5 (Qt 5.12)
+ \qmlproperty real QtQuick.Controls::Popup::horizontalPadding
+
+ This property holds the horizontal padding. Unless explicitly set, the value
+ is equal to \c padding.
+
+ \include qquickpopup-padding.qdocinc
+
+ \sa padding, leftPadding, rightPadding, verticalPadding
+*/
+qreal QQuickPopup::horizontalPadding() const
+{
+ Q_D(const QQuickPopup);
+ return d->popupItem->horizontalPadding();
+}
+
+void QQuickPopup::setHorizontalPadding(qreal padding)
+{
+ Q_D(QQuickPopup);
+ d->popupItem->setHorizontalPadding(padding);
+}
+
+void QQuickPopup::resetHorizontalPadding()
+{
+ Q_D(QQuickPopup);
+ d->popupItem->resetHorizontalPadding();
+}
+
+/*!
+ \since QtQuick.Controls 2.5 (Qt 5.12)
+ \qmlproperty real QtQuick.Controls::Popup::verticalPadding
+
+ This property holds the vertical padding. Unless explicitly set, the value
+ is equal to \c padding.
+
+ \include qquickpopup-padding.qdocinc
+
+ \sa padding, topPadding, bottomPadding, horizontalPadding
+*/
+qreal QQuickPopup::verticalPadding() const
+{
+ Q_D(const QQuickPopup);
+ return d->popupItem->verticalPadding();
+}
+
+void QQuickPopup::setVerticalPadding(qreal padding)
+{
+ Q_D(QQuickPopup);
+ d->popupItem->setVerticalPadding(padding);
+}
+
+void QQuickPopup::resetVerticalPadding()
+{
+ Q_D(QQuickPopup);
+ d->popupItem->resetVerticalPadding();
+}
+
bool QQuickPopup::filtersChildMouseEvents() const
{
Q_D(const QQuickPopup);
@@ -2337,10 +2448,14 @@ void QQuickPopup::paddingChange(const QMarginsF &newPadding, const QMarginsF &ol
if (bp)
emit bottomPaddingChanged();
- if (lp || rp)
+ if (lp || rp) {
+ emit horizontalPaddingChanged();
emit availableWidthChanged();
- if (tp || bp)
+ }
+ if (tp || bp) {
+ emit verticalPaddingChanged();
emit availableHeightChanged();
+ }
}
void QQuickPopup::paletteChange(const QPalette &newPalette, const QPalette &oldPalette)
@@ -2359,12 +2474,12 @@ void QQuickPopup::spacingChange(qreal newSpacing, qreal oldSpacing)
QFont QQuickPopup::defaultFont() const
{
- return QQuickControlPrivate::themeFont(QPlatformTheme::SystemFont);
+ return QQuickTheme::themeFont(QQuickTheme::System);
}
QPalette QQuickPopup::defaultPalette() const
{
- return QQuickControlPrivate::themePalette(QPlatformTheme::SystemPalette);
+ return QQuickTheme::themePalette(QQuickTheme::System);
}
#if QT_CONFIG(accessibility)
@@ -2404,3 +2519,5 @@ bool QQuickPopup::setAccessibleProperty(const char *propertyName, const QVariant
}
QT_END_NAMESPACE
+
+#include "moc_qquickpopup_p.cpp"
diff --git a/src/quicktemplates2/qquickpopup_p.h b/src/quicktemplates2/qquickpopup_p.h
index 2a42ff27..07ac664e 100644
--- a/src/quicktemplates2/qquickpopup_p.h
+++ b/src/quicktemplates2/qquickpopup_p.h
@@ -67,6 +67,7 @@
QT_BEGIN_NAMESPACE
class QQuickWindow;
+class QQuickPopupAnchors;
class QQuickPopupPrivate;
class QQuickTransition;
@@ -121,6 +122,10 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPopup : public QObject, public QQml
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)
+ // 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)
+ Q_PRIVATE_PROPERTY(QQuickPopup::d_func(), QQuickPopupAnchors *anchors READ getAnchors DESIGNABLE false CONSTANT FINAL REVISION 5)
Q_CLASSINFO("DeferredPropertyNames", "background,contentItem")
Q_CLASSINFO("DefaultProperty", "contentData")
@@ -304,6 +309,15 @@ public:
void setPalette(const QPalette &palette);
void resetPalette();
+ // 2.5 (Qt 5.12)
+ qreal horizontalPadding() const;
+ void setHorizontalPadding(qreal padding);
+ void resetHorizontalPadding();
+
+ qreal verticalPadding() const;
+ void setVerticalPadding(qreal padding);
+ void resetVerticalPadding();
+
public Q_SLOTS:
void open();
void close();
@@ -359,6 +373,9 @@ Q_SIGNALS:
Q_REVISION(3) void mirroredChanged();
Q_REVISION(3) void enabledChanged();
Q_REVISION(3) void paletteChanged();
+ // 2.5 (Qt 5.12)
+ Q_REVISION(5) void horizontalPaddingChanged();
+ Q_REVISION(5) void verticalPaddingChanged();
protected:
QQuickPopup(QQuickPopupPrivate &dd, QObject *parent);
diff --git a/src/quicktemplates2/qquickpopup_p_p.h b/src/quicktemplates2/qquickpopup_p_p.h
index 6890fdac..64362ada 100644
--- a/src/quicktemplates2/qquickpopup_p_p.h
+++ b/src/quicktemplates2/qquickpopup_p_p.h
@@ -61,6 +61,7 @@ QT_BEGIN_NAMESPACE
class QQuickTransition;
class QQuickTransitionManager;
class QQuickPopup;
+class QQuickPopupAnchors;
class QQuickPopupItem;
class QQuickPopupPrivate;
class QQuickPopupPositioner;
@@ -135,6 +136,8 @@ public:
void setRightMargin(qreal value, bool reset = false);
void setBottomMargin(qreal value, bool reset = false);
+ QQuickPopupAnchors *getAnchors();
+
void setWindow(QQuickWindow *window);
void itemDestroyed(QQuickItem *item) override;
@@ -189,6 +192,7 @@ public:
QList<QQuickStateAction> enterActions;
QList<QQuickStateAction> exitActions;
QQuickPopupTransitionManager transitionManager;
+ QQuickPopupAnchors *anchors;
friend class QQuickPopupTransitionManager;
};
diff --git a/src/quicktemplates2/qquickpopupanchors.cpp b/src/quicktemplates2/qquickpopupanchors.cpp
new file mode 100644
index 00000000..1311a322
--- /dev/null
+++ b/src/quicktemplates2/qquickpopupanchors.cpp
@@ -0,0 +1,90 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 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 "qquickpopupanchors_p.h"
+#include "qquickpopupanchors_p_p.h"
+#include "qquickpopuppositioner_p_p.h"
+
+#include <QtQuick/qquickwindow.h>
+
+QT_BEGIN_NAMESPACE
+
+QQuickPopupAnchorsPrivate::QQuickPopupAnchorsPrivate(QQuickPopupPositioner *positioner)
+ : positioner(positioner)
+{
+}
+
+QQuickPopupAnchorsPrivate::~QQuickPopupAnchorsPrivate()
+{
+}
+
+QQuickPopupAnchors::QQuickPopupAnchors(QQuickPopupPositioner *positioner, QObject *parent)
+ : QObject(*(new QQuickPopupAnchorsPrivate(positioner)), parent)
+{
+}
+
+QQuickPopupAnchors::QQuickPopupAnchors(QQuickPopupAnchorsPrivate &dd, QObject *parent)
+ : QObject(dd, parent)
+{
+}
+
+QQuickPopupAnchors::~QQuickPopupAnchors()
+{
+}
+
+QQuickItem *QQuickPopupAnchors::centerIn() const
+{
+ Q_D(const QQuickPopupAnchors);
+ return d->centerIn;
+}
+
+void QQuickPopupAnchors::setCenterIn(QQuickItem *item)
+{
+ Q_D(QQuickPopupAnchors);
+ if (item == d->centerIn)
+ return;
+
+ d->centerIn = item;
+ d->positioner->reposition();
+ emit centerInChanged();
+}
+
+void QQuickPopupAnchors::resetCenterIn()
+{
+ setCenterIn(nullptr);
+}
+
+QT_END_NAMESPACE
diff --git a/src/quicktemplates2/qquickpopupanchors_p.h b/src/quicktemplates2/qquickpopupanchors_p.h
new file mode 100644
index 00000000..490a4867
--- /dev/null
+++ b/src/quicktemplates2/qquickpopupanchors_p.h
@@ -0,0 +1,89 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 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 QQUICKPOPUPANCHORS_P_H
+#define QQUICKPOPUPANCHORS_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 <QtCore/qobject.h>
+#include <QtQml/qqml.h>
+#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h>
+
+QT_BEGIN_NAMESPACE
+
+class QQuickItem;
+class QQuickPopupAnchorsPrivate;
+class QQuickPopupPositioner;
+
+class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickPopupAnchors : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(QQuickItem *centerIn READ centerIn WRITE setCenterIn RESET resetCenterIn NOTIFY centerInChanged)
+
+public:
+ explicit QQuickPopupAnchors(QQuickPopupPositioner *positioner, QObject *parent);
+ ~QQuickPopupAnchors();
+
+ QQuickItem *centerIn() const;
+ void setCenterIn(QQuickItem *item);
+ void resetCenterIn();
+
+Q_SIGNALS:
+ void centerInChanged();
+
+protected:
+ QQuickPopupAnchors(QQuickPopupAnchorsPrivate &dd, QObject *parent);
+
+private:
+ Q_DISABLE_COPY(QQuickPopupAnchors)
+ Q_DECLARE_PRIVATE(QQuickPopupAnchors)
+};
+
+QT_END_NAMESPACE
+
+QML_DECLARE_TYPE(QQuickPopupAnchors)
+
+#endif // QQUICKPOPUPANCHORS_P_H
diff --git a/src/quicktemplates2/qquickpopupanchors_p_p.h b/src/quicktemplates2/qquickpopupanchors_p_p.h
new file mode 100644
index 00000000..c2f577bf
--- /dev/null
+++ b/src/quicktemplates2/qquickpopupanchors_p_p.h
@@ -0,0 +1,77 @@
+/****************************************************************************
+**
+** Copyright (C) 2018 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 QQUICKPOPUPANCHORS_P_P_H
+#define QQUICKPOPUPANCHORS_P_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 <QtCore/private/qobject_p.h>
+
+QT_BEGIN_NAMESPACE
+
+class QQuickPopupAnchors;
+class QQuickPopupPositioner;
+
+class QQuickPopupAnchorsPrivate : public QObjectPrivate
+{
+ Q_DECLARE_PUBLIC(QQuickPopupAnchors)
+
+public:
+ QQuickPopupAnchorsPrivate(QQuickPopupPositioner *positioner);
+ ~QQuickPopupAnchorsPrivate();
+
+ static QQuickPopupAnchorsPrivate *get(QQuickPopupAnchors *popupAnchors)
+ {
+ return popupAnchors->d_func();
+ }
+
+ QQuickPopupPositioner *positioner = nullptr;
+ QQuickItem *centerIn = nullptr;
+};
+
+QT_END_NAMESPACE
+
+#endif // QQUICKPOPUPANCHORS_P_P_H
diff --git a/src/quicktemplates2/qquickpopupitem.cpp b/src/quicktemplates2/qquickpopupitem.cpp
index 566a5245..c0a00292 100644
--- a/src/quicktemplates2/qquickpopupitem.cpp
+++ b/src/quicktemplates2/qquickpopupitem.cpp
@@ -38,6 +38,7 @@
#include "qquickapplicationwindow_p.h"
#include "qquickshortcutcontext_p_p.h"
#include "qquickcontrol_p_p.h"
+#include "qquickcontentitem_p.h"
#include "qquickpopup_p_p.h"
#include "qquickdeferredexecute_p_p.h"
@@ -97,7 +98,7 @@ void QQuickPopupItemPrivate::resolveFont()
if (QQuickApplicationWindow *window = qobject_cast<QQuickApplicationWindow *>(popup->window()))
inheritFont(window->font());
else
- inheritFont(themeFont(QPlatformTheme::SystemFont));
+ inheritFont(QQuickTheme::themeFont(QQuickTheme::System));
}
void QQuickPopupItemPrivate::resolvePalette()
@@ -105,7 +106,7 @@ void QQuickPopupItemPrivate::resolvePalette()
if (QQuickApplicationWindow *window = qobject_cast<QQuickApplicationWindow *>(popup->window()))
inheritPalette(window->palette());
else
- inheritPalette(themePalette(QPlatformTheme::SystemPalette));
+ inheritPalette(QQuickTheme::themePalette(QQuickTheme::System));
}
QQuickItem *QQuickPopupItemPrivate::getContentItem()
@@ -113,7 +114,8 @@ QQuickItem *QQuickPopupItemPrivate::getContentItem()
Q_Q(QQuickPopupItem);
if (QQuickItem *item = QQuickControlPrivate::getContentItem())
return item;
- return new QQuickItem(q);
+
+ return new QQuickContentItem(QStringLiteral("Popup"), q);
}
static inline QString contentItemName() { return QStringLiteral("contentItem"); }
diff --git a/src/quicktemplates2/qquickpopuppositioner.cpp b/src/quicktemplates2/qquickpopuppositioner.cpp
index 2b67c85e..60a989da 100644
--- a/src/quicktemplates2/qquickpopuppositioner.cpp
+++ b/src/quicktemplates2/qquickpopuppositioner.cpp
@@ -34,10 +34,13 @@
**
****************************************************************************/
+#include "qquickoverlay_p.h"
#include "qquickpopuppositioner_p_p.h"
+#include "qquickpopupanchors_p.h"
#include "qquickpopupitem_p_p.h"
#include "qquickpopup_p_p.h"
+#include <QtQml/qqmlinfo.h>
#include <QtQuick/private/qquickitem_p.h>
QT_BEGIN_NAMESPACE
@@ -111,12 +114,31 @@ void QQuickPopupPositioner::reposition()
bool heightAdjusted = false;
QQuickPopupPrivate *p = QQuickPopupPrivate::get(m_popup);
- QRectF rect(p->allowHorizontalMove ? p->x : popupItem->x(),
- p->allowVerticalMove ? p->y : popupItem->y(),
+ const QQuickItem *centerInParent = p->anchors ? p->getAnchors()->centerIn() : nullptr;
+ const QQuickOverlay *centerInOverlay = qobject_cast<const QQuickOverlay*>(centerInParent);
+ QRectF rect(!centerInParent ? p->allowHorizontalMove ? p->x : popupItem->x() : 0,
+ !centerInParent ? p->allowVerticalMove ? p->y : popupItem->y() : 0,
!p->hasWidth && iw > 0 ? iw : w,
!p->hasHeight && ih > 0 ? ih : h);
if (m_parentItem) {
- rect.moveTopLeft(m_parentItem->mapToItem(popupItem->parentItem(), rect.topLeft()));
+ // m_parentItem is the parent that the popup should open in,
+ // and popupItem()->parentItem() is the overlay, so the mapToItem() calls below
+ // effectively map the rect to scene coordinates.
+ if (centerInParent) {
+ if (centerInParent != parentItem() && !centerInOverlay) {
+ qmlWarning(m_popup) << "Popup can only be centered within its immediate parent or Overlay.overlay";
+ return;
+ }
+
+ if (centerInOverlay) {
+ rect.moveCenter(QPointF(qRound(centerInOverlay->width() / 2.0), qRound(centerInOverlay->height() / 2.0)));
+ } else {
+ const QPointF parentItemCenter = QPointF(qRound(m_parentItem->width() / 2), qRound(m_parentItem->height() / 2));
+ rect.moveCenter(m_parentItem->mapToItem(popupItem->parentItem(), parentItemCenter));
+ }
+ } else {
+ rect.moveTopLeft(m_parentItem->mapToItem(popupItem->parentItem(), rect.topLeft()));
+ }
if (p->window) {
const QMarginsF margins = p->getMargins();
@@ -217,7 +239,11 @@ void QQuickPopupPositioner::reposition()
popupItem->setPosition(rect.topLeft());
- const QPointF effectivePos = m_parentItem ? m_parentItem->mapFromScene(rect.topLeft()) : rect.topLeft();
+ // If the popup was assigned a parent, rect will be in scene coordinates,
+ // so we need to map its top left back to item coordinates.
+ // However, if centering within the overlay, the coordinates will be relative
+ // to the window, so we don't need to do anything.
+ const QPointF effectivePos = m_parentItem && !centerInOverlay ? m_parentItem->mapFromScene(rect.topLeft()) : rect.topLeft();
if (!qFuzzyCompare(p->effectiveX, effectivePos.x())) {
p->effectiveX = effectivePos.x();
emit m_popup->xChanged();
diff --git a/src/quicktemplates2/qquickradiobutton.cpp b/src/quicktemplates2/qquickradiobutton.cpp
index 86be3ed6..31aa4be9 100644
--- a/src/quicktemplates2/qquickradiobutton.cpp
+++ b/src/quicktemplates2/qquickradiobutton.cpp
@@ -99,12 +99,12 @@ QQuickRadioButton::QQuickRadioButton(QQuickItem *parent)
QFont QQuickRadioButton::defaultFont() const
{
- return QQuickControlPrivate::themeFont(QPlatformTheme::RadioButtonFont);
+ return QQuickTheme::themeFont(QQuickTheme::RadioButton);
}
QPalette QQuickRadioButton::defaultPalette() const
{
- return QQuickControlPrivate::themePalette(QPlatformTheme::RadioButtonPalette);
+ return QQuickTheme::themePalette(QQuickTheme::RadioButton);
}
#if QT_CONFIG(accessibility)
diff --git a/src/quicktemplates2/qquickradiodelegate.cpp b/src/quicktemplates2/qquickradiodelegate.cpp
index fe603d36..12cb0d08 100644
--- a/src/quicktemplates2/qquickradiodelegate.cpp
+++ b/src/quicktemplates2/qquickradiodelegate.cpp
@@ -100,7 +100,12 @@ QQuickRadioDelegate::QQuickRadioDelegate(QQuickItem *parent)
QFont QQuickRadioDelegate::defaultFont() const
{
- return QQuickControlPrivate::themeFont(QPlatformTheme::ListViewFont);
+ return QQuickTheme::themeFont(QQuickTheme::ListView);
+}
+
+QPalette QQuickRadioDelegate::defaultPalette() const
+{
+ return QQuickTheme::themePalette(QQuickTheme::ListView);
}
#if QT_CONFIG(accessibility)
diff --git a/src/quicktemplates2/qquickradiodelegate_p.h b/src/quicktemplates2/qquickradiodelegate_p.h
index 4db9959d..453856e4 100644
--- a/src/quicktemplates2/qquickradiodelegate_p.h
+++ b/src/quicktemplates2/qquickradiodelegate_p.h
@@ -63,6 +63,7 @@ public:
protected:
QFont defaultFont() const override;
+ QPalette defaultPalette() const override;
#if QT_CONFIG(accessibility)
QAccessible::Role accessibleRole() const override;
diff --git a/src/quicktemplates2/qquickrangeslider.cpp b/src/quicktemplates2/qquickrangeslider.cpp
index 36d8ca02..a33bddc5 100644
--- a/src/quicktemplates2/qquickrangeslider.cpp
+++ b/src/quicktemplates2/qquickrangeslider.cpp
@@ -358,6 +358,7 @@ public:
from(defaultFrom),
to(defaultTo),
stepSize(0),
+ touchDragThreshold(-1),
first(nullptr),
second(nullptr),
orientation(Qt::Horizontal),
@@ -381,6 +382,7 @@ public:
qreal from;
qreal to;
qreal stepSize;
+ qreal touchDragThreshold;
QQuickRangeSliderNode *first;
QQuickRangeSliderNode *second;
QPointF pressPoint;
@@ -647,6 +649,38 @@ void QQuickRangeSlider::setTo(qreal to)
}
/*!
+ \since QtQuick.Controls 2.5 (Qt 5.12)
+ \qmlproperty qreal QtQuick.Controls::RangeSlider::touchDragThreshold
+
+ This property holds the threshold (in logical pixels) at which a touch drag event will be initiated.
+ The mouse drag threshold won't be affected.
+ The default value is \c Qt.styleHints.startDragDistance.
+
+ \sa QStyleHints
+
+*/
+qreal QQuickRangeSlider::touchDragThreshold() const
+{
+ Q_D(const QQuickRangeSlider);
+ return d->touchDragThreshold;
+}
+
+void QQuickRangeSlider::setTouchDragThreshold(qreal touchDragThreshold)
+{
+ Q_D(QQuickRangeSlider);
+ if (d->touchDragThreshold == touchDragThreshold)
+ return;
+
+ d->touchDragThreshold = touchDragThreshold;
+ emit touchDragThresholdChanged();
+}
+
+void QQuickRangeSlider::resetTouchDragThreshold()
+{
+ setTouchDragThreshold(-1);
+}
+
+/*!
\qmlpropertygroup QtQuick.Controls::RangeSlider::first
\qmlproperty real QtQuick.Controls::RangeSlider::first.value
\qmlproperty real QtQuick.Controls::RangeSlider::first.position
@@ -1067,9 +1101,9 @@ void QQuickRangeSlider::touchEvent(QTouchEvent *event)
case Qt::TouchPointMoved:
if (!keepTouchGrab()) {
if (d->orientation == Qt::Horizontal)
- setKeepTouchGrab(QQuickWindowPrivate::dragOverThreshold(point.pos().x() - point.startPos().x(), Qt::XAxis, &point));
+ setKeepTouchGrab(QQuickWindowPrivate::dragOverThreshold(point.pos().x() - point.startPos().x(), Qt::XAxis, &point, qRound(d->touchDragThreshold)));
else
- setKeepTouchGrab(QQuickWindowPrivate::dragOverThreshold(point.pos().y() - point.startPos().y(), Qt::YAxis, &point));
+ setKeepTouchGrab(QQuickWindowPrivate::dragOverThreshold(point.pos().y() - point.startPos().y(), Qt::YAxis, &point, qRound(d->touchDragThreshold)));
}
if (keepTouchGrab())
d->handleMove(point.pos());
diff --git a/src/quicktemplates2/qquickrangeslider_p.h b/src/quicktemplates2/qquickrangeslider_p.h
index 45de6bbb..ae761ed0 100644
--- a/src/quicktemplates2/qquickrangeslider_p.h
+++ b/src/quicktemplates2/qquickrangeslider_p.h
@@ -70,6 +70,8 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickRangeSlider : public QQuickControl
Q_PROPERTY(bool horizontal READ isHorizontal NOTIFY orientationChanged FINAL REVISION 3)
// 2.3 (Qt 5.10)
Q_PROPERTY(bool vertical READ isVertical NOTIFY orientationChanged FINAL REVISION 3)
+ // 2.5 (Qt 5.12)
+ Q_PROPERTY(qreal touchDragThreshold READ touchDragThreshold WRITE setTouchDragThreshold RESET resetTouchDragThreshold NOTIFY touchDragThresholdChanged FINAL REVISION 5)
public:
explicit QQuickRangeSlider(QQuickItem *parent = nullptr);
@@ -109,6 +111,11 @@ public:
bool isHorizontal() const;
bool isVertical() const;
+ // 2.5 (Qt 5.12)
+ qreal touchDragThreshold() const;
+ void setTouchDragThreshold(qreal touchDragThreshold);
+ void resetTouchDragThreshold();
+
Q_SIGNALS:
void fromChanged();
void toChanged();
@@ -117,6 +124,8 @@ Q_SIGNALS:
void orientationChanged();
// 2.2 (Qt 5.9)
Q_REVISION(2) void liveChanged();
+ // 2.5 (Qt 5.12)
+ Q_REVISION(5) void touchDragThresholdChanged();
protected:
void focusInEvent(QFocusEvent *event) override;
diff --git a/src/quicktemplates2/qquickslider.cpp b/src/quicktemplates2/qquickslider.cpp
index 5ad3c036..86e2445a 100644
--- a/src/quicktemplates2/qquickslider.cpp
+++ b/src/quicktemplates2/qquickslider.cpp
@@ -95,6 +95,7 @@ public:
value(0),
position(0),
stepSize(0),
+ touchDragThreshold(-1), // in QQuickWindowPrivate::dragOverThreshold, '-1' implies using styleHints::startDragDistance()
live(true),
pressed(false),
orientation(Qt::Horizontal),
@@ -121,6 +122,7 @@ public:
qreal value;
qreal position;
qreal stepSize;
+ qreal touchDragThreshold;
bool live;
bool pressed;
QPointF pressPoint;
@@ -636,6 +638,37 @@ void QQuickSlider::decrease()
setValue(d->value - step);
}
+/*!
+ \since QtQuick.Controls 2.5 (Qt 5.12)
+ \qmlproperty qreal QtQuick.Controls::Slider::touchDragThreshold
+
+ This property holds the threshold (in logical pixels) at which a touch drag event will be initiated.
+ The mouse drag threshold won't be affected.
+ The default value is \c Qt.styleHints.startDragDistance.
+
+ \sa QStyleHints
+*/
+qreal QQuickSlider::touchDragThreshold() const
+{
+ Q_D(const QQuickSlider);
+ return d->touchDragThreshold;
+}
+
+void QQuickSlider::setTouchDragThreshold(qreal touchDragThreshold)
+{
+ Q_D(QQuickSlider);
+ if (d->touchDragThreshold == touchDragThreshold)
+ return;
+
+ d->touchDragThreshold = touchDragThreshold;
+ emit touchDragThresholdChanged();
+}
+
+void QQuickSlider::resetTouchDragThreshold()
+{
+ setTouchDragThreshold(-1);
+}
+
void QQuickSlider::keyPressEvent(QKeyEvent *event)
{
Q_D(QQuickSlider);
@@ -704,9 +737,9 @@ void QQuickSlider::touchEvent(QTouchEvent *event)
case Qt::TouchPointMoved:
if (!keepTouchGrab()) {
if (d->orientation == Qt::Horizontal)
- setKeepTouchGrab(QQuickWindowPrivate::dragOverThreshold(point.pos().x() - d->pressPoint.x(), Qt::XAxis, &point));
+ setKeepTouchGrab(QQuickWindowPrivate::dragOverThreshold(point.pos().x() - d->pressPoint.x(), Qt::XAxis, &point, qRound(d->touchDragThreshold)));
else
- setKeepTouchGrab(QQuickWindowPrivate::dragOverThreshold(point.pos().y() - d->pressPoint.y(), Qt::YAxis, &point));
+ setKeepTouchGrab(QQuickWindowPrivate::dragOverThreshold(point.pos().y() - d->pressPoint.y(), Qt::YAxis, &point, qRound(d->touchDragThreshold)));
}
if (keepTouchGrab())
d->handleMove(point.pos());
diff --git a/src/quicktemplates2/qquickslider_p.h b/src/quicktemplates2/qquickslider_p.h
index ee6bcffa..847e15ec 100644
--- a/src/quicktemplates2/qquickslider_p.h
+++ b/src/quicktemplates2/qquickslider_p.h
@@ -72,7 +72,8 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickSlider : public QQuickControl
Q_PROPERTY(bool horizontal READ isHorizontal NOTIFY orientationChanged FINAL REVISION 3)
Q_PROPERTY(bool vertical READ isVertical NOTIFY orientationChanged FINAL REVISION 3)
Q_CLASSINFO("DeferredPropertyNames", "background,handle")
-
+ // 2.5 (Qt 5.12)
+ Q_PROPERTY(qreal touchDragThreshold READ touchDragThreshold WRITE setTouchDragThreshold RESET resetTouchDragThreshold NOTIFY touchDragThresholdChanged FINAL REVISION 5)
public:
explicit QQuickSlider(QQuickItem *parent = nullptr);
@@ -121,6 +122,11 @@ public:
bool isHorizontal() const;
bool isVertical() const;
+ // 2.5 (Qt 5.12)
+ qreal touchDragThreshold() const;
+ void setTouchDragThreshold(qreal touchDragThreshold);
+ void resetTouchDragThreshold();
+
public Q_SLOTS:
void increase();
void decrease();
@@ -139,6 +145,8 @@ Q_SIGNALS:
// 2.2 (Qt 5.9)
Q_REVISION(2) void moved();
Q_REVISION(2) void liveChanged();
+ // 2.5 (Qt 5.12)
+ Q_REVISION(5) void touchDragThresholdChanged();
protected:
void keyPressEvent(QKeyEvent *event) override;
diff --git a/src/quicktemplates2/qquickspinbox.cpp b/src/quicktemplates2/qquickspinbox.cpp
index 7412936c..3dc10f34 100644
--- a/src/quicktemplates2/qquickspinbox.cpp
+++ b/src/quicktemplates2/qquickspinbox.cpp
@@ -1023,12 +1023,12 @@ void QQuickSpinBox::localeChange(const QLocale &newLocale, const QLocale &oldLoc
QFont QQuickSpinBox::defaultFont() const
{
- return QQuickControlPrivate::themeFont(QPlatformTheme::EditorFont);
+ return QQuickTheme::themeFont(QQuickTheme::SpinBox);
}
QPalette QQuickSpinBox::defaultPalette() const
{
- return QQuickControlPrivate::themePalette(QPlatformTheme::TextLineEditPalette);
+ return QQuickTheme::themePalette(QQuickTheme::SpinBox);
}
#if QT_CONFIG(accessibility)
diff --git a/src/quicktemplates2/qquickswipedelegate.cpp b/src/quicktemplates2/qquickswipedelegate.cpp
index dcf93437..9df361ee 100644
--- a/src/quicktemplates2/qquickswipedelegate.cpp
+++ b/src/quicktemplates2/qquickswipedelegate.cpp
@@ -1230,7 +1230,12 @@ void QQuickSwipeDelegate::geometryChanged(const QRectF &newGeometry, const QRect
QFont QQuickSwipeDelegate::defaultFont() const
{
- return QQuickControlPrivate::themeFont(QPlatformTheme::ListViewFont);
+ return QQuickTheme::themeFont(QQuickTheme::ListView);
+}
+
+QPalette QQuickSwipeDelegate::defaultPalette() const
+{
+ return QQuickTheme::themePalette(QQuickTheme::ListView);
}
#if QT_CONFIG(accessibility)
diff --git a/src/quicktemplates2/qquickswipedelegate_p.h b/src/quicktemplates2/qquickswipedelegate_p.h
index a9900eb8..ad840097 100644
--- a/src/quicktemplates2/qquickswipedelegate_p.h
+++ b/src/quicktemplates2/qquickswipedelegate_p.h
@@ -82,6 +82,7 @@ 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/qquickswitch.cpp b/src/quicktemplates2/qquickswitch.cpp
index da1f0408..3093b334 100644
--- a/src/quicktemplates2/qquickswitch.cpp
+++ b/src/quicktemplates2/qquickswitch.cpp
@@ -231,10 +231,14 @@ void QQuickSwitch::buttonChange(ButtonChange change)
QQuickAbstractButton::buttonChange(change);
}
+QFont QQuickSwitch::defaultFont() const
+{
+ return QQuickTheme::themeFont(QQuickTheme::Switch);
+}
+
QPalette QQuickSwitch::defaultPalette() const
{
- // ### TODO: add QPlatformTheme::SwitchPalette
- return QQuickControlPrivate::themePalette(QPlatformTheme::CheckBoxPalette);
+ return QQuickTheme::themePalette(QQuickTheme::Switch);
}
QT_END_NAMESPACE
diff --git a/src/quicktemplates2/qquickswitch_p.h b/src/quicktemplates2/qquickswitch_p.h
index 0faaf114..ddc32395 100644
--- a/src/quicktemplates2/qquickswitch_p.h
+++ b/src/quicktemplates2/qquickswitch_p.h
@@ -83,6 +83,7 @@ protected:
void nextCheckState() override;
void buttonChange(ButtonChange change) override;
+ QFont defaultFont() const override;
QPalette defaultPalette() const override;
private:
diff --git a/src/quicktemplates2/qquickswitchdelegate.cpp b/src/quicktemplates2/qquickswitchdelegate.cpp
index d8ce8096..3ba859f5 100644
--- a/src/quicktemplates2/qquickswitchdelegate.cpp
+++ b/src/quicktemplates2/qquickswitchdelegate.cpp
@@ -202,7 +202,12 @@ void QQuickSwitchDelegate::touchEvent(QTouchEvent *event)
QFont QQuickSwitchDelegate::defaultFont() const
{
- return QQuickControlPrivate::themeFont(QPlatformTheme::ListViewFont);
+ return QQuickTheme::themeFont(QQuickTheme::ListView);
+}
+
+QPalette QQuickSwitchDelegate::defaultPalette() const
+{
+ return QQuickTheme::themePalette(QQuickTheme::ListView);
}
void QQuickSwitchDelegate::mirrorChange()
diff --git a/src/quicktemplates2/qquickswitchdelegate_p.h b/src/quicktemplates2/qquickswitchdelegate_p.h
index 973ec21d..1fb35aea 100644
--- a/src/quicktemplates2/qquickswitchdelegate_p.h
+++ b/src/quicktemplates2/qquickswitchdelegate_p.h
@@ -79,6 +79,8 @@ protected:
#endif
QFont defaultFont() const override;
+ QPalette defaultPalette() const override;
+
void mirrorChange() override;
void nextCheckState() override;
diff --git a/src/quicktemplates2/qquicktabbar.cpp b/src/quicktemplates2/qquicktabbar.cpp
index cd0c5c45..6d4b8602 100644
--- a/src/quicktemplates2/qquicktabbar.cpp
+++ b/src/quicktemplates2/qquicktabbar.cpp
@@ -441,9 +441,14 @@ void QQuickTabBar::itemRemoved(int index, QQuickItem *item)
polish();
}
+QFont QQuickTabBar::defaultFont() const
+{
+ return QQuickTheme::themeFont(QQuickTheme::TabBar);
+}
+
QPalette QQuickTabBar::defaultPalette() const
{
- return QQuickControlPrivate::themePalette(QPlatformTheme::TabBarPalette);
+ return QQuickTheme::themePalette(QQuickTheme::TabBar);
}
#if QT_CONFIG(accessibility)
diff --git a/src/quicktemplates2/qquicktabbar_p.h b/src/quicktemplates2/qquicktabbar_p.h
index f0299bd5..e87ae133 100644
--- a/src/quicktemplates2/qquicktabbar_p.h
+++ b/src/quicktemplates2/qquicktabbar_p.h
@@ -102,6 +102,7 @@ protected:
void itemMoved(int index, QQuickItem *item) override;
void itemRemoved(int index, QQuickItem *item) override;
+ QFont defaultFont() const override;
QPalette defaultPalette() const override;
#if QT_CONFIG(accessibility)
diff --git a/src/quicktemplates2/qquicktabbutton.cpp b/src/quicktemplates2/qquicktabbutton.cpp
index 617d4aea..597f4a5e 100644
--- a/src/quicktemplates2/qquicktabbutton.cpp
+++ b/src/quicktemplates2/qquicktabbutton.cpp
@@ -72,12 +72,12 @@ QQuickTabButton::QQuickTabButton(QQuickItem *parent)
QFont QQuickTabButton::defaultFont() const
{
- return QQuickControlPrivate::themeFont(QPlatformTheme::TabButtonFont);
+ return QQuickTheme::themeFont(QQuickTheme::TabBar);
}
QPalette QQuickTabButton::defaultPalette() const
{
- return QQuickControlPrivate::themePalette(QPlatformTheme::TabBarPalette);
+ return QQuickTheme::themePalette(QQuickTheme::TabBar);
}
#if QT_CONFIG(accessibility)
diff --git a/src/quicktemplates2/qquicktextarea.cpp b/src/quicktemplates2/qquicktextarea.cpp
index 319f7bbe..a13213fd 100644
--- a/src/quicktemplates2/qquicktextarea.cpp
+++ b/src/quicktemplates2/qquicktextarea.cpp
@@ -194,7 +194,7 @@ void QQuickTextAreaPrivate::inheritFont(const QFont &font)
QFont parentFont = extra.isAllocated() ? extra->requestedFont.resolve(font) : font;
parentFont.resolve(extra.isAllocated() ? extra->requestedFont.resolve() | font.resolve() : font.resolve());
- const QFont defaultFont = QQuickControlPrivate::themeFont(QPlatformTheme::EditorFont);
+ const QFont defaultFont = QQuickTheme::themeFont(QQuickTheme::TextArea);
const QFont resolvedFont = parentFont.resolve(defaultFont);
setFont_helper(resolvedFont);
@@ -236,7 +236,7 @@ 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 = QQuickControlPrivate::themePalette(QPlatformTheme::TextEditPalette);
+ const QPalette defaultPalette = QQuickTheme::themePalette(QQuickTheme::TextArea);
const QPalette resolvedPalette = parentPalette.resolve(defaultPalette);
setPalette_helper(resolvedPalette);
@@ -566,6 +566,30 @@ void QQuickTextArea::setPlaceholderText(const QString &text)
}
/*!
+ \qmlproperty color QtQuick.Controls::TextArea::placeholderTextColor
+ \since QtQuick.Controls 2.5 (Qt 5.12)
+
+ This property holds the color of placeholderText.
+
+ \sa placeholderText
+*/
+QColor QQuickTextArea::placeholderTextColor() const
+{
+ Q_D(const QQuickTextArea);
+ return d->placeholderColor;
+}
+
+void QQuickTextArea::setPlaceholderTextColor(const QColor &color)
+{
+ Q_D(QQuickTextArea);
+ if (d->placeholderColor == color)
+ return;
+
+ d->placeholderColor = color;
+ emit placeholderTextColorChanged();
+}
+
+/*!
\qmlproperty enumeration QtQuick.Controls::TextArea::focusReason
\include qquickcontrol-focusreason.qdocinc
diff --git a/src/quicktemplates2/qquicktextarea_p.h b/src/quicktemplates2/qquicktextarea_p.h
index 5482ceae..346438ea 100644
--- a/src/quicktemplates2/qquicktextarea_p.h
+++ b/src/quicktemplates2/qquicktextarea_p.h
@@ -74,6 +74,8 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickTextArea : public QQuickTextEdit
// 2.3 (Qt 5.10)
Q_PROPERTY(QPalette palette READ palette WRITE setPalette RESET resetPalette NOTIFY paletteChanged FINAL REVISION 3)
Q_CLASSINFO("DeferredPropertyNames", "background")
+ // 2.5 (Qt 5.12)
+ Q_PROPERTY(QColor placeholderTextColor READ placeholderTextColor WRITE setPlaceholderTextColor NOTIFY placeholderTextColorChanged FINAL REVISION 5)
public:
explicit QQuickTextArea(QQuickItem *parent = nullptr);
@@ -108,6 +110,10 @@ public:
void setPalette(const QPalette &palette);
void resetPalette();
+ // 2.5 (Qt 5.12)
+ QColor placeholderTextColor() const;
+ void setPlaceholderTextColor(const QColor &color);
+
Q_SIGNALS:
void fontChanged();
void implicitWidthChanged3();
@@ -123,6 +129,8 @@ Q_SIGNALS:
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();
protected:
void classBegin() override;
diff --git a/src/quicktemplates2/qquicktextarea_p_p.h b/src/quicktemplates2/qquicktextarea_p_p.h
index 8621c61c..c271660a 100644
--- a/src/quicktemplates2/qquicktextarea_p_p.h
+++ b/src/quicktemplates2/qquicktextarea_p_p.h
@@ -142,6 +142,7 @@ public:
QPalette resolvedPalette;
QQuickDeferredPointer<QQuickItem> background;
QString placeholder;
+ QColor placeholderColor;
Qt::FocusReason focusReason;
QQuickPressHandler pressHandler;
QQuickFlickable *flickable;
diff --git a/src/quicktemplates2/qquicktextfield.cpp b/src/quicktemplates2/qquicktextfield.cpp
index 49f9b4c8..65ffb7d9 100644
--- a/src/quicktemplates2/qquicktextfield.cpp
+++ b/src/quicktemplates2/qquicktextfield.cpp
@@ -168,7 +168,7 @@ void QQuickTextFieldPrivate::inheritFont(const QFont &font)
QFont parentFont = extra.isAllocated() ? extra->requestedFont.resolve(font) : font;
parentFont.resolve(extra.isAllocated() ? extra->requestedFont.resolve() | font.resolve() : font.resolve());
- const QFont defaultFont = QQuickControlPrivate::themeFont(QPlatformTheme::EditorFont);
+ const QFont defaultFont = QQuickTheme::themeFont(QQuickTheme::TextField);
const QFont resolvedFont = parentFont.resolve(defaultFont);
setFont_helper(resolvedFont);
@@ -210,7 +210,7 @@ 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 = QQuickControlPrivate::themePalette(QPlatformTheme::TextLineEditPalette);
+ const QPalette defaultPalette = QQuickTheme::themePalette(QQuickTheme::TextField);
const QPalette resolvedPalette = parentPalette.resolve(defaultPalette);
setPalette_helper(resolvedPalette);
@@ -428,6 +428,30 @@ void QQuickTextField::setPlaceholderText(const QString &text)
}
/*!
+ \qmlproperty color QtQuick.Controls::TextField::placeholderTextColor
+ \since QtQuick.Controls 2.5 (Qt 5.12)
+
+ This property holds the color of placeholderText.
+
+ \sa placeholderText
+*/
+QColor QQuickTextField::placeholderTextColor() const
+{
+ Q_D(const QQuickTextField);
+ return d->placeholderColor;
+}
+
+void QQuickTextField::setPlaceholderTextColor(const QColor &color)
+{
+ Q_D(QQuickTextField);
+ if (d->placeholderColor == color)
+ return;
+
+ d->placeholderColor = color;
+ emit placeholderTextColorChanged();
+}
+
+/*!
\qmlproperty enumeration QtQuick.Controls::TextField::focusReason
\include qquickcontrol-focusreason.qdocinc
diff --git a/src/quicktemplates2/qquicktextfield_p.h b/src/quicktemplates2/qquicktextfield_p.h
index 4757bd2d..b2e77342 100644
--- a/src/quicktemplates2/qquicktextfield_p.h
+++ b/src/quicktemplates2/qquicktextfield_p.h
@@ -73,6 +73,8 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickTextField : public QQuickTextInput
// 2.3 (Qt 5.10)
Q_PROPERTY(QPalette palette READ palette WRITE setPalette RESET resetPalette NOTIFY paletteChanged FINAL REVISION 3)
Q_CLASSINFO("DeferredPropertyNames", "background")
+ // 2.5 (Qt 5.12)
+ Q_PROPERTY(QColor placeholderTextColor READ placeholderTextColor WRITE setPlaceholderTextColor NOTIFY placeholderTextColorChanged FINAL REVISION 5)
public:
explicit QQuickTextField(QQuickItem *parent = nullptr);
@@ -101,6 +103,9 @@ public:
QPalette palette() const;
void setPalette(const QPalette &palette);
void resetPalette();
+ // 2.5 (Qt 5.12)
+ QColor placeholderTextColor() const;
+ void setPlaceholderTextColor(const QColor &color);
Q_SIGNALS:
void fontChanged();
@@ -117,6 +122,8 @@ Q_SIGNALS:
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();
protected:
void classBegin() override;
diff --git a/src/quicktemplates2/qquicktextfield_p_p.h b/src/quicktemplates2/qquicktextfield_p_p.h
index 41843370..13a20e32 100644
--- a/src/quicktemplates2/qquicktextfield_p_p.h
+++ b/src/quicktemplates2/qquicktextfield_p_p.h
@@ -130,6 +130,7 @@ public:
QPalette resolvedPalette;
QQuickDeferredPointer<QQuickItem> background;
QString placeholder;
+ QColor placeholderColor;
Qt::FocusReason focusReason;
QQuickPressHandler pressHandler;
};
diff --git a/src/quicktemplates2/qquicktheme.cpp b/src/quicktemplates2/qquicktheme.cpp
new file mode 100644
index 00000000..30185fe2
--- /dev/null
+++ b/src/quicktemplates2/qquicktheme.cpp
@@ -0,0 +1,199 @@
+/****************************************************************************
+**
+** 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 "qquicktheme_p.h"
+#include "qquicktheme_p_p.h"
+
+#include <QtGui/qpa/qplatformtheme.h>
+#include <QtGui/private/qguiapplication_p.h>
+
+QT_BEGIN_NAMESPACE
+
+QScopedPointer<QQuickTheme> QQuickThemePrivate::current;
+
+static QPlatformTheme::Font platformFont(QQuickTheme::Scope scope)
+{
+ switch (scope) {
+ case QQuickTheme::Button: return QPlatformTheme::PushButtonFont;
+ case QQuickTheme::CheckBox: return QPlatformTheme::CheckBoxFont;
+ case QQuickTheme::ComboBox: return QPlatformTheme::ComboMenuItemFont;
+ case QQuickTheme::GroupBox: return QPlatformTheme::GroupBoxTitleFont;
+ case QQuickTheme::ItemView: return QPlatformTheme::ItemViewFont;
+ case QQuickTheme::Label: return QPlatformTheme::LabelFont;
+ case QQuickTheme::ListView: return QPlatformTheme::ListViewFont;
+ case QQuickTheme::Menu: return QPlatformTheme::MenuFont;
+ case QQuickTheme::MenuBar: return QPlatformTheme::MenuBarFont;
+ case QQuickTheme::RadioButton: return QPlatformTheme::RadioButtonFont;
+ case QQuickTheme::SpinBox: return QPlatformTheme::EditorFont;
+ case QQuickTheme::Switch: return QPlatformTheme::CheckBoxFont;
+ case QQuickTheme::TabBar: return QPlatformTheme::TabButtonFont;
+ case QQuickTheme::TextArea: return QPlatformTheme::EditorFont;
+ case QQuickTheme::TextField: return QPlatformTheme::EditorFont;
+ case QQuickTheme::ToolBar: return QPlatformTheme::ToolButtonFont;
+ case QQuickTheme::ToolTip: return QPlatformTheme::TipLabelFont;
+ case QQuickTheme::Tumbler: return QPlatformTheme::ItemViewFont;
+ default: return QPlatformTheme::SystemFont;
+ }
+}
+
+static QPlatformTheme::Palette platformPalette(QQuickTheme::Scope scope)
+{
+ switch (scope) {
+ case QQuickTheme::Button: return QPlatformTheme::ButtonPalette;
+ case QQuickTheme::CheckBox: return QPlatformTheme::CheckBoxPalette;
+ case QQuickTheme::ComboBox: return QPlatformTheme::ComboBoxPalette;
+ case QQuickTheme::GroupBox: return QPlatformTheme::GroupBoxPalette;
+ case QQuickTheme::ItemView: return QPlatformTheme::ItemViewPalette;
+ case QQuickTheme::Label: return QPlatformTheme::LabelPalette;
+ case QQuickTheme::ListView: return QPlatformTheme::ItemViewPalette;
+ case QQuickTheme::Menu: return QPlatformTheme::MenuPalette;
+ case QQuickTheme::MenuBar: return QPlatformTheme::MenuBarPalette;
+ case QQuickTheme::RadioButton: return QPlatformTheme::RadioButtonPalette;
+ case QQuickTheme::SpinBox: return QPlatformTheme::TextLineEditPalette;
+ case QQuickTheme::Switch: return QPlatformTheme::CheckBoxPalette;
+ case QQuickTheme::TabBar: return QPlatformTheme::TabBarPalette;
+ case QQuickTheme::TextArea: return QPlatformTheme::TextEditPalette;
+ case QQuickTheme::TextField: return QPlatformTheme::TextLineEditPalette;
+ case QQuickTheme::ToolBar: return QPlatformTheme::ToolButtonPalette;
+ case QQuickTheme::ToolTip: return QPlatformTheme::ToolTipPalette;
+ case QQuickTheme::Tumbler: return QPlatformTheme::ItemViewPalette;
+ default: return QPlatformTheme::SystemPalette;
+ }
+}
+
+const QFont *QQuickThemePrivate::resolveThemeFont(QQuickTheme::Scope scope)
+{
+ Q_Q(QQuickTheme);
+ if (!hasResolvedFonts) {
+ q->resolveFonts(defaultFont ? *defaultFont : QFont());
+ hasResolvedFonts = true;
+ defaultFont.reset();
+ }
+ return q->font(scope);
+}
+
+const QPalette *QQuickThemePrivate::resolveThemePalette(QQuickTheme::Scope scope)
+{
+ Q_Q(QQuickTheme);
+ if (!hasResolvedPalettes) {
+ q->resolvePalettes(defaultPalette ? *defaultPalette : QPalette());
+ hasResolvedPalettes = true;
+ defaultPalette.reset();
+ }
+ return q->palette(scope);
+}
+
+QQuickTheme::QQuickTheme()
+ : d_ptr(new QQuickThemePrivate)
+{
+ d_ptr->q_ptr = this;
+}
+
+QQuickTheme::~QQuickTheme()
+{
+}
+
+QQuickTheme *QQuickTheme::current()
+{
+ return QQuickThemePrivate::current.data();
+}
+
+void QQuickTheme::setCurrent(QQuickTheme *theme)
+{
+ QQuickThemePrivate::current.reset(theme);
+}
+
+QFont QQuickTheme::themeFont(Scope scope)
+{
+ const QFont *font = nullptr;
+ if (QQuickTheme *theme = current())
+ font = QQuickThemePrivate::get(theme)->resolveThemeFont(scope);
+ else if (QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme())
+ font = theme->font(platformFont(scope));
+
+ if (font) {
+ QFont f = *font;
+ if (scope == System)
+ f.resolve(0);
+ return f;
+ }
+
+ return QFont();
+}
+
+QPalette QQuickTheme::themePalette(Scope scope)
+{
+ const QPalette *palette = nullptr;
+ if (QQuickTheme *theme = current())
+ palette = QQuickThemePrivate::get(theme)->resolveThemePalette(scope);
+ else if (QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme())
+ palette = theme->palette(platformPalette(scope));
+
+ if (palette) {
+ QPalette f = *palette;
+ if (scope == System)
+ f.resolve(0);
+ return f;
+ }
+
+ return QPalette();
+}
+
+const QFont *QQuickTheme::font(Scope scope) const
+{
+ Q_D(const QQuickTheme);
+ Q_UNUSED(scope)
+ return d->defaultFont.data();
+}
+
+const QPalette *QQuickTheme::palette(Scope scope) const
+{
+ Q_D(const QQuickTheme);
+ Q_UNUSED(scope)
+ return d->defaultPalette.data();
+}
+
+void QQuickTheme::resolveFonts(const QFont &defaultFont)
+{
+ Q_UNUSED(defaultFont)
+}
+
+void QQuickTheme::resolvePalettes(const QPalette &defaultPalette)
+{
+ Q_UNUSED(defaultPalette)
+}
+
+QT_END_NAMESPACE
diff --git a/src/quickcontrols2/qquickproxytheme_p.h b/src/quicktemplates2/qquicktheme_p.h
index 2d271e8c..32044b67 100644
--- a/src/quickcontrols2/qquickproxytheme_p.h
+++ b/src/quicktemplates2/qquicktheme_p.h
@@ -3,7 +3,7 @@
** Copyright (C) 2017 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
-** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit.
+** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
@@ -34,8 +34,8 @@
**
****************************************************************************/
-#ifndef QQUICKPROXYTHEME_P_H
-#define QQUICKPROXYTHEME_P_H
+#ifndef QQUICKTHEME_P_H
+#define QQUICKTHEME_P_H
//
// W A R N I N G
@@ -48,52 +48,62 @@
// We mean it.
//
-#include <QtGui/qpa/qplatformtheme.h>
-#include <QtQuickControls2/private/qtquickcontrols2global_p.h>
+#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h>
+#include <QtCore/qscopedpointer.h>
+#include <QtGui/qfont.h>
+#include <QtGui/qpalette.h>
QT_BEGIN_NAMESPACE
-class Q_QUICKCONTROLS2_PRIVATE_EXPORT QQuickProxyTheme : public QPlatformTheme
+class QQuickThemePrivate;
+
+class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickTheme
{
public:
- explicit QQuickProxyTheme(QPlatformTheme *theme = nullptr);
- ~QQuickProxyTheme();
-
- QPlatformTheme* theme() const;
-
- QPlatformMenuItem* createPlatformMenuItem() const override;
- QPlatformMenu* createPlatformMenu() const override;
- QPlatformMenuBar* createPlatformMenuBar() const override;
- void showPlatformMenuBar() override;
-
- bool usePlatformNativeDialog(DialogType type) const override;
- QPlatformDialogHelper *createPlatformDialogHelper(DialogType type) const override;
-
-#ifndef QT_NO_SYSTEMTRAYICON
- QPlatformSystemTrayIcon *createPlatformSystemTrayIcon() const override;
-#endif
-
- const QPalette *palette(Palette type = SystemPalette) const override;
-
- const QFont *font(Font type = SystemFont) const override;
-
- QVariant themeHint(ThemeHint hint) const override;
-
- QPixmap standardPixmap(StandardPixmap sp, const QSizeF &size) const override;
- QIcon fileIcon(const QFileInfo &fileInfo, QPlatformTheme::IconOptions iconOptions = 0) const override;
-
- QIconEngine *createIconEngine(const QString &iconName) const override;
-
-#if QT_CONFIG(shortcut)
- QList<QKeySequence> keyBindings(QKeySequence::StandardKey key) const override;
-#endif
-
- QString standardButtonText(int button) const override;
+ QQuickTheme();
+ virtual ~QQuickTheme();
+
+ static QQuickTheme *current();
+ static void setCurrent(QQuickTheme *theme);
+
+ enum Scope {
+ System,
+ Button,
+ CheckBox,
+ ComboBox,
+ GroupBox,
+ ItemView,
+ Label,
+ ListView,
+ Menu,
+ MenuBar,
+ RadioButton,
+ SpinBox,
+ Switch,
+ TabBar,
+ TextArea,
+ TextField,
+ ToolBar,
+ ToolTip,
+ Tumbler
+ };
+
+ static QFont themeFont(Scope scope);
+ static QPalette themePalette(Scope scope);
+
+protected:
+ virtual const QFont *font(Scope scope) const;
+ virtual const QPalette *palette(Scope scope) const;
+
+ virtual void resolveFonts(const QFont &defaultFont);
+ virtual void resolvePalettes(const QPalette &defaultPalette);
private:
- QPlatformTheme *m_theme;
+ Q_DISABLE_COPY(QQuickTheme)
+ Q_DECLARE_PRIVATE(QQuickTheme)
+ QScopedPointer<QQuickThemePrivate> d_ptr;
};
QT_END_NAMESPACE
-#endif // QQUICKPROXYTHEME_P_H
+#endif // QQUICKTHEME_P_H
diff --git a/src/quickcontrols2/qquicktheme_p.h b/src/quicktemplates2/qquicktheme_p_p.h
index 098ac7f1..e9593865 100644
--- a/src/quickcontrols2/qquicktheme_p.h
+++ b/src/quicktemplates2/qquicktheme_p_p.h
@@ -3,7 +3,7 @@
** Copyright (C) 2017 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
-** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit.
+** This file is part of the Qt Quick Templates 2 module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
@@ -34,8 +34,8 @@
**
****************************************************************************/
-#ifndef QQUICKTHEME_P_H
-#define QQUICKTHEME_P_H
+#ifndef QQUICKTHEME_P_P_H
+#define QQUICKTHEME_P_P_H
//
// W A R N I N G
@@ -48,30 +48,32 @@
// We mean it.
//
-#include <QtQuickControls2/private/qquickproxytheme_p.h>
-#include <QtCore/qscopedpointer.h>
-#include <QtGui/qfont.h>
-#include <QtGui/qpalette.h>
+#include <QtQuickTemplates2/private/qquicktheme_p.h>
QT_BEGIN_NAMESPACE
-class Q_QUICKCONTROLS2_PRIVATE_EXPORT QQuickTheme : public QQuickProxyTheme
+class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickThemePrivate
{
+ Q_DECLARE_PUBLIC(QQuickTheme)
+
public:
- QQuickTheme(const QString &name);
+ static QQuickThemePrivate *get(QQuickTheme *theme)
+ {
+ return theme->d_func();
+ }
- const QFont *font(Font type = SystemFont) const override;
- const QPalette *palette(Palette type = SystemPalette) const override;
+ const QFont *resolveThemeFont(QQuickTheme::Scope scope);
+ const QPalette *resolveThemePalette(QQuickTheme::Scope scope);
-protected:
- QFont resolveFont(const QFont &font) const;
- QPalette resolvePalette(const QPalette &palette) const;
+ static QScopedPointer<QQuickTheme> current;
-private:
- QScopedPointer<QFont> m_styleFont;
- QScopedPointer<QPalette> m_stylePalette;
+ bool hasResolvedFonts = false;
+ bool hasResolvedPalettes = false;
+ QScopedPointer<const QFont> defaultFont;
+ QScopedPointer<const QPalette> defaultPalette;
+ QQuickTheme *q_ptr = nullptr;
};
QT_END_NAMESPACE
-#endif // QQUICKTHEME_P_H
+#endif // QQUICKTHEME_P_P_H
diff --git a/src/quicktemplates2/qquicktoolbar.cpp b/src/quicktemplates2/qquicktoolbar.cpp
index 99775c6a..c597de74 100644
--- a/src/quicktemplates2/qquicktoolbar.cpp
+++ b/src/quicktemplates2/qquicktoolbar.cpp
@@ -141,9 +141,14 @@ void QQuickToolBar::setPosition(Position position)
emit positionChanged();
}
+QFont QQuickToolBar::defaultFont() const
+{
+ return QQuickTheme::themeFont(QQuickTheme::ToolBar);
+}
+
QPalette QQuickToolBar::defaultPalette() const
{
- return QQuickControlPrivate::themePalette(QPlatformTheme::ToolButtonPalette);
+ return QQuickTheme::themePalette(QQuickTheme::ToolBar);
}
#if QT_CONFIG(accessibility)
diff --git a/src/quicktemplates2/qquicktoolbar_p.h b/src/quicktemplates2/qquicktoolbar_p.h
index b919c615..ef2ceb7e 100644
--- a/src/quicktemplates2/qquicktoolbar_p.h
+++ b/src/quicktemplates2/qquicktoolbar_p.h
@@ -75,6 +75,7 @@ Q_SIGNALS:
void positionChanged();
protected:
+ QFont defaultFont() const override;
QPalette defaultPalette() const override;
#if QT_CONFIG(accessibility)
diff --git a/src/quicktemplates2/qquicktoolbutton.cpp b/src/quicktemplates2/qquicktoolbutton.cpp
index f87a58b2..3a8aa7b3 100644
--- a/src/quicktemplates2/qquicktoolbutton.cpp
+++ b/src/quicktemplates2/qquicktoolbutton.cpp
@@ -71,12 +71,12 @@ QQuickToolButton::QQuickToolButton(QQuickItem *parent)
QFont QQuickToolButton::defaultFont() const
{
- return QQuickControlPrivate::themeFont(QPlatformTheme::ToolButtonFont);
+ return QQuickTheme::themeFont(QQuickTheme::ToolBar);
}
QPalette QQuickToolButton::defaultPalette() const
{
- return QQuickControlPrivate::themePalette(QPlatformTheme::ToolButtonPalette);
+ return QQuickTheme::themePalette(QQuickTheme::ToolBar);
}
QT_END_NAMESPACE
diff --git a/src/quicktemplates2/qquicktoolseparator.cpp b/src/quicktemplates2/qquicktoolseparator.cpp
index 2ec7799f..2343c7ce 100644
--- a/src/quicktemplates2/qquicktoolseparator.cpp
+++ b/src/quicktemplates2/qquicktoolseparator.cpp
@@ -133,9 +133,14 @@ bool QQuickToolSeparator::isVertical() const
return d->orientation == Qt::Vertical;
}
+QFont QQuickToolSeparator::defaultFont() const
+{
+ return QQuickTheme::themeFont(QQuickTheme::ToolBar);
+}
+
QPalette QQuickToolSeparator::defaultPalette() const
{
- return QQuickControlPrivate::themePalette(QPlatformTheme::ToolButtonPalette);
+ return QQuickTheme::themePalette(QQuickTheme::ToolBar);
}
#if QT_CONFIG(accessibility)
diff --git a/src/quicktemplates2/qquicktoolseparator_p.h b/src/quicktemplates2/qquicktoolseparator_p.h
index 2108cc5b..c3c14b82 100644
--- a/src/quicktemplates2/qquicktoolseparator_p.h
+++ b/src/quicktemplates2/qquicktoolseparator_p.h
@@ -74,6 +74,7 @@ Q_SIGNALS:
void orientationChanged();
protected:
+ QFont defaultFont() const override;
QPalette defaultPalette() const override;
#if QT_CONFIG(accessibility)
diff --git a/src/quicktemplates2/qquicktooltip.cpp b/src/quicktemplates2/qquicktooltip.cpp
index 1bf6ca55..66fe9afe 100644
--- a/src/quicktemplates2/qquicktooltip.cpp
+++ b/src/quicktemplates2/qquicktooltip.cpp
@@ -276,14 +276,39 @@ QQuickToolTipAttached *QQuickToolTip::qmlAttachedProperties(QObject *object)
return new QQuickToolTipAttached(object);
}
+/*!
+ \since QtQuick.Controls 2.5 (Qt 5.12)
+ \qmlmethod void QtQuick.Controls::ToolTip::show(string text, int timeout = -1)
+
+ This method shows the tooltip with \a text and \a timeout (milliseconds).
+*/
+void QQuickToolTip::show(const QString &text, int ms)
+{
+ if (ms >= 0)
+ setTimeout(ms);
+ setText(text);
+ open();
+}
+
+/*!
+ \since QtQuick.Controls 2.5 (Qt 5.12)
+ \qmlmethod void QtQuick.Controls::ToolTip::hide()
+
+ This method hides the tooltip.
+*/
+void QQuickToolTip::hide()
+{
+ close();
+}
+
QFont QQuickToolTip::defaultFont() const
{
- return QQuickControlPrivate::themeFont(QPlatformTheme::TipLabelFont);
+ return QQuickTheme::themeFont(QQuickTheme::ToolTip);
}
QPalette QQuickToolTip::defaultPalette() const
{
- return QQuickControlPrivate::themePalette(QPlatformTheme::ToolTipPalette);
+ return QQuickTheme::themePalette(QQuickTheme::ToolTip);
}
void QQuickToolTip::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data)
@@ -520,10 +545,8 @@ void QQuickToolTipAttached::show(const QString &text, int ms)
tip->resetWidth();
tip->resetHeight();
tip->setParentItem(qobject_cast<QQuickItem *>(parent()));
- tip->setTimeout(ms >= 0 ? ms : d->timeout);
tip->setDelay(d->delay);
- tip->setText(text);
- tip->open();
+ tip->show(text, ms >= 0 ? ms : d->timeout);
}
/*!
diff --git a/src/quicktemplates2/qquicktooltip_p.h b/src/quicktemplates2/qquicktooltip_p.h
index 60b02502..432bdd8e 100644
--- a/src/quicktemplates2/qquicktooltip_p.h
+++ b/src/quicktemplates2/qquicktooltip_p.h
@@ -84,6 +84,10 @@ Q_SIGNALS:
void delayChanged();
void timeoutChanged();
+public Q_SLOTS:
+ Q_REVISION(5) void show(const QString &text, int ms = -1);
+ Q_REVISION(5) void hide();
+
protected:
QFont defaultFont() const override;
QPalette defaultPalette() const override;
diff --git a/src/quicktemplates2/qquicktumbler.cpp b/src/quicktemplates2/qquicktumbler.cpp
index efa61dad..4dc294e7 100644
--- a/src/quicktemplates2/qquicktumbler.cpp
+++ b/src/quicktemplates2/qquicktumbler.cpp
@@ -70,7 +70,8 @@ QT_BEGIN_NAMESPACE
The API is similar to that of views like \l ListView and \l PathView; a
\l model and \l delegate can be set, and the \l count and \l currentItem
- properties provide read-only access to information about the view.
+ properties provide read-only access to information about the view. To
+ position the view at a certain index, use \l positionViewAtIndex().
Unlike views like \l PathView and \l ListView, however, there is always a
current item (when the model isn't empty). This means that when \l count is
@@ -350,6 +351,8 @@ int QQuickTumbler::count() const
The value of this property is \c -1 when \l count is equal to \c 0. In all
other cases, it will be greater than or equal to \c 0.
+
+ \sa currentItem, positionViewAtIndex()
*/
int QQuickTumbler::currentIndex() const
{
@@ -410,6 +413,8 @@ void QQuickTumbler::setCurrentIndex(int currentIndex)
\readonly
This property holds the item at the current index.
+
+ \sa currentIndex, positionViewAtIndex()
*/
QQuickItem *QQuickTumbler::currentItem() const
{
@@ -511,6 +516,41 @@ bool QQuickTumbler::isMoving() const
return d->view && d->view->property("moving").toBool();
}
+/*!
+ \qmlmethod void QtQuick.Controls::Tumbler::positionViewAtIndex(int index, PositionMode mode)
+ \since QtQuick.Controls 2.5 (Qt 5.12)
+
+ Positions the view so that the \a index is at the position specified by \a mode.
+
+ For example:
+
+ \code
+ positionViewAtIndex(10, Tumbler.Center)
+ \endcode
+
+ If \l wrap is true (the default), the modes available to \l {PathView}'s
+ \l {PathView::}{positionViewAtIndex()} function
+ are available, otherwise the modes available to \l {ListView}'s
+ \l {ListView::}{positionViewAtIndex()} function
+ are available.
+
+ \note There is a known limitation that using \c Tumbler.Beginning when \l
+ wrap is \c true will result in the wrong item being positioned at the top
+ of view. As a workaround, pass \c {index - 1}.
+
+ \sa currentIndex
+*/
+void QQuickTumbler::positionViewAtIndex(int index, QQuickTumbler::PositionMode mode)
+{
+ Q_D(QQuickTumbler);
+ if (!d->view) {
+ d->warnAboutIncorrectContentItem();
+ return;
+ }
+
+ QMetaObject::invokeMethod(d->view, "positionViewAtIndex", Q_ARG(int, index), Q_ARG(int, mode));
+}
+
void QQuickTumbler::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
{
Q_D(QQuickTumbler);
@@ -609,7 +649,7 @@ void QQuickTumblerPrivate::setupViewData(QQuickItem *newControlContentItem)
return;
if (viewContentItemType == QQuickTumblerPrivate::UnsupportedContentItemType) {
- qWarning() << "Tumbler: contentItem must contain either a PathView or a ListView";
+ warnAboutIncorrectContentItem();
return;
}
@@ -636,6 +676,12 @@ void QQuickTumblerPrivate::setupViewData(QQuickItem *newControlContentItem)
calculateDisplacements();
}
+void QQuickTumblerPrivate::warnAboutIncorrectContentItem()
+{
+ Q_Q(QQuickTumbler);
+ qmlWarning(q) << "Tumbler: contentItem must contain either a PathView or a ListView";
+}
+
void QQuickTumblerPrivate::syncCurrentIndex()
{
const int actualViewIndex = view->property("currentIndex").toInt();
@@ -784,12 +830,12 @@ void QQuickTumbler::updatePolish()
QFont QQuickTumbler::defaultFont() const
{
- return QQuickControlPrivate::themeFont(QPlatformTheme::ItemViewFont);
+ return QQuickTheme::themeFont(QQuickTheme::Tumbler);
}
QPalette QQuickTumbler::defaultPalette() const
{
- return QQuickControlPrivate::themePalette(QPlatformTheme::ItemViewPalette);
+ return QQuickTheme::themePalette(QQuickTheme::Tumbler);
}
QQuickTumblerAttachedPrivate::QQuickTumblerAttachedPrivate()
diff --git a/src/quicktemplates2/qquicktumbler_p.h b/src/quicktemplates2/qquicktumbler_p.h
index 5d4df4a7..3f7c06db 100644
--- a/src/quicktemplates2/qquicktumbler_p.h
+++ b/src/quicktemplates2/qquicktumbler_p.h
@@ -100,6 +100,19 @@ public:
// 2.2 (Qt 5.9)
bool isMoving() const;
+ enum PositionMode {
+ Beginning,
+ Center,
+ End,
+ Visible, // ListView-only
+ Contain,
+ SnapPosition
+ };
+ Q_ENUM(PositionMode)
+
+ // 2.5 (Qt 5.12)
+ Q_REVISION(5) Q_INVOKABLE void positionViewAtIndex(int index, PositionMode mode);
+
Q_SIGNALS:
void modelChanged();
void countChanged();
diff --git a/src/quicktemplates2/qquicktumbler_p_p.h b/src/quicktemplates2/qquicktumbler_p_p.h
index 75b1a396..6f0879b3 100644
--- a/src/quicktemplates2/qquicktumbler_p_p.h
+++ b/src/quicktemplates2/qquicktumbler_p_p.h
@@ -105,6 +105,7 @@ public:
void disconnectFromView();
void setupViewData(QQuickItem *newControlContentItem);
+ void warnAboutIncorrectContentItem();
void syncCurrentIndex();
void setCount(int newCount);
diff --git a/src/quicktemplates2/quicktemplates2.pri b/src/quicktemplates2/quicktemplates2.pri
index b2193ec0..8d90ab37 100644
--- a/src/quicktemplates2/quicktemplates2.pri
+++ b/src/quicktemplates2/quicktemplates2.pri
@@ -15,6 +15,7 @@ HEADERS += \
$$PWD/qquickcombobox_p.h \
$$PWD/qquickcontainer_p.h \
$$PWD/qquickcontainer_p_p.h \
+ $$PWD/qquickcontentitem_p.h \
$$PWD/qquickcontrol_p.h \
$$PWD/qquickcontrol_p_p.h \
$$PWD/qquickdeferredexecute_p_p.h \
@@ -55,6 +56,8 @@ HEADERS += \
$$PWD/qquickpane_p_p.h \
$$PWD/qquickpopup_p.h \
$$PWD/qquickpopup_p_p.h \
+ $$PWD/qquickpopupanchors_p.h \
+ $$PWD/qquickpopupanchors_p_p.h \
$$PWD/qquickpopupitem_p_p.h \
$$PWD/qquickpopuppositioner_p_p.h \
$$PWD/qquickpresshandler_p_p.h \
@@ -86,6 +89,8 @@ HEADERS += \
$$PWD/qquicktextarea_p_p.h \
$$PWD/qquicktextfield_p.h \
$$PWD/qquicktextfield_p_p.h \
+ $$PWD/qquicktheme_p.h \
+ $$PWD/qquicktheme_p_p.h \
$$PWD/qquicktoolbar_p.h \
$$PWD/qquicktoolbutton_p.h \
$$PWD/qquicktoolseparator_p.h \
@@ -104,6 +109,7 @@ SOURCES += \
$$PWD/qquickcheckdelegate.cpp \
$$PWD/qquickcombobox.cpp \
$$PWD/qquickcontainer.cpp \
+ $$PWD/qquickcontentitem.cpp \
$$PWD/qquickcontrol.cpp \
$$PWD/qquickdeferredexecute.cpp \
$$PWD/qquickdelaybutton.cpp \
@@ -129,6 +135,7 @@ SOURCES += \
$$PWD/qquickpaletteprovider.cpp \
$$PWD/qquickpane.cpp \
$$PWD/qquickpopup.cpp \
+ $$PWD/qquickpopupanchors.cpp \
$$PWD/qquickpopupitem.cpp \
$$PWD/qquickpopuppositioner.cpp \
$$PWD/qquickpresshandler.cpp \
@@ -155,6 +162,7 @@ SOURCES += \
$$PWD/qquicktabbutton.cpp \
$$PWD/qquicktextarea.cpp \
$$PWD/qquicktextfield.cpp \
+ $$PWD/qquicktheme.cpp \
$$PWD/qquicktoolbar.cpp \
$$PWD/qquicktoolbutton.cpp \
$$PWD/qquicktoolseparator.cpp \