From 9a3b175798f6e8aa56ae5a355f1b4e40695891ee Mon Sep 17 00:00:00 2001 From: Uwe Rathmann Date: Tue, 2 Apr 2019 17:50:08 +0200 Subject: [PATCH] static assertion added --- src/common/QskAspect.h | 8 ++++++++ src/controls/QskAbstractButton.cpp | 11 +++++++---- src/controls/QskControl.cpp | 6 +++--- src/controls/QskPopup.cpp | 2 +- src/controls/QskScrollView.cpp | 4 ++-- src/controls/QskSlider.cpp | 6 +++--- src/controls/QskTextInput.cpp | 4 ++-- 7 files changed, 26 insertions(+), 15 deletions(-) diff --git a/src/common/QskAspect.h b/src/common/QskAspect.h index 0cada7b9..1880b91c 100644 --- a/src/common/QskAspect.h +++ b/src/common/QskAspect.h @@ -540,9 +540,17 @@ QSK_EXPORT void qskDebugAspect( QDebug, const QMetaObject*, QskAspect::Aspect ); QskAspect::nextSubcontrol( &type::staticMetaObject, #type "::" #name ); #define QSK_STATE( type, name, value ) \ + static_assert( \ + ( value >= QskAspect::FirstUserState ) && ( value <= QskAspect::LastUserState ), \ + "Invalid state" \ + ); \ const QskAspect::State type::name = \ QskAspect::registerState( &type::staticMetaObject, value, #type "::" #name ); +#define QSK_SYSTEM_STATE( type, name, value ) \ + const QskAspect::State type::name = \ + QskAspect::registerState( &type::staticMetaObject, value, #type "::" #name ); + #if !defined( _MSC_VER ) #define QSK_SUBCONTROLS( ... ) static const QskAspect::Subcontrol __VA_ARGS__; diff --git a/src/controls/QskAbstractButton.cpp b/src/controls/QskAbstractButton.cpp index 1344fe1b..abda742e 100644 --- a/src/controls/QskAbstractButton.cpp +++ b/src/controls/QskAbstractButton.cpp @@ -10,10 +10,13 @@ #include -QSK_STATE( QskAbstractButton, Flat, QskAspect::FirstSystemState << 1 ) -QSK_STATE( QskAbstractButton, Checked, QskAspect::LastSystemState >> 4 ) -QSK_STATE( QskAbstractButton, Pressed, QskAspect::LastSystemState >> 3 ) -QSK_STATE( QskAbstractButton, Checkable, QskAspect::LastSystemState >> 2 ) +QSK_SYSTEM_STATE( QskAbstractButton, Flat, QskAspect::FirstSystemState << 1 ) +#if 1 +// Wrong: we are overlapping with the user states, TODO ... +QSK_SYSTEM_STATE( QskAbstractButton, Checked, QskAspect::LastSystemState >> 4 ) +#endif +QSK_SYSTEM_STATE( QskAbstractButton, Pressed, QskAspect::LastSystemState >> 3 ) +QSK_SYSTEM_STATE( QskAbstractButton, Checkable, QskAspect::LastSystemState >> 2 ) static QskAbstractButton* qskCheckedSibling( const QskAbstractButton* button ) { diff --git a/src/controls/QskControl.cpp b/src/controls/QskControl.cpp index 68ef77e6..3b391a14 100644 --- a/src/controls/QskControl.cpp +++ b/src/controls/QskControl.cpp @@ -26,9 +26,9 @@ QSK_QT_PRIVATE_END #include #include -QSK_STATE( QskControl, Disabled, QskAspect::FirstSystemState ) -QSK_STATE( QskControl, Hovered, QskAspect::LastSystemState >> 1 ) -QSK_STATE( QskControl, Focused, QskAspect::LastSystemState ) +QSK_SYSTEM_STATE( QskControl, Disabled, QskAspect::FirstSystemState ) +QSK_SYSTEM_STATE( QskControl, Hovered, QskAspect::LastSystemState >> 1 ) +QSK_SYSTEM_STATE( QskControl, Focused, QskAspect::LastSystemState ) // QGridLayoutEngine internally uses FLT_MAX static constexpr qreal qskSizeHintMax = std::numeric_limits< float >::max(); diff --git a/src/controls/QskPopup.cpp b/src/controls/QskPopup.cpp index e6cca4b6..55c51618 100644 --- a/src/controls/QskPopup.cpp +++ b/src/controls/QskPopup.cpp @@ -16,7 +16,7 @@ QSK_QT_PRIVATE_BEGIN QSK_QT_PRIVATE_END QSK_SUBCONTROL( QskPopup, Overlay ) -QSK_STATE( QskPopup, Closed, QskAspect::FirstSystemState << 1 ) +QSK_SYSTEM_STATE( QskPopup, Closed, QskAspect::FirstSystemState << 1 ) static void qskSetFocus( QQuickItem* item, bool on ) { diff --git a/src/controls/QskScrollView.cpp b/src/controls/QskScrollView.cpp index d79a46e4..a674f86f 100644 --- a/src/controls/QskScrollView.cpp +++ b/src/controls/QskScrollView.cpp @@ -19,8 +19,8 @@ QSK_SUBCONTROL( QskScrollView, HorizontalScrollHandle ) QSK_SUBCONTROL( QskScrollView, VerticalScrollBar ) QSK_SUBCONTROL( QskScrollView, VerticalScrollHandle ) -QSK_STATE( QskScrollView, VerticalHandlePressed, QskAspect::FirstSystemState << 1 ) -QSK_STATE( QskScrollView, HorizontalHandlePressed, QskAspect::FirstSystemState << 2 ) +QSK_SYSTEM_STATE( QskScrollView, VerticalHandlePressed, QskAspect::FirstSystemState << 1 ) +QSK_SYSTEM_STATE( QskScrollView, HorizontalHandlePressed, QskAspect::FirstSystemState << 2 ) namespace { diff --git a/src/controls/QskSlider.cpp b/src/controls/QskSlider.cpp index f75d3da5..9fe8c474 100644 --- a/src/controls/QskSlider.cpp +++ b/src/controls/QskSlider.cpp @@ -13,9 +13,9 @@ QSK_SUBCONTROL( QskSlider, Fill ) QSK_SUBCONTROL( QskSlider, Scale ) QSK_SUBCONTROL( QskSlider, Handle ) -QSK_STATE( QskSlider, Pressed, QskAspect::FirstSystemState << 1 ) -QSK_STATE( QskSlider, Minimum, QskAspect::FirstSystemState << 2 ) -QSK_STATE( QskSlider, Maximum, QskAspect::FirstSystemState << 3 ) +QSK_SYSTEM_STATE( QskSlider, Pressed, QskAspect::FirstSystemState << 1 ) +QSK_SYSTEM_STATE( QskSlider, Minimum, QskAspect::FirstSystemState << 2 ) +QSK_SYSTEM_STATE( QskSlider, Maximum, QskAspect::FirstSystemState << 3 ) class QskSlider::PrivateData { diff --git a/src/controls/QskTextInput.cpp b/src/controls/QskTextInput.cpp index 40c147fc..8d43d514 100644 --- a/src/controls/QskTextInput.cpp +++ b/src/controls/QskTextInput.cpp @@ -16,8 +16,8 @@ QSK_SUBCONTROL( QskTextInput, Text ) QSK_SUBCONTROL( QskTextInput, PanelSelected ) QSK_SUBCONTROL( QskTextInput, TextSelected ) -QSK_STATE( QskTextInput, ReadOnly, QskAspect::FirstSystemState << 1 ) -QSK_STATE( QskTextInput, Editing, QskAspect::FirstSystemState << 2 ) +QSK_SYSTEM_STATE( QskTextInput, ReadOnly, QskAspect::FirstSystemState << 1 ) +QSK_SYSTEM_STATE( QskTextInput, Editing, QskAspect::FirstSystemState << 2 ) static inline void qskBindSignals( const QQuickTextInput* wrappedInput, QskTextInput* input )