diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index ff0da86f65..8bc7181633 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -440,6 +440,42 @@ typedef double qreal; #define QT_DEPRECATED_VERSION_5(minor) QT_DEPRECATED_VERSION_5_##minor #define QT_DEPRECATED_VERSION(major, minor) QT_DEPRECATED_VERSION_##major##_##minor +/* + QT_REMOVED_SINCE(major, minor) evaluates as true if the Qt version is greater than + the deprecation point specified \e and QT_BUILD_REMOVED_API is defined. + + Use it to remove functions from the API, but not the ABI, by moving their definitions + into the module's \c{removed_api/} subdir and defining QT_BUILD_REMOVED_API. + + Example: + + // header + #if QT_REMOVED_SINCE(6, 3) + void removedFunction(); // function removed since Qt 6.3 + #endif + + // implementation + // ... moved from here ... + + // removed_api/some.cpp + #define QT_BUILD_REMOVED_API + #include + + #include + + #if QT_REMOVED_SINCE(6, 3) + void removedFunction() { newFunction(); } + #endif + + The function is now removed from the API, but remains in the ABI until + the deprecation point moves past 6.3. +*/ +#ifdef QT_BUILD_REMOVED_API +#define QT_REMOVED_SINCE(major, minor) QT_DEPRECATED_SINCE(major, minor) +#else +#define QT_REMOVED_SINCE(major, minor) 0 +#endif + #ifdef __cplusplus // A tag to help mark stuff deprecated (cf. QStringViewLiteral) namespace QtPrivate { diff --git a/src/widgets/CMakeLists.txt b/src/widgets/CMakeLists.txt index 324a26d07d..f2bb1e58a1 100644 --- a/src/widgets/CMakeLists.txt +++ b/src/widgets/CMakeLists.txt @@ -8,6 +8,7 @@ qt_internal_add_module(Widgets QMAKE_MODULE_CONFIG uic PLUGIN_TYPES styles SOURCES + compat/removed_api.cpp itemviews/qfileiconprovider.cpp itemviews/qfileiconprovider.h itemviews/qfileiconprovider_p.h kernel/qapplication.cpp kernel/qapplication.h kernel/qapplication_p.h kernel/qboxlayout.cpp kernel/qboxlayout.h @@ -47,7 +48,6 @@ qt_internal_add_module(Widgets widgets/qabstractscrollarea.cpp widgets/qabstractscrollarea.h widgets/qabstractscrollarea_p.h widgets/qfocusframe.cpp widgets/qfocusframe.h widgets/qframe.cpp widgets/qframe.h widgets/qframe_p.h - widgets/qtwidgets_widgets_removed_functions_in_6_3.cpp widgets/qwidgetanimator.cpp widgets/qwidgetanimator_p.h DEFINES QT_NO_USING_NAMESPACE @@ -239,7 +239,7 @@ set(qstyle_resource_files ) set(widgets_no_pch_sources - widgets/qtwidgets_widgets_removed_functions_in_6_3.cpp + compat/removed_api.cpp ) foreach(src ${widgets_no_pch_sources}) diff --git a/src/widgets/widgets/qtwidgets_widgets_removed_functions_in_6_3.cpp b/src/widgets/compat/removed_api.cpp similarity index 96% rename from src/widgets/widgets/qtwidgets_widgets_removed_functions_in_6_3.cpp rename to src/widgets/compat/removed_api.cpp index 535aec8ce4..3af337d853 100644 --- a/src/widgets/widgets/qtwidgets_widgets_removed_functions_in_6_3.cpp +++ b/src/widgets/compat/removed_api.cpp @@ -37,13 +37,13 @@ ** ****************************************************************************/ -#define QT_BUILD_FUNCTIONS_REMOVED_IN_6_3 +#define QT_BUILD_REMOVED_API #include "qglobal.h" QT_USE_NAMESPACE -#if QT_DEPRECATED_SINCE(6, 3) +#if QT_REMOVED_SINCE(6, 3) #include "qmenu.h" @@ -99,4 +99,4 @@ QAction *QToolBar::addAction(const QIcon &icon, const QString &text, // #include // // implement removed functions from qotherheader.h -#endif // QT_DEPRECATED_SINCE(6, 3) +#endif // QT_REMOVED_SINCE(6, 3) diff --git a/src/widgets/widgets/qmenu.h b/src/widgets/widgets/qmenu.h index 7d502f9f1b..68481308fb 100644 --- a/src/widgets/widgets/qmenu.h +++ b/src/widgets/widgets/qmenu.h @@ -76,7 +76,7 @@ public: ~QMenu(); using QWidget::addAction; -#ifdef QT_BUILD_FUNCTIONS_REMOVED_IN_6_3 +#if QT_REMOVED_SINCE(6, 3) QAction *addAction(const QString &text); QAction *addAction(const QIcon &icon, const QString &text); #if !QT_CONFIG(shortcut) diff --git a/src/widgets/widgets/qtoolbar.h b/src/widgets/widgets/qtoolbar.h index caca716d2e..09f639d3e7 100644 --- a/src/widgets/widgets/qtoolbar.h +++ b/src/widgets/widgets/qtoolbar.h @@ -90,7 +90,7 @@ public: void clear(); using QWidget::addAction; -#ifdef QT_BUILD_FUNCTIONS_REMOVED_IN_6_3 +#if QT_REMOVED_SINCE(6, 3) QAction *addAction(const QString &text); QAction *addAction(const QIcon &icon, const QString &text); QAction *addAction(const QString &text, const QObject *receiver, const char* member);