From 704625a034270739e886a28bfa6e8889c8ad984b Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Fri, 13 Apr 2018 13:09:30 +0200 Subject: AbstractButton: add implicitIndicatorWidth|Height [ChangeLog][Controls][AbstractButton] Added implicitIndicatorWidth and implicitIndicatorHeight properties. Change-Id: Ic9459efa76c12ba0df67dae0ffe103b14e011ee6 Reviewed-by: Mitch Curtis --- src/imports/controls/CheckBox.qml | 2 +- src/imports/controls/CheckDelegate.qml | 2 +- src/imports/controls/ItemDelegate.qml | 2 +- src/imports/controls/MenuBarItem.qml | 2 +- src/imports/controls/MenuItem.qml | 2 +- src/imports/controls/RadioButton.qml | 2 +- src/imports/controls/RadioDelegate.qml | 2 +- src/imports/controls/SwipeDelegate.qml | 2 +- src/imports/controls/Switch.qml | 2 +- src/imports/controls/SwitchDelegate.qml | 2 +- src/imports/controls/fusion/CheckBox.qml | 2 +- src/imports/controls/fusion/CheckDelegate.qml | 2 +- src/imports/controls/fusion/ItemDelegate.qml | 2 +- src/imports/controls/fusion/MenuBarItem.qml | 2 +- src/imports/controls/fusion/MenuItem.qml | 2 +- src/imports/controls/fusion/RadioButton.qml | 2 +- src/imports/controls/fusion/RadioDelegate.qml | 2 +- src/imports/controls/fusion/SwipeDelegate.qml | 2 +- src/imports/controls/fusion/Switch.qml | 2 +- src/imports/controls/fusion/SwitchDelegate.qml | 2 +- src/imports/controls/imagine/CheckBox.qml | 2 +- src/imports/controls/imagine/CheckDelegate.qml | 2 +- src/imports/controls/imagine/ItemDelegate.qml | 2 +- src/imports/controls/imagine/MenuItem.qml | 2 +- src/imports/controls/imagine/RadioButton.qml | 2 +- src/imports/controls/imagine/RadioDelegate.qml | 2 +- src/imports/controls/imagine/SwipeDelegate.qml | 2 +- src/imports/controls/imagine/Switch.qml | 2 +- src/imports/controls/imagine/SwitchDelegate.qml | 2 +- src/imports/controls/material/CheckBox.qml | 2 +- src/imports/controls/material/CheckDelegate.qml | 2 +- src/imports/controls/material/ItemDelegate.qml | 2 +- src/imports/controls/material/MenuItem.qml | 2 +- src/imports/controls/material/RadioButton.qml | 2 +- src/imports/controls/material/RadioDelegate.qml | 2 +- src/imports/controls/material/SwipeDelegate.qml | 2 +- src/imports/controls/material/Switch.qml | 2 +- src/imports/controls/material/SwitchDelegate.qml | 2 +- src/imports/controls/universal/CheckBox.qml | 2 +- src/imports/controls/universal/CheckDelegate.qml | 2 +- src/imports/controls/universal/ItemDelegate.qml | 2 +- src/imports/controls/universal/MenuBarItem.qml | 2 +- src/imports/controls/universal/MenuItem.qml | 2 +- src/imports/controls/universal/RadioButton.qml | 2 +- src/imports/controls/universal/RadioDelegate.qml | 2 +- src/imports/controls/universal/SwipeDelegate.qml | 2 +- src/imports/controls/universal/Switch.qml | 2 +- src/imports/controls/universal/SwitchDelegate.qml | 2 +- src/imports/templates/qtquicktemplates2plugin.cpp | 1 + src/quicktemplates2/qquickabstractbutton.cpp | 72 +++++++++++++++++++++++ src/quicktemplates2/qquickabstractbutton_p.h | 10 ++++ src/quicktemplates2/qquickabstractbutton_p_p.h | 3 + 52 files changed, 134 insertions(+), 48 deletions(-) diff --git a/src/imports/controls/CheckBox.qml b/src/imports/controls/CheckBox.qml index 136804f0..47b7d45e 100644 --- a/src/imports/controls/CheckBox.qml +++ b/src/imports/controls/CheckBox.qml @@ -46,7 +46,7 @@ T.CheckBox { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 6 spacing: 6 diff --git a/src/imports/controls/CheckDelegate.qml b/src/imports/controls/CheckDelegate.qml index 28bde03d..275f39f4 100644 --- a/src/imports/controls/CheckDelegate.qml +++ b/src/imports/controls/CheckDelegate.qml @@ -46,7 +46,7 @@ T.CheckDelegate { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 12 spacing: 12 diff --git a/src/imports/controls/ItemDelegate.qml b/src/imports/controls/ItemDelegate.qml index 3c39698f..3d446ffa 100644 --- a/src/imports/controls/ItemDelegate.qml +++ b/src/imports/controls/ItemDelegate.qml @@ -46,7 +46,7 @@ T.ItemDelegate { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 12 spacing: 8 diff --git a/src/imports/controls/MenuBarItem.qml b/src/imports/controls/MenuBarItem.qml index 6ce16dc1..c6408757 100644 --- a/src/imports/controls/MenuBarItem.qml +++ b/src/imports/controls/MenuBarItem.qml @@ -46,7 +46,7 @@ T.MenuBarItem { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) spacing: 6 padding: 6 diff --git a/src/imports/controls/MenuItem.qml b/src/imports/controls/MenuItem.qml index 8b4b03ef..e1a43d7d 100644 --- a/src/imports/controls/MenuItem.qml +++ b/src/imports/controls/MenuItem.qml @@ -46,7 +46,7 @@ T.MenuItem { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 6 spacing: 6 diff --git a/src/imports/controls/RadioButton.qml b/src/imports/controls/RadioButton.qml index b6c1b267..d53f4186 100644 --- a/src/imports/controls/RadioButton.qml +++ b/src/imports/controls/RadioButton.qml @@ -46,7 +46,7 @@ T.RadioButton { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 6 spacing: 6 diff --git a/src/imports/controls/RadioDelegate.qml b/src/imports/controls/RadioDelegate.qml index 23ffc7dc..e5d048ec 100644 --- a/src/imports/controls/RadioDelegate.qml +++ b/src/imports/controls/RadioDelegate.qml @@ -46,7 +46,7 @@ T.RadioDelegate { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 12 spacing: 12 diff --git a/src/imports/controls/SwipeDelegate.qml b/src/imports/controls/SwipeDelegate.qml index 75533622..538cbce9 100644 --- a/src/imports/controls/SwipeDelegate.qml +++ b/src/imports/controls/SwipeDelegate.qml @@ -46,7 +46,7 @@ T.SwipeDelegate { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 12 spacing: 12 diff --git a/src/imports/controls/Switch.qml b/src/imports/controls/Switch.qml index eaa46538..38666141 100644 --- a/src/imports/controls/Switch.qml +++ b/src/imports/controls/Switch.qml @@ -46,7 +46,7 @@ T.Switch { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 6 spacing: 6 diff --git a/src/imports/controls/SwitchDelegate.qml b/src/imports/controls/SwitchDelegate.qml index 8140b7bd..938d1f19 100644 --- a/src/imports/controls/SwitchDelegate.qml +++ b/src/imports/controls/SwitchDelegate.qml @@ -46,7 +46,7 @@ T.SwitchDelegate { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 12 spacing: 12 diff --git a/src/imports/controls/fusion/CheckBox.qml b/src/imports/controls/fusion/CheckBox.qml index 52debad6..76f641e2 100644 --- a/src/imports/controls/fusion/CheckBox.qml +++ b/src/imports/controls/fusion/CheckBox.qml @@ -48,7 +48,7 @@ T.CheckBox { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 6 spacing: 6 diff --git a/src/imports/controls/fusion/CheckDelegate.qml b/src/imports/controls/fusion/CheckDelegate.qml index f11f4493..ee382e1b 100644 --- a/src/imports/controls/fusion/CheckDelegate.qml +++ b/src/imports/controls/fusion/CheckDelegate.qml @@ -48,7 +48,7 @@ T.CheckDelegate { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 6 spacing: 6 diff --git a/src/imports/controls/fusion/ItemDelegate.qml b/src/imports/controls/fusion/ItemDelegate.qml index d4b6e695..e23266f2 100644 --- a/src/imports/controls/fusion/ItemDelegate.qml +++ b/src/imports/controls/fusion/ItemDelegate.qml @@ -48,7 +48,7 @@ T.ItemDelegate { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 6 spacing: 6 diff --git a/src/imports/controls/fusion/MenuBarItem.qml b/src/imports/controls/fusion/MenuBarItem.qml index 40cf8ba6..fdcd090e 100644 --- a/src/imports/controls/fusion/MenuBarItem.qml +++ b/src/imports/controls/fusion/MenuBarItem.qml @@ -48,7 +48,7 @@ T.MenuBarItem { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 6 spacing: 6 diff --git a/src/imports/controls/fusion/MenuItem.qml b/src/imports/controls/fusion/MenuItem.qml index e1f85f86..0b12ac70 100644 --- a/src/imports/controls/fusion/MenuItem.qml +++ b/src/imports/controls/fusion/MenuItem.qml @@ -48,7 +48,7 @@ T.MenuItem { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 6 spacing: 6 diff --git a/src/imports/controls/fusion/RadioButton.qml b/src/imports/controls/fusion/RadioButton.qml index c9609ac3..70d6f957 100644 --- a/src/imports/controls/fusion/RadioButton.qml +++ b/src/imports/controls/fusion/RadioButton.qml @@ -48,7 +48,7 @@ T.RadioButton { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 6 spacing: 6 diff --git a/src/imports/controls/fusion/RadioDelegate.qml b/src/imports/controls/fusion/RadioDelegate.qml index 4cc95502..1b725dd9 100644 --- a/src/imports/controls/fusion/RadioDelegate.qml +++ b/src/imports/controls/fusion/RadioDelegate.qml @@ -48,7 +48,7 @@ T.RadioDelegate { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 6 spacing: 6 diff --git a/src/imports/controls/fusion/SwipeDelegate.qml b/src/imports/controls/fusion/SwipeDelegate.qml index 7bf144de..3f0feac4 100644 --- a/src/imports/controls/fusion/SwipeDelegate.qml +++ b/src/imports/controls/fusion/SwipeDelegate.qml @@ -48,7 +48,7 @@ T.SwipeDelegate { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 6 spacing: 6 diff --git a/src/imports/controls/fusion/Switch.qml b/src/imports/controls/fusion/Switch.qml index c533f1a8..3a828f24 100644 --- a/src/imports/controls/fusion/Switch.qml +++ b/src/imports/controls/fusion/Switch.qml @@ -48,7 +48,7 @@ T.Switch { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 6 spacing: 6 diff --git a/src/imports/controls/fusion/SwitchDelegate.qml b/src/imports/controls/fusion/SwitchDelegate.qml index 33f5472f..d7cf9015 100644 --- a/src/imports/controls/fusion/SwitchDelegate.qml +++ b/src/imports/controls/fusion/SwitchDelegate.qml @@ -48,7 +48,7 @@ T.SwitchDelegate { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 6 spacing: 6 diff --git a/src/imports/controls/imagine/CheckBox.qml b/src/imports/controls/imagine/CheckBox.qml index bcbae953..7da21fdd 100644 --- a/src/imports/controls/imagine/CheckBox.qml +++ b/src/imports/controls/imagine/CheckBox.qml @@ -46,7 +46,7 @@ T.CheckBox { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) spacing: 6 // ### diff --git a/src/imports/controls/imagine/CheckDelegate.qml b/src/imports/controls/imagine/CheckDelegate.qml index c50470dd..7b09ce14 100644 --- a/src/imports/controls/imagine/CheckDelegate.qml +++ b/src/imports/controls/imagine/CheckDelegate.qml @@ -48,7 +48,7 @@ T.CheckDelegate { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) spacing: 12 // ### diff --git a/src/imports/controls/imagine/ItemDelegate.qml b/src/imports/controls/imagine/ItemDelegate.qml index 9059e67f..215240e5 100644 --- a/src/imports/controls/imagine/ItemDelegate.qml +++ b/src/imports/controls/imagine/ItemDelegate.qml @@ -48,7 +48,7 @@ T.ItemDelegate { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) spacing: 12 // ### diff --git a/src/imports/controls/imagine/MenuItem.qml b/src/imports/controls/imagine/MenuItem.qml index bb21e9e2..7b1c47c6 100644 --- a/src/imports/controls/imagine/MenuItem.qml +++ b/src/imports/controls/imagine/MenuItem.qml @@ -48,7 +48,7 @@ T.MenuItem { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) spacing: 6 // ### diff --git a/src/imports/controls/imagine/RadioButton.qml b/src/imports/controls/imagine/RadioButton.qml index 9c84035b..fdce8cf1 100644 --- a/src/imports/controls/imagine/RadioButton.qml +++ b/src/imports/controls/imagine/RadioButton.qml @@ -46,7 +46,7 @@ T.RadioButton { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) spacing: 6 // ### diff --git a/src/imports/controls/imagine/RadioDelegate.qml b/src/imports/controls/imagine/RadioDelegate.qml index b1028899..cfbb62c6 100644 --- a/src/imports/controls/imagine/RadioDelegate.qml +++ b/src/imports/controls/imagine/RadioDelegate.qml @@ -48,7 +48,7 @@ T.RadioDelegate { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) spacing: 12 // ### diff --git a/src/imports/controls/imagine/SwipeDelegate.qml b/src/imports/controls/imagine/SwipeDelegate.qml index 22035ca7..512578e3 100644 --- a/src/imports/controls/imagine/SwipeDelegate.qml +++ b/src/imports/controls/imagine/SwipeDelegate.qml @@ -48,7 +48,7 @@ T.SwipeDelegate { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) spacing: 12 // ### diff --git a/src/imports/controls/imagine/Switch.qml b/src/imports/controls/imagine/Switch.qml index 7fd81dee..a146202d 100644 --- a/src/imports/controls/imagine/Switch.qml +++ b/src/imports/controls/imagine/Switch.qml @@ -46,7 +46,7 @@ T.Switch { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) spacing: 6 // ### diff --git a/src/imports/controls/imagine/SwitchDelegate.qml b/src/imports/controls/imagine/SwitchDelegate.qml index e4f64006..ca8f2e5c 100644 --- a/src/imports/controls/imagine/SwitchDelegate.qml +++ b/src/imports/controls/imagine/SwitchDelegate.qml @@ -48,7 +48,7 @@ T.SwitchDelegate { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) spacing: 12 // ### diff --git a/src/imports/controls/material/CheckBox.qml b/src/imports/controls/material/CheckBox.qml index d829f842..45191da6 100644 --- a/src/imports/controls/material/CheckBox.qml +++ b/src/imports/controls/material/CheckBox.qml @@ -46,7 +46,7 @@ T.CheckBox { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) spacing: 8 padding: 8 diff --git a/src/imports/controls/material/CheckDelegate.qml b/src/imports/controls/material/CheckDelegate.qml index 66e76e0e..429ce84f 100644 --- a/src/imports/controls/material/CheckDelegate.qml +++ b/src/imports/controls/material/CheckDelegate.qml @@ -48,7 +48,7 @@ T.CheckDelegate { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 16 verticalPadding: 8 diff --git a/src/imports/controls/material/ItemDelegate.qml b/src/imports/controls/material/ItemDelegate.qml index abc4f5ac..072aea71 100644 --- a/src/imports/controls/material/ItemDelegate.qml +++ b/src/imports/controls/material/ItemDelegate.qml @@ -48,7 +48,7 @@ T.ItemDelegate { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 16 verticalPadding: 8 diff --git a/src/imports/controls/material/MenuItem.qml b/src/imports/controls/material/MenuItem.qml index 7ae0e103..fb5f7055 100644 --- a/src/imports/controls/material/MenuItem.qml +++ b/src/imports/controls/material/MenuItem.qml @@ -48,7 +48,7 @@ T.MenuItem { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 16 verticalPadding: Material.menuItemVerticalPadding diff --git a/src/imports/controls/material/RadioButton.qml b/src/imports/controls/material/RadioButton.qml index b7744a85..f6dc6100 100644 --- a/src/imports/controls/material/RadioButton.qml +++ b/src/imports/controls/material/RadioButton.qml @@ -46,7 +46,7 @@ T.RadioButton { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) spacing: 8 padding: 8 diff --git a/src/imports/controls/material/RadioDelegate.qml b/src/imports/controls/material/RadioDelegate.qml index bec8f64b..cce9a519 100644 --- a/src/imports/controls/material/RadioDelegate.qml +++ b/src/imports/controls/material/RadioDelegate.qml @@ -48,7 +48,7 @@ T.RadioDelegate { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 16 verticalPadding: 8 diff --git a/src/imports/controls/material/SwipeDelegate.qml b/src/imports/controls/material/SwipeDelegate.qml index fc4dbc20..cf555caa 100644 --- a/src/imports/controls/material/SwipeDelegate.qml +++ b/src/imports/controls/material/SwipeDelegate.qml @@ -48,7 +48,7 @@ T.SwipeDelegate { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 16 verticalPadding: 8 diff --git a/src/imports/controls/material/Switch.qml b/src/imports/controls/material/Switch.qml index c595465d..7886442c 100644 --- a/src/imports/controls/material/Switch.qml +++ b/src/imports/controls/material/Switch.qml @@ -46,7 +46,7 @@ T.Switch { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 8 spacing: 8 diff --git a/src/imports/controls/material/SwitchDelegate.qml b/src/imports/controls/material/SwitchDelegate.qml index 0e62ea7d..077901b6 100644 --- a/src/imports/controls/material/SwitchDelegate.qml +++ b/src/imports/controls/material/SwitchDelegate.qml @@ -48,7 +48,7 @@ T.SwitchDelegate { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 16 verticalPadding: Material.switchDelegateVerticalPadding diff --git a/src/imports/controls/universal/CheckBox.qml b/src/imports/controls/universal/CheckBox.qml index 64fbe793..d18f2bd2 100644 --- a/src/imports/controls/universal/CheckBox.qml +++ b/src/imports/controls/universal/CheckBox.qml @@ -46,7 +46,7 @@ T.CheckBox { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 6 spacing: 8 diff --git a/src/imports/controls/universal/CheckDelegate.qml b/src/imports/controls/universal/CheckDelegate.qml index 63c700f6..36e10405 100644 --- a/src/imports/controls/universal/CheckDelegate.qml +++ b/src/imports/controls/universal/CheckDelegate.qml @@ -48,7 +48,7 @@ T.CheckDelegate { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) spacing: 12 diff --git a/src/imports/controls/universal/ItemDelegate.qml b/src/imports/controls/universal/ItemDelegate.qml index 41e093cd..105b77ea 100644 --- a/src/imports/controls/universal/ItemDelegate.qml +++ b/src/imports/controls/universal/ItemDelegate.qml @@ -47,7 +47,7 @@ T.ItemDelegate { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) spacing: 12 diff --git a/src/imports/controls/universal/MenuBarItem.qml b/src/imports/controls/universal/MenuBarItem.qml index 547af7f8..b4dda71f 100644 --- a/src/imports/controls/universal/MenuBarItem.qml +++ b/src/imports/controls/universal/MenuBarItem.qml @@ -47,7 +47,7 @@ T.MenuBarItem { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 12 topPadding: padding - 1 diff --git a/src/imports/controls/universal/MenuItem.qml b/src/imports/controls/universal/MenuItem.qml index f4bc8921..457d21d6 100644 --- a/src/imports/controls/universal/MenuItem.qml +++ b/src/imports/controls/universal/MenuItem.qml @@ -47,7 +47,7 @@ T.MenuItem { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 12 topPadding: padding - 1 diff --git a/src/imports/controls/universal/RadioButton.qml b/src/imports/controls/universal/RadioButton.qml index 1ba2d290..a4612345 100644 --- a/src/imports/controls/universal/RadioButton.qml +++ b/src/imports/controls/universal/RadioButton.qml @@ -46,7 +46,7 @@ T.RadioButton { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 6 spacing: 8 diff --git a/src/imports/controls/universal/RadioDelegate.qml b/src/imports/controls/universal/RadioDelegate.qml index 5e9a8234..0b48af87 100644 --- a/src/imports/controls/universal/RadioDelegate.qml +++ b/src/imports/controls/universal/RadioDelegate.qml @@ -48,7 +48,7 @@ T.RadioDelegate { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) spacing: 12 diff --git a/src/imports/controls/universal/SwipeDelegate.qml b/src/imports/controls/universal/SwipeDelegate.qml index 1e02d01e..bb329621 100644 --- a/src/imports/controls/universal/SwipeDelegate.qml +++ b/src/imports/controls/universal/SwipeDelegate.qml @@ -47,7 +47,7 @@ T.SwipeDelegate { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) spacing: 12 diff --git a/src/imports/controls/universal/Switch.qml b/src/imports/controls/universal/Switch.qml index ad208f13..bb559c5e 100644 --- a/src/imports/controls/universal/Switch.qml +++ b/src/imports/controls/universal/Switch.qml @@ -46,7 +46,7 @@ T.Switch { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) padding: 5 spacing: 8 diff --git a/src/imports/controls/universal/SwitchDelegate.qml b/src/imports/controls/universal/SwitchDelegate.qml index 68a40b02..bec1e222 100644 --- a/src/imports/controls/universal/SwitchDelegate.qml +++ b/src/imports/controls/universal/SwitchDelegate.qml @@ -48,7 +48,7 @@ T.SwitchDelegate { implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight, Math.max(implicitContentHeight, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding) + implicitIndicatorHeight) + topPadding + bottomPadding) spacing: 12 diff --git a/src/imports/templates/qtquicktemplates2plugin.cpp b/src/imports/templates/qtquicktemplates2plugin.cpp index 0bc5c9fc..46fc6868 100644 --- a/src/imports/templates/qtquicktemplates2plugin.cpp +++ b/src/imports/templates/qtquicktemplates2plugin.cpp @@ -332,6 +332,7 @@ void QtQuickTemplates2Plugin::registerTypes(const char *uri) qmlRegisterType(uri, 2, 4, "SpinBox"); // QtQuick.Templates 2.5 (new types and revisions in Qt 5.12) + qmlRegisterType(uri, 2, 5, "AbstractButton"); qmlRegisterType(uri, 2, 5, "DialogButtonBox"); qmlRegisterType(uri, 2, 5, "Control"); qmlRegisterType(uri, 2, 5, "Container"); diff --git a/src/quicktemplates2/qquickabstractbutton.cpp b/src/quicktemplates2/qquickabstractbutton.cpp index 0a8b8ddf..9f92155e 100644 --- a/src/quicktemplates2/qquickabstractbutton.cpp +++ b/src/quicktemplates2/qquickabstractbutton.cpp @@ -388,6 +388,22 @@ void QQuickAbstractButtonPrivate::executeIndicator(bool complete) quickCompleteDeferred(q, indicatorName(), indicator); } +void QQuickAbstractButtonPrivate::itemImplicitWidthChanged(QQuickItem *item) +{ + Q_Q(QQuickAbstractButton); + QQuickControlPrivate::itemImplicitWidthChanged(item); + if (item == indicator) + emit q->implicitIndicatorWidthChanged(); +} + +void QQuickAbstractButtonPrivate::itemImplicitHeightChanged(QQuickItem *item) +{ + Q_Q(QQuickAbstractButton); + QQuickControlPrivate::itemImplicitHeightChanged(item); + if (item == indicator) + emit q->implicitIndicatorHeightChanged(); +} + QQuickAbstractButton *QQuickAbstractButtonPrivate::findCheckedButton() const { Q_Q(const QQuickAbstractButton); @@ -458,6 +474,7 @@ QQuickAbstractButton::QQuickAbstractButton(QQuickAbstractButtonPrivate &dd, QQui QQuickAbstractButton::~QQuickAbstractButton() { Q_D(QQuickAbstractButton); + d->removeImplicitSizeListener(d->indicator); if (d->group) d->group->removeButton(this); d->ungrabShortcut(); @@ -706,13 +723,24 @@ void QQuickAbstractButton::setIndicator(QQuickItem *indicator) if (!d->indicator.isExecuting()) d->cancelIndicator(); + const qreal oldImplicitIndicatorWidth = implicitIndicatorWidth(); + const qreal oldImplicitIndicatorHeight = implicitIndicatorHeight(); + + d->removeImplicitSizeListener(d->indicator); delete d->indicator; d->indicator = indicator; + if (indicator) { if (!indicator->parentItem()) indicator->setParentItem(this); indicator->setAcceptedMouseButtons(Qt::LeftButton); + d->addImplicitSizeListener(indicator); } + + if (!qFuzzyCompare(oldImplicitIndicatorWidth, implicitIndicatorWidth())) + emit implicitIndicatorWidthChanged(); + if (!qFuzzyCompare(oldImplicitIndicatorHeight, implicitIndicatorHeight())) + emit implicitIndicatorHeightChanged(); if (!d->indicator.isExecuting()) emit indicatorChanged(); } @@ -939,6 +967,50 @@ qreal QQuickAbstractButton::pressY() const return d->movePoint.y(); } +/*! + \since QtQuick.Controls 2.5 (Qt 5.12) + \qmlproperty real QtQuick.Controls::AbstractButton::implicitIndicatorWidth + \readonly + + This property holds the implicit indicator width. + + The value is equal to \c {indicator ? indicator.implicitWidth : 0}. + + This is typically used, together with \l {Control::}{implicitContentWidth} and + \l {Control::}{implicitBackgroundWidth}, to calculate the \l {Item::}{implicitWidth}. + + \sa implicitIndicatorHeight +*/ +qreal QQuickAbstractButton::implicitIndicatorWidth() const +{ + Q_D(const QQuickAbstractButton); + if (!d->indicator) + return 0; + return d->indicator->implicitWidth(); +} + +/*! + \since QtQuick.Controls 2.5 (Qt 5.12) + \qmlproperty real QtQuick.Controls::AbstractButton::implicitIndicatorHeight + \readonly + + This property holds the implicit indicator height. + + The value is equal to \c {indicator ? indicator.implicitHeight : 0}. + + This is typically used, together with \l {Control::}{implicitContentHeight} and + \l {Control::}{implicitBackgroundHeight}, to calculate the \l {Item::}{implicitHeight}. + + \sa implicitIndicatorWidth +*/ +qreal QQuickAbstractButton::implicitIndicatorHeight() const +{ + Q_D(const QQuickAbstractButton); + if (!d->indicator) + return 0; + return d->indicator->implicitHeight(); +} + /*! \qmlmethod void QtQuick.Controls::AbstractButton::toggle() diff --git a/src/quicktemplates2/qquickabstractbutton_p.h b/src/quicktemplates2/qquickabstractbutton_p.h index de0c26ab..0fa48980 100644 --- a/src/quicktemplates2/qquickabstractbutton_p.h +++ b/src/quicktemplates2/qquickabstractbutton_p.h @@ -76,6 +76,9 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickAbstractButton : public QQuickContr Q_PROPERTY(int autoRepeatInterval READ autoRepeatInterval WRITE setAutoRepeatInterval NOTIFY autoRepeatIntervalChanged FINAL REVISION 4) Q_PROPERTY(qreal pressX READ pressX NOTIFY pressXChanged FINAL REVISION 4) Q_PROPERTY(qreal pressY READ pressY NOTIFY pressYChanged FINAL REVISION 4) + // 2.5 (Qt 5.12) + Q_PROPERTY(qreal implicitIndicatorWidth READ implicitIndicatorWidth NOTIFY implicitIndicatorWidthChanged FINAL REVISION 5) + Q_PROPERTY(qreal implicitIndicatorHeight READ implicitIndicatorHeight NOTIFY implicitIndicatorHeightChanged FINAL REVISION 5) Q_CLASSINFO("DeferredPropertyNames", "background,contentItem,indicator") public: @@ -141,6 +144,10 @@ public: qreal pressX() const; qreal pressY() const; + // 2.5 (Qt 5.12) + qreal implicitIndicatorWidth() const; + qreal implicitIndicatorHeight() const; + public Q_SLOTS: void toggle(); @@ -170,6 +177,9 @@ Q_SIGNALS: Q_REVISION(4) void autoRepeatIntervalChanged(); Q_REVISION(4) void pressXChanged(); Q_REVISION(4) void pressYChanged(); + // 2.5 (Qt 5.12) + Q_REVISION(5) void implicitIndicatorWidthChanged(); + Q_REVISION(5) void implicitIndicatorHeightChanged(); protected: QQuickAbstractButton(QQuickAbstractButtonPrivate &dd, QQuickItem *parent); diff --git a/src/quicktemplates2/qquickabstractbutton_p_p.h b/src/quicktemplates2/qquickabstractbutton_p_p.h index bb74e143..d88e5d31 100644 --- a/src/quicktemplates2/qquickabstractbutton_p_p.h +++ b/src/quicktemplates2/qquickabstractbutton_p_p.h @@ -105,6 +105,9 @@ public: void cancelIndicator(); void executeIndicator(bool complete = false); + void itemImplicitWidthChanged(QQuickItem *item) override; + void itemImplicitHeightChanged(QQuickItem *item) override; + QString text; bool explicitText; bool down; -- cgit v1.2.3