From 751ca5dfb7c3f0edd76110a5dc3a3696d3e0539c Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Thu, 9 Feb 2017 16:33:43 +0100 Subject: Platform: respect the configurable features in Qt Widgets Change-Id: I4a0696e4f897a378e3944c7948ba00e5f2038f5d Reviewed-by: Mitch Curtis Reviewed-by: Qt CI Bot --- src/imports/platform/widgets/qwidgetplatform_p.h | 49 ++++++++++++++++++-- src/imports/platform/widgets/widgets.pri | 58 ++++++++++++++++++------ 2 files changed, 88 insertions(+), 19 deletions(-) diff --git a/src/imports/platform/widgets/qwidgetplatform_p.h b/src/imports/platform/widgets/qwidgetplatform_p.h index 792e87aa..5a983a33 100644 --- a/src/imports/platform/widgets/qwidgetplatform_p.h +++ b/src/imports/platform/widgets/qwidgetplatform_p.h @@ -56,14 +56,27 @@ #include #ifdef QT_WIDGETS_LIB +#include +#if QT_CONFIG(colordialog) #include "qwidgetplatformcolordialog_p.h" +#endif +#if QT_CONFIG(filedialog) #include "qwidgetplatformfiledialog_p.h" +#endif +#if QT_CONFIG(fontdialog) #include "qwidgetplatformfontdialog_p.h" +#endif +#if QT_CONFIG(messagebox) #include "qwidgetplatformmessagedialog_p.h" +#endif +#if QT_CONFIG(menu) #include "qwidgetplatformmenu_p.h" #include "qwidgetplatformmenuitem_p.h" +#endif +#ifndef QT_NO_SYSTEMTRAYICON #include "qwidgetplatformsystemtrayicon_p.h" #endif +#endif QT_BEGIN_NAMESPACE @@ -104,19 +117,45 @@ namespace QWidgetPlatform return nullptr; } - static inline QPlatformMenu *createMenu(QObject *parent = nullptr) { return createWidget("Menu", parent); } - static inline QPlatformMenuItem *createMenuItem(QObject *parent = nullptr) { return createWidget("MenuItem", parent); } - static inline QPlatformSystemTrayIcon *createSystemTrayIcon(QObject *parent = nullptr) { return createWidget("SystemTrayIcon", parent); } + static inline QPlatformMenu *createMenu(QObject *parent = nullptr) { +#if defined(QT_WIDGETS_LIB) && QT_CONFIG(menu) + return createWidget("Menu", parent); +#else + return nullptr; +#endif + } + static inline QPlatformMenuItem *createMenuItem(QObject *parent = nullptr) { +#if defined(QT_WIDGETS_LIB) && QT_CONFIG(menu) + return createWidget("MenuItem", parent); +#else + return nullptr; +#endif + } + static inline QPlatformSystemTrayIcon *createSystemTrayIcon(QObject *parent = nullptr) { +#ifndef QT_NO_SYSTEMTRAYICON + return createWidget("SystemTrayIcon", parent); +#else + return nullptr; +#endif + } static inline QPlatformDialogHelper *createDialog(QPlatformTheme::DialogType type, QObject *parent = nullptr) { switch (type) { +#if defined(QT_WIDGETS_LIB) && QT_CONFIG(colordialog) case QPlatformTheme::ColorDialog: return createWidget("ColorDialog", parent); +#endif +#if defined(QT_WIDGETS_LIB) && QT_CONFIG(filedialog) case QPlatformTheme::FileDialog: return createWidget("FileDialog", parent); +#endif +#if defined(QT_WIDGETS_LIB) && QT_CONFIG(fontdialog) case QPlatformTheme::FontDialog: return createWidget("FontDialog", parent); +#endif +#if defined(QT_WIDGETS_LIB) && QT_CONFIG(messagebox) case QPlatformTheme::MessageDialog: return createWidget("MessageDialog", parent); - default: Q_UNREACHABLE(); break; - return nullptr; +#endif + default: break; } + return nullptr; } } diff --git a/src/imports/platform/widgets/widgets.pri b/src/imports/platform/widgets/widgets.pri index c904e924..84efd930 100644 --- a/src/imports/platform/widgets/widgets.pri +++ b/src/imports/platform/widgets/widgets.pri @@ -3,21 +3,51 @@ DEPENDPATH += $$PWD HEADERS += \ $$PWD/qwidgetplatform_p.h \ - $$PWD/qwidgetplatformcolordialog_p.h \ - $$PWD/qwidgetplatformdialog_p.h \ - $$PWD/qwidgetplatformfiledialog_p.h \ - $$PWD/qwidgetplatformfontdialog_p.h \ - $$PWD/qwidgetplatformmenu_p.h \ - $$PWD/qwidgetplatformmenuitem_p.h \ - $$PWD/qwidgetplatformmessagedialog_p.h \ $$PWD/qwidgetplatformsystemtrayicon_p.h SOURCES += \ - $$PWD/qwidgetplatformcolordialog.cpp \ - $$PWD/qwidgetplatformdialog.cpp \ - $$PWD/qwidgetplatformfiledialog.cpp \ - $$PWD/qwidgetplatformfontdialog.cpp \ - $$PWD/qwidgetplatformmenu.cpp \ - $$PWD/qwidgetplatformmenuitem.cpp \ - $$PWD/qwidgetplatformmessagedialog.cpp \ $$PWD/qwidgetplatformsystemtrayicon.cpp + +qtConfig(colordialog) | qtConfig(filedialog) | qtConfig(fontdialog) | qtConfig(messagebox) { + HEADERS += \ + $$PWD/qwidgetplatformdialog_p.h + SOURCES += \ + $$PWD/qwidgetplatformdialog.cpp +} + +qtConfig(colordialog) { + HEADERS += \ + $$PWD/qwidgetplatformcolordialog_p.h + SOURCES += \ + $$PWD/qwidgetplatformcolordialog.cpp +} + +qtConfig(filedialog) { + HEADERS += \ + $$PWD/qwidgetplatformfiledialog_p.h + SOURCES += \ + $$PWD/qwidgetplatformfiledialog.cpp +} + +qtConfig(fontdialog) { + HEADERS += \ + $$PWD/qwidgetplatformfontdialog_p.h + SOURCES += \ + $$PWD/qwidgetplatformfontdialog.cpp +} + +qtConfig(menu) { + HEADERS += \ + $$PWD/qwidgetplatformmenu_p.h \ + $$PWD/qwidgetplatformmenuitem_p.h + SOURCES += \ + $$PWD/qwidgetplatformmenu.cpp \ + $$PWD/qwidgetplatformmenuitem.cpp +} + +qtConfig(messagebox) { + HEADERS += \ + $$PWD/qwidgetplatformmessagedialog_p.h + SOURCES += \ + $$PWD/qwidgetplatformmessagedialog.cpp +} -- cgit v1.2.3