diff --git a/org.kde.desktop/BusyIndicator.qml b/org.kde.desktop/BusyIndicator.qml --- a/org.kde.desktop/BusyIndicator.qml +++ b/org.kde.desktop/BusyIndicator.qml @@ -27,6 +27,7 @@ T.BusyIndicator { id: controlRoot + palette: Kirigami.Theme.palette implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding implicitHeight: contentItem.implicitHeight + topPadding + bottomPadding diff --git a/org.kde.desktop/Button.qml b/org.kde.desktop/Button.qml --- a/org.kde.desktop/Button.qml +++ b/org.kde.desktop/Button.qml @@ -26,6 +26,8 @@ T.Button { id: controlRoot + + palette: Kirigami.Theme.palette Kirigami.Theme.colorSet: Kirigami.Theme.Button Kirigami.Theme.inherit: false diff --git a/org.kde.desktop/CheckBox.qml b/org.kde.desktop/CheckBox.qml --- a/org.kde.desktop/CheckBox.qml +++ b/org.kde.desktop/CheckBox.qml @@ -29,6 +29,7 @@ T.CheckBox { id: controlRoot + palette: Kirigami.Theme.palette implicitWidth: Math.max(background ? background.implicitWidth : 0, contentItem.implicitWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, diff --git a/org.kde.desktop/CheckDelegate.qml b/org.kde.desktop/CheckDelegate.qml --- a/org.kde.desktop/CheckDelegate.qml +++ b/org.kde.desktop/CheckDelegate.qml @@ -28,6 +28,7 @@ T.CheckDelegate { id: controlRoot + palette: Kirigami.Theme.palette implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding implicitHeight: Math.max(contentItem.implicitHeight, indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding diff --git a/org.kde.desktop/ComboBox.qml b/org.kde.desktop/ComboBox.qml --- a/org.kde.desktop/ComboBox.qml +++ b/org.kde.desktop/ComboBox.qml @@ -30,6 +30,7 @@ T.ComboBox { id: controlRoot + palette: Kirigami.Theme.palette //NOTE: typeof necessary to not have warnings on Qt 5.7 Kirigami.Theme.colorSet: typeof(editable) != "undefined" && editable ? Kirigami.Theme.View : Kirigami.Theme.Button Kirigami.Theme.inherit: false diff --git a/org.kde.desktop/Container.qml b/org.kde.desktop/Container.qml --- a/org.kde.desktop/Container.qml +++ b/org.kde.desktop/Container.qml @@ -26,6 +26,7 @@ T.Container { id: control + palette: Kirigami.Theme.palette implicitWidth: Math.max(background ? background.implicitWidth : 0, (contentItem ? contentItem.implicitWidth : 0) + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, diff --git a/org.kde.desktop/Control.qml b/org.kde.desktop/Control.qml --- a/org.kde.desktop/Control.qml +++ b/org.kde.desktop/Control.qml @@ -27,6 +27,7 @@ T.Control { id: control + palette: Kirigami.Theme.palette implicitWidth: Math.max(background ? background.implicitWidth : 0, (contentItem ? contentItem.implicitWidth : 0) + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, diff --git a/org.kde.desktop/DelayButton.qml b/org.kde.desktop/DelayButton.qml --- a/org.kde.desktop/DelayButton.qml +++ b/org.kde.desktop/DelayButton.qml @@ -26,6 +26,8 @@ T.DelayButton { id: controlRoot + + palette: Kirigami.Theme.palette Kirigami.Theme.colorSet: Kirigami.Theme.Button Kirigami.Theme.inherit: false diff --git a/org.kde.desktop/Dial.qml b/org.kde.desktop/Dial.qml --- a/org.kde.desktop/Dial.qml +++ b/org.kde.desktop/Dial.qml @@ -29,6 +29,7 @@ T.Dial { id: controlRoot + palette: Kirigami.Theme.palette implicitWidth: 128 implicitHeight: 128 diff --git a/org.kde.desktop/Dialog.qml b/org.kde.desktop/Dialog.qml --- a/org.kde.desktop/Dialog.qml +++ b/org.kde.desktop/Dialog.qml @@ -28,6 +28,7 @@ T.Dialog { id: control + palette: Kirigami.Theme.palette implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0) implicitHeight: Math.max(background ? background.implicitHeight : 0, diff --git a/org.kde.desktop/DialogButtonBox.qml b/org.kde.desktop/DialogButtonBox.qml --- a/org.kde.desktop/DialogButtonBox.qml +++ b/org.kde.desktop/DialogButtonBox.qml @@ -27,6 +27,7 @@ T.DialogButtonBox { id: control + palette: Kirigami.Theme.palette implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding implicitHeight: contentItem.implicitHeight + topPadding + bottomPadding diff --git a/org.kde.desktop/Drawer.qml b/org.kde.desktop/Drawer.qml --- a/org.kde.desktop/Drawer.qml +++ b/org.kde.desktop/Drawer.qml @@ -28,6 +28,7 @@ T.Drawer { id: control + palette: Kirigami.Theme.palette parent: T.ApplicationWindow.overlay implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) diff --git a/org.kde.desktop/Frame.qml b/org.kde.desktop/Frame.qml --- a/org.kde.desktop/Frame.qml +++ b/org.kde.desktop/Frame.qml @@ -28,6 +28,7 @@ T.Frame { id: control + palette: Kirigami.Theme.palette implicitWidth: contentWidth + leftPadding + rightPadding implicitHeight: contentHeight + topPadding + bottomPadding diff --git a/org.kde.desktop/GroupBox.qml b/org.kde.desktop/GroupBox.qml --- a/org.kde.desktop/GroupBox.qml +++ b/org.kde.desktop/GroupBox.qml @@ -28,6 +28,7 @@ T.GroupBox { id: control + palette: Kirigami.Theme.palette implicitWidth: contentWidth + leftPadding + rightPadding implicitHeight: contentHeight + topPadding + bottomPadding diff --git a/org.kde.desktop/ItemDelegate.qml b/org.kde.desktop/ItemDelegate.qml --- a/org.kde.desktop/ItemDelegate.qml +++ b/org.kde.desktop/ItemDelegate.qml @@ -28,6 +28,7 @@ T.ItemDelegate { id: controlRoot + palette: Kirigami.Theme.palette implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding implicitHeight: Math.max(contentItem.implicitHeight, indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding diff --git a/org.kde.desktop/Label.qml b/org.kde.desktop/Label.qml --- a/org.kde.desktop/Label.qml +++ b/org.kde.desktop/Label.qml @@ -29,6 +29,7 @@ T.Label { id: control + palette: Kirigami.Theme.palette verticalAlignment: lineCount > 1 ? Text.AlignTop : Text.AlignVCenter activeFocusOnTab: false diff --git a/org.kde.desktop/Menu.qml b/org.kde.desktop/Menu.qml --- a/org.kde.desktop/Menu.qml +++ b/org.kde.desktop/Menu.qml @@ -30,6 +30,7 @@ T.Menu { id: control + palette: Kirigami.Theme.palette implicitWidth: Math.max(background ? background.implicitWidth : 0, contentItem ? contentItem.implicitWidth + leftPadding + rightPadding : 0) implicitHeight: Math.max(background ? background.implicitHeight : 0, diff --git a/org.kde.desktop/MenuBarItem.qml b/org.kde.desktop/MenuBarItem.qml --- a/org.kde.desktop/MenuBarItem.qml +++ b/org.kde.desktop/MenuBarItem.qml @@ -28,6 +28,7 @@ T.MenuBarItem { id: controlRoot + palette: Kirigami.Theme.palette implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding implicitHeight: contentItem.implicitHeight + topPadding + bottomPadding baselineOffset: contentItem.y + contentItem.baselineOffset diff --git a/org.kde.desktop/MenuItem.qml b/org.kde.desktop/MenuItem.qml --- a/org.kde.desktop/MenuItem.qml +++ b/org.kde.desktop/MenuItem.qml @@ -28,6 +28,7 @@ T.MenuItem { id: controlRoot + palette: Kirigami.Theme.palette implicitWidth: Math.max(background ? background.implicitWidth : 0, contentItem.implicitWidth + leftPadding + rightPadding) implicitHeight: visible ? Math.max(background ? background.implicitHeight : 0, diff --git a/org.kde.desktop/Popup.qml b/org.kde.desktop/Popup.qml --- a/org.kde.desktop/Popup.qml +++ b/org.kde.desktop/Popup.qml @@ -28,6 +28,7 @@ T.Popup { id: control + palette: Kirigami.Theme.palette implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth > 0 ? contentWidth + leftPadding + rightPadding : 0) implicitHeight: Math.max(background ? background.implicitHeight : 0, diff --git a/org.kde.desktop/ProgressBar.qml b/org.kde.desktop/ProgressBar.qml --- a/org.kde.desktop/ProgressBar.qml +++ b/org.kde.desktop/ProgressBar.qml @@ -27,6 +27,7 @@ T.ProgressBar { id: controlRoot + palette: Kirigami.Theme.palette implicitWidth: 250 implicitHeight: 22 diff --git a/org.kde.desktop/RadioButton.qml b/org.kde.desktop/RadioButton.qml --- a/org.kde.desktop/RadioButton.qml +++ b/org.kde.desktop/RadioButton.qml @@ -29,6 +29,7 @@ T.RadioButton { id: controlRoot + palette: Kirigami.Theme.palette implicitWidth: Math.max(background ? background.implicitWidth : 0, contentItem.implicitWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, diff --git a/org.kde.desktop/RadioDelegate.qml b/org.kde.desktop/RadioDelegate.qml --- a/org.kde.desktop/RadioDelegate.qml +++ b/org.kde.desktop/RadioDelegate.qml @@ -28,6 +28,7 @@ T.RadioDelegate { id: controlRoot + palette: Kirigami.Theme.palette implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding implicitHeight: Math.max(contentItem.implicitHeight, indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding diff --git a/org.kde.desktop/RangeSlider.qml b/org.kde.desktop/RangeSlider.qml --- a/org.kde.desktop/RangeSlider.qml +++ b/org.kde.desktop/RangeSlider.qml @@ -28,6 +28,7 @@ T.RangeSlider { id: control + palette: Kirigami.Theme.palette implicitWidth: Math.max(background ? background.implicitWidth : 0, Math.max(first.handle ? first.handle.implicitWidth : 0, second.handle ? second.handle.implicitWidth : 0) + leftPadding + rightPadding) diff --git a/org.kde.desktop/RoundButton.qml b/org.kde.desktop/RoundButton.qml --- a/org.kde.desktop/RoundButton.qml +++ b/org.kde.desktop/RoundButton.qml @@ -28,6 +28,7 @@ T.RoundButton { id: controlRoot + palette: Kirigami.Theme.palette Kirigami.Theme.colorSet: controlRoot.activeFocus ? Kirigami.Theme.Selection : Kirigami.Theme.Button Kirigami.Theme.inherit: false diff --git a/org.kde.desktop/ScrollBar.qml b/org.kde.desktop/ScrollBar.qml --- a/org.kde.desktop/ScrollBar.qml +++ b/org.kde.desktop/ScrollBar.qml @@ -28,6 +28,7 @@ T.ScrollBar { id: controlRoot + palette: Kirigami.Theme.palette implicitWidth: background.implicitWidth implicitHeight: background.implicitHeight diff --git a/org.kde.desktop/ScrollView.qml b/org.kde.desktop/ScrollView.qml --- a/org.kde.desktop/ScrollView.qml +++ b/org.kde.desktop/ScrollView.qml @@ -31,6 +31,7 @@ clip: true + palette: Kirigami.Theme.palette implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) diff --git a/org.kde.desktop/Slider.qml b/org.kde.desktop/Slider.qml --- a/org.kde.desktop/Slider.qml +++ b/org.kde.desktop/Slider.qml @@ -27,6 +27,7 @@ T.Slider { id: controlRoot + palette: Kirigami.Theme.palette Kirigami.Theme.colorSet: Kirigami.Theme.Button implicitWidth: background.implicitWidth diff --git a/org.kde.desktop/SpinBox.qml b/org.kde.desktop/SpinBox.qml --- a/org.kde.desktop/SpinBox.qml +++ b/org.kde.desktop/SpinBox.qml @@ -27,6 +27,7 @@ T.SpinBox { id: controlRoot + palette: Kirigami.Theme.palette Kirigami.Theme.colorSet: Kirigami.Theme.View Kirigami.Theme.inherit: false diff --git a/org.kde.desktop/Switch.qml b/org.kde.desktop/Switch.qml --- a/org.kde.desktop/Switch.qml +++ b/org.kde.desktop/Switch.qml @@ -27,6 +27,7 @@ T.CheckBox { id: control + palette: Kirigami.Theme.palette implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding implicitHeight: Math.max(contentItem.implicitHeight, indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding diff --git a/org.kde.desktop/SwitchDelegate.qml b/org.kde.desktop/SwitchDelegate.qml --- a/org.kde.desktop/SwitchDelegate.qml +++ b/org.kde.desktop/SwitchDelegate.qml @@ -28,6 +28,7 @@ T.SwitchDelegate { id: controlRoot + palette: Kirigami.Theme.palette implicitWidth: contentItem.implicitWidth + leftPadding + rightPadding implicitHeight: Math.max(contentItem.implicitHeight, indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding diff --git a/org.kde.desktop/SwitchIndicator.qml b/org.kde.desktop/SwitchIndicator.qml --- a/org.kde.desktop/SwitchIndicator.qml +++ b/org.kde.desktop/SwitchIndicator.qml @@ -25,6 +25,8 @@ Item { property alias control: slider.control + + palette: Kirigami.Theme.palette implicitWidth: 32 implicitHeight : 22 diff --git a/org.kde.desktop/TabBar.qml b/org.kde.desktop/TabBar.qml --- a/org.kde.desktop/TabBar.qml +++ b/org.kde.desktop/TabBar.qml @@ -28,6 +28,7 @@ T.TabBar { id: controlRoot + palette: Kirigami.Theme.palette Kirigami.Theme.colorSet: Kirigami.Theme.Button Kirigami.Theme.inherit: false diff --git a/org.kde.desktop/TabButton.qml b/org.kde.desktop/TabButton.qml --- a/org.kde.desktop/TabButton.qml +++ b/org.kde.desktop/TabButton.qml @@ -31,6 +31,7 @@ T.TabButton { id: controlRoot + palette: Kirigami.Theme.palette //Some qstyles like fusion don't have correct pixel metrics here and just return 0 implicitWidth: Math.max(styleitem.implicitWidth, textMetrics.width + Kirigami.Units.gridUnit * 2) implicitHeight: styleitem.implicitHeight || Kirigami.Units.gridUnit * 2 diff --git a/org.kde.desktop/TextArea.qml b/org.kde.desktop/TextArea.qml --- a/org.kde.desktop/TextArea.qml +++ b/org.kde.desktop/TextArea.qml @@ -28,6 +28,7 @@ T.TextArea { id: controlRoot + palette: Kirigami.Theme.palette Kirigami.Theme.colorSet: Kirigami.Theme.View Kirigami.Theme.inherit: false diff --git a/org.kde.desktop/TextField.qml b/org.kde.desktop/TextField.qml --- a/org.kde.desktop/TextField.qml +++ b/org.kde.desktop/TextField.qml @@ -29,6 +29,7 @@ T.TextField { id: controlRoot + palette: Kirigami.Theme.palette Kirigami.Theme.colorSet: Kirigami.Theme.View Kirigami.Theme.inherit: false diff --git a/org.kde.desktop/ToolBar.qml b/org.kde.desktop/ToolBar.qml --- a/org.kde.desktop/ToolBar.qml +++ b/org.kde.desktop/ToolBar.qml @@ -27,6 +27,7 @@ T.ToolBar { id: controlRoot + palette: Kirigami.Theme.palette implicitWidth: Math.max(background ? background.implicitWidth : 0, contentWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, contentHeight + topPadding + bottomPadding) diff --git a/org.kde.desktop/ToolButton.qml b/org.kde.desktop/ToolButton.qml --- a/org.kde.desktop/ToolButton.qml +++ b/org.kde.desktop/ToolButton.qml @@ -27,6 +27,8 @@ T.ToolButton { id: controlRoot + + palette: Kirigami.Theme.palette Kirigami.Theme.colorSet: flat ? Kirigami.Theme.Window : Kirigami.Theme.Button Kirigami.Theme.inherit: flat diff --git a/org.kde.desktop/ToolTip.qml b/org.kde.desktop/ToolTip.qml --- a/org.kde.desktop/ToolTip.qml +++ b/org.kde.desktop/ToolTip.qml @@ -29,6 +29,7 @@ T.ToolTip { id: controlRoot + palette: Kirigami.Theme.palette Kirigami.Theme.colorSet: Kirigami.Theme.Tooltip Kirigami.Theme.inherit: false diff --git a/plugin/kquickstyleitem.cpp b/plugin/kquickstyleitem.cpp --- a/plugin/kquickstyleitem.cpp +++ b/plugin/kquickstyleitem.cpp @@ -712,7 +712,12 @@ if (QCoreApplication::testAttribute(Qt::AA_SetPalette)) return; - m_styleoption->palette = m_theme->palette(); + const QVariant controlPalette = m_control ? m_control->property("palette") : QVariant(); + if (controlPalette.isValid()) { + m_styleoption->palette = controlPalette.value(); + } else { + m_styleoption->palette = m_theme->palette(); + } } /*