aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/imports/nativestyle/controls/DefaultScrollBar.qml6
-rw-r--r--src/imports/nativestyle/items/qquickstyleitem.cpp10
-rw-r--r--src/imports/nativestyle/items/qquickstyleitem.h3
3 files changed, 17 insertions, 2 deletions
diff --git a/src/imports/nativestyle/controls/DefaultScrollBar.qml b/src/imports/nativestyle/controls/DefaultScrollBar.qml
index 9965b8cb..4ba4f80c 100644
--- a/src/imports/nativestyle/controls/DefaultScrollBar.qml
+++ b/src/imports/nativestyle/controls/DefaultScrollBar.qml
@@ -42,16 +42,18 @@ import QtQuick.NativeStyle as NativeStyle
T.ScrollBar {
id: control
- readonly property bool __nativeBackground: background instanceof NativeStyle.StyleItem
+ readonly property bool __nativeContentItem: contentItem instanceof NativeStyle.StyleItem
implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
implicitContentWidth + leftPadding + rightPadding)
implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
implicitContentHeight + topPadding + bottomPadding)
- font.pixelSize: __nativeBackground ? background.styleFont(control).pixelSize : undefined
+ font.pixelSize: __nativeContentItem ? contentItem.styleFont(control).pixelSize : undefined
visible: policy === T.ScrollBar.AlwaysOn || size < 1.0
+ minimumSize: !__nativeContentItem ? 10 : orientation === Qt.Vertical ?
+ contentItem.minimumSize.height / height : contentItem.minimumSize.width / width
background: NativeStyle.ScrollBar {
control: control
diff --git a/src/imports/nativestyle/items/qquickstyleitem.cpp b/src/imports/nativestyle/items/qquickstyleitem.cpp
index 4c84bf9a..643b190e 100644
--- a/src/imports/nativestyle/items/qquickstyleitem.cpp
+++ b/src/imports/nativestyle/items/qquickstyleitem.cpp
@@ -226,6 +226,7 @@ void QQuickStyleItem::updateGeometry()
const QQuickStyleMargins oldContentPadding = contentPadding();
const QQuickStyleMargins oldLayoutMargins = layoutMargins();
+ const QSize oldMinimumSize = minimumSize();
m_styleItemGeometry = calculateGeometry();
@@ -245,6 +246,8 @@ void QQuickStyleItem::updateGeometry()
emit contentPaddingChanged();
if (layoutMargins() != oldLayoutMargins)
emit layoutMarginsChanged();
+ if (minimumSize() != oldMinimumSize)
+ emit minimumSizeChanged();
setImplicitSize(m_styleItemGeometry.implicitSize.width(), m_styleItemGeometry.implicitSize.height());
@@ -437,6 +440,13 @@ QQuickStyleMargins QQuickStyleItem::layoutMargins() const
return QQuickStyleMargins(outerRect, m_styleItemGeometry.layoutRect);
}
+QSize QQuickStyleItem::minimumSize()
+{
+ // The style item should not be scaled below this size.
+ // Otherwise the image will be truncated.
+ return m_styleItemGeometry.minimumSize;
+}
+
qreal QQuickStyleItem::focusFrameRadius() const
{
return m_styleItemGeometry.focusFrameRadius;
diff --git a/src/imports/nativestyle/items/qquickstyleitem.h b/src/imports/nativestyle/items/qquickstyleitem.h
index bfdabb79..ece2572d 100644
--- a/src/imports/nativestyle/items/qquickstyleitem.h
+++ b/src/imports/nativestyle/items/qquickstyleitem.h
@@ -167,6 +167,7 @@ class QQuickStyleItem : public QQuickItem
// Output
Q_PROPERTY(QQuickStyleMargins contentPadding READ contentPadding() NOTIFY contentPaddingChanged)
Q_PROPERTY(QQuickStyleMargins layoutMargins READ layoutMargins() NOTIFY layoutMarginsChanged)
+ Q_PROPERTY(QSize minimumSize READ minimumSize() NOTIFY minimumSizeChanged)
QML_NAMED_ELEMENT(StyleItem)
QML_UNCREATABLE("StyleItem is an abstract base class.")
@@ -214,6 +215,7 @@ public:
QQuickStyleMargins contentPadding() const;
QQuickStyleMargins layoutMargins() const;
+ QSize minimumSize();
qreal focusFrameRadius() const;
Q_INVOKABLE virtual QFont styleFont(QQuickItem *control);
@@ -226,6 +228,7 @@ signals:
void contentPaddingChanged();
void layoutMarginsChanged();
void fontChanged();
+ void minimumSizeChanged();
protected:
void componentComplete() override;