aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/controls/macos
diff options
context:
space:
mode:
authorRichard Moe Gustavsen <richard.gustavsen@qt.io>2020-09-24 14:22:57 +0200
committerRichard Moe Gustavsen <richard.gustavsen@qt.io>2020-09-29 15:31:01 +0200
commitfbc629892461662a20e12c38f182fddb1fcc3a81 (patch)
tree35acb8e52ee4bed5301b93e4ee30f4df2ee48b40 /src/imports/controls/macos
parent5b711c1cb719d1147791ce23c43133a29d10a807 (diff)
NativeStyle: add focus frame to the macOS style
This patch will add a focus frame to the macOS style. We use one focus frame item that we move around according to changes to the focus object. It's normally the background delegate's responsibility to draw a focus frame, so we take care to only draw the native focus frame for controls with default delegates. (to be consistent with the other styles) Change-Id: Iaa7202675c1aad2fc19682563ac1afb6e686c105 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/imports/controls/macos')
-rw-r--r--src/imports/controls/macos/Button.qml2
-rw-r--r--src/imports/controls/macos/CheckBox.qml2
-rw-r--r--src/imports/controls/macos/ComboBox.qml24
-rw-r--r--src/imports/controls/macos/RadioButton.qml2
-rw-r--r--src/imports/controls/macos/Slider.qml2
-rw-r--r--src/imports/controls/macos/SpinBox.qml4
-rw-r--r--src/imports/controls/macos/TextArea.qml17
-rw-r--r--src/imports/controls/macos/TextField.qml2
8 files changed, 55 insertions, 0 deletions
diff --git a/src/imports/controls/macos/Button.qml b/src/imports/controls/macos/Button.qml
index e3fe856d..58658c52 100644
--- a/src/imports/controls/macos/Button.qml
+++ b/src/imports/controls/macos/Button.qml
@@ -38,4 +38,6 @@ import QtQuick
import QtQuick.NativeStyle as NativeStyle
NativeStyle.DefaultButton {
+ id: control
+ readonly property Item __focusFrameTarget: control
}
diff --git a/src/imports/controls/macos/CheckBox.qml b/src/imports/controls/macos/CheckBox.qml
index d1a56fee..23ad4426 100644
--- a/src/imports/controls/macos/CheckBox.qml
+++ b/src/imports/controls/macos/CheckBox.qml
@@ -38,4 +38,6 @@ import QtQuick
import QtQuick.NativeStyle as NativeStyle
NativeStyle.DefaultCheckBox {
+ readonly property Item __focusFrameTarget: indicator
+ readonly property Item __focusFrameStyleItem: indicator
}
diff --git a/src/imports/controls/macos/ComboBox.qml b/src/imports/controls/macos/ComboBox.qml
index 3891594b..53baabf8 100644
--- a/src/imports/controls/macos/ComboBox.qml
+++ b/src/imports/controls/macos/ComboBox.qml
@@ -35,7 +35,31 @@
****************************************************************************/
import QtQuick
+import QtQuick.Templates as T
import QtQuick.NativeStyle as NativeStyle
NativeStyle.DefaultComboBox {
+ id: control
+ readonly property Item __focusFrameTarget: control
+
+ contentItem: T.TextField {
+ implicitWidth: contentWidth
+ implicitHeight: contentHeight
+ text: control.editable ? control.editText : control.displayText
+
+ enabled: control.editable
+ autoScroll: control.editable
+ readOnly: control.down
+ inputMethodHints: control.inputMethodHints
+ validator: control.validator
+ selectByMouse: control.selectTextByMouse
+
+ font: control.font
+ color: control.editable ? control.palette.text : control.palette.buttonText
+ selectionColor: control.palette.highlight
+ selectedTextColor: control.palette.highlightedText
+ verticalAlignment: Text.AlignVCenter
+
+ readonly property Item __focusFrameControl: control
+ }
}
diff --git a/src/imports/controls/macos/RadioButton.qml b/src/imports/controls/macos/RadioButton.qml
index 82b85698..c9cdf985 100644
--- a/src/imports/controls/macos/RadioButton.qml
+++ b/src/imports/controls/macos/RadioButton.qml
@@ -38,4 +38,6 @@ import QtQuick
import QtQuick.NativeStyle as NativeStyle
NativeStyle.DefaultRadioButton {
+ readonly property Item __focusFrameTarget: indicator
+ readonly property Item __focusFrameStyleItem: indicator
}
diff --git a/src/imports/controls/macos/Slider.qml b/src/imports/controls/macos/Slider.qml
index ab72fcaa..e8e0e036 100644
--- a/src/imports/controls/macos/Slider.qml
+++ b/src/imports/controls/macos/Slider.qml
@@ -38,4 +38,6 @@ import QtQuick
import QtQuick.NativeStyle as NativeStyle
NativeStyle.DefaultSlider {
+ readonly property Item __focusFrameTarget: handle
+ readonly property Item __focusFrameStyleItem: handle
}
diff --git a/src/imports/controls/macos/SpinBox.qml b/src/imports/controls/macos/SpinBox.qml
index 1eb7fa05..5928d37e 100644
--- a/src/imports/controls/macos/SpinBox.qml
+++ b/src/imports/controls/macos/SpinBox.qml
@@ -62,6 +62,8 @@ T.SpinBox {
rightPadding: (__nativeBackground ? background.contentPadding.right : 0) + rightInset
bottomPadding: __nativeBackground ? background.contentPadding.bottom: 0
+ readonly property Item __focusFrameTarget: contentItem
+
validator: IntValidator {
locale: control.locale.name
bottom: Math.min(control.from, control.to)
@@ -85,6 +87,8 @@ T.SpinBox {
readOnly: !control.editable
validator: control.validator
inputMethodHints: control.inputMethodHints
+
+ readonly property Item __focusFrameControl: control
}
NativeStyle.SpinBox {
diff --git a/src/imports/controls/macos/TextArea.qml b/src/imports/controls/macos/TextArea.qml
index f6b88303..98884bda 100644
--- a/src/imports/controls/macos/TextArea.qml
+++ b/src/imports/controls/macos/TextArea.qml
@@ -38,4 +38,21 @@ import QtQuick
import QtQuick.NativeStyle as NativeStyle
NativeStyle.DefaultTextArea {
+ id: control
+
+ // If you place a TextArea inside a Frame or Flickable (/ScrollView), and
+ // the TextArea is the only child of the content item, we place the focus
+ // frame around the Flickable/Frame instead.
+ readonly property Item __focusFrameTarget:
+ (parent.parent instanceof Frame || parent.parent instanceof Flickable)
+ && parent.children.length === 1
+ ? parent.parent : control
+
+ background: Rectangle {
+ color: control.palette.light
+ // Since this delegate is a plain Rectangle, we need to tag it to know
+ // that it's still the default one, and not some custom item set by the
+ // application. Only in the former case do we wan't to show a focus frame.
+ readonly property bool __isDefaultDelegate: true
+ }
}
diff --git a/src/imports/controls/macos/TextField.qml b/src/imports/controls/macos/TextField.qml
index bc0e2cb7..f3a748f6 100644
--- a/src/imports/controls/macos/TextField.qml
+++ b/src/imports/controls/macos/TextField.qml
@@ -38,4 +38,6 @@ import QtQuick
import QtQuick.NativeStyle as NativeStyle
NativeStyle.DefaultTextField {
+ id: control
+ readonly property Item __focusFrameTarget: control
}