summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-08-02 22:49:38 +0200
committerOswald Buddenhagen <oswald.buddenhagen@qt.io>2017-08-02 22:52:32 +0200
commitee07b912a1768ea0b103544f9eeac41f3cf50cf6 (patch)
tree15bfa7e4a9c098511c1fc89e2b2c240520b85e2d /src
parent4bfff6a98b59b32605d881a463ad3edc221a7dc8 (diff)
parenta96656a8fb6a3c1fc7765659efff28f807fd0deb (diff)
Merge remote-tracking branch 'origin/5.9' into dev
Conflicts: src/plugins/platforms/xcb/qxcbconnection.h src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp src/plugins/styles/mac/qmacstyle_mac.mm src/widgets/widgets/qdockarealayout.cpp src/widgets/widgets/qmainwindow.cpp src/widgets/widgets/qmainwindowlayout.cpp src/widgets/widgets/qmainwindowlayout_p.h tests/auto/corelib/tools/qlocale/tst_qlocale.cpp tests/auto/other/macnativeevents/BLACKLIST tests/auto/widgets/widgets/qmenu/BLACKLIST Change-Id: Ic8e724b80a65e7b1af25511b0e674d209265e567
Diffstat (limited to 'src')
-rw-r--r--src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp2
-rw-r--r--src/angle/patches/0015-ANGLE-Use-ANGLE_D3D11_QDTD_AVAILABLE-to-check-struct-.patch32
-rw-r--r--src/angle/src/common/gles_common.pri5
-rw-r--r--src/corelib/arch/arch.pri2
-rw-r--r--src/corelib/arch/qatomic_cxx11.h2
-rw-r--r--src/corelib/configure.json254
-rw-r--r--src/corelib/corelib.pro10
-rw-r--r--src/corelib/global/qcompilerdetection.h3
-rw-r--r--src/corelib/io/qfilesystemengine_win.cpp13
-rw-r--r--src/corelib/io/qfilesystemwatcher_kqueue.cpp3
-rw-r--r--src/corelib/io/qfilesystemwatcher_win.cpp9
-rw-r--r--src/corelib/io/qfsfileengine_win.cpp14
-rw-r--r--src/corelib/io/qsavefile.cpp6
-rw-r--r--src/corelib/io/qwindowspipewriter.cpp10
-rw-r--r--src/corelib/itemmodels/qitemselectionmodel.cpp4
-rw-r--r--src/corelib/itemmodels/qitemselectionmodel.h4
-rw-r--r--src/corelib/itemmodels/qitemselectionmodel_p.h3
-rw-r--r--src/corelib/kernel/qeventdispatcher_win.cpp3
-rw-r--r--src/corelib/tools/qhash.h16
-rw-r--r--src/corelib/tools/qlocale.cpp2
-rw-r--r--src/dbus/qdbuserror.cpp2
-rw-r--r--src/gui/configure.json494
-rw-r--r--src/gui/image/qpixmapcache.cpp3
-rw-r--r--src/gui/itemmodels/qstandarditemmodel.cpp15
-rw-r--r--src/gui/kernel/qhighdpiscaling_p.h8
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp4
-rw-r--r--src/gui/painting/qpaintengineex.cpp1
-rw-r--r--src/gui/text/qfontdatabase.cpp6
-rw-r--r--src/network/configure.json64
-rw-r--r--src/network/socket/qnativesocketengine_win.cpp5
-rw-r--r--src/network/socket/qnativesocketengine_winrt.cpp2
-rw-r--r--src/platformsupport/fontdatabases/windows/qwindowsfontengine.cpp24
-rw-r--r--src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp2
-rw-r--r--src/plugins/platforms/cocoa/qcocoahelpers.h7
-rw-r--r--src/plugins/platforms/cocoa/qcocoahelpers.mm5
-rw-r--r--src/plugins/platforms/cocoa/qnswindowdelegate.mm4
-rw-r--r--src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice.cpp2
-rw-r--r--src/plugins/platforms/linuxfb/qlinuxfbdrmscreen.cpp2
-rw-r--r--src/plugins/platforms/minimalegl/qminimaleglintegration.cpp1
-rw-r--r--src/plugins/platforms/qnx/qqnxeglwindow.cpp14
-rw-r--r--src/plugins/platforms/windows/qwindowscontext.cpp4
-rw-r--r--src/plugins/platforms/windows/qwindowsmousehandler.cpp9
-rw-r--r--src/plugins/platforms/windows/qwindowswindow.cpp6
-rw-r--r--src/plugins/platforms/windows/qwindowswindow.h2
-rw-r--r--src/plugins/platforms/winrt/qwinrttheme.cpp37
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection.h1
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection_xi2.cpp28
-rw-r--r--src/plugins/platforms/xcb/qxcbintegration.cpp5
-rw-r--r--src/plugins/printsupport/windows/qwindowsprintdevice.cpp4
-rw-r--r--src/plugins/sqldrivers/configure.json56
-rw-r--r--src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp29
-rw-r--r--src/plugins/styles/mac/qmacstyle_mac.mm74
-rw-r--r--src/plugins/styles/mac/qmacstyle_mac_p_p.h8
-rw-r--r--src/plugins/styles/windowsvista/qwindowsvistastyle.cpp12
-rw-r--r--src/plugins/styles/windowsvista/qwindowsvistastyle_p_p.h6
-rw-r--r--src/plugins/styles/windowsvista/qwindowsxpstyle.cpp22
-rw-r--r--src/printsupport/configure.json5
-rw-r--r--src/sql/models/qsqlrelationaldelegate.h4
-rw-r--r--src/widgets/accessible/accessible.pri7
-rw-r--r--src/widgets/accessible/complexwidgets.cpp17
-rw-r--r--src/widgets/accessible/complexwidgets_p.h10
-rw-r--r--src/widgets/accessible/itemviews.cpp7
-rw-r--r--src/widgets/accessible/itemviews_p.h5
-rw-r--r--src/widgets/accessible/qaccessiblewidgetfactory.cpp14
-rw-r--r--src/widgets/accessible/qaccessiblewidgets.cpp16
-rw-r--r--src/widgets/accessible/qaccessiblewidgets_p.h8
-rw-r--r--src/widgets/dialogs/qfiledialog.cpp10
-rw-r--r--src/widgets/dialogs/qfileinfogatherer.cpp2
-rw-r--r--src/widgets/dialogs/qfilesystemmodel.cpp8
-rw-r--r--src/widgets/graphicsview/qgraphicsproxywidget.cpp1
-rw-r--r--src/widgets/itemviews/itemviews.pri25
-rw-r--r--src/widgets/itemviews/qabstractitemdelegate.cpp3
-rw-r--r--src/widgets/itemviews/qabstractitemdelegate.h7
-rw-r--r--src/widgets/itemviews/qabstractitemdelegate_p.h4
-rw-r--r--src/widgets/itemviews/qabstractitemview.cpp3
-rw-r--r--src/widgets/itemviews/qabstractitemview.h7
-rw-r--r--src/widgets/itemviews/qabstractitemview_p.h4
-rw-r--r--src/widgets/itemviews/qdatawidgetmapper.cpp4
-rw-r--r--src/widgets/itemviews/qdatawidgetmapper.h5
-rw-r--r--src/widgets/itemviews/qdirmodel.cpp3
-rw-r--r--src/widgets/itemviews/qdirmodel.h7
-rw-r--r--src/widgets/itemviews/qheaderview.cpp3
-rw-r--r--src/widgets/itemviews/qheaderview.h7
-rw-r--r--src/widgets/itemviews/qheaderview_p.h6
-rw-r--r--src/widgets/itemviews/qitemdelegate.cpp3
-rw-r--r--src/widgets/itemviews/qitemdelegate.h7
-rw-r--r--src/widgets/itemviews/qitemeditorfactory.cpp22
-rw-r--r--src/widgets/itemviews/qitemeditorfactory.h7
-rw-r--r--src/widgets/itemviews/qitemeditorfactory_p.h7
-rw-r--r--src/widgets/itemviews/qlistview.cpp13
-rw-r--r--src/widgets/itemviews/qlistview.h7
-rw-r--r--src/widgets/itemviews/qlistview_p.h4
-rw-r--r--src/widgets/itemviews/qstyleditemdelegate.cpp3
-rw-r--r--src/widgets/itemviews/qstyleditemdelegate.h7
-rw-r--r--src/widgets/kernel/qtooltip.cpp6
-rw-r--r--src/widgets/kernel/qwidget.cpp2
-rw-r--r--src/widgets/styles/qcommonstyle.cpp96
-rw-r--r--src/widgets/styles/qcommonstyle_p.h8
-rw-r--r--src/widgets/styles/qfusionstyle.cpp2
-rw-r--r--src/widgets/styles/qpixmapstyle.cpp8
-rw-r--r--src/widgets/styles/qstyleoption.cpp16
-rw-r--r--src/widgets/styles/qstyleoption.h22
-rw-r--r--src/widgets/styles/qstylesheetstyle.cpp92
-rw-r--r--src/widgets/styles/qwindowsstyle.cpp33
-rw-r--r--src/widgets/util/qcompleter.cpp30
-rw-r--r--src/widgets/widgets/qabstractbutton.cpp4
-rw-r--r--src/widgets/widgets/qabstractscrollarea.cpp2
-rw-r--r--src/widgets/widgets/qcalendarwidget.cpp4
-rw-r--r--src/widgets/widgets/qcalendarwidget.h8
-rw-r--r--src/widgets/widgets/qcombobox.cpp3
-rw-r--r--src/widgets/widgets/qcombobox.h6
-rw-r--r--src/widgets/widgets/qcombobox_p.h5
-rw-r--r--src/widgets/widgets/qdatetimeedit_p.h1
-rw-r--r--src/widgets/widgets/qdockarealayout.cpp118
-rw-r--r--src/widgets/widgets/qdockarealayout_p.h18
-rw-r--r--src/widgets/widgets/qdockwidget.cpp7
-rw-r--r--src/widgets/widgets/qdockwidget.h7
-rw-r--r--src/widgets/widgets/qdockwidget_p.h4
-rw-r--r--src/widgets/widgets/qlineedit.cpp2
-rw-r--r--src/widgets/widgets/qlineedit_p.cpp2
-rw-r--r--src/widgets/widgets/qmainwindow.cpp36
-rw-r--r--src/widgets/widgets/qmainwindow.h32
-rw-r--r--src/widgets/widgets/qmainwindowlayout.cpp190
-rw-r--r--src/widgets/widgets/qmainwindowlayout_p.h30
-rw-r--r--src/widgets/widgets/qmdiarea.cpp74
-rw-r--r--src/widgets/widgets/qmdiarea.h10
-rw-r--r--src/widgets/widgets/qmdiarea_p.h6
-rw-r--r--src/widgets/widgets/qmdisubwindow.h2
-rw-r--r--src/widgets/widgets/qscrollbar.h2
-rw-r--r--src/widgets/widgets/qtabbar.cpp10
-rw-r--r--src/widgets/widgets/qtabbar.h7
-rw-r--r--src/widgets/widgets/qtabbar_p.h7
-rw-r--r--src/widgets/widgets/qtabwidget.cpp3
-rw-r--r--src/widgets/widgets/qtabwidget.h7
-rw-r--r--src/widgets/widgets/qtoolbar.cpp2
-rw-r--r--src/widgets/widgets/qtoolbarlayout.cpp2
-rw-r--r--src/widgets/widgets/qwidgetlinecontrol.cpp6
-rw-r--r--src/widgets/widgets/widgets.pri52
138 files changed, 1759 insertions, 872 deletions
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp
index 972c289412..0a79b26df0 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp
@@ -20,7 +20,7 @@ typedef struct D3D11_QUERY_DATA_SO_STATISTICS {
} D3D11_QUERY_DATA_SO_STATISTICS;
#endif // ANGLE_MINGW32_COMPAT
-#ifdef __MINGW32__
+#ifndef ANGLE_D3D11_QDTD_AVAILABLE
typedef struct D3D11_QUERY_DATA_TIMESTAMP_DISJOINT {
UINT64 Frequency;
BOOL Disjoint;
diff --git a/src/angle/patches/0015-ANGLE-Use-ANGLE_D3D11_QDTD_AVAILABLE-to-check-struct-.patch b/src/angle/patches/0015-ANGLE-Use-ANGLE_D3D11_QDTD_AVAILABLE-to-check-struct-.patch
new file mode 100644
index 0000000000..9809fefd9d
--- /dev/null
+++ b/src/angle/patches/0015-ANGLE-Use-ANGLE_D3D11_QDTD_AVAILABLE-to-check-struct-.patch
@@ -0,0 +1,32 @@
+From 640361e72369d612270c6e59126019c917e33c9a Mon Sep 17 00:00:00 2001
+From: Oliver Wolff <oliver.wolff@qt.io>
+Date: Fri, 28 Jul 2017 09:02:50 +0200
+Subject: [PATCH] ANGLE: Use ANGLE_D3D11_QDTD_AVAILABLE to check struct's
+ availability
+
+Checking mingw when defining the structure is not enough, as it is
+available in recent versions of MinGW. The define that is used is set
+depending on a configure test which works independently of the used
+toolchain.
+
+Change-Id: Ia9cb48f3e673841101a93cbc8ea23aff9547f639
+---
+ src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp
+index 972c289..97c65e1 100644
+--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp
++++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d11/Query11.cpp
+@@ -20,7 +20,7 @@ typedef struct D3D11_QUERY_DATA_SO_STATISTICS {
+ } D3D11_QUERY_DATA_SO_STATISTICS;
+ #endif // ANGLE_MINGW32_COMPAT
+
+-#ifdef __MINGW32__
++#ifndef ANGLE_D3D11_QDTD_AVAILABLE
+ typedef struct D3D11_QUERY_DATA_TIMESTAMP_DISJOINT {
+ UINT64 Frequency;
+ BOOL Disjoint;
+--
+2.10.2.windows.1
+
diff --git a/src/angle/src/common/gles_common.pri b/src/angle/src/common/gles_common.pri
index 7b2e4c71b0..ea4fb03aae 100644
--- a/src/angle/src/common/gles_common.pri
+++ b/src/angle/src/common/gles_common.pri
@@ -23,6 +23,11 @@ for(libname, STATICLIBS) {
DEFINES += LIBANGLE_IMPLEMENTATION LIBGLESV2_IMPLEMENTATION GL_APICALL= GL_GLEXT_PROTOTYPES= EGLAPI=
!winrt: DEFINES += ANGLE_ENABLE_D3D9 ANGLE_SKIP_DXGI_1_2_CHECK
+QT_FOR_CONFIG += gui-private
+include($$OUT_PWD/../../../gui/qtgui-config.pri)
+
+qtConfig(angle_d3d11_qdtd): DEFINES += ANGLE_D3D11_QDTD_AVAILABLE
+
HEADERS += \
$$ANGLE_DIR/src/common/mathutil.h \
$$ANGLE_DIR/src/common/blocklayout.h \
diff --git a/src/corelib/arch/arch.pri b/src/corelib/arch/arch.pri
index b628bcc6ec..e490617c6b 100644
--- a/src/corelib/arch/arch.pri
+++ b/src/corelib/arch/arch.pri
@@ -4,4 +4,4 @@ HEADERS += \
arch/qatomic_bootstrap.h \
arch/qatomic_cxx11.h
-qtConfig(libatomic): QMAKE_USE += libatomic
+qtConfig(std-atomic64): QMAKE_USE += libatomic
diff --git a/src/corelib/arch/qatomic_cxx11.h b/src/corelib/arch/qatomic_cxx11.h
index 484ec73e7f..1404849382 100644
--- a/src/corelib/arch/qatomic_cxx11.h
+++ b/src/corelib/arch/qatomic_cxx11.h
@@ -187,7 +187,7 @@ template <> Q_DECL_CONSTEXPR inline bool QAtomicTraits<2>::isLockFree()
{ return false; }
#endif
-#ifndef QT_NO_STD_ATOMIC64
+#if QT_CONFIG(std_atomic64)
template<> struct QAtomicOpsSupport<8> { enum { IsSupported = 1 }; };
# define Q_ATOMIC_INT64_IS_SUPPORTED
# if ATOMIC_LLONG_LOCK_FREE == 2
diff --git a/src/corelib/configure.json b/src/corelib/configure.json
index 7e5a7b8fde..44d6ccfdf5 100644
--- a/src/corelib/configure.json
+++ b/src/corelib/configure.json
@@ -22,14 +22,26 @@
"libraries": {
"doubleconversion": {
"label": "DoubleConversion",
- "test": "unix/doubleconversion",
+ "test": {
+ "include": "double-conversion/double-conversion.h",
+ "main": "(void) double_conversion::StringToDoubleConverter::NO_FLAGS;"
+ },
"sources": [
"-ldouble-conversion"
]
},
"glib": {
"label": "GLib",
- "test": "unix/glib",
+ "test": {
+ "head": "typedef struct _GMainContext GMainContext;",
+ "include": "glib.h",
+ "main": [
+ "g_thread_init(NULL);",
+ "(void) g_main_context_default();",
+ "(void) g_source_new(0, 0);",
+ "g_source_add_poll(NULL, NULL);"
+ ]
+ },
"sources": [
{ "type": "pkgConfig", "args": "glib-2.0 gthread-2.0" }
]
@@ -37,14 +49,29 @@
"gnu_iconv": {
"label": "GNU libiconv",
"export": "iconv",
- "test": "unix/gnu-libiconv",
+ "test": "gnu-libiconv",
"sources": [
"-liconv"
]
},
"icu": {
"label": "ICU",
- "test": "unix/icu",
+ "test": {
+ "include": [ "unicode/utypes.h", "unicode/ucol.h", "unicode/ustring.h" ],
+ "main": [
+ "UErrorCode status = U_ZERO_ERROR;",
+ "UCollator *collator = ucol_open(\"ru_RU\", &status);",
+ "if (!U_FAILURE(status))",
+ " ucol_close(collator);"
+ ],
+ "qmake": [
+ "CONFIG += build_all",
+ "CONFIG(debug, debug|release): \\",
+ " LIBS += $$LIBS_DEBUG",
+ "else: \\",
+ " LIBS += $$LIBS_RELEASE"
+ ]
+ },
"sources": [
{
"builds": {
@@ -62,22 +89,48 @@
},
"journald": {
"label": "journald",
- "test": "unix/journald",
+ "test": {
+ "include": [ "systemd/sd-journal.h", "syslog.h" ],
+ "main": "sd_journal_send(\"PRIORITY=%i\", LOG_INFO, NULL);"
+ },
"sources": [
{ "type": "pkgConfig", "args": "libsystemd" },
{ "type": "pkgConfig", "args": "libsystemd-journal" }
]
},
"libatomic": {
- "label": "64 bit atomics in libatomic",
- "test": "common/atomic64",
+ "label": "64 bit atomics",
+ "test": {
+ "include": [ "atomic", "cstdint" ],
+ "tail": [
+ "void test(volatile std::atomic<std::int64_t> &a)",
+ "{",
+ " std::int64_t v = a.load(std::memory_order_acquire);",
+ " while (!a.compare_exchange_strong(v, v + 1,",
+ " std::memory_order_acq_rel,",
+ " std::memory_order_acquire)) {",
+ " v = a.exchange(v - 1);",
+ " }",
+ " a.store(v + 1, std::memory_order_release);",
+ "}"
+ ],
+ "main": [
+ "void *ptr = (void*)0xffffffc0; // any random pointer",
+ "test(*reinterpret_cast<std::atomic<std::int64_t> *>(ptr));"
+ ],
+ "qmake": "CONFIG += c++11"
+ },
"sources": [
+ "",
"-latomic"
]
},
"libdl": {
"label": "dlopen()",
- "test": "unix/dlopen",
+ "test": {
+ "include": "dlfcn.h",
+ "main": "dlopen(0, 0);"
+ },
"sources": [
"",
"-ldl"
@@ -85,7 +138,10 @@
},
"librt": {
"label": "clock_gettime()",
- "test": "unix/clock-gettime",
+ "test": {
+ "include": [ "unistd.h", "time.h" ],
+ "main": "timespec ts; clock_gettime(CLOCK_REALTIME, &ts);"
+ },
"sources": [
"",
"-lrt"
@@ -93,21 +149,38 @@
},
"pcre2": {
"label": "PCRE2",
- "test": "unix/pcre2",
+ "test": {
+ "head": "#define PCRE2_CODE_UNIT_WIDTH 16",
+ "include": "pcre2.h",
+ "tail": [
+ "#if (PCRE2_MAJOR < 10) || ((PCRE2_MAJOR == 10) && (PCRE2_MINOR < 20))",
+ "# error This PCRE version is not supported",
+ "#endif"
+ ]
+ },
"sources": [
"-lpcre2-16"
]
},
"pps": {
"label": "PPS",
- "test": "unix/pps",
+ "test": {
+ "include": "sys/pps.h",
+ "main": [
+ "pps_decoder_t decoder;",
+ "pps_decoder_initialize(&decoder, NULL);"
+ ]
+ },
"sources": [
"-lpps"
]
},
"slog2": {
"label": "slog2",
- "test": "unix/slog2",
+ "test": {
+ "include": "slog2.h",
+ "main": "slog2_set_default_buffer((slog2_buffer_t)-1);"
+ },
"export": "",
"sources": [
"-lslog2"
@@ -116,26 +189,67 @@
},
"tests": {
- "atomic64": {
- "label": "64 bit atomics",
- "type": "compile",
- "test": "common/atomic64"
- },
"atomicfptr": {
"label": "working std::atomic for function pointers",
"type": "compile",
- "test": "common/atomicfptr"
+ "test": {
+ "include": "atomic",
+ "tail": [
+ "typedef void (*fptr)(int);",
+ "typedef std::atomic<fptr> atomicfptr;",
+ "void testfunction(int) { }",
+ "void test(volatile atomicfptr &a)",
+ "{",
+ " fptr v = a.load(std::memory_order_acquire);",
+ " while (!a.compare_exchange_strong(v, &testfunction,",
+ " std::memory_order_acq_rel,",
+ " std::memory_order_acquire)) {",
+ " v = a.exchange(&testfunction);",
+ " }",
+ " a.store(&testfunction, std::memory_order_release);",
+ "}"
+ ],
+ "main": [
+ "atomicfptr fptr(testfunction);",
+ "test(fptr);"
+ ],
+ "qmake": "CONFIG += c++11"
+ }
},
"clock-monotonic": {
"label": "POSIX monotonic clock",
"type": "compile",
- "test": "unix/clock-monotonic",
+ "test": {
+ "include": [ "unistd.h", "time.h" ],
+ "main": [
+ "#if defined(_POSIX_MONOTONIC_CLOCK) && (_POSIX_MONOTONIC_CLOCK-0 >= 0)",
+ "timespec ts;",
+ "clock_gettime(CLOCK_MONOTONIC, &ts);",
+ "#else",
+ "# error Feature _POSIX_MONOTONIC_CLOCK not available",
+ "#endif"
+ ]
+ },
"use": "librt"
},
"cloexec": {
"label": "O_CLOEXEC",
"type": "compile",
- "test": "unix/cloexec"
+ "test": {
+ "head": "#define _GNU_SOURCE 1",
+ "include": [ "sys/types.h", "sys/socket.h", "fcntl.h", "unistd.h" ],
+ "main": [
+ "int pipes[2];",
+ "(void) pipe2(pipes, O_CLOEXEC | O_NONBLOCK);",
+ "(void) fcntl(0, F_DUPFD_CLOEXEC, 0);",
+ "(void) dup3(0, 3, O_CLOEXEC);",
+ "#if defined(__NetBSD__)",
+ "(void) paccept(0, 0, 0, NULL, SOCK_CLOEXEC | SOCK_NONBLOCK);",
+ "#else",
+ "(void) accept4(0, 0, 0, SOCK_CLOEXEC | SOCK_NONBLOCK);",
+ "#endif"
+ ]
+ }
},
"cxx11_random": {
"label": "C++11 <random>",
@@ -145,7 +259,15 @@
"eventfd": {
"label": "eventfd",
"type": "compile",
- "test": "unix/eventfd"
+ "test": {
+ "include": "sys/eventfd.h",
+ "main": [
+ "eventfd_t value;",
+ "int fd = eventfd(0, EFD_CLOEXEC);",
+ "eventfd_read(fd, &value);",
+ "eventfd_write(fd, value);"
+ ]
+ }
},
"futimens": {
"label": "futimens()",
@@ -175,57 +297,104 @@
"posix-iconv": {
"label": "POSIX iconv",
"type": "compile",
- "test": "unix/iconv"
+ "test": "iconv"
},
"sun-iconv": {
"label": "SUN libiconv",
"type": "compile",
- "test": "unix/sun-libiconv"
+ "test": "sun-libiconv"
},
"inotify": {
"label": "inotify",
"type": "compile",
- "test": "unix/inotify"
+ "test": {
+ "include": "sys/inotify.h",
+ "main": [
+ "inotify_init();",
+ "inotify_add_watch(0, \"foobar\", IN_ACCESS);",
+ "inotify_rm_watch(0, 1);"
+ ]
+ }
},
"ipc_sysv": {
"label": "SysV IPC",
"type": "compile",
- "test": "unix/ipc_sysv"
+ "test": {
+ "include": [ "sys/types.h", "sys/ipc.h", "sys/sem.h", "sys/shm.h", "fcntl.h" ],
+ "main": [
+ "key_t unix_key = ftok(\"test\", 'Q');",
+ "semctl(semget(unix_key, 1, 0666 | IPC_CREAT | IPC_EXCL), 0, IPC_RMID, 0);",
+ "shmget(unix_key, 0, 0666 | IPC_CREAT | IPC_EXCL);",
+ "shmctl(0, 0, (struct shmid_ds *)(0));"
+ ]
+ }
},
"ipc_posix": {
"label": "POSIX IPC",
"type": "compile",
- "test": "unix/ipc_posix"
- },
- "journald": {
- "label": "journald",
- "type": "compile",
- "test": "unix/journald"
+ "test": {
+ "include": [ "sys/types.h", "sys/mman.h", "semaphore.h", "fcntl.h" ],
+ "main": [
+ "sem_close(sem_open(\"test\", O_CREAT | O_EXCL, 0666, 0));",
+ "shm_open(\"test\", O_RDWR | O_CREAT | O_EXCL, 0666);",
+ "shm_unlink(\"test\");"
+ ],
+ "qmake": "linux: LIBS += -lpthread -lrt"
+ }
},
"ppoll": {
"label": "ppoll()",
"type": "compile",
- "test": "unix/ppoll"
+ "test": {
+ "include": [ "signal.h", "poll.h" ],
+ "main": [
+ "struct pollfd pfd;",
+ "struct timespec ts;",
+ "sigset_t sig;",
+ "ppoll(&pfd, 1, &ts, &sig);"
+ ]
+ }
},
"pollts": {
"label": "pollts()",
"type": "compile",
- "test": "unix/pollts"
+ "test": {
+ "include": [ "poll.h", "signal.h", "time.h" ],
+ "main": [
+ "struct pollfd pfd;",
+ "struct timespec ts;",
+ "sigset_t sig;",
+ "pollts(&pfd, 1, &ts, &sig);"
+ ]
+ }
},
"poll": {
"label": "poll()",
"type": "compile",
- "test": "unix/poll"
+ "test": {
+ "include": "poll.h",
+ "main": [
+ "struct pollfd pfd;",
+ "poll(&pfd, 1, 0);"
+ ]
+ }
},
"syslog": {
"label": "syslog",
"type": "compile",
- "test": "unix/syslog"
+ "test": {
+ "include": "syslog.h",
+ "main": [
+ "openlog(\"qt\", 0, LOG_USER);",
+ "syslog(LOG_INFO, \"configure\");",
+ "closelog();"
+ ]
+ }
},
"xlocalescanprint": {
"label": "xlocale.h (or equivalents)",
"type": "compile",
- "test": "common/xlocalescanprint"
+ "test": "xlocalescanprint"
}
},
@@ -301,7 +470,7 @@
"label": "iconv",
"purpose": "Provides internationalization on Unix.",
"section": "Internationalization",
- "condition": "!features.icu && (features.posix-libiconv || features.sun-libiconv || features.gnu-libiconv)",
+ "condition": "!features.icu && features.textcodec && (features.posix-libiconv || features.sun-libiconv || features.gnu-libiconv)",
"output": [ "privateFeature", "feature" ]
},
"posix-libiconv": {
@@ -349,13 +518,8 @@
},
"std-atomic64": {
"label": "64 bit atomic operations",
- "condition": "tests.atomic64 || libs.libatomic",
- "output": [ { "type": "define", "negative": true, "name": "QT_NO_STD_ATOMIC64" } ]
- },
- "libatomic": {
- "label": "64 bit atomic operations in libatomic",
- "condition": "!tests.atomic64 && libs.libatomic",
- "output": [ "privateFeature" ]
+ "condition": "libs.libatomic",
+ "output": [ "publicFeature" ]
},
"mimetype": {
"label": "Mimetype handling",
@@ -675,7 +839,7 @@ You need to use libdouble-conversion for double/string conversion."
"condition": "!tests.atomicfptr",
"message": "detected a std::atomic implementation that fails for function pointers.
Please apply the patch corresponding to your Standard Library vendor, found in
- qtbase/config.tests/common/atomicfptr"
+ qtbase/config.tests/atomicfptr"
}
],
diff --git a/src/corelib/corelib.pro b/src/corelib/corelib.pro
index 5d1b24f065..376ef872ee 100644
--- a/src/corelib/corelib.pro
+++ b/src/corelib/corelib.pro
@@ -104,11 +104,17 @@ cmake_umbrella_config_version_file.output = $$DESTDIR/cmake/Qt5/Qt5ConfigVersion
load(cmake_functions)
+defineTest(pathIsAbsolute) {
+ p = $$clean_path($$1)
+ !isEmpty(p):isEqual(p, $$absolute_path($$p)): return(true)
+ return(false)
+}
+
##### This requires fixing, so that the feature system works with cmake as well
CMAKE_DISABLED_FEATURES = $$join(QT_DISABLED_FEATURES, "$$escape_expand(\\n) ")
CMAKE_HOST_DATA_DIR = $$cmakeRelativePath($$[QT_HOST_DATA/src], $$[QT_INSTALL_PREFIX])
-contains(CMAKE_HOST_DATA_DIR, "^\\.\\./.*"):!isEmpty(CMAKE_HOST_DATA_DIR) {
+pathIsAbsolute($$CMAKE_HOST_DATA_DIR) {
CMAKE_HOST_DATA_DIR = $$[QT_HOST_DATA/src]/
CMAKE_HOST_DATA_DIR_IS_ABSOLUTE = True
}
@@ -117,7 +123,7 @@ cmake_extras_mkspec_dir.input = $$PWD/Qt5CoreConfigExtrasMkspecDir.cmake.in
cmake_extras_mkspec_dir.output = $$DESTDIR/cmake/Qt5Core/Qt5CoreConfigExtrasMkspecDir.cmake
CMAKE_INSTALL_DATA_DIR = $$cmakeRelativePath($$[QT_HOST_DATA], $$[QT_INSTALL_PREFIX])
-contains(CMAKE_INSTALL_DATA_DIR, "^\\.\\./.*"):!isEmpty(CMAKE_INSTALL_DATA_DIR) {
+pathIsAbsolute($$CMAKE_INSTALL_DATA_DIR) {
CMAKE_INSTALL_DATA_DIR = $$[QT_HOST_DATA]/
CMAKE_INSTALL_DATA_DIR_IS_ABSOLUTE = True
}
diff --git a/src/corelib/global/qcompilerdetection.h b/src/corelib/global/qcompilerdetection.h
index 05e3f6c45a..2c58ff87e9 100644
--- a/src/corelib/global/qcompilerdetection.h
+++ b/src/corelib/global/qcompilerdetection.h
@@ -1172,7 +1172,8 @@
# define Q_DECL_ALIGN(n) alignas(n)
#endif
-#if QT_HAS_CPP_ATTRIBUTE(nodiscard) // P0188R1
+#if QT_HAS_CPP_ATTRIBUTE(nodiscard) && !defined(Q_CC_CLANG) // P0188R1
+// Can't use [[nodiscard]] with Clang, see https://bugs.llvm.org/show_bug.cgi?id=33518
# undef Q_REQUIRED_RESULT
# define Q_REQUIRED_RESULT [[nodiscard]]
#endif
diff --git a/src/corelib/io/qfilesystemengine_win.cpp b/src/corelib/io/qfilesystemengine_win.cpp
index 24050dbbf8..5a9864edb2 100644
--- a/src/corelib/io/qfilesystemengine_win.cpp
+++ b/src/corelib/io/qfilesystemengine_win.cpp
@@ -541,13 +541,20 @@ QByteArray fileIdWin8(HANDLE handle)
QByteArray QFileSystemEngine::id(const QFileSystemEntry &entry)
{
QByteArray result;
- const HANDLE handle =
+
#ifndef Q_OS_WINRT
+ const HANDLE handle =
CreateFile((wchar_t*)entry.nativeFilePath().utf16(), 0,
- FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+ FILE_SHARE_READ, NULL, OPEN_EXISTING,
+ FILE_FLAG_BACKUP_SEMANTICS, NULL);
#else // !Q_OS_WINRT
+ CREATEFILE2_EXTENDED_PARAMETERS params;
+ params.dwSize = sizeof(params);
+ params.dwFileAttributes = FILE_ATTRIBUTE_NORMAL;
+ params.dwFileFlags = FILE_FLAG_BACKUP_SEMANTICS;
+ const HANDLE handle =
CreateFile2((const wchar_t*)entry.nativeFilePath().utf16(), 0,
- FILE_SHARE_READ, OPEN_EXISTING, NULL);
+ FILE_SHARE_READ, OPEN_EXISTING, &params);
#endif // Q_OS_WINRT
if (handle != INVALID_HANDLE_VALUE) {
result = id(handle);
diff --git a/src/corelib/io/qfilesystemwatcher_kqueue.cpp b/src/corelib/io/qfilesystemwatcher_kqueue.cpp
index 4f6c83ebcf..c33fba2d1f 100644
--- a/src/corelib/io/qfilesystemwatcher_kqueue.cpp
+++ b/src/corelib/io/qfilesystemwatcher_kqueue.cpp
@@ -111,13 +111,12 @@ QStringList QKqueueFileSystemWatcherEngine::addPaths(const QStringList &paths,
continue;
}
if (fd >= (int)FD_SETSIZE / 2 && fd < (int)FD_SETSIZE) {
- int fddup = fcntl(fd, F_DUPFD, FD_SETSIZE);
+ int fddup = qt_safe_dup(fd, FD_SETSIZE);
if (fddup != -1) {
::close(fd);
fd = fddup;
}
}
- fcntl(fd, F_SETFD, FD_CLOEXEC);
QT_STATBUF st;
if (QT_FSTAT(fd, &st) == -1) {
diff --git a/src/corelib/io/qfilesystemwatcher_win.cpp b/src/corelib/io/qfilesystemwatcher_win.cpp
index ff0d45935c..2b5cb63282 100644
--- a/src/corelib/io/qfilesystemwatcher_win.cpp
+++ b/src/corelib/io/qfilesystemwatcher_win.cpp
@@ -113,7 +113,8 @@ public:
signals:
void driveAdded();
- void driveRemoved(const QString &);
+ void driveRemoved(); // Some drive removed
+ void driveRemoved(const QString &); // Watched/known drive removed
void driveLockForRemoval(const QString &);
void driveLockForRemovalFailed(const QString &);
@@ -252,7 +253,8 @@ inline void QWindowsRemovableDriveListener::handleDbtDriveArrivalRemoval(const M
case DBT_DEVICEARRIVAL:
emit driveAdded();
break;
- case DBT_DEVICEREMOVECOMPLETE: // handled by DBT_DEVTYP_HANDLE above
+ case DBT_DEVICEREMOVECOMPLETE: // See above for handling of drives registered with watchers
+ emit driveRemoved();
break;
}
}
@@ -348,7 +350,8 @@ QWindowsFileSystemWatcherEngine::QWindowsFileSystemWatcherEngine(QObject *parent
this, &QWindowsFileSystemWatcherEngine::driveLockForRemoval);
QObject::connect(m_driveListener, &QWindowsRemovableDriveListener::driveLockForRemovalFailed,
this, &QWindowsFileSystemWatcherEngine::driveLockForRemovalFailed);
- QObject::connect(m_driveListener, &QWindowsRemovableDriveListener::driveRemoved,
+ QObject::connect(m_driveListener,
+ QOverload<const QString &>::of(&QWindowsRemovableDriveListener::driveRemoved),
this, &QWindowsFileSystemWatcherEngine::driveRemoved);
#endif // !Q_OS_WINRT
}
diff --git a/src/corelib/io/qfsfileengine_win.cpp b/src/corelib/io/qfsfileengine_win.cpp
index 5a7057aa80..0decd26179 100644
--- a/src/corelib/io/qfsfileengine_win.cpp
+++ b/src/corelib/io/qfsfileengine_win.cpp
@@ -141,20 +141,6 @@ bool QFSFileEnginePrivate::nativeOpen(QIODevice::OpenMode openMode)
{
Q_Q(QFSFileEngine);
- // Check if the file name is valid:
- // https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx#naming_conventions
- const QString fileName = fileEntry.fileName();
- for (QString::const_iterator it = fileName.constBegin(), end = fileName.constEnd();
- it != end; ++it) {
- const QChar c = *it;
- if (c == QLatin1Char('<') || c == QLatin1Char('>') || c == QLatin1Char(':') ||
- c == QLatin1Char('\"') || c == QLatin1Char('/') || c == QLatin1Char('\\') ||
- c == QLatin1Char('|') || c == QLatin1Char('?') || c == QLatin1Char('*')) {
- q->setError(QFile::OpenError, QStringLiteral("Invalid file name"));
- return false;
- }
- }
-
// All files are opened in share mode (both read and write).
DWORD shareMode = FILE_SHARE_READ | FILE_SHARE_WRITE;
diff --git a/src/corelib/io/qsavefile.cpp b/src/corelib/io/qsavefile.cpp
index 0283c5f31f..3f45ca5f91 100644
--- a/src/corelib/io/qsavefile.cpp
+++ b/src/corelib/io/qsavefile.cpp
@@ -232,7 +232,11 @@ bool QSaveFile::open(OpenMode mode)
}
d->fileEngine = new QTemporaryFileEngine;
- static_cast<QTemporaryFileEngine *>(d->fileEngine)->initialize(d->finalFileName, 0666);
+ // if the target file exists, we'll copy its permissions below,
+ // but until then, let's ensure the temporary file is not accessible
+ // to a third party
+ int perm = (existingFile.exists() ? 0600 : 0666);
+ static_cast<QTemporaryFileEngine *>(d->fileEngine)->initialize(d->finalFileName, perm);
// Same as in QFile: QIODevice provides the buffering, so there's no need to request it from the file engine.
if (!d->fileEngine->open(mode | QIODevice::Unbuffered)) {
QFileDevice::FileError err = d->fileEngine->error();
diff --git a/src/corelib/io/qwindowspipewriter.cpp b/src/corelib/io/qwindowspipewriter.cpp
index 8e3de2d620..75cb8a7ede 100644
--- a/src/corelib/io/qwindowspipewriter.cpp
+++ b/src/corelib/io/qwindowspipewriter.cpp
@@ -197,7 +197,15 @@ bool QWindowsPipeWriter::write(const QByteArray &ba)
overlapped, &writeFileCompleted)) {
writeSequenceStarted = false;
buffer.clear();
- qErrnoWarning("QWindowsPipeWriter::write failed.");
+
+ const DWORD errorCode = GetLastError();
+ switch (errorCode) {
+ case ERROR_NO_DATA: // "The pipe is being closed."
+ // The other end has closed the pipe. This can happen in QLocalSocket. Do not warn.
+ break;
+ default:
+ qErrnoWarning(errorCode, "QWindowsPipeWriter::write failed.");
+ }
return false;
}
diff --git a/src/corelib/itemmodels/qitemselectionmodel.cpp b/src/corelib/itemmodels/qitemselectionmodel.cpp
index 8dcd80808b..59a10e9057 100644
--- a/src/corelib/itemmodels/qitemselectionmodel.cpp
+++ b/src/corelib/itemmodels/qitemselectionmodel.cpp
@@ -44,8 +44,6 @@
#include <algorithm>
#include <functional>
-#ifndef QT_NO_ITEMVIEWS
-
QT_BEGIN_NAMESPACE
/*!
@@ -1917,5 +1915,3 @@ QDebug operator<<(QDebug dbg, const QItemSelectionRange &range)
QT_END_NAMESPACE
#include "moc_qitemselectionmodel.cpp"
-
-#endif // QT_NO_ITEMVIEWS
diff --git a/src/corelib/itemmodels/qitemselectionmodel.h b/src/corelib/itemmodels/qitemselectionmodel.h
index 2421610bce..9d33303ddc 100644
--- a/src/corelib/itemmodels/qitemselectionmodel.h
+++ b/src/corelib/itemmodels/qitemselectionmodel.h
@@ -42,8 +42,6 @@
#include <QtCore/qglobal.h>
-#ifndef QT_NO_ITEMVIEWS
-
#include <QtCore/qset.h>
#include <QtCore/qvector.h>
#include <QtCore/qlist.h>
@@ -273,6 +271,4 @@ QT_END_NAMESPACE
Q_DECLARE_METATYPE(QItemSelectionRange)
Q_DECLARE_METATYPE(QItemSelection)
-#endif // QT_NO_ITEMVIEWS
-
#endif // QITEMSELECTIONMODEL_H
diff --git a/src/corelib/itemmodels/qitemselectionmodel_p.h b/src/corelib/itemmodels/qitemselectionmodel_p.h
index c2d9384b09..dfc0387563 100644
--- a/src/corelib/itemmodels/qitemselectionmodel_p.h
+++ b/src/corelib/itemmodels/qitemselectionmodel_p.h
@@ -55,7 +55,6 @@
QT_BEGIN_NAMESPACE
-#ifndef QT_NO_ITEMVIEWS
class QItemSelectionModelPrivate: public QObjectPrivate
{
Q_DECLARE_PUBLIC(QItemSelectionModel)
@@ -106,8 +105,6 @@ public:
int tableColCount, tableRowCount;
};
-#endif // QT_NO_ITEMVIEWS
-
QT_END_NAMESPACE
#endif // QITEMSELECTIONMODEL_P_H
diff --git a/src/corelib/kernel/qeventdispatcher_win.cpp b/src/corelib/kernel/qeventdispatcher_win.cpp
index b7fe1557d3..569fbc2796 100644
--- a/src/corelib/kernel/qeventdispatcher_win.cpp
+++ b/src/corelib/kernel/qeventdispatcher_win.cpp
@@ -209,7 +209,8 @@ LRESULT QT_WIN_CALLBACK qt_internal_proc(HWND hwnd, UINT message, WPARAM wp, LPA
// in the queue. WM_QT_ACTIVATENOTIFIERS will be posted again as a result of
// event processing.
MSG msg;
- if (!PeekMessage(&msg, 0, WM_QT_SOCKETNOTIFIER, WM_QT_SOCKETNOTIFIER, PM_NOREMOVE)
+ if (!PeekMessage(&msg, d->internalHwnd,
+ WM_QT_SOCKETNOTIFIER, WM_QT_SOCKETNOTIFIER, PM_NOREMOVE)
&& d->queuedSocketEvents.isEmpty()) {
// register all socket notifiers
for (QSFDict::iterator it = d->active_fd.begin(), end = d->active_fd.end();
diff --git a/src/corelib/tools/qhash.h b/src/corelib/tools/qhash.h
index 0b0f935b26..715acc77ce 100644
--- a/src/corelib/tools/qhash.h
+++ b/src/corelib/tools/qhash.h
@@ -959,8 +959,22 @@ Q_OUTOFLINE_TEMPLATE bool QHash<Key, T>::operator==(const QHash &other) const
return false;
// Keys in the ranges are equal by construction; this checks only the values.
- if (!std::is_permutation(it, thisEqualRangeEnd, otherEqualRange.first))
+ //
+ // When using the 3-arg std::is_permutation, MSVC will emit warning C4996,
+ // passing an unchecked iterator to a Standard Library algorithm. We don't
+ // want to suppress the warning, and we can't use stdext::make_checked_array_iterator
+ // because QHash::(const_)iterator does not work with size_t and thus will
+ // emit more warnings. Use the 4-arg std::is_permutation instead (which
+ // is supported since MSVC 2015).
+ //
+ // ### Qt 6: if C++14 library support is a mandated minimum, remove the ifdef for MSVC.
+ if (!std::is_permutation(it, thisEqualRangeEnd, otherEqualRange.first
+#if defined(Q_CC_MSVC) && _MSC_VER >= 1900
+ , otherEqualRange.second
+#endif
+ )) {
return false;
+ }
it = thisEqualRangeEnd;
}
diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp
index 789a15dded..5db181885c 100644
--- a/src/corelib/tools/qlocale.cpp
+++ b/src/corelib/tools/qlocale.cpp
@@ -320,7 +320,7 @@ QByteArray QLocalePrivate::bcp47Name(char separator) const
if (m_data->m_language_id == QLocale::AnyLanguage)
return QByteArray();
if (m_data->m_language_id == QLocale::C)
- return QByteArrayLiteral("C");
+ return QByteArrayLiteral("en");
QLocaleId localeId = QLocaleId::fromIds(m_data->m_language_id, m_data->m_script_id, m_data->m_country_id);
return localeId.withLikelySubtagsRemoved().name(separator);
diff --git a/src/dbus/qdbuserror.cpp b/src/dbus/qdbuserror.cpp
index 61aacfc922..c599df6a32 100644
--- a/src/dbus/qdbuserror.cpp
+++ b/src/dbus/qdbuserror.cpp
@@ -197,7 +197,7 @@ static inline QDBusError::ErrorType get(const char *name)
values:
\value NoError QDBusError is invalid (i.e., the call succeeded)
- \value Other QDBusError contains an error that is one of the well-known ones
+ \value Other QDBusError contains an error that is not one of the well-known ones
\value Failed The call failed (\c org.freedesktop.DBus.Error.Failed)
\value NoMemory Out of memory (\c org.freedesktop.DBus.Error.NoMemory)
\value ServiceUnknown The called service is not known
diff --git a/src/gui/configure.json b/src/gui/configure.json
index 62bf02bdbb..9a7b78d536 100644
--- a/src/gui/configure.json
+++ b/src/gui/configure.json
@@ -68,14 +68,30 @@
"direct2d": {
"label": "Direct 2D",
"export": "",
- "test": "qpa/direct2d",
+ "test": {
+ "include": [ "d3d11_1.h", "d2d1_1.h", "d2d1_1helper.h", "dxgi1_2.h", "wrl.h", "dwrite.h" ],
+ "tail": "using Microsoft::WRL::ComPtr;",
+ "main": [
+ "ComPtr<ID2D1Factory1> d2dFactory;",
+ "D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, d2dFactory.ReleaseAndGetAddressOf());",
+ "ComPtr<IDXGISurface1> surface;",
+ "(void) surface;"
+ ]
+ },
"sources": [
"-ld2d1 -ldwrite -ld3d11"
]
},
"directfb": {
"label": "DirectFB",
- "test": "qpa/directfb",
+ "test": {
+ "include": "directfb.h",
+ "tail": [
+ "#ifdef __typeof__",
+ "# error DirectFB headers are unclean and cannot compile",
+ "#endif"
+ ]
+ },
"sources": [
{ "type": "pkgConfig", "args": "directfb" }
]
@@ -83,14 +99,30 @@
"directwrite": {
"label": "DirectWrite",
"export": "",
- "test": "win/directwrite",
+ "test": {
+ "include": [ "dwrite.h", "d2d1.h" ],
+ "main": [
+ "IDWriteFactory *factory = 0;",
+ "DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, __uuidof(IDWriteFactory),",
+ " (IUnknown **)(&factory));"
+ ]
+ },
"sources": [
"-ldwrite"
]
},
"drm": {
"label": "KMS",
- "test": "qpa/kms",
+ "test": {
+ "include": [ "stdlib.h", "stdint.h" ],
+ "tail": [
+ "extern \"C\" {",
+ "#include <xf86drmMode.h>",
+ "#include <xf86drm.h>",
+ "}"
+ ],
+ "main": "(void) drmModeGetCrtc(0, 0);"
+ },
"sources": [
{ "type": "pkgConfig", "args": "libdrm" },
{ "libs": "-ldrm", "condition": "!config.integrity" },
@@ -99,7 +131,13 @@
},
"egl": {
"label": "EGL",
- "test": "qpa/egl",
+ "test": {
+ "include": "EGL/egl.h",
+ "main": [
+ "EGLint x = 0; EGLDisplay dpy = 0; EGLContext ctx = 0;",
+ "eglDestroyContext(dpy, ctx);"
+ ]
+ },
"sources": [
{ "type": "pkgConfig", "args": "egl" },
{ "type": "makeSpec", "spec": "EGL" }
@@ -107,7 +145,18 @@
},
"freetype": {
"label": "FreeType",
- "test": "unix/freetype",
+ "test": {
+ "head": [
+ "#include <ft2build.h>",
+ "#include FT_FREETYPE_H",
+ "#if ((FREETYPE_MAJOR*10000 + FREETYPE_MINOR*100 + FREETYPE_PATCH) < 20200)",
+ "# error This version of freetype is too old.",
+ "#endif"
+ ],
+ "main": [
+ "FT_Face face = 0;"
+ ]
+ },
"sources": [
{ "type": "pkgConfig", "args": "freetype2" },
{ "type": "freetype", "libs": "-lfreetype" }
@@ -115,7 +164,23 @@
},
"fontconfig": {
"label": "Fontconfig",
- "test": "unix/fontconfig",
+ "test": {
+ "head": [
+ "#include <ft2build.h>",
+ "#include FT_FREETYPE_H",
+ "#include <fontconfig/fontconfig.h>",
+ "#ifndef FC_RGBA_UNKNOWN",
+ "# error This version of fontconfig is tool old, it is missing the FC_RGBA_UNKNOWN define",
+ "#endif",
+ "#if ((FREETYPE_MAJOR*10000 + FREETYPE_MINOR*100 + FREETYPE_PATCH) < 20110)",
+ "# error This version of freetype is too old.",
+ "#endif"
+ ],
+ "main": [
+ "FT_Face face = 0;",
+ "FcPattern *pattern = 0;"
+ ]
+ },
"sources": [
{ "type": "pkgConfig", "args": "fontconfig freetype2" },
{ "type": "freetype", "libs": "-lfontconfig -lfreetype" }
@@ -123,14 +188,37 @@
},
"gbm": {
"label": "GBM",
- "test": "qpa/gbm",
+ "test": {
+ "include": [ "stdlib.h", "stdint.h" ],
+ "tail": [
+ "extern \"C\" {",
+ "#include <gbm.h>",
+ "}"
+ ],
+ "main": "gbm_surface *surface = 0;"
+ },
"sources": [
{ "type": "pkgConfig", "args": "gbm" }
]
},
"harfbuzz": {
"label": "HarfBuzz",
- "test": "unix/harfbuzz",
+ "test": {
+ "include": "harfbuzz/hb.h",
+ "tail": [
+ "#if !HB_VERSION_ATLEAST(0, 9, 42)",
+ "# error This version of harfbuzz is too old.",
+ "#endif"
+ ],
+ "main": [
+ "hb_buffer_t *buffer = hb_buffer_create();",
+ "const uint16_t string[] = { 'A', 'b', 'c' };",
+ "hb_buffer_add_utf16(buffer, string, 3, 0, 3);",
+ "hb_buffer_guess_segment_properties(buffer);",
+ "hb_buffer_set_flags(buffer, hb_buffer_flags_t(HB_BUFFER_FLAG_PRESERVE_DEFAULT_IGNORABLES));",
+ "hb_buffer_destroy(buffer);"
+ ]
+ },
"sources": [
"-lharfbuzz"
]
@@ -138,35 +226,62 @@
"imf": {
"label": "IMF",
"export": "",
- "test": "unix/qqnx_imf",
+ "test": {
+ "include": "imf/imf_client.h",
+ "main": "imf_client_init();"
+ },
"sources": [
"-linput_client"
]
},
"lgmon": {
"label": "lgmon",
- "test": "unix/lgmon",
+ "test": {
+ "include": "lgmon.h",
+ "main": "lgmon_supported(getpid());"
+ },
"sources": [
"-llgmon"
]
},
"libinput": {
"label": "libinput",
- "test": "unix/libinput",
+ "test": {
+ "include": "libinput.h",
+ "main": "libinput_udev_create_context(NULL, NULL, NULL);"
+ },
"sources": [
{ "type": "pkgConfig", "args": "libinput" }
]
},
"integrityhid": {
"label": "integrityhid",
- "test": "qpa/integrityhid",
+ "test": {
+ "include": [ "stdlib.h", "stdint.h", "device/hiddriver.h" ],
+ "main": [
+ "HIDDriver *driver;",
+ "uintptr_t devicecontext;",
+ "uint32_t device_id;",
+ "gh_hid_enum_devices(driver, &device_id, &devicecontext);"
+ ]
+ },
"sources": [
{ "libs": "-lhiddev -lusbhid -lusb" }
]
},
"libjpeg": {
"label": "libjpeg",
- "test": "unix/libjpeg",
+ "test": {
+ "include": [ "sys/types.h", "stdio.h" ],
+ "tail": [
+ "extern \"C\" {",
+ "#include <jpeglib.h>",
+ "}",
+ "",
+ "j_compress_ptr cinfo;"
+ ],
+ "main": "jpeg_create_compress(cinfo);"
+ },
"sources": [
{ "libs": "-llibjpeg", "condition": "config.msvc" },
{ "libs": "-ljpeg", "condition": "!config.msvc" }
@@ -174,7 +289,10 @@
},
"libpng": {
"label": "libpng",
- "test": "unix/libpng",
+ "test": {
+ "include": "png.h",
+ "main": "(void) png_create_read_struct(PNG_LIBPNG_VER_STRING,0,0,0);"
+ },
"sources": [
{ "type": "pkgConfig", "args": "libpng" },
{ "libs": "-llibpng", "condition": "config.msvc" },
@@ -186,21 +304,50 @@
},
"mirclient": {
"label": "Mir client libraries",
- "test": "qpa/mirclient",
+ "test": {
+ "include": [ "mir_toolkit/mir_client_library.h", "ubuntu/application/lifecycle_delegate.h", "EGL/egl.h" ],
+ "tail": "static void surfaceCreateCallback(MirSurface*, void*) {}",
+ "main": [
+ "u_application_lifecycle_delegate_new();",
+ "mir_surface_create(0, surfaceCreateCallback, 0);"
+ ]
+ },
"sources": [
{ "type": "pkgConfig", "args": "egl mirclient ubuntu-platform-api libcontent-hub >= 0.2.0" }
]
},
"mtdev": {
"label": "mtdev",
- "test": "unix/mtdev",
+ "test": {
+ "include": "mtdev.h",
+ "main": [
+ "mtdev m;",
+ "mtdev_open(&m, 0);"
+ ]
+ },
"sources": [
{ "type": "pkgConfig", "args": "mtdev" }
]
},
"opengl": {
"label": "Desktop OpenGL",
- "test": "unix/opengldesktop",
+ "test": {
+ "head": [
+ "#ifdef __APPLE__",
+ "# include <OpenGL/gl.h>",
+ "#else",
+ "# define GL_GLEXT_PROTOTYPES",
+ "# include <GL/gl.h>",
+ "#endif"
+ ],
+ "main": [
+ "glBegin(GL_TRIANGLES);",
+ " glVertex2f(20.0f, 10.0f);",
+ " glVertex2f(10.0f, 30.0f);",
+ " glVertex2f(20.0f, 50.0f);",
+ "glEnd();"
+ ]
+ },
"sources": [
{ "type": "pkgConfig", "args": "gl", "condition": "!config.darwin" },
{ "type": "makeSpec", "spec": "OPENGL" }
@@ -208,7 +355,20 @@
},
"opengl_es2": {
"label": "OpenGL ES 2.0",
- "test": "unix/opengles2",
+ "test": {
+ "head": [
+ "#ifdef __APPLE__",
+ "# include <OpenGLES/ES2/gl.h>",
+ "#else",
+ "# define GL_GLEXT_PROTOTYPES",
+ "# include <GLES2/gl2.h>",
+ "#endif"
+ ],
+ "main": [
+ "glUniform1f(1, GLfloat(1.0));",
+ "glClear(GL_COLOR_BUFFER_BIT);"
+ ]
+ },
"sources": [
{ "type": "pkgConfig", "args": "glesv2", "condition": "!config.darwin" },
{ "type": "makeSpec", "spec": "OPENGL_ES2" }
@@ -216,7 +376,10 @@
},
"openvg": {
"label": "OpenVG",
- "test": "unix/openvg",
+ "test": {
+ "include": "VG/openvg.h",
+ "main": "VGint i = 2; vgFlush();"
+ },
"sources": [
{ "type": "pkgConfig", "args": "vg" },
{ "type": "makeSpec", "spec": "OPENVG" }
@@ -224,7 +387,10 @@
},
"tslib": {
"label": "tslib",
- "test": "unix/tslib",
+ "test": {
+ "include": "tslib.h",
+ "main": "ts_open(\"foo\", 0);"
+ },
"sources": [
"-lts"
]
@@ -239,7 +405,10 @@
},
"wayland_server": {
"label": "Wayland Server",
- "test": "qpa/wayland-server",
+ "test": {
+ "include": "wayland-server.h",
+ "main": "wl_display_create();"
+ },
"sources": [
{ "type": "pkgConfig", "args": "wayland-server" }
]
@@ -252,7 +421,15 @@
},
"xcb": {
"label": "XCB >= 1.5 (core)",
- "test": "qpa/xcb",
+ "test": {
+ "include": "xcb/xcb.h",
+ "main": [
+ "int primaryScreen = 0;",
+ "(void)xcb_connect(\"\", &primaryScreen);",
+ "// This won't compile unless libxcb >= 1.5 which defines XCB_ATOM_PRIMARY.",
+ "int xcbAtomPrimary = XCB_ATOM_PRIMARY;"
+ ]
+ },
"sources": [
{ "type": "pkgConfig", "args": "xcb >= 1.5" },
"-lxcb"
@@ -260,7 +437,27 @@
},
"xcb_syslibs": {
"label": "XCB (extensions)",
- "test": "qpa/xcb-syslibs",
+ "test": {
+ "include": [
+ "xcb/xcb.h",
+ "xcb/xfixes.h",
+ "xcb/xcb_image.h",
+ "xcb/xcb_keysyms.h",
+ "xcb/sync.h",
+ "xcb/randr.h",
+ "xcb/shm.h"
+ ],
+ "tail": [
+ "// This workaround can be removed for xcb-icccm > 3.8",
+ "#define class class_name",
+ "#include <xcb/xcb_icccm.h>",
+ "#undef class"
+ ],
+ "main": [
+ "int primaryScreen = 0;",
+ "(void) xcb_connect(\"\", &primaryScreen);"
+ ]
+ },
"sources": [
{ "type": "pkgConfig",
"args": "xcb xcb-shm xcb-sync xcb-xfixes xcb-randr xcb-image xcb-keysyms xcb-icccm xcb-shape" },
@@ -269,7 +466,13 @@
},
"xcb_xlib": {
"label": "XCB Xlib",
- "test": "qpa/xcb-xlib",
+ "test": {
+ "include": [ "xcb/xcb.h", "X11/Xlib.h", "X11/Xlib-xcb.h" ],
+ "main": [
+ "Display *dpy = XOpenDisplay(\"\");",
+ "(void) XGetXCBConnection(dpy);"
+ ]
+ },
"sources": [
{ "type": "pkgConfig", "args": "x11-xcb x11 xcb" },
"-lxcb -lX11 -lX11-xcb"
@@ -277,7 +480,18 @@
},
"xcb_xkb": {
"label": "XCB XKB >= 1.10",
- "test": "qpa/xcb-xkb",
+ "test": {
+ "head": [
+ "// xkb.h is using a variable called 'explicit', which is a reserved keyword in C++",
+ "#define explicit dont_use_cxx_explicit"
+ ],
+ "include": "xcb/xkb.h",
+ "tail": "#undef explicit",
+ "main": [
+ "// This takes more arguments in xcb-xkb < 1.10.",
+ "xcb_xkb_get_kbd_by_name_unchecked(NULL, 0, 0, 0, 0);"
+ ]
+ },
"sources": [
{ "type": "pkgConfig", "args": "xcb-xkb >= 1.10 xcb" },
"-lxcb-xkb -lxcb"
@@ -285,7 +499,30 @@
},
"xcb_render": {
"label": "XCB XRender",
- "test": "qpa/xcb-render",
+ "test": {
+ "include": [ "xcb/xcb.h", "xcb/render.h" ],
+ "tail": [
+ "// 'template' is used as a function argument name in xcb_renderutil.h",
+ "#define template template_param",
+ "// extern \"C\" is missing, too",
+ "extern \"C\" {",
+ "#include <xcb/xcb_renderutil.h>",
+ "}",
+ "#undef template"
+ ],
+ "main": [
+ "int primaryScreen = 0;",
+ "xcb_generic_error_t *error = 0;",
+ "xcb_connection_t *connection = xcb_connect(\"\", &primaryScreen);",
+ "xcb_render_query_pict_formats_cookie_t formatsCookie =",
+ " xcb_render_query_pict_formats(connection);",
+ "xcb_render_query_pict_formats_reply_t *formatsReply =",
+ " xcb_render_query_pict_formats_reply(",
+ " connection, formatsCookie, &error);",
+ "xcb_render_util_find_standard_format(",
+ " formatsReply, XCB_PICT_STANDARD_ARGB_32);"
+ ]
+ },
"sources": [
{ "type": "pkgConfig", "args": "xcb-renderutil xcb-render xcb" },
"-lxcb-render-util -lxcb-render -lxcb"
@@ -293,7 +530,17 @@
},
"xcb_glx": {
"label": "XCB GLX",
- "test": "qpa/xcb-glx",
+ "test": {
+ "include": [ "xcb/xcb.h", "xcb/glx.h" ],
+ "main": [
+ "int primaryScreen = 0;",
+ "xcb_connection_t *connection = xcb_connect(\"\", &primaryScreen);",
+ "xcb_generic_error_t *error = 0;",
+ "xcb_glx_query_version_cookie_t xglx_query_cookie = xcb_glx_query_version(",
+ " connection, XCB_GLX_MAJOR_VERSION, XCB_GLX_MINOR_VERSION);",
+ "xcb_glx_query_version_reply(connection, xglx_query_cookie, &error);"
+ ]
+ },
"sources": [
{ "type": "pkgConfig", "args": "xcb-glx xcb" },
"-lxcb-glx -lxcb"
@@ -301,7 +548,28 @@
},
"xinput2": {
"label": "Xinput2",
- "test": "x11/xinput2",
+ "test": {
+ "include": [ "X11/Xlib.h", "X11/extensions/XInput2.h", "X11/extensions/Xge.h" ],
+ "tail": [
+ "#ifndef XInput_2_0",
+ "# error Missing XInput_2_0 #define",
+ "#endif"
+ ],
+ "main": [
+ "// need XGenericEventCookie for XInput2 to work",
+ "Display *dpy = 0;",
+ "XEvent xevent;",
+ "XIEvent *xievent = 0;",
+ "XIDeviceEvent *xideviceevent = 0;",
+ "XIHierarchyEvent *xihierarchyevent = 0;",
+ "int deviceid = 0;",
+ "int len = 0;",
+ "(void) XGetEventData(dpy, &xevent.xcookie);",
+ "XFreeEventData(dpy, &xevent.xcookie);",
+ "(void) XIListProperties(dpy, deviceid, &len);"
+ ],
+ "qmake": "CONFIG += x11"
+ },
"sources": [
{ "type": "pkgConfig", "args": "xi" },
"-lXi"
@@ -310,7 +578,10 @@
"xkbcommon": {
"label": "xkbcommon",
"export": "xkbcommon_evdev",
- "test": "unix/xkbcommon",
+ "test": {
+ "include": [ "xkbcommon/xkbcommon.h", "xkbcommon/xkbcommon-keysyms.h", "xkbcommon/xkbcommon-names.h" ],
+ "main": "xkb_context_new(XKB_CONTEXT_NO_FLAGS);"
+ },
"sources": [
{ "type": "pkgConfig", "args": "xkbcommon" }
]
@@ -337,10 +608,23 @@
},
"tests": {
+ "angle_d3d11_qdtd": {
+ "label": "D3D11_QUERY_DATA_TIMESTAMP_DISJOINT",
+ "type": "compile",
+ "test": "win/angle_d3d11_qdtd"
+ },
"directwrite2": {
"label": "DirectWrite 2",
"type": "compile",
- "test": "win/directwrite2",
+ "test": {
+ "include": [ "dwrite_2.h", "d2d1.h" ],
+ "main": [
+ "IUnknown *factory = 0;",
+ "(void)(size_t(DWRITE_E_NOCOLOR) + sizeof(IDWriteFontFace2));",
+ "DWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED, __uuidof(IDWriteFactory2),",
+ " &factory);"
+ ]
+ },
"use": "directwrite"
},
"directx": {
@@ -355,70 +639,180 @@
"egl-x11": {
"label": "EGL on X11",
"type": "compile",
- "test": "qpa/egl-x11",
+ "test": {
+ "head": [
+ "// Check if EGL is compatible with X. Some EGL implementations, typically on",
+ "// embedded devices, are not intended to be used together with X. EGL support",
+ "// has to be disabled in plugins like xcb in this case since the native display,",
+ "// window and pixmap types will be different than what an X-based platform",
+ "// plugin would expect."
+ ],
+ "include": [ "EGL/egl.h", "xcb/xcb.h", "X11/Xlib.h", "X11/Xlib-xcb.h" ],
+ "main": [
+ "Display *dpy = EGL_DEFAULT_DISPLAY;",
+ "EGLNativeDisplayType egldpy = XOpenDisplay(\"\");",
+ "dpy = egldpy;",
+ "EGLNativeWindowType w = XCreateWindow(dpy, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);",
+ "XDestroyWindow(dpy, w);",
+ "XCloseDisplay(dpy);"
+ ]
+ },
"use": "egl xcb_xlib"
},
"egl-brcm": {
"label": "Broadcom EGL (Raspberry Pi)",
"type": "compile",
- "test": "qpa/eglfs-brcm",
+ "test": {
+ "include": [ "EGL/egl.h", "bcm_host.h" ],
+ "main": "vc_dispmanx_display_open(0);"
+ },
"use": "egl bcm_host"
},
"egl-egldevice": {
"label": "EGLDevice",
"type": "compile",
- "test": "qpa/eglfs-egldevice",
+ "test": {
+ "include": [ "EGL/egl.h", "EGL/eglext.h" ],
+ "main": [
+ "EGLDeviceEXT device = 0;",
+ "EGLStreamKHR stream = 0;",
+ "EGLOutputLayerEXT layer = 0;",
+ "(void) EGL_DRM_CRTC_EXT;"
+ ]
+ },
"use": "egl"
},
"egl-mali": {
"label": "Mali EGL",
"type": "compile",
- "test": "qpa/eglfs-mali",
+ "test": {
+ "include": [ "EGL/fbdev_window.h", "EGL/egl.h", "GLES2/gl2.h" ],
+ "main": "fbdev_window *w = 0;"
+ },
"use": "egl"
},
"egl-mali-2": {
"label": "Mali 2 EGL",
"type": "compile",
- "test": "qpa/eglfs-mali-2",
+ "test": {
+ "include": [ "EGL/egl.h", "GLES2/gl2.h" ],
+ "main": "mali_native_window *w = 0;"
+ },
"use": "egl"
},
"egl-viv": {
"label": "i.Mx6 EGL",
"type": "compile",
- "test": "qpa/eglfs-viv",
+ "test": {
+ "include": [ "EGL/egl.h", "EGL/eglvivante.h" ],
+ "main": [
+ "#ifdef __INTEGRITY",
+ "fbGetDisplay();",
+ "#else",
+ "// Do not rely on fbGetDisplay(), since the signature has changed over time.",
+ "// Stick to fbGetDisplayByIndex().",
+ "fbGetDisplayByIndex(0);",
+ "#endif"
+ ],
+ "qmake": [
+ "DEFINES += EGL_API_FB=1",
+ "!integrity: DEFINES += LINUX=1"
+ ]
+ },
"use": "egl"
},
"evdev": {
"label": "evdev",
"type": "compile",
- "test": "unix/evdev"
+ "test": {
+ "head": [
+ "#if defined(__FreeBSD__)",
+ "# include <dev/evdev/input.h>",
+ "#else",
+ "# include <linux/input.h>",
+ "# include <linux/kd.h>",
+ "#endif",
+ "enum {",
+ " e1 = ABS_PRESSURE,",
+ " e2 = ABS_X,",
+ " e3 = REL_X,",
+ " e4 = SYN_REPORT,",
+ "};"
+ ],
+ "main": [
+ "input_event buf[32];",
+ "(void) buf;"
+ ]
+ }
},
"integrityfb": {
"label": "INTEGRITY framebuffer",
"type": "compile",
- "test": "qpa/integrityfb"
+ "test": {
+ "include": "device/fbdriver.h",
+ "main": "FBDriver *driver = 0;"
+ }
},
"libinput_axis_api": {
"label": "axis API in libinput",
"type": "compile",
- "test": "unix/libinput_axis_api",
+ "test": {
+ "include": "libinput.h",
+ "main": "libinput_event_pointer_has_axis(nullptr, LIBINPUT_POINTER_AXIS_SCROLL_VERTICAL);"
+ },
"use": "libinput"
},
"linuxfb": {
"label": "LinuxFB",
"type": "compile",
- "test": "qpa/linuxfb"
+ "test": {
+ "include": [ "linux/fb.h", "sys/kd.h", "sys/ioctl.h" ],
+ "main": [
+ "fb_fix_screeninfo finfo;",
+ "fb_var_screeninfo vinfo;",
+ "int fd = 3;",
+ "ioctl(fd, FBIOGET_FSCREENINFO, &finfo);",
+ "ioctl(fd, FBIOGET_VSCREENINFO, &vinfo);"
+ ]
+ }
},
"opengles3": {
"label": "OpenGL ES 3.0",
"type": "compile",
- "test": "unix/opengles3",
+ "test": {
+ "head": [
+ "#ifdef __APPLE__",
+ "# include <OpenGLES/ES3/gl.h>",
+ "#else",
+ "# define GL_GLEXT_PROTOTYPES",
+ "# include <GLES3/gl3.h>",
+ "#endif"
+ ],
+ "main": [
+ "static GLfloat f[6];",
+ "glGetStringi(GL_EXTENSIONS, 0);",
+ "glReadBuffer(GL_COLOR_ATTACHMENT1);",
+ "glUniformMatrix2x3fv(0, 0, GL_FALSE, f);",
+ "glMapBufferRange(GL_ARRAY_BUFFER, 0, 0, GL_MAP_READ_BIT);"
+ ]
+ },
+ "comment": [
+ "The library is expected to be the same as in ES 2.0 (libGLESv2).",
+ "The difference is the header and the presence of the functions in",
+ "the library."
+ ],
"use": "opengl_es2"
},
"opengles31": {
"label": "OpenGL ES 3.1",
"type": "compile",
- "test": "unix/opengles31",
+ "test": {
+ "include": "GLES3/gl31.h",
+ "main": [
+ "glDispatchCompute(1, 1, 1);",
+ "glProgramUniform1i(0, 0, 0);"
+ ]
+ },
"use": "opengl_es2"
},
"opengles32": {
@@ -450,7 +844,14 @@
"xlib": {
"label": "XLib",
"type": "compile",
- "test": "x11/xlib"
+ "test": {
+ "include": "X11/Xlib.h",
+ "main": [
+ "Display *d = XOpenDisplay(NULL);",
+ "XCloseDisplay(d);"
+ ],
+ "qmake": "CONFIG += x11"
+ }
}
},
@@ -469,6 +870,11 @@
{ "type": "define", "name": "QT_OPENGL_ES_2_ANGLE" }
]
},
+ "angle_d3d11_qdtd": {
+ "label": "D3D11_QUERY_DATA_TIMESTAMP_DISJOINT",
+ "condition": "features.angle && tests.angle_d3d11_qdtd",
+ "output": [ "privateFeature" ]
+ },
"combined-angle-lib": {
"label": "Combined ANGLE Library",
"autoDetect": false,
diff --git a/src/gui/image/qpixmapcache.cpp b/src/gui/image/qpixmapcache.cpp
index 625e145647..742aa31ba9 100644
--- a/src/gui/image/qpixmapcache.cpp
+++ b/src/gui/image/qpixmapcache.cpp
@@ -383,8 +383,9 @@ bool QPMCache::remove(const QString &key)
//The key was not in the cache
if (cacheKey == cacheKeys.constEnd())
return false;
+ const bool result = QCache<QPixmapCache::Key, QPixmapCacheEntry>::remove(cacheKey.value());
cacheKeys.erase(cacheKey);
- return QCache<QPixmapCache::Key, QPixmapCacheEntry>::remove(cacheKey.value());
+ return result;
}
bool QPMCache::remove(const QPixmapCache::Key &key)
diff --git a/src/gui/itemmodels/qstandarditemmodel.cpp b/src/gui/itemmodels/qstandarditemmodel.cpp
index 1d6e2924b1..07e372b1ae 100644
--- a/src/gui/itemmodels/qstandarditemmodel.cpp
+++ b/src/gui/itemmodels/qstandarditemmodel.cpp
@@ -148,8 +148,14 @@ void QStandardItemPrivate::setChild(int row, int column, QStandardItem *item,
if (model && emitChanged)
emit model->layoutChanged();
- if (emitChanged && model)
- model->d_func()->itemChanged(item);
+ if (emitChanged && model) {
+ if (item) {
+ model->d_func()->itemChanged(item);
+ } else {
+ const QModelIndex idx = model->index(row, column, q->index());
+ emit model->dataChanged(idx, idx);
+ }
+ }
}
@@ -174,7 +180,9 @@ void QStandardItemPrivate::childDeleted(QStandardItem *child)
{
int index = childIndex(child);
Q_ASSERT(index != -1);
+ const auto modelIndex = child->index();
children.replace(index, 0);
+ emit model->dataChanged(modelIndex, modelIndex);
}
/*!
@@ -476,6 +484,7 @@ bool QStandardItemPrivate::insertColumns(int column, int count, const QList<QSta
void QStandardItemModelPrivate::itemChanged(QStandardItem *item)
{
Q_Q(QStandardItemModel);
+ Q_ASSERT(item);
if (item->d_func()->parent == 0) {
// Header item
int idx = columnHeaderItems.indexOf(item);
@@ -1721,6 +1730,8 @@ bool QStandardItem::hasChildren() const
item) takes ownership of \a item. If necessary, the row count and column
count are increased to fit the item.
+ \note Passing a null pointer as \a item removes the item.
+
\sa child()
*/
void QStandardItem::setChild(int row, int column, QStandardItem *item)
diff --git a/src/gui/kernel/qhighdpiscaling_p.h b/src/gui/kernel/qhighdpiscaling_p.h
index 32c8f07dc0..0a060a2d2c 100644
--- a/src/gui/kernel/qhighdpiscaling_p.h
+++ b/src/gui/kernel/qhighdpiscaling_p.h
@@ -398,11 +398,11 @@ inline QRegion fromNativeLocalExposedRegion(const QRegion &pixelRegion, const QW
const qreal scaleFactor = QHighDpiScaling::factor(window);
QRegion pointRegion;
- for (const QRect &rect : pixelRegion) {
- const QPointF topLeftP = QPointF(rect.topLeft()) / scaleFactor;
- const QPointF bottomRightP = QPointF(rect.bottomRight()) / scaleFactor;
+ for (const QRectF &rect : pixelRegion) {
+ const QPointF topLeftP = rect.topLeft() / scaleFactor;
+ const QSizeF sizeP = rect.size() / scaleFactor;
pointRegion += QRect(QPoint(qFloor(topLeftP.x()), qFloor(topLeftP.y())),
- QPoint(qCeil(bottomRightP.x()), qCeil(bottomRightP.y())));
+ QSize(qCeil(sizeP.width()), qCeil(sizeP.height())));
}
return pointRegion;
}
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index 1241193332..5db4e5a919 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -2339,8 +2339,8 @@ void QRasterPaintEngine::drawImage(const QRectF &r, const QImage &img, const QRe
if (s->matrix.type() > QTransform::TxTranslate || stretch_sr) {
QRectF targetBounds = s->matrix.mapRect(r);
- bool exceedsPrecision = targetBounds.width() > 0xffff
- || targetBounds.height() > 0xffff;
+ bool exceedsPrecision = targetBounds.width() > 0x7fff
+ || targetBounds.height() > 0x7fff;
if (!exceedsPrecision && d->canUseFastImageBlending(d->rasterBuffer->compositionMode, img)) {
if (s->matrix.type() > QTransform::TxScale) {
diff --git a/src/gui/painting/qpaintengineex.cpp b/src/gui/painting/qpaintengineex.cpp
index f3c9b92bae..812cb8c02d 100644
--- a/src/gui/painting/qpaintengineex.cpp
+++ b/src/gui/painting/qpaintengineex.cpp
@@ -137,6 +137,7 @@ const QVectorPath &qtVectorPathForPath(const QPainterPath &path)
#ifndef QT_NO_DEBUG_STREAM
QDebug Q_GUI_EXPORT &operator<<(QDebug &s, const QVectorPath &path)
{
+ QDebugStateSaver saver(s);
QRectF rf = path.controlPointRect();
s << "QVectorPath(size:" << path.elementCount()
<< " hints:" << hex << path.hints()
diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp
index 58933e38fb..2cc071d67b 100644
--- a/src/gui/text/qfontdatabase.cpp
+++ b/src/gui/text/qfontdatabase.cpp
@@ -948,7 +948,8 @@ QFontEngine *loadSingleEngine(int script,
if (engine) {
// Also check for OpenType tables when using complex scripts
if (Q_UNLIKELY(!engine->supportsScript(QChar::Script(script)))) {
- qWarning(" OpenType support missing for script %d", script);
+ qWarning(" OpenType support missing for \"%s\", script %d",
+ qPrintable(def.family), script);
return 0;
}
@@ -972,7 +973,8 @@ QFontEngine *loadSingleEngine(int script,
if (engine) {
// Also check for OpenType tables when using complex scripts
if (!engine->supportsScript(QChar::Script(script))) {
- qWarning(" OpenType support missing for script %d", script);
+ qWarning(" OpenType support missing for \"%s\", script %d",
++ qPrintable(def.family), script);
if (engine->ref.load() == 0)
delete engine;
return 0;
diff --git a/src/network/configure.json b/src/network/configure.json
index f3b75b8b85..de40872e16 100644
--- a/src/network/configure.json
+++ b/src/network/configure.json
@@ -25,7 +25,7 @@
"corewlan": {
"label": "CoreWLan",
"export": "",
- "test": "mac/corewlan",
+ "test": "corewlan",
"sources": [
"-framework CoreWLAN -framework Foundation"
]
@@ -38,7 +38,14 @@
},
"libproxy": {
"label": "libproxy",
- "test": "common/libproxy",
+ "test": {
+ "include": [ "proxy.h" ],
+ "main": [
+ "pxProxyFactory *factory = px_proxy_factory_new();",
+ "px_proxy_factory_get_proxies(factory, \"http://qt-project.org\");",
+ "px_proxy_factory_free(factory);"
+ ]
+ },
"sources": [
"-lproxy"
]
@@ -46,7 +53,7 @@
"openssl_headers": {
"label": "OpenSSL Headers",
"export": "openssl",
- "test": "unix/openssl",
+ "test": "openssl",
"sources": [
{
"comment": "placeholder for OPENSSL_PATH",
@@ -56,7 +63,7 @@
},
"openssl": {
"label": "OpenSSL",
- "test": "unix/openssl",
+ "test": "openssl",
"sources": [
{ "type": "openssl" },
{
@@ -85,25 +92,66 @@
"getaddrinfo": {
"label": "getaddrinfo()",
"type": "compile",
- "test": "unix/getaddrinfo",
+ "test": {
+ "head": [
+ "#include <stdio.h>",
+ "#include <stdlib.h>",
+ "#ifdef __MINGW32__",
+ "# include <winsock2.h>",
+ "# include <ws2tcpip.h>",
+ "#else",
+ "# include <sys/types.h>",
+ "# include <sys/socket.h>",
+ "# include <netdb.h>",
+ "#endif"
+ ],
+ "main": [
+ "addrinfo *res = 0;",
+ "(void) getaddrinfo(\"foo\", 0, 0, &res);",
+ "freeaddrinfo(res);",
+ "gai_strerror(0);"
+ ]
+ },
"use": "network"
},
"getifaddrs": {
"label": "getifaddrs()",
"type": "compile",
- "test": "unix/getifaddrs",
+ "test": {
+ "include": [ "sys/types.h", "sys/socket.h", "net/if.h", "ifaddrs.h" ],
+ "main": [
+ "ifaddrs *list;",
+ "getifaddrs(&list);",
+ "freeifaddrs(list);"
+ ]
+ },
"use": "network"
},
"ipv6ifname": {
"label": "IPv6 ifname",
"type": "compile",
- "test": "unix/ipv6ifname",
+ "test": {
+ "include": [ "sys/types.h", "sys/socket.h", "net/if.h" ],
+ "main": [
+ "char buf[IFNAMSIZ];",
+ "if_nametoindex(\"eth0\");",
+ "if_indextoname(1, buf);"
+ ]
+ },
"use": "network"
},
"sctp": {
"label": "SCTP support",
"type": "compile",
- "test": "unix/sctp",
+ "test": {
+ "include": [ "sys/types.h", "sys/socket.h", "netinet/in.h", "netinet/sctp.h" ],
+ "main": [
+ "sctp_initmsg sctpInitMsg;",
+ "socklen_t sctpInitMsgSize = sizeof(sctpInitMsg);",
+ "(void) socket(PF_INET, SOCK_STREAM, IPPROTO_SCTP);",
+ "(void) getsockopt(-1, SOL_SCTP, SCTP_INITMSG, &sctpInitMsg, &sctpInitMsgSize);"
+ ]
+ },
"use": "network"
},
"openssl11": {
diff --git a/src/network/socket/qnativesocketengine_win.cpp b/src/network/socket/qnativesocketengine_win.cpp
index 12c5aa0023..e21bf29d4b 100644
--- a/src/network/socket/qnativesocketengine_win.cpp
+++ b/src/network/socket/qnativesocketengine_win.cpp
@@ -1088,11 +1088,14 @@ qint64 QNativeSocketEnginePrivate::nativeBytesAvailable() const
WSABUF buf;
buf.buf = &c;
buf.len = sizeof(c);
+ DWORD bytesReceived;
DWORD flags = MSG_PEEK;
- if (::WSARecvFrom(socketDescriptor, &buf, 1, 0, &flags, 0,0,0,0) == SOCKET_ERROR) {
+ if (::WSARecvFrom(socketDescriptor, &buf, 1, &bytesReceived, &flags, 0,0,0,0) == SOCKET_ERROR) {
int err = WSAGetLastError();
if (err != WSAECONNRESET && err != WSAENETRESET)
return 0;
+ } else {
+ return bytesReceived;
}
}
return nbytes;
diff --git a/src/network/socket/qnativesocketengine_winrt.cpp b/src/network/socket/qnativesocketengine_winrt.cpp
index 291d85844d..b7d7042923 100644
--- a/src/network/socket/qnativesocketengine_winrt.cpp
+++ b/src/network/socket/qnativesocketengine_winrt.cpp
@@ -535,8 +535,8 @@ QNativeSocketEngine::QNativeSocketEngine(QObject *parent)
{
qRegisterMetaType<WinRtDatagram>();
qRegisterMetaType<WinRTSocketEngine::ErrorString>();
-#ifndef QT_NO_SSL
Q_D(QNativeSocketEngine);
+#ifndef QT_NO_SSL
if (parent)
d->sslSocket = qobject_cast<QSslSocket *>(parent->parent());
#endif
diff --git a/src/platformsupport/fontdatabases/windows/qwindowsfontengine.cpp b/src/platformsupport/fontdatabases/windows/qwindowsfontengine.cpp
index 4be2182188..a337332b53 100644
--- a/src/platformsupport/fontdatabases/windows/qwindowsfontengine.cpp
+++ b/src/platformsupport/fontdatabases/windows/qwindowsfontengine.cpp
@@ -56,6 +56,7 @@
#include <QtCore/QtEndian>
#include <QtCore/QFile>
#include <QtCore/qmath.h>
+#include <QtCore/QTextStream>
#include <QtCore/QThreadStorage>
#include <QtCore/private/qsystemlibrary_p.h>
#include <QtCore/private/qstringiterator_p.h>
@@ -66,6 +67,7 @@
#if !defined(QT_NO_DIRECTWRITE)
# include <dwrite.h>
+# include <comdef.h>
#endif
QT_BEGIN_NAMESPACE
@@ -1214,6 +1216,22 @@ QWindowsMultiFontEngine::QWindowsMultiFontEngine(QFontEngine *fe, int script)
{
}
+#ifndef QT_NO_DIRECTWRITE
+static QString msgDirectWriteFunctionFailed(HRESULT hr, const char *function,
+ const QString &fam, const QString &substitute)
+{
+ _com_error error(hr);
+ QString result;
+ QTextStream str(&result);
+ str << function << " failed for \"" << fam << '"';
+ if (substitute != fam)
+ str << " (substitute: \"" << substitute << "\")";
+ str << ": error " << hex << showbase << ulong(hr) << ' ' << noshowbase << dec
+ << ": " << QString::fromWCharArray(error.ErrorMessage());
+ return result;
+}
+#endif // !QT_NO_DIRECTWRITE
+
QFontEngine *QWindowsMultiFontEngine::loadEngine(int at)
{
QFontEngine *fontEngine = engine(0);
@@ -1252,7 +1270,8 @@ QFontEngine *QWindowsMultiFontEngine::loadEngine(int at)
IDWriteFont *directWriteFont = 0;
HRESULT hr = data->directWriteGdiInterop->CreateFontFromLOGFONT(&lf, &directWriteFont);
if (FAILED(hr)) {
- qErrnoWarning("%s: CreateFontFromLOGFONT failed", __FUNCTION__);
+ qWarning("%s: %s", __FUNCTION__,
+ qPrintable(msgDirectWriteFunctionFailed(hr, "CreateFontFromLOGFONT", fam, nameSubstitute)));
} else {
Q_ASSERT(directWriteFont);
IDWriteFontFace *directWriteFontFace = NULL;
@@ -1270,7 +1289,8 @@ QFontEngine *QWindowsMultiFontEngine::loadEngine(int at)
fedw->fontDef.stretch = fontEngine->fontDef.stretch;
return fedw;
} else {
- qErrnoWarning("%s: CreateFontFace failed", __FUNCTION__);
+ qWarning("%s: %s", __FUNCTION__,
+ qPrintable(msgDirectWriteFunctionFailed(hr, "CreateFontFace", fam, nameSubstitute)));
}
}
}
diff --git a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp
index eb9e9c8b8d..6df454adb0 100644
--- a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp
+++ b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp
@@ -133,7 +133,7 @@ QIBusPlatformInputContext::~QIBusPlatformInputContext (void)
bool QIBusPlatformInputContext::isValid() const
{
- return d->valid;
+ return d->valid && d->busConnected;
}
void QIBusPlatformInputContext::invokeAction(QInputMethod::Action a, int)
diff --git a/src/plugins/platforms/cocoa/qcocoahelpers.h b/src/plugins/platforms/cocoa/qcocoahelpers.h
index a2e0876073..4478895538 100644
--- a/src/plugins/platforms/cocoa/qcocoahelpers.h
+++ b/src/plugins/platforms/cocoa/qcocoahelpers.h
@@ -167,7 +167,12 @@ QT_END_NAMESPACE
- (void)onCancelClicked;
@end
-@interface QT_MANGLE_NAMESPACE(QNSPanelContentsWrapper) : NSView
+@interface QT_MANGLE_NAMESPACE(QNSPanelContentsWrapper) : NSView {
+ NSButton *_okButton;
+ NSButton *_cancelButton;
+ NSView *_panelContents;
+ NSEdgeInsets _panelContentsMargins;
+}
@property (nonatomic, readonly) NSButton *okButton;
@property (nonatomic, readonly) NSButton *cancelButton;
diff --git a/src/plugins/platforms/cocoa/qcocoahelpers.mm b/src/plugins/platforms/cocoa/qcocoahelpers.mm
index 37e69fa8c8..9f9618177d 100644
--- a/src/plugins/platforms/cocoa/qcocoahelpers.mm
+++ b/src/plugins/platforms/cocoa/qcocoahelpers.mm
@@ -301,6 +301,11 @@ QT_END_NAMESPACE
*/
@implementation QNSPanelContentsWrapper
+@synthesize okButton = _okButton;
+@synthesize cancelButton = _cancelButton;
+@synthesize panelContents = _panelContents;
+@synthesize panelContentsMargins = _panelContentsMargins;
+
- (instancetype)initWithPanelDelegate:(id<QT_MANGLE_NAMESPACE(QNSPanelDelegate)>)panelDelegate
{
if ((self = [super initWithFrame:NSZeroRect])) {
diff --git a/src/plugins/platforms/cocoa/qnswindowdelegate.mm b/src/plugins/platforms/cocoa/qnswindowdelegate.mm
index 8295d4a36c..1224d138d9 100644
--- a/src/plugins/platforms/cocoa/qnswindowdelegate.mm
+++ b/src/plugins/platforms/cocoa/qnswindowdelegate.mm
@@ -75,7 +75,7 @@
// window.screen.visibleFrame directly, as that ensures we have the same
// behavior for both use-cases/APIs.
Q_ASSERT(window == m_cocoaWindow->nativeWindow());
- return m_cocoaWindow->screen()->availableGeometry().toCGRect();
+ return NSRectFromCGRect(m_cocoaWindow->screen()->availableGeometry().toCGRect());
}
#if QT_MACOS_DEPLOYMENT_TARGET_BELOW(__MAC_10_11)
@@ -90,7 +90,7 @@
{
Q_UNUSED(proposedSize);
Q_ASSERT(window == m_cocoaWindow->nativeWindow());
- return m_cocoaWindow->screen()->geometry().size().toCGSize();
+ return NSSizeFromCGSize(m_cocoaWindow->screen()->geometry().size().toCGSize());
}
#endif
diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice.cpp
index 5f85e4b0b0..e218d580a2 100644
--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice.cpp
+++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice.cpp
@@ -142,7 +142,7 @@ void QEglFSKmsGbmDevice::handleDrmEvent()
{
drmEventContext drmEvent;
memset(&drmEvent, 0, sizeof(drmEvent));
- drmEvent.version = DRM_EVENT_CONTEXT_VERSION;
+ drmEvent.version = 2;
drmEvent.vblank_handler = nullptr;
drmEvent.page_flip_handler = pageFlipHandler;
diff --git a/src/plugins/platforms/linuxfb/qlinuxfbdrmscreen.cpp b/src/plugins/platforms/linuxfb/qlinuxfbdrmscreen.cpp
index c9fbb8281c..e15d6fee24 100644
--- a/src/plugins/platforms/linuxfb/qlinuxfbdrmscreen.cpp
+++ b/src/plugins/platforms/linuxfb/qlinuxfbdrmscreen.cpp
@@ -314,7 +314,7 @@ void QLinuxFbDevice::swapBuffers(Output *output)
while (output->backFb == fbIdx) {
drmEventContext drmEvent;
memset(&drmEvent, 0, sizeof(drmEvent));
- drmEvent.version = DRM_EVENT_CONTEXT_VERSION;
+ drmEvent.version = 2;
drmEvent.vblank_handler = nullptr;
drmEvent.page_flip_handler = pageFlipHandler;
// Blocks until there is something to read on the drm fd
diff --git a/src/plugins/platforms/minimalegl/qminimaleglintegration.cpp b/src/plugins/platforms/minimalegl/qminimaleglintegration.cpp
index 81512b1561..a716a6092a 100644
--- a/src/plugins/platforms/minimalegl/qminimaleglintegration.cpp
+++ b/src/plugins/platforms/minimalegl/qminimaleglintegration.cpp
@@ -100,6 +100,7 @@ QMinimalEglIntegration::QMinimalEglIntegration()
QMinimalEglIntegration::~QMinimalEglIntegration()
{
destroyScreen(mScreen);
+ delete mFontDb;
}
bool QMinimalEglIntegration::hasCapability(QPlatformIntegration::Capability cap) const
diff --git a/src/plugins/platforms/qnx/qqnxeglwindow.cpp b/src/plugins/platforms/qnx/qqnxeglwindow.cpp
index aa2e4db193..33ce0f924c 100644
--- a/src/plugins/platforms/qnx/qqnxeglwindow.cpp
+++ b/src/plugins/platforms/qnx/qqnxeglwindow.cpp
@@ -140,11 +140,17 @@ EGLSurface QQnxEglWindow::getSurface()
if (m_newSurfaceRequested.testAndSetOrdered(true, false)) {
const QMutexLocker locker(&m_mutex); //Set geomety must not reset the requestedBufferSize till
//the surface is created
- if (m_eglSurface != EGL_NO_SURFACE) {
- platformOpenGLContext()->doneCurrent();
- destroyEGLSurface();
+
+ if ((m_requestedBufferSize != bufferSize()) || (m_eglSurface == EGL_NO_SURFACE)) {
+ if (m_eglSurface != EGL_NO_SURFACE) {
+ platformOpenGLContext()->doneCurrent();
+ destroyEGLSurface();
+ }
+ createEGLSurface();
+ } else {
+ // Must've been a sequence of unprocessed changes returning us to the original size.
+ resetBuffers();
}
- createEGLSurface();
}
return m_eglSurface;
diff --git a/src/plugins/platforms/windows/qwindowscontext.cpp b/src/plugins/platforms/windows/qwindowscontext.cpp
index d87fb75d14..6d4b7922db 100644
--- a/src/plugins/platforms/windows/qwindowscontext.cpp
+++ b/src/plugins/platforms/windows/qwindowscontext.cpp
@@ -988,8 +988,10 @@ bool QWindowsContext::windowsProc(HWND hwnd, UINT message,
d->m_creationContext->obtainedGeometry.moveTo(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
return true;
case QtWindows::NonClientCreate:
- if (QSysInfo::windowsVersion() >= QSysInfo::WV_WINDOWS10 && d->m_creationContext->window->isTopLevel())
+ if (QSysInfo::windowsVersion() >= QSysInfo::WV_WINDOWS10 && d->m_creationContext->window->isTopLevel()
+ && !d->m_creationContext->window->property(QWindowsWindow::embeddedNativeParentHandleProperty).isValid()) {
enableNonClientDpiScaling(msg.hwnd);
+ }
return false;
case QtWindows::CalculateSize:
return QWindowsGeometryHint::handleCalculateSize(d->m_creationContext->customMargins, msg, result);
diff --git a/src/plugins/platforms/windows/qwindowsmousehandler.cpp b/src/plugins/platforms/windows/qwindowsmousehandler.cpp
index 0e15ab08c1..af4304cb19 100644
--- a/src/plugins/platforms/windows/qwindowsmousehandler.cpp
+++ b/src/plugins/platforms/windows/qwindowsmousehandler.cpp
@@ -387,12 +387,13 @@ bool QWindowsMouseHandler::translateMouseEvent(QWindow *window, HWND hwnd,
&& (!hasCapture || currentWindowUnderMouse == window))
|| (m_previousCaptureWindow && window != m_previousCaptureWindow && currentWindowUnderMouse
&& currentWindowUnderMouse != m_previousCaptureWindow)) {
+ QPoint localPosition;
qCDebug(lcQpaEvents) << "Entering " << currentWindowUnderMouse;
- if (QWindowsWindow *wumPlatformWindow = QWindowsWindow::windowsWindowOf(currentWindowUnderMouse))
+ if (QWindowsWindow *wumPlatformWindow = QWindowsWindow::windowsWindowOf(currentWindowUnderMouse)) {
+ localPosition = wumPlatformWindow->mapFromGlobal(globalPosition);
wumPlatformWindow->applyCursor();
- QWindowSystemInterface::handleEnterEvent(currentWindowUnderMouse,
- currentWindowUnderMouse->mapFromGlobal(globalPosition),
- globalPosition);
+ }
+ QWindowSystemInterface::handleEnterEvent(currentWindowUnderMouse, localPosition, globalPosition);
}
// We need to track m_windowUnderMouse separately from m_trackedWindow, as
// Windows mouse tracking will not trigger WM_MOUSELEAVE for leaving window when
diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp
index 6b737207f5..15906961ac 100644
--- a/src/plugins/platforms/windows/qwindowswindow.cpp
+++ b/src/plugins/platforms/windows/qwindowswindow.cpp
@@ -515,7 +515,7 @@ void WindowCreationData::fromWindow(const QWindow *w, const Qt::WindowFlags flag
// Sometimes QWindow doesn't have a QWindow parent but does have a native parent window,
// e.g. in case of embedded ActiveQt servers. They should not be considered a top-level
// windows in such cases.
- QVariant prop = w->property("_q_embedded_native_parent_handle");
+ QVariant prop = w->property(QWindowsWindow::embeddedNativeParentHandleProperty);
if (prop.isValid()) {
embedded = true;
parentHandle = reinterpret_cast<HWND>(prop.value<WId>());
@@ -1061,6 +1061,8 @@ QWindowCreationContext::QWindowCreationContext(const QWindow *w,
\ingroup qt-lighthouse-win
*/
+const char *QWindowsWindow::embeddedNativeParentHandleProperty = "_q_embedded_native_parent_handle";
+
QWindowsWindow::QWindowsWindow(QWindow *aWindow, const QWindowsWindowData &data) :
QWindowsBaseWindow(aWindow),
m_data(data),
@@ -1858,7 +1860,7 @@ bool QWindowsWindow::isFullScreen_sys() const
if (testFlag(HasBorderInFullScreen))
geometry += QMargins(1, 1, 1, 1);
QPlatformScreen *screen = screenForGeometry(geometry);
- return screen && geometry == QHighDpi::toNativePixels(screen->geometry(), screen);
+ return screen && geometry == screen->geometry();
}
/*!
diff --git a/src/plugins/platforms/windows/qwindowswindow.h b/src/plugins/platforms/windows/qwindowswindow.h
index 60289bdc08..982f3dfd30 100644
--- a/src/plugins/platforms/windows/qwindowswindow.h
+++ b/src/plugins/platforms/windows/qwindowswindow.h
@@ -332,6 +332,8 @@ public:
void setHasBorderInFullScreen(bool border);
static QString formatWindowTitle(const QString &title);
+ static const char *embeddedNativeParentHandleProperty;
+
private:
inline void show_sys() const;
inline QWindowsWindowData setWindowFlags_sys(Qt::WindowFlags wt, unsigned flags = 0) const;
diff --git a/src/plugins/platforms/winrt/qwinrttheme.cpp b/src/plugins/platforms/winrt/qwinrttheme.cpp
index 5696ae7a10..283825a880 100644
--- a/src/plugins/platforms/winrt/qwinrttheme.cpp
+++ b/src/plugins/platforms/winrt/qwinrttheme.cpp
@@ -61,6 +61,26 @@ QT_BEGIN_NAMESPACE
Q_LOGGING_CATEGORY(lcQpaTheme, "qt.qpa.theme")
+class QWinRTApiInformationHandler {
+public:
+ QWinRTApiInformationHandler()
+ {
+ HRESULT hr;
+ hr = RoGetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Foundation_Metadata_ApiInformation).Get(),
+ IID_PPV_ARGS(&m_apiInformationStatics));
+ Q_ASSERT_SUCCEEDED(hr);
+ }
+
+ ComPtr<IApiInformationStatics> apiInformationStatics() const
+ {
+ return m_apiInformationStatics;
+ }
+
+private:
+ ComPtr<IApiInformationStatics> m_apiInformationStatics;
+};
+Q_GLOBAL_STATIC(QWinRTApiInformationHandler, gApiHandler);
+
static IUISettings *uiSettings()
{
static ComPtr<IUISettings> settings;
@@ -86,17 +106,16 @@ static inline QColor fromColor(const Color &color)
static bool uiColorSettings(const wchar_t *value, UIElementType type, Color *color)
{
- static ComPtr<IApiInformationStatics> apiInformationStatics;
- HRESULT hr;
+ ComPtr<IApiInformationStatics> apiInformationStatics = gApiHandler->apiInformationStatics();
if (!apiInformationStatics) {
- hr = RoGetActivationFactory(HString::MakeReference(RuntimeClass_Windows_Foundation_Metadata_ApiInformation).Get(),
- IID_PPV_ARGS(&apiInformationStatics));
- RETURN_FALSE_IF_FAILED("Could not get ApiInformationStatics");
+ qErrnoWarning("Could not get ApiInformationStatics");
+ return false;
}
static const HStringReference enumRef(L"Windows.UI.ViewManagement.UIElementType");
HStringReference valueRef(value);
+ HRESULT hr;
boolean exists;
hr = apiInformationStatics->IsEnumNamedValuePresent(enumRef.Get(), valueRef.Get(), &exists);
@@ -149,6 +168,14 @@ static void nativeColorSettings(QPalette &p)
// Starting with SDK 15063 those have been removed.
#ifndef QT_WINRT_DISABLE_PHONE_COLORS
//Phone related
+ ComPtr<IApiInformationStatics> apiInformationStatics = gApiHandler->apiInformationStatics();
+ boolean phoneApiPresent = false;
+ HRESULT hr;
+ HStringReference phoneRef(L"Windows.Phone.PhoneContract");
+ hr = apiInformationStatics.Get()->IsApiContractPresentByMajor(phoneRef.Get(), 1, &phoneApiPresent);
+ if (FAILED(hr) || !phoneApiPresent)
+ return;
+
if (uiColorSettings(L"PopupBackground", UIElementType_PopupBackground, &color)) {
p.setColor(QPalette::ToolTipBase, fromColor(color));
p.setColor(QPalette::AlternateBase, fromColor(color));
diff --git a/src/plugins/platforms/xcb/qxcbconnection.h b/src/plugins/platforms/xcb/qxcbconnection.h
index 674b0cef4b..13f5cd5842 100644
--- a/src/plugins/platforms/xcb/qxcbconnection.h
+++ b/src/plugins/platforms/xcb/qxcbconnection.h
@@ -428,6 +428,7 @@ public:
#if QT_CONFIG(xinput2)
void xi2Select(xcb_window_t window);
+ void xi2SelectStateEvents();
bool isAtLeastXI21() const { return m_xi2Enabled && m_xi2Minor >= 1; }
bool isAtLeastXI22() const { return m_xi2Enabled && m_xi2Minor >= 2; }
#endif
diff --git a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
index bf17e9c1e1..8ed6909990 100644
--- a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
+++ b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
@@ -79,6 +79,7 @@ void QXcbConnection::initializeXInput2()
qCDebug(lcQpaXInput, "Using XInput version %d.%d", xiMajor, m_xi2Minor);
m_xi2Enabled = true;
xi2SetupDevices();
+ xi2SelectStateEvents();
break;
case BadRequest: // Must be an X server with XInput 1
qCDebug(lcQpaXInput, "X server does not support XInput 2");
@@ -90,6 +91,22 @@ void QXcbConnection::initializeXInput2()
}
}
+void QXcbConnection::xi2SelectStateEvents()
+{
+ // These state events do not depend on a specific X window, but are global
+ // for the X client's (application's) state.
+ unsigned int bitMask = 0;
+ unsigned char *xiBitMask = reinterpret_cast<unsigned char *>(&bitMask);
+ XIEventMask xiEventMask;
+ bitMask = XI_HierarchyChangedMask;
+ bitMask |= XI_DeviceChangedMask;
+ xiEventMask.deviceid = XIAllDevices;
+ xiEventMask.mask_len = sizeof(bitMask);
+ xiEventMask.mask = xiBitMask;
+ Display *dpy = static_cast<Display *>(m_xlib_display);
+ XISelectEvents(dpy, DefaultRootWindow(dpy), &xiEventMask, 1);
+}
+
void QXcbConnection::xi2SetupDevice(void *info, bool removeExisting)
{
XIDeviceInfo *deviceInfo = reinterpret_cast<XIDeviceInfo *>(info);
@@ -373,17 +390,6 @@ void QXcbConnection::xi2Select(xcb_window_t window)
#else
Q_UNUSED(xiBitMask);
#endif
-
- {
- // Listen for hotplug events
- XIEventMask xiEventMask;
- bitMask = XI_HierarchyChangedMask;
- bitMask |= XI_DeviceChangedMask;
- xiEventMask.deviceid = XIAllDevices;
- xiEventMask.mask_len = sizeof(bitMask);
- xiEventMask.mask = xiBitMask;
- XISelectEvents(xDisplay, window, &xiEventMask, 1);
- }
}
QXcbConnection::TouchDeviceData *QXcbConnection::touchDeviceForId(int id)
diff --git a/src/plugins/platforms/xcb/qxcbintegration.cpp b/src/plugins/platforms/xcb/qxcbintegration.cpp
index 8ba6834565..c8efe2fce8 100644
--- a/src/plugins/platforms/xcb/qxcbintegration.cpp
+++ b/src/plugins/platforms/xcb/qxcbintegration.cpp
@@ -329,12 +329,15 @@ QAbstractEventDispatcher *QXcbIntegration::createEventDispatcher() const
void QXcbIntegration::initialize()
{
+ const QLatin1String defaultInputContext("compose");
// Perform everything that may potentially need the event dispatcher (timers, socket
// notifiers) here instead of the constructor.
QString icStr = QPlatformInputContextFactory::requested();
if (icStr.isNull())
- icStr = QLatin1String("compose");
+ icStr = defaultInputContext;
m_inputContext.reset(QPlatformInputContextFactory::create(icStr));
+ if (!m_inputContext && icStr != defaultInputContext && icStr != QLatin1String("none"))
+ m_inputContext.reset(QPlatformInputContextFactory::create(defaultInputContext));
}
void QXcbIntegration::moveToScreen(QWindow *window, int screen)
diff --git a/src/plugins/printsupport/windows/qwindowsprintdevice.cpp b/src/plugins/printsupport/windows/qwindowsprintdevice.cpp
index 99e8ec8999..1cb14514ee 100644
--- a/src/plugins/printsupport/windows/qwindowsprintdevice.cpp
+++ b/src/plugins/printsupport/windows/qwindowsprintdevice.cpp
@@ -449,7 +449,9 @@ QStringList QWindowsPrintDevice::availablePrintDeviceIds()
QString QWindowsPrintDevice::defaultPrintDeviceId()
{
DWORD size = 0;
- GetDefaultPrinter(NULL, &size);
+ if (GetDefaultPrinter(NULL, &size) == ERROR_FILE_NOT_FOUND)
+ return QString();
+
QScopedArrayPointer<wchar_t> name(new wchar_t[size]);
GetDefaultPrinter(name.data(), &size);
return QString::fromWCharArray(name.data());
diff --git a/src/plugins/sqldrivers/configure.json b/src/plugins/sqldrivers/configure.json
index 5603ceb37b..234f880579 100644
--- a/src/plugins/sqldrivers/configure.json
+++ b/src/plugins/sqldrivers/configure.json
@@ -39,7 +39,9 @@
"libraries": {
"db2": {
"label": "DB2 (IBM)",
- "test": "unix/db2",
+ "test": {
+ "include": [ "sqlcli.h", "sqlcli1.h" ]
+ },
"sources": [
{ "libs": "-ldb2cli", "condition": "config.win32" },
{ "libs": "-ldb2", "condition": "!config.win32" }
@@ -47,7 +49,9 @@
},
"ibase": {
"label": "InterBase",
- "test": "unix/ibase",
+ "test": {
+ "include": "ibase.h"
+ },
"sources": [
{ "libs": "-lgds32_ms", "condition": "config.win32" },
{ "libs": "-lgds", "condition": "!config.win32" }
@@ -55,7 +59,15 @@
},
"mysql": {
"label": "MySQL",
- "test": "unix/mysql",
+ "test": {
+ "head": [
+ "#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(WIN64) || defined(_WIN64) || defined(__WIN64__)",
+ "# include <windows.h>",
+ "#endif"
+ ],
+ "include": "mysql.h",
+ "main": "mysql_get_client_version();"
+ },
"sources": [
{ "type": "mysqlConfig", "query": "--libs_r", "cleanlibs": true },
{ "type": "mysqlConfig", "query": "--libs", "cleanlibs": true },
@@ -68,7 +80,13 @@
},
"psql": {
"label": "PostgreSQL",
- "test": "unix/psql",
+ "test": {
+ "include": "libpq-fe.h",
+ "main": [
+ "PQescapeBytea(0, 0, 0);",
+ "PQunescapeBytea(0, 0);"
+ ]
+ },
"sources": [
{ "type": "pkgConfig", "args": "libpq" },
{ "type": "psqlConfig" },
@@ -78,7 +96,9 @@
},
"tds": {
"label": "TDS (Sybase)",
- "test": "unix/tds",
+ "test": {
+ "include": [ "sybfront.h", "sybdb.h" ]
+ },
"sources": [
{ "type": "sybaseEnv", "libs": "-lNTWDBLIB", "condition": "config.win32" },
{ "type": "sybaseEnv", "libs": "-lsybdb", "condition": "!config.win32" }
@@ -86,7 +106,9 @@
},
"oci": {
"label": "OCI (Oracle)",
- "test": "unix/oci",
+ "test": {
+ "include": "oci.h"
+ },
"sources": [
{ "libs": "-loci", "condition": "config.win32" },
{ "libs": "-lclntsh", "condition": "!config.win32" }
@@ -94,7 +116,18 @@
},
"odbc": {
"label": "ODBC",
- "test": "unix/odbc",
+ "test": {
+ "head": [
+ "#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(WIN64) || defined(_WIN64) || defined(__WIN64__)",
+ "# include <windows.h>",
+ "#endif"
+ ],
+ "include": [ "sql.h", "sqlext.h" ],
+ "main": [
+ "SQLHANDLE env;",
+ "SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);"
+ ]
+ },
"sources": [
{ "libs": "-lodbc32", "condition": "config.win32" },
{ "libs": "-liodbc", "condition": "config.darwin" },
@@ -103,7 +136,9 @@
},
"sqlite2": {
"label": "SQLite (version 2)",
- "test": "unix/sqlite2",
+ "test": {
+ "include": "sqlite.h"
+ },
"sources": [
"-lsqlite"
]
@@ -111,7 +146,10 @@
"sqlite3": {
"label": "SQLite (version 3)",
"export": "sqlite",
- "test": "unix/sqlite",
+ "test": {
+ "include": "sqlite3.h",
+ "main": "sqlite3_open_v2(0, 0, 0, 0);"
+ },
"sources": [
{ "type": "pkgConfig", "args": "sqlite3" },
"-lsqlite3"
diff --git a/src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp b/src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp
index b0db1c276e..e9f5ee9508 100644
--- a/src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp
+++ b/src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp
@@ -55,6 +55,7 @@
#include <qcache.h>
#include <qregularexpression.h>
#endif
+#include <QTimeZone>
#if defined Q_OS_WIN
# include <qt_windows.h>
@@ -416,6 +417,32 @@ bool QSQLiteResult::prepare(const QString &query)
return true;
}
+static QString secondsToOffset(int seconds)
+{
+ const QChar sign = ushort(seconds < 0 ? '-' : '+');
+ seconds = qAbs(seconds);
+ const int hours = seconds / 3600;
+ const int minutes = (seconds % 3600) / 60;
+
+ return QString(QStringLiteral("%1%2:%3")).arg(sign).arg(hours, 2, 10, QLatin1Char('0')).arg(minutes, 2, 10, QLatin1Char('0'));
+}
+
+static QString timespecToString(const QDateTime &dateTime)
+{
+ switch (dateTime.timeSpec()) {
+ case Qt::LocalTime:
+ return QString();
+ case Qt::UTC:
+ return QStringLiteral("Z");
+ case Qt::OffsetFromUTC:
+ return secondsToOffset(dateTime.offsetFromUtc());
+ case Qt::TimeZone:
+ return secondsToOffset(dateTime.timeZone().offsetFromUtc(dateTime));
+ default:
+ return QString();
+ }
+}
+
bool QSQLiteResult::exec()
{
Q_D(QSQLiteResult);
@@ -481,7 +508,7 @@ bool QSQLiteResult::exec()
break;
case QVariant::DateTime: {
const QDateTime dateTime = value.toDateTime();
- const QString str = dateTime.toString(QStringViewLiteral("yyyy-MM-ddThh:mm:ss.zzz"));
+ const QString str = dateTime.toString(QLatin1String("yyyy-MM-ddThh:mm:ss.zzz") + timespecToString(dateTime));
res = sqlite3_bind_text16(d->stmt, i + 1, str.utf16(),
str.size() * sizeof(ushort), SQLITE_TRANSIENT);
break;
diff --git a/src/plugins/styles/mac/qmacstyle_mac.mm b/src/plugins/styles/mac/qmacstyle_mac.mm
index 6266728c84..a6ece7632a 100644
--- a/src/plugins/styles/mac/qmacstyle_mac.mm
+++ b/src/plugins/styles/mac/qmacstyle_mac.mm
@@ -52,16 +52,22 @@
//#define DEBUG_SIZE_CONSTRAINT
#include <private/qcore_mac_p.h>
-#include <private/qcombobox_p.h>
+#if QT_CONFIG(tabbar)
#include <private/qtabbar_p.h>
+#endif
#include <private/qpainter_p.h>
#include <qapplication.h>
#include <qbitmap.h>
+#if QT_CONFIG(combobox)
+#include <private/qcombobox_p.h>
#include <qcombobox.h>
+#endif
#if QT_CONFIG(dialogbuttonbox)
#include <qdialogbuttonbox.h>
#endif
+#if QT_CONFIG(dockwidget)
#include <qdockwidget.h>
+#endif
#include <qevent.h>
#include <qfocusframe.h>
#include <qformlayout.h>
@@ -287,7 +293,7 @@ static const QColor tabBarCloseButtonCrossSelected(115, 115, 115);
static const int closeButtonSize = 14;
static const qreal closeButtonCornerRadius = 2.0;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
static bool isVerticalTabs(const QTabBar::Shape shape) {
return (shape == QTabBar::RoundedEast
|| shape == QTabBar::TriangularEast
@@ -363,7 +369,7 @@ static void drawTabCloseButton(QPainter *p, bool hover, bool selected, bool pres
p->drawLine(margin, height - margin, width - margin, margin);
}
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
QRect rotateTabPainter(QPainter *p, QTabBar::Shape shape, QRect tabRect)
{
if (isVerticalTabs(shape)) {
@@ -502,7 +508,7 @@ static inline bool isTreeView(const QWidget *widget)
}
#endif
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
static inline ThemeTabDirection getTabDirection(QTabBar::Shape shape)
{
ThemeTabDirection ttd;
@@ -771,7 +777,7 @@ static QSize qt_aqua_get_known_size(QStyle::ContentsType ct, const QWidget *widg
else if (qobject_cast<const QCheckBox *>(widg))
ct = QStyle::CT_CheckBox;
#endif
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
else if (qobject_cast<const QComboBox *>(widg))
ct = QStyle::CT_ComboBox;
#endif
@@ -1017,7 +1023,7 @@ static QSize qt_aqua_get_known_size(QStyle::ContentsType ct, const QWidget *widg
break;
}
#endif
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
case QStyle::CT_LineEdit:
if (!widg || !qobject_cast<QComboBox *>(widg->parentWidget())) {
//should I take into account the font dimentions of the lineedit? -Sam
@@ -1145,17 +1151,17 @@ void QMacStylePrivate::drawFocusRing(QPainter *p, const QRect &targetRect, int h
NSBezierPath *focusRingPath;
if (radius > 0) {
const CGFloat roundedRectInset = -1.5;
- focusRingPath = [NSBezierPath bezierPathWithRoundedRect:CGRectInset(focusRingRect, roundedRectInset, roundedRectInset)
+ focusRingPath = [NSBezierPath bezierPathWithRoundedRect:NSRectFromCGRect(CGRectInset(focusRingRect, roundedRectInset, roundedRectInset))
xRadius:radius
yRadius:radius];
} else {
const CGFloat outerClipInset = -focusRingWidth / 2;
- NSBezierPath *focusRingClipPath = [NSBezierPath bezierPathWithRect:CGRectInset(focusRingRect, outerClipInset, outerClipInset)];
+ NSBezierPath *focusRingClipPath = [NSBezierPath bezierPathWithRect:NSRectFromCGRect(CGRectInset(focusRingRect, outerClipInset, outerClipInset))];
const CGFloat innerClipInset = 1;
- NSBezierPath *focusRingInnerClipPath = [NSBezierPath bezierPathWithRect:CGRectInset(focusRingRect, innerClipInset, innerClipInset)];
+ NSBezierPath *focusRingInnerClipPath = [NSBezierPath bezierPathWithRect:NSRectFromCGRect(CGRectInset(focusRingRect, innerClipInset, innerClipInset))];
[focusRingClipPath appendBezierPath:focusRingInnerClipPath.bezierPathByReversingPath];
[focusRingClipPath setClip];
- focusRingPath = [NSBezierPath bezierPathWithRect:focusRingRect];
+ focusRingPath = [NSBezierPath bezierPathWithRect:NSRectFromCGRect(focusRingRect)];
focusRingPath.lineJoinStyle = NSRoundLineJoinStyle;
}
@@ -1200,7 +1206,7 @@ void QMacStylePrivate::drawFocusRing(QPainter *p, const QRect &targetRect, int h
QRect(focusRingPixmap.width() - shCornerSize, svCornerSize, shCornerSize, focusRingPixmap.width() - 2 * svCornerSize));
}
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
void QMacStylePrivate::tabLayout(const QStyleOptionTab *opt, const QWidget *widget, QRect *textRect, QRect *iconRect) const
{
Q_ASSERT(textRect);
@@ -1263,7 +1269,7 @@ void QMacStylePrivate::tabLayout(const QStyleOptionTab *opt, const QWidget *widg
*textRect = tr;
}
-#endif //QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
QStyleHelper::WidgetSizePolicy QMacStylePrivate::effectiveAquaSizeConstrain(const QStyleOption *option,
const QWidget *widg,
@@ -2357,7 +2363,7 @@ void QMacStyle::polish(QWidget* w)
{
#ifndef QT_NO_MENU
if (qobject_cast<QMenu*>(w)
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
|| qobject_cast<QComboBoxPrivateContainer *>(w)
#endif
) {
@@ -2382,7 +2388,7 @@ void QMacStyle::polish(QWidget* w)
}
#endif
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (QTabBar *tb = qobject_cast<QTabBar*>(w)) {
if (tb->documentMode()) {
w->setAttribute(Qt::WA_Hover);
@@ -2424,7 +2430,7 @@ void QMacStyle::unpolish(QWidget* w)
w->setWindowOpacity(1.0);
}
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
if (QComboBox *combo = qobject_cast<QComboBox *>(w)) {
if (!combo->isEditable()) {
if (QWidget *widget = combo->findChild<QComboBoxPrivateContainer *>())
@@ -2433,7 +2439,7 @@ void QMacStyle::unpolish(QWidget* w)
}
#endif
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (qobject_cast<QTabBar*>(w)) {
if (!w->testAttribute(Qt::WA_SetFont))
w->setFont(qApp->font(w));
@@ -2941,7 +2947,7 @@ int QMacStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget *w
ret = QEvent::MouseButtonRelease;
break;
case SH_TabBar_SelectMouseType:
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (const QStyleOptionTabBarBase *opt2 = qstyleoption_cast<const QStyleOptionTabBarBase *>(opt)) {
ret = opt2->documentMode ? QEvent::MouseButtonPress : QEvent::MouseButtonRelease;
} else
@@ -2966,7 +2972,7 @@ int QMacStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget *w
ret = Qt::AlignRight;
break;
case SH_TabBar_Alignment: {
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
if (const QTabWidget *tab = qobject_cast<const QTabWidget*>(w)) {
if (tab->documentMode()) {
ret = Qt::AlignLeft;
@@ -2974,7 +2980,7 @@ int QMacStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget *w
}
}
#endif
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (const QTabBar *tab = qobject_cast<const QTabBar*>(w)) {
if (tab->documentMode()) {
ret = Qt::AlignLeft;
@@ -3151,7 +3157,7 @@ int QMacStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget *w
case SH_ItemView_PaintAlternatingRowColorsForEmptyArea:
ret = true;
break;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
case SH_TabBar_CloseButtonPosition:
ret = QTabBar::LeftSide;
break;
@@ -3282,7 +3288,7 @@ void QMacStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPai
p->drawPath(path);
p->restore();
break; }
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
case PE_FrameTabBarBase:
if (const QStyleOptionTabBarBase *tbb
= qstyleoption_cast<const QStyleOptionTabBarBase *>(opt)) {
@@ -3598,7 +3604,7 @@ void QMacStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPai
}
break;
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
case PE_FrameTabWidget:
if (const QStyleOptionTabWidgetFrame *twf
= qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(opt)) {
@@ -4112,7 +4118,7 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
QCommonStyle::drawControl(CE_ComboBoxLabel, &comboCopy, p, w);
}
break;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
case CE_TabBarTabShape:
if (const QStyleOptionTab *tabOpt = qstyleoption_cast<const QStyleOptionTab *>(opt)) {
if (tabOpt->documentMode) {
@@ -4261,7 +4267,7 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
}
break;
#endif
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
case CE_DockWidgetTitle:
if (const QDockWidget *dockWidget = qobject_cast<const QDockWidget *>(w)) {
bool floating = dockWidget->isFloating();
@@ -4440,7 +4446,7 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
// Always be normal or disabled to follow the Mac style.
int smallIconSize = proxy()->pixelMetric(PM_SmallIconSize);
QSize iconSize(smallIconSize, smallIconSize);
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
if (const QComboBox *comboBox = qobject_cast<const QComboBox *>(w)) {
iconSize = comboBox->iconSize();
}
@@ -4816,7 +4822,7 @@ QRect QMacStyle::subElementRect(SubElement sr, const QStyleOption *opt,
int(outRect.size.height));
break;
}
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
case SE_TabWidgetLeftCorner:
if (const QStyleOptionTabWidgetFrame *twf
= qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(opt)) {
@@ -4949,7 +4955,7 @@ QRect QMacStyle::subElementRect(SubElement sr, const QStyleOption *opt,
#endif
case SE_LineEditContents:
rect = QCommonStyle::subElementRect(sr, opt, widget);
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
if (widget && qobject_cast<const QComboBox*>(widget->parentWidget()))
rect.adjust(-1, -2, 0, 0);
else
@@ -5093,7 +5099,7 @@ QRect QMacStyle::subElementRect(SubElement sr, const QStyleOption *opt,
}
rect.setBottom(rect.bottom() - 1);
break;
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
case SE_TabWidgetLayoutItem:
if (const QStyleOptionTabWidgetFrame *tabWidgetOpt =
qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(opt)) {
@@ -5108,7 +5114,7 @@ QRect QMacStyle::subElementRect(SubElement sr, const QStyleOption *opt,
}
break;
#endif
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
case SE_DockWidgetCloseButton:
case SE_DockWidgetFloatButton:
case SE_DockWidgetTitleBarText:
@@ -6411,7 +6417,7 @@ QSize QMacStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt,
* overlap is how much the pane should overlap the tab bar
*/
// then add the size between the stackwidget and the "contentsRect"
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
if (const QStyleOptionTabWidgetFrame *twf
= qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(opt)) {
QSize extra(0,0);
@@ -6427,7 +6433,7 @@ QSize QMacStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt,
}
#endif
break;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
case QStyle::CT_TabBarTab:
if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(opt)) {
const QStyleHelper::WidgetSizePolicy AquaSize = d->aquaSizeConstrain(opt, widget);
@@ -6510,7 +6516,7 @@ QSize QMacStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt,
case QStyle::CT_MenuItem:
if (const QStyleOptionMenuItem *mi = qstyleoption_cast<const QStyleOptionMenuItem *>(opt)) {
int maxpmw = mi->maxIconWidth;
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
const QComboBox *comboBox = qobject_cast<const QComboBox *>(widget);
#endif
int w = sz.width(),
@@ -6521,7 +6527,7 @@ QSize QMacStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt,
} else {
h = mi->fontMetrics.height() + 2;
if (!mi->icon.isNull()) {
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
if (comboBox) {
const QSize &iconSize = comboBox->iconSize();
h = qMax(h, iconSize.height() + 4);
@@ -6542,7 +6548,7 @@ QSize QMacStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt,
w += maxpmw + 6;
// add space for a check. All items have place for a check too.
w += 20;
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
if (comboBox && comboBox->isVisible()) {
QStyleOptionComboBox cmb;
cmb.initFrom(comboBox);
diff --git a/src/plugins/styles/mac/qmacstyle_mac_p_p.h b/src/plugins/styles/mac/qmacstyle_mac_p_p.h
index 2dff9afacb..8574a52a87 100644
--- a/src/plugins/styles/mac/qmacstyle_mac_p_p.h
+++ b/src/plugins/styles/mac/qmacstyle_mac_p_p.h
@@ -48,7 +48,9 @@
#include <QtWidgets/private/qcommonstyle_p.h>
#include "qmacstyle_mac_p.h"
#include <private/qapplication_p.h>
+#if QT_CONFIG(combobox)
#include <private/qcombobox_p.h>
+#endif
#include <private/qpainter_p.h>
#include <private/qstylehelper_p.h>
#include <qapplication.h>
@@ -60,7 +62,9 @@
#if QT_CONFIG(dialogbuttonbox)
#include <qdialogbuttonbox.h>
#endif
+#if QT_CONFIG(dockwidget)
#include <qdockwidget.h>
+#endif
#include <qevent.h>
#include <qfocusframe.h>
#include <qformlayout.h>
@@ -69,7 +73,9 @@
#include <qheaderview.h>
#include <qlayout.h>
#include <qlineedit.h>
+#if QT_CONFIG(listview)
#include <qlistview.h>
+#endif
#include <qmainwindow.h>
#include <qmap.h>
#include <qmenubar.h>
@@ -249,7 +255,7 @@ public:
void drawFocusRing(QPainter *p, const QRect &targetRect, int hMargin, int vMargin, qreal radius = 0) const;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
void tabLayout(const QStyleOptionTab *opt, const QWidget *widget, QRect *textRect, QRect *iconRect) const;
#endif
diff --git a/src/plugins/styles/windowsvista/qwindowsvistastyle.cpp b/src/plugins/styles/windowsvista/qwindowsvistastyle.cpp
index ebd3934c90..60a5c25b1f 100644
--- a/src/plugins/styles/windowsvista/qwindowsvistastyle.cpp
+++ b/src/plugins/styles/windowsvista/qwindowsvistastyle.cpp
@@ -1436,7 +1436,7 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption
}
}
break;
-#ifndef QT_NO_ITEMVIEWS
+#if QT_CONFIG(itemviews)
case CE_ItemViewItem:
{
const QStyleOptionViewItem *vopt;
@@ -1471,12 +1471,12 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption
}
break;
}
-#endif // QT_NO_ITEMVIEWS
-#ifndef QT_NO_COMBOBOX
+#endif // QT_CONFIG(itemviews)
+#if QT_CONFIG(combobox)
case CE_ComboBoxLabel:
QCommonStyle::drawControl(element, option, painter, widget);
break;
-#endif // QT_NO_COMBOBOX
+#endif // QT_CONFIG(combobox)
default:
QWindowsXPStyle::drawControl(element, option, painter, widget);
break;
@@ -2119,7 +2119,7 @@ QRect QWindowsVistaStyle::subControlRect(ComplexControl control, const QStyleOpt
QRect rect = QWindowsXPStyle::subControlRect(control, option, subControl, widget);
switch (control) {
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
case CC_ComboBox:
if (const QStyleOptionComboBox *cb = qstyleoption_cast<const QStyleOptionComboBox *>(option)) {
int x = cb->rect.x(),
@@ -2152,7 +2152,7 @@ QRect QWindowsVistaStyle::subControlRect(ComplexControl control, const QStyleOpt
return rect;
}
break;
-#endif // QT_NO_COMBOBOX
+#endif // QT_CONFIG(combobox)
case CC_TitleBar:
if (const QStyleOptionTitleBar *tb = qstyleoption_cast<const QStyleOptionTitleBar *>(option)) {
if (!buttonVisible(subControl, tb))
diff --git a/src/plugins/styles/windowsvista/qwindowsvistastyle_p_p.h b/src/plugins/styles/windowsvista/qwindowsvistastyle_p_p.h
index c8e9edeb3b..14af2c6bbc 100644
--- a/src/plugins/styles/windowsvista/qwindowsvistastyle_p_p.h
+++ b/src/plugins/styles/windowsvista/qwindowsvistastyle_p_p.h
@@ -70,11 +70,17 @@
#include <qtoolbutton.h>
#include <qspinbox.h>
#include <qtoolbar.h>
+#if QT_CONFIG(combobox)
#include <qcombobox.h>
+#endif
#include <qscrollbar.h>
#include <qprogressbar.h>
+#if QT_CONFIG(dockwidget)
#include <qdockwidget.h>
+#endif
+#if QT_CONFIG(listview)
#include <qlistview.h>
+#endif
#if QT_CONFIG(treeview)
#include <qtreeview.h>
#endif
diff --git a/src/plugins/styles/windowsvista/qwindowsxpstyle.cpp b/src/plugins/styles/windowsvista/qwindowsxpstyle.cpp
index e670794cd3..a3a665f22b 100644
--- a/src/plugins/styles/windowsvista/qwindowsxpstyle.cpp
+++ b/src/plugins/styles/windowsvista/qwindowsxpstyle.cpp
@@ -56,12 +56,18 @@
#include <qdesktopwidget.h>
#include <qtoolbutton.h>
+#if QT_CONFIG(tabbar)
#include <qtabbar.h>
+#endif
+#if QT_CONFIG(combobox)
#include <qcombobox.h>
+#endif
#include <qscrollbar.h>
#include <qheaderview.h>
#include <qspinbox.h>
+#if QT_CONFIG(listview)
#include <qlistview.h>
+#endif
#include <qstackedwidget.h>
#if QT_CONFIG(pushbutton)
#include <qpushbutton.h>
@@ -1151,9 +1157,9 @@ void QWindowsXPStyle::polish(QWidget *widget)
#endif
|| qobject_cast<QToolButton*>(widget)
|| qobject_cast<QTabBar*>(widget)
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
|| qobject_cast<QComboBox*>(widget)
-#endif // QT_NO_COMBOBOX
+#endif // QT_CONFIG(combobox)
|| qobject_cast<QScrollBar*>(widget)
|| qobject_cast<QSlider*>(widget)
|| qobject_cast<QHeaderView*>(widget)
@@ -1226,9 +1232,9 @@ void QWindowsXPStyle::unpolish(QWidget *widget)
#endif
|| qobject_cast<QToolButton*>(widget)
|| qobject_cast<QTabBar*>(widget)
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
|| qobject_cast<QComboBox*>(widget)
-#endif // QT_NO_COMBOBOX
+#endif // QT_CONFIG(combobox)
|| qobject_cast<QScrollBar*>(widget)
|| qobject_cast<QSlider*>(widget)
|| qobject_cast<QHeaderView*>(widget)
@@ -2292,7 +2298,7 @@ void QWindowsXPStyle::drawControl(ControlElement element, const QStyleOption *op
drawItemText(p, mbi->rect, alignment, mbi->palette, mbi->state & State_Enabled, mbi->text, textRole);
}
return;
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
case CE_DockWidgetTitle:
if (const QStyleOptionDockWidget *dwOpt = qstyleoption_cast<const QStyleOptionDockWidget *>(option))
{
@@ -2417,7 +2423,7 @@ void QWindowsXPStyle::drawControl(ControlElement element, const QStyleOption *op
return;
}
break;
-#endif // QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
#if QT_CONFIG(rubberband)
case CE_RubberBand:
if (qstyleoption_cast<const QStyleOptionRubberBand *>(option)) {
@@ -2554,7 +2560,7 @@ void QWindowsXPStyle::drawComplexControl(ComplexControl cc, const QStyleOptionCo
}
break;
#endif // QT_NO_SPINBOX
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
case CC_ComboBox:
if (const QStyleOptionComboBox *cmb = qstyleoption_cast<const QStyleOptionComboBox *>(option))
{
@@ -2605,7 +2611,7 @@ void QWindowsXPStyle::drawComplexControl(ComplexControl cc, const QStyleOptionCo
}
}
break;
-#endif // QT_NO_COMBOBOX
+#endif // QT_CONFIG(combobox)
case CC_ScrollBar:
if (const QStyleOptionSlider *scrollbar = qstyleoption_cast<const QStyleOptionSlider *>(option))
{
diff --git a/src/printsupport/configure.json b/src/printsupport/configure.json
index ad38281145..e8cec22c09 100644
--- a/src/printsupport/configure.json
+++ b/src/printsupport/configure.json
@@ -16,7 +16,10 @@
"libraries": {
"cups": {
"label": "CUPS",
- "test": "unix/cups",
+ "test": {
+ "include": "cups/cups.h",
+ "main": "cupsGetNamedDest(CUPS_HTTP_DEFAULT, NULL, NULL); // CUPS 1.4 test"
+ },
"sources": [
"-lcups"
]
diff --git a/src/sql/models/qsqlrelationaldelegate.h b/src/sql/models/qsqlrelationaldelegate.h
index a689e88ba3..53f43a4acb 100644
--- a/src/sql/models/qsqlrelationaldelegate.h
+++ b/src/sql/models/qsqlrelationaldelegate.h
@@ -45,8 +45,12 @@
#ifdef QT_WIDGETS_LIB
#include <QtWidgets/qitemdelegate.h>
+#if QT_CONFIG(listview)
#include <QtWidgets/qlistview.h>
+#endif
+#if QT_CONFIG(combobox)
#include <QtWidgets/qcombobox.h>
+#endif
#include <QtSql/qsqldriver.h>
#include <QtSql/qsqlrelationaltablemodel.h>
diff --git a/src/widgets/accessible/accessible.pri b/src/widgets/accessible/accessible.pri
index e63ae28d30..06467d0ff0 100644
--- a/src/widgets/accessible/accessible.pri
+++ b/src/widgets/accessible/accessible.pri
@@ -5,7 +5,6 @@ qtConfig(accessibility) {
accessible/qaccessiblewidget.h \
accessible/qaccessiblewidgetfactory_p.h \
accessible/complexwidgets_p.h \
- accessible/itemviews_p.h \
accessible/qaccessiblemenu_p.h \
accessible/qaccessiblewidgets_p.h \
accessible/rangecontrols_p.h \
@@ -15,9 +14,13 @@ qtConfig(accessibility) {
accessible/qaccessiblewidget.cpp \
accessible/qaccessiblewidgetfactory.cpp \
accessible/complexwidgets.cpp \
- accessible/itemviews.cpp \
accessible/qaccessiblemenu.cpp \
accessible/qaccessiblewidgets.cpp \
accessible/rangecontrols.cpp \
accessible/simplewidgets.cpp
+
+ qtConfig(itemviews) {
+ HEADERS += accessible/itemviews_p.h
+ SOURCES += accessible/itemviews.cpp
+ }
}
diff --git a/src/widgets/accessible/complexwidgets.cpp b/src/widgets/accessible/complexwidgets.cpp
index 50aba759c3..5442c145a0 100644
--- a/src/widgets/accessible/complexwidgets.cpp
+++ b/src/widgets/accessible/complexwidgets.cpp
@@ -42,10 +42,16 @@
#include <qaccessible.h>
#include <qapplication.h>
#include <qevent.h>
+#if QT_CONFIG(itemviews)
#include <qheaderview.h>
+#endif
+#if QT_CONFIG(tabbar)
#include <qtabbar.h>
+#include <private/qtabbar_p.h>
+#endif
+#if QT_CONFIG(combobox)
#include <qcombobox.h>
-#include <qlistview.h>
+#endif
#include <qlineedit.h>
#include <qstyle.h>
#include <qstyleoption.h>
@@ -53,7 +59,6 @@
#if QT_CONFIG(whatsthis)
#include <qwhatsthis.h>
#endif
-#include <private/qtabbar_p.h>
#include <QAbstractScrollArea>
#include <QScrollArea>
#include <QScrollBar>
@@ -66,7 +71,7 @@ QT_BEGIN_NAMESPACE
QString qt_accStripAmp(const QString &text);
QString qt_accHotKey(const QString &text);
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
/*!
\class QAccessibleTabBar
\brief The QAccessibleTabBar class implements the QAccessibleInterface for tab bars.
@@ -259,9 +264,9 @@ QString QAccessibleTabBar::text(QAccessible::Text t) const
return QString();
}
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
/*!
\class QAccessibleComboBox
\brief The QAccessibleComboBox class implements the QAccessibleInterface for editable and read-only combo boxes.
@@ -379,7 +384,7 @@ QStringList QAccessibleComboBox::keyBindingsForAction(const QString &/*actionNam
return QStringList();
}
-#endif // QT_NO_COMBOBOX
+#endif // QT_CONFIG(combobox)
#ifndef QT_NO_SCROLLAREA
// ======================= QAccessibleAbstractScrollArea =======================
diff --git a/src/widgets/accessible/complexwidgets_p.h b/src/widgets/accessible/complexwidgets_p.h
index d43b06f4a4..6f5c950631 100644
--- a/src/widgets/accessible/complexwidgets_p.h
+++ b/src/widgets/accessible/complexwidgets_p.h
@@ -54,7 +54,9 @@
#include <QtWidgets/private/qtwidgetsglobal_p.h>
#include <QtCore/qpointer.h>
#include <QtWidgets/qaccessiblewidget.h>
+#if QT_CONFIG(itemviews)
#include <QtWidgets/qabstractitemview.h>
+#endif
QT_BEGIN_NAMESPACE
@@ -105,7 +107,7 @@ public:
};
#endif // QT_NO_SCROLLAREA
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
class QAccessibleTabBar : public QAccessibleWidget
{
public:
@@ -122,9 +124,9 @@ protected:
QTabBar *tabBar() const;
mutable QHash<int, QAccessible::Id> m_childInterfaces;
};
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
class QAccessibleComboBox : public QAccessibleWidget
{
public:
@@ -146,7 +148,7 @@ public:
protected:
QComboBox *comboBox() const;
};
-#endif // QT_NO_COMBOBOX
+#endif // QT_CONFIG(combobox)
#endif // QT_NO_ACCESSIBILITY
diff --git a/src/widgets/accessible/itemviews.cpp b/src/widgets/accessible/itemviews.cpp
index 4d1a4589ee..4d37400dc9 100644
--- a/src/widgets/accessible/itemviews.cpp
+++ b/src/widgets/accessible/itemviews.cpp
@@ -43,7 +43,9 @@
#if QT_CONFIG(tableview)
#include <qtableview.h>
#endif
+#if QT_CONFIG(listview)
#include <qlistview.h>
+#endif
#if QT_CONFIG(treeview)
#include <qtreeview.h>
#include <private/qtreeview_p.h>
@@ -54,7 +56,6 @@
QT_BEGIN_NAMESPACE
-#ifndef QT_NO_ITEMVIEWS
/*
Implementation of the IAccessible2 table2 interface. Much simpler than
the other table interfaces since there is only the main table and cells:
@@ -96,7 +97,7 @@ QAccessibleTable::QAccessibleTable(QWidget *w)
m_role = QAccessible::Tree;
} else
#endif
-#ifndef QT_NO_LISTVIEW
+#if QT_CONFIG(listview)
if (qobject_cast<const QListView*>(view())) {
m_role = QAccessible::List;
} else
@@ -1213,8 +1214,6 @@ QHeaderView *QAccessibleTableHeaderCell::headerView() const
return header;
}
-#endif // QT_NO_ITEMVIEWS
-
QT_END_NAMESPACE
#endif // QT_NO_ACCESSIBILITY
diff --git a/src/widgets/accessible/itemviews_p.h b/src/widgets/accessible/itemviews_p.h
index 9542a569db..72841b8a0f 100644
--- a/src/widgets/accessible/itemviews_p.h
+++ b/src/widgets/accessible/itemviews_p.h
@@ -58,13 +58,12 @@
#include <QtWidgets/qabstractitemview.h>
#include <QtWidgets/qheaderview.h>
+QT_REQUIRE_CONFIG(itemviews);
QT_BEGIN_NAMESPACE
#ifndef QT_NO_ACCESSIBILITY
-#ifndef QT_NO_ITEMVIEWS
-
class QAccessibleTableCell;
class QAccessibleTableHeaderCell;
@@ -299,8 +298,6 @@ private:
};
-#endif
-
#endif // QT_NO_ACCESSIBILITY
QT_END_NAMESPACE
diff --git a/src/widgets/accessible/qaccessiblewidgetfactory.cpp b/src/widgets/accessible/qaccessiblewidgetfactory.cpp
index a39674dc7a..c3de7a7dd6 100644
--- a/src/widgets/accessible/qaccessiblewidgetfactory.cpp
+++ b/src/widgets/accessible/qaccessiblewidgetfactory.cpp
@@ -43,7 +43,9 @@
#include "simplewidgets_p.h"
#include "rangecontrols_p.h"
#include "complexwidgets_p.h"
+#if QT_CONFIG(itemviews)
#include "itemviews_p.h"
+#endif
#include <qtoolbutton.h>
#if QT_CONFIG(treeview)
@@ -79,7 +81,7 @@ QAccessibleInterface *qAccessibleFactory(const QString &classname, QObject *obje
else
iface = new QAccessibleLineEdit(widget);
#endif
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
} else if (classname == QLatin1String("QComboBox")) {
iface = new QAccessibleComboBox(widget);
#endif
@@ -146,12 +148,12 @@ QAccessibleInterface *qAccessibleFactory(const QString &classname, QObject *obje
} else if (classname == QLatin1String("QTreeView")) {
iface = new QAccessibleTree(widget);
#endif // QT_CONFIG(treeview)
-#ifndef QT_NO_ITEMVIEWS
+#if QT_CONFIG(itemviews)
} else if (classname == QLatin1String("QTableView") || classname == QLatin1String("QListView")) {
iface = new QAccessibleTable(widget);
// ### This should be cleaned up. We return the parent for the scrollarea to hide it.
-#endif // QT_NO_ITEMVIEWS
-#ifndef QT_NO_TABBAR
+#endif // QT_CONFIG(itemviews)
+#if QT_CONFIG(tabbar)
} else if (classname == QLatin1String("QTabBar")) {
iface = new QAccessibleTabBar(widget);
#endif
@@ -209,11 +211,11 @@ QAccessibleInterface *qAccessibleFactory(const QString &classname, QObject *obje
} else if (classname == QLatin1String("QScrollArea")) {
iface = new QAccessibleScrollArea(widget);
#endif
-#ifndef QT_NO_CALENDARWIDGET
+#if QT_CONFIG(calendarwidget)
} else if (classname == QLatin1String("QCalendarWidget")) {
iface = new QAccessibleCalendarWidget(widget);
#endif
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
} else if (classname == QLatin1String("QDockWidget")) {
iface = new QAccessibleDockWidget(widget);
#endif
diff --git a/src/widgets/accessible/qaccessiblewidgets.cpp b/src/widgets/accessible/qaccessiblewidgets.cpp
index 60f489d487..e28833274e 100644
--- a/src/widgets/accessible/qaccessiblewidgets.cpp
+++ b/src/widgets/accessible/qaccessiblewidgets.cpp
@@ -62,11 +62,17 @@
#include <QRubberBand>
#endif
#include <QTextBrowser>
+#if QT_CONFIG(calendarwidget)
#include <QCalendarWidget>
+#endif
+#if QT_CONFIG(itemviews)
#include <QAbstractItemView>
+#endif
+#if QT_CONFIG(dockwidget)
#include <QDockWidget>
-#include <QMainWindow>
#include <private/qdockwidget_p.h>
+#endif
+#include <QMainWindow>
#include <QFocusFrame>
#ifndef QT_NO_ACCESSIBILITY
@@ -506,7 +512,7 @@ QAccessible::Role QAccessibleTextBrowser::role() const
}
#endif // QT_NO_TEXTBROWSER && QT_NO_CURSOR
-#ifndef QT_NO_CALENDARWIDGET
+#if QT_CONFIG(calendarwidget)
// ===================== QAccessibleCalendarWidget ========================
QAccessibleCalendarWidget::QAccessibleCalendarWidget(QWidget *widget)
: QAccessibleWidget(widget, QAccessible::Table)
@@ -561,9 +567,9 @@ QWidget *QAccessibleCalendarWidget::navigationBar() const
}
return 0;
}
-#endif // QT_NO_CALENDARWIDGET
+#endif // QT_CONFIG(calendarwidget)
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
// Dock Widget - order of children:
// - Content widget
@@ -644,7 +650,7 @@ QString QAccessibleDockWidget::text(QAccessible::Text t) const
}
return QString();
}
-#endif // QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
#ifndef QT_NO_CURSOR
diff --git a/src/widgets/accessible/qaccessiblewidgets_p.h b/src/widgets/accessible/qaccessiblewidgets_p.h
index 4d945a2016..3ff67c0c9b 100644
--- a/src/widgets/accessible/qaccessiblewidgets_p.h
+++ b/src/widgets/accessible/qaccessiblewidgets_p.h
@@ -266,7 +266,7 @@ public:
};
#endif // QT_NO_TEXTBROWSER && QT_NO_CURSOR
-#ifndef QT_NO_CALENDARWIDGET
+#if QT_CONFIG(calendarwidget)
class QAccessibleCalendarWidget : public QAccessibleWidget
{
public:
@@ -284,9 +284,9 @@ private:
QAbstractItemView *calendarView() const;
QWidget *navigationBar() const;
};
-#endif // QT_NO_CALENDARWIDGET
+#endif // QT_CONFIG(calendarwidget)
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
class QAccessibleDockWidget: public QAccessibleWidget
{
public:
@@ -302,7 +302,7 @@ protected:
QDockWidgetLayout *dockWidgetLayout() const;
};
-#endif // QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
#ifndef QT_NO_MAINWINDOW
class QAccessibleMainWindow : public QAccessibleWidget
diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp
index b638adeaec..97afce1734 100644
--- a/src/widgets/dialogs/qfiledialog.cpp
+++ b/src/widgets/dialogs/qfiledialog.cpp
@@ -3417,7 +3417,7 @@ void QFileDialogPrivate::_q_deleteCurrent()
QModelIndexList list = qFileDialogUi->listView->selectionModel()->selectedRows();
for (int i = list.count() - 1; i >= 0; --i) {
- QModelIndex index = list.at(i);
+ QPersistentModelIndex index = list.at(i);
if (index == qFileDialogUi->listView->rootIndex())
continue;
@@ -3427,7 +3427,6 @@ void QFileDialogPrivate::_q_deleteCurrent()
QString fileName = index.data(QFileSystemModel::FileNameRole).toString();
QString filePath = index.data(QFileSystemModel::FilePathRole).toString();
- bool isDir = model->isDir(index);
QFile::Permissions p(index.parent().data(QFileSystemModel::FilePermissions).toInt());
#if QT_CONFIG(messagebox)
@@ -3443,13 +3442,16 @@ void QFileDialogPrivate::_q_deleteCurrent()
QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::No)
return;
+ // the event loop has run, we have to validate if the index is valid because the model might have removed it.
+ if (!index.isValid())
+ return;
+
#else
if (!(p & QFile::WriteUser))
return;
#endif // QT_CONFIG(messagebox)
- // the event loop has run, we can NOT reuse index because the model might have removed it.
- if (isDir) {
+ if (model->isDir(index) && !model->fileInfo(index).isSymLink()) {
if (!removeDirectory(filePath)) {
#if QT_CONFIG(messagebox)
QMessageBox::warning(q, q->windowTitle(),
diff --git a/src/widgets/dialogs/qfileinfogatherer.cpp b/src/widgets/dialogs/qfileinfogatherer.cpp
index 9f2d15d31b..710ee611b9 100644
--- a/src/widgets/dialogs/qfileinfogatherer.cpp
+++ b/src/widgets/dialogs/qfileinfogatherer.cpp
@@ -98,7 +98,7 @@ QFileInfoGatherer::QFileInfoGatherer(QObject *parent)
if (listener.canConvert<QObject *>()) {
if (QObject *driveListener = listener.value<QObject *>()) {
connect(driveListener, SIGNAL(driveAdded()), this, SLOT(driveAdded()));
- connect(driveListener, SIGNAL(driveRemoved(QString)), this, SLOT(driveRemoved()));
+ connect(driveListener, SIGNAL(driveRemoved()), this, SLOT(driveRemoved()));
}
}
# endif // Q_OS_WIN && !Q_OS_WINRT
diff --git a/src/widgets/dialogs/qfilesystemmodel.cpp b/src/widgets/dialogs/qfilesystemmodel.cpp
index 872b8daf22..f88ac71cf3 100644
--- a/src/widgets/dialogs/qfilesystemmodel.cpp
+++ b/src/widgets/dialogs/qfilesystemmodel.cpp
@@ -203,8 +203,12 @@ QFileInfo QFileSystemModel::fileInfo(const QModelIndex &index) const
bool QFileSystemModel::remove(const QModelIndex &aindex)
{
- const QString path = filePath(aindex);
- const bool success = QFileInfo(path).isFile() ? QFile::remove(path) : QDir(path).removeRecursively();
+ Q_D(QFileSystemModel);
+
+ const QString path = d->filePath(aindex);
+ const QFileInfo fileInfo(path);
+ const bool success = (fileInfo.isFile() || fileInfo.isSymLink())
+ ? QFile::remove(path) : QDir(path).removeRecursively();
#ifndef QT_NO_FILESYSTEMWATCHER
if (success) {
QFileSystemModelPrivate * d = const_cast<QFileSystemModelPrivate*>(d_func());
diff --git a/src/widgets/graphicsview/qgraphicsproxywidget.cpp b/src/widgets/graphicsview/qgraphicsproxywidget.cpp
index eface182ae..5e692abd73 100644
--- a/src/widgets/graphicsview/qgraphicsproxywidget.cpp
+++ b/src/widgets/graphicsview/qgraphicsproxywidget.cpp
@@ -55,7 +55,6 @@
#include <QtGui/qpainter.h>
#include <QtWidgets/qstyleoption.h>
#include <QtWidgets/qgraphicsview.h>
-#include <QtWidgets/qlistview.h>
#include <QtWidgets/qlineedit.h>
#include <QtWidgets/qtextedit.h>
diff --git a/src/widgets/itemviews/itemviews.pri b/src/widgets/itemviews/itemviews.pri
index c68aa590bc..e95b640d18 100644
--- a/src/widgets/itemviews/itemviews.pri
+++ b/src/widgets/itemviews/itemviews.pri
@@ -6,29 +6,22 @@ HEADERS += \
itemviews/qabstractitemview_p.h \
itemviews/qheaderview.h \
itemviews/qheaderview_p.h \
- itemviews/qlistview.h \
- itemviews/qlistview_p.h \
itemviews/qbsptree_p.h \
itemviews/qabstractitemdelegate.h \
itemviews/qabstractitemdelegate_p.h \
itemviews/qitemdelegate.h \
- itemviews/qdirmodel.h \
itemviews/qwidgetitemdata_p.h \
itemviews/qitemeditorfactory.h \
itemviews/qitemeditorfactory_p.h \
- itemviews/qdatawidgetmapper.h \
itemviews/qstyleditemdelegate.h
SOURCES += \
itemviews/qabstractitemview.cpp \
itemviews/qheaderview.cpp \
- itemviews/qlistview.cpp \
itemviews/qbsptree.cpp \
itemviews/qabstractitemdelegate.cpp \
itemviews/qitemdelegate.cpp \
- itemviews/qdirmodel.cpp \
itemviews/qitemeditorfactory.cpp \
- itemviews/qdatawidgetmapper.cpp \
itemviews/qstyleditemdelegate.cpp
}
@@ -43,6 +36,24 @@ qtConfig(columnview) {
itemviews/qcolumnviewgrip.cpp
}
+qtConfig(datawidgetmapper) {
+ HEADERS += itemviews/qdatawidgetmapper.h
+ SOURCES += itemviews/qdatawidgetmapper.cpp
+}
+
+qtConfig(dirmodel) {
+ HEADERS += itemviews/qdirmodel.h
+ SOURCES += itemviews/qdirmodel.cpp
+}
+
+qtConfig(listview) {
+ HEADERS += \
+ itemviews/qlistview.h \
+ itemviews/qlistview_p.h
+
+ SOURCES += itemviews/qlistview.cpp
+}
+
qtConfig(listwidget) {
HEADERS += \
itemviews/qlistwidget.h \
diff --git a/src/widgets/itemviews/qabstractitemdelegate.cpp b/src/widgets/itemviews/qabstractitemdelegate.cpp
index 5b119cc79e..fd4699409c 100644
--- a/src/widgets/itemviews/qabstractitemdelegate.cpp
+++ b/src/widgets/itemviews/qabstractitemdelegate.cpp
@@ -39,7 +39,6 @@
#include "qabstractitemdelegate.h"
-#ifndef QT_NO_ITEMVIEWS
#include <qabstractitemmodel.h>
#include <qabstractitemview.h>
#include <qfontmetrics.h>
@@ -606,5 +605,3 @@ void QAbstractItemDelegatePrivate::_q_commitDataAndCloseEditor(QWidget *editor)
QT_END_NAMESPACE
#include "moc_qabstractitemdelegate.cpp"
-
-#endif // QT_NO_ITEMVIEWS
diff --git a/src/widgets/itemviews/qabstractitemdelegate.h b/src/widgets/itemviews/qabstractitemdelegate.h
index 9f7a7716af..9b6bde1c87 100644
--- a/src/widgets/itemviews/qabstractitemdelegate.h
+++ b/src/widgets/itemviews/qabstractitemdelegate.h
@@ -44,10 +44,9 @@
#include <QtCore/qobject.h>
#include <QtWidgets/qstyleoption.h>
-QT_BEGIN_NAMESPACE
-
+QT_REQUIRE_CONFIG(itemviews);
-#ifndef QT_NO_ITEMVIEWS
+QT_BEGIN_NAMESPACE
class QPainter;
class QModelIndex;
@@ -127,8 +126,6 @@ private:
Q_PRIVATE_SLOT(d_func(), void _q_commitDataAndCloseEditor(QWidget*))
};
-#endif // QT_NO_ITEMVIEWS
-
QT_END_NAMESPACE
#endif // QABSTRACTITEMDELEGATE_H
diff --git a/src/widgets/itemviews/qabstractitemdelegate_p.h b/src/widgets/itemviews/qabstractitemdelegate_p.h
index 0b03be63f0..da76d31e8b 100644
--- a/src/widgets/itemviews/qabstractitemdelegate_p.h
+++ b/src/widgets/itemviews/qabstractitemdelegate_p.h
@@ -55,7 +55,7 @@
#include "qabstractitemdelegate.h"
#include <private/qobject_p.h>
-#ifndef QT_NO_ITEMVIEWS
+QT_REQUIRE_CONFIG(itemviews);
QT_BEGIN_NAMESPACE
@@ -73,6 +73,4 @@ public:
QT_END_NAMESPACE
-#endif // QT_NO_ITEMVIEWS
-
#endif // QABSTRACTITEMDELEGATE_P_H
diff --git a/src/widgets/itemviews/qabstractitemview.cpp b/src/widgets/itemviews/qabstractitemview.cpp
index 78189c13c3..f7b0ecdf5d 100644
--- a/src/widgets/itemviews/qabstractitemview.cpp
+++ b/src/widgets/itemviews/qabstractitemview.cpp
@@ -39,7 +39,6 @@
#include "qabstractitemview.h"
-#ifndef QT_NO_ITEMVIEWS
#include <qpointer.h>
#include <qapplication.h>
#include <qclipboard.h>
@@ -4502,5 +4501,3 @@ QModelIndexList QAbstractItemViewPrivate::selectedDraggableIndexes() const
QT_END_NAMESPACE
#include "moc_qabstractitemview.cpp"
-
-#endif // QT_NO_ITEMVIEWS
diff --git a/src/widgets/itemviews/qabstractitemview.h b/src/widgets/itemviews/qabstractitemview.h
index e2249ec3aa..6a007da348 100644
--- a/src/widgets/itemviews/qabstractitemview.h
+++ b/src/widgets/itemviews/qabstractitemview.h
@@ -49,10 +49,9 @@
class tst_QAbstractItemView;
class tst_QTreeView;
-QT_BEGIN_NAMESPACE
-
+QT_REQUIRE_CONFIG(itemviews);
-#ifndef QT_NO_ITEMVIEWS
+QT_BEGIN_NAMESPACE
class QMenu;
class QDrag;
@@ -382,8 +381,6 @@ private:
Q_DECLARE_OPERATORS_FOR_FLAGS(QAbstractItemView::EditTriggers)
-#endif // QT_NO_ITEMVIEWS
-
QT_END_NAMESPACE
#endif // QABSTRACTITEMVIEW_H
diff --git a/src/widgets/itemviews/qabstractitemview_p.h b/src/widgets/itemviews/qabstractitemview_p.h
index 5e3858f491..d8af96af55 100644
--- a/src/widgets/itemviews/qabstractitemview_p.h
+++ b/src/widgets/itemviews/qabstractitemview_p.h
@@ -64,7 +64,7 @@
#include "QtCore/qbasictimer.h"
#include "QtCore/qelapsedtimer.h"
-#ifndef QT_NO_ITEMVIEWS
+QT_REQUIRE_CONFIG(itemviews);
QT_BEGIN_NAMESPACE
@@ -477,6 +477,4 @@ inline int qBinarySearch(const QVector<T> &vec, const T &item, int start, int en
QT_END_NAMESPACE
-#endif // QT_NO_ITEMVIEWS
-
#endif // QABSTRACTITEMVIEW_P_H
diff --git a/src/widgets/itemviews/qdatawidgetmapper.cpp b/src/widgets/itemviews/qdatawidgetmapper.cpp
index 99704c7911..1f0dbff7a9 100644
--- a/src/widgets/itemviews/qdatawidgetmapper.cpp
+++ b/src/widgets/itemviews/qdatawidgetmapper.cpp
@@ -39,8 +39,6 @@
#include "qdatawidgetmapper.h"
-#ifndef QT_NO_DATAWIDGETMAPPER
-
#include "qabstractitemmodel.h"
#include "qitemdelegate.h"
#include "qmetaobject.h"
@@ -827,5 +825,3 @@ QDataWidgetMapper::SubmitPolicy QDataWidgetMapper::submitPolicy() const
QT_END_NAMESPACE
#include "moc_qdatawidgetmapper.cpp"
-
-#endif // QT_NO_DATAWIDGETMAPPER
diff --git a/src/widgets/itemviews/qdatawidgetmapper.h b/src/widgets/itemviews/qdatawidgetmapper.h
index 4d244349ad..7d4d61378a 100644
--- a/src/widgets/itemviews/qdatawidgetmapper.h
+++ b/src/widgets/itemviews/qdatawidgetmapper.h
@@ -43,11 +43,10 @@
#include <QtWidgets/qtwidgetsglobal.h>
#include "QtCore/qobject.h"
-#ifndef QT_NO_DATAWIDGETMAPPER
+QT_REQUIRE_CONFIG(datawidgetmapper);
QT_BEGIN_NAMESPACE
-
class QAbstractItemDelegate;
class QAbstractItemModel;
class QModelIndex;
@@ -117,6 +116,4 @@ private:
QT_END_NAMESPACE
-#endif // QT_NO_DATAWIDGETMAPPER
#endif
-
diff --git a/src/widgets/itemviews/qdirmodel.cpp b/src/widgets/itemviews/qdirmodel.cpp
index 9b54c5c2fe..449850c42e 100644
--- a/src/widgets/itemviews/qdirmodel.cpp
+++ b/src/widgets/itemviews/qdirmodel.cpp
@@ -39,7 +39,6 @@
#include "qdirmodel.h"
-#ifndef QT_NO_DIRMODEL
#include <qfile.h>
#include <qfilesystemmodel.h>
#include <qurl.h>
@@ -1374,5 +1373,3 @@ QFileInfo QDirModelPrivate::resolvedInfo(QFileInfo info)
QT_END_NAMESPACE
#include "moc_qdirmodel.cpp"
-
-#endif // QT_NO_DIRMODEL
diff --git a/src/widgets/itemviews/qdirmodel.h b/src/widgets/itemviews/qdirmodel.h
index 90a9809986..30810cf4f6 100644
--- a/src/widgets/itemviews/qdirmodel.h
+++ b/src/widgets/itemviews/qdirmodel.h
@@ -45,10 +45,9 @@
#include <QtCore/qdir.h>
#include <QtWidgets/qfileiconprovider.h>
-QT_BEGIN_NAMESPACE
-
+QT_REQUIRE_CONFIG(dirmodel);
-#ifndef QT_NO_DIRMODEL
+QT_BEGIN_NAMESPACE
class QDirModelPrivate;
@@ -143,8 +142,6 @@ private:
Q_PRIVATE_SLOT(d_func(), void _q_refresh())
};
-#endif // QT_NO_DIRMODEL
-
QT_END_NAMESPACE
#endif // QDIRMODEL_H
diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp
index 89d0c7f93c..d6db7deee7 100644
--- a/src/widgets/itemviews/qheaderview.cpp
+++ b/src/widgets/itemviews/qheaderview.cpp
@@ -39,7 +39,6 @@
#include "qheaderview.h"
-#ifndef QT_NO_ITEMVIEWS
#include <qbitarray.h>
#include <qbrush.h>
#include <qdebug.h>
@@ -3961,6 +3960,4 @@ bool QHeaderViewPrivate::read(QDataStream &in)
QT_END_NAMESPACE
-#endif // QT_NO_ITEMVIEWS
-
#include "moc_qheaderview.cpp"
diff --git a/src/widgets/itemviews/qheaderview.h b/src/widgets/itemviews/qheaderview.h
index 4be97c0c7e..ec4500d81e 100644
--- a/src/widgets/itemviews/qheaderview.h
+++ b/src/widgets/itemviews/qheaderview.h
@@ -43,10 +43,9 @@
#include <QtWidgets/qtwidgetsglobal.h>
#include <QtWidgets/qabstractitemview.h>
-QT_BEGIN_NAMESPACE
-
+QT_REQUIRE_CONFIG(itemviews);
-#ifndef QT_NO_ITEMVIEWS
+QT_BEGIN_NAMESPACE
class QHeaderViewPrivate;
class QStyleOptionHeader;
@@ -265,8 +264,6 @@ inline void QHeaderView::hideSection(int alogicalIndex)
inline void QHeaderView::showSection(int alogicalIndex)
{ setSectionHidden(alogicalIndex, false); }
-#endif // QT_NO_ITEMVIEWS
-
QT_END_NAMESPACE
#endif // QHEADERVIEW_H
diff --git a/src/widgets/itemviews/qheaderview_p.h b/src/widgets/itemviews/qheaderview_p.h
index d6b119512c..8fc8b88aa5 100644
--- a/src/widgets/itemviews/qheaderview_p.h
+++ b/src/widgets/itemviews/qheaderview_p.h
@@ -54,14 +54,14 @@
#include <QtWidgets/private/qtwidgetsglobal_p.h>
#include "private/qabstractitemview_p.h"
-#ifndef QT_NO_ITEMVIEWS
-
#include "QtCore/qbitarray.h"
#include "QtWidgets/qapplication.h"
#if QT_CONFIG(label)
#include "QtWidgets/qlabel.h"
#endif
+QT_REQUIRE_CONFIG(itemviews);
+
QT_BEGIN_NAMESPACE
class QHeaderViewPrivate: public QAbstractItemViewPrivate
@@ -391,6 +391,4 @@ Q_DECLARE_TYPEINFO(QHeaderViewPrivate::SectionItem, Q_PRIMITIVE_TYPE);
QT_END_NAMESPACE
-#endif // QT_NO_ITEMVIEWS
-
#endif // QHEADERVIEW_P_H
diff --git a/src/widgets/itemviews/qitemdelegate.cpp b/src/widgets/itemviews/qitemdelegate.cpp
index 86deea75b7..d9caebec8a 100644
--- a/src/widgets/itemviews/qitemdelegate.cpp
+++ b/src/widgets/itemviews/qitemdelegate.cpp
@@ -39,7 +39,6 @@
#include "qitemdelegate.h"
-#ifndef QT_NO_ITEMVIEWS
#include <qabstractitemmodel.h>
#include <qapplication.h>
#include <qbrush.h>
@@ -1199,5 +1198,3 @@ QStyleOptionViewItem QItemDelegate::setOptions(const QModelIndex &index,
QT_END_NAMESPACE
#include "moc_qitemdelegate.cpp"
-
-#endif // QT_NO_ITEMVIEWS
diff --git a/src/widgets/itemviews/qitemdelegate.h b/src/widgets/itemviews/qitemdelegate.h
index 3d98419c80..21594327ef 100644
--- a/src/widgets/itemviews/qitemdelegate.h
+++ b/src/widgets/itemviews/qitemdelegate.h
@@ -46,10 +46,9 @@
#include <QtGui/qpixmap.h>
#include <QtCore/qvariant.h>
-QT_BEGIN_NAMESPACE
-
+QT_REQUIRE_CONFIG(itemviews);
-#ifndef QT_NO_ITEMVIEWS
+QT_BEGIN_NAMESPACE
class QItemDelegatePrivate;
class QItemEditorFactory;
@@ -126,8 +125,6 @@ private:
Q_DISABLE_COPY(QItemDelegate)
};
-#endif // QT_NO_ITEMVIEWS
-
QT_END_NAMESPACE
#endif // QITEMDELEGATE_H
diff --git a/src/widgets/itemviews/qitemeditorfactory.cpp b/src/widgets/itemviews/qitemeditorfactory.cpp
index a31689e0b5..54b7c6666f 100644
--- a/src/widgets/itemviews/qitemeditorfactory.cpp
+++ b/src/widgets/itemviews/qitemeditorfactory.cpp
@@ -41,9 +41,9 @@
#include "qitemeditorfactory.h"
#include "qitemeditorfactory_p.h"
-#ifndef QT_NO_ITEMVIEWS
-
+#if QT_CONFIG(combobox)
#include <qcombobox.h>
+#endif
#if QT_CONFIG(datetimeedit)
#include <qdatetimeedit.h>
#endif
@@ -52,6 +52,8 @@
#endif
#include <qlineedit.h>
#include <qspinbox.h>
+#include <qstyle.h>
+#include <qstyleoption.h>
#include <limits.h>
#include <float.h>
#include <qapplication.h>
@@ -62,7 +64,7 @@
QT_BEGIN_NAMESPACE
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
class QBooleanComboBox : public QComboBox
{
@@ -75,7 +77,7 @@ public:
bool value() const;
};
-#endif // QT_NO_COMBOBOX
+#endif // QT_CONFIG(combobox)
#ifndef QT_NO_SPINBOX
@@ -234,7 +236,7 @@ public:
QWidget *QDefaultItemEditorFactory::createEditor(int userType, QWidget *parent) const
{
switch (userType) {
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
case QVariant::Bool: {
QBooleanComboBox *cb = new QBooleanComboBox(parent);
cb->setFrame(false);
@@ -300,7 +302,7 @@ QWidget *QDefaultItemEditorFactory::createEditor(int userType, QWidget *parent)
QByteArray QDefaultItemEditorFactory::valuePropertyName(int userType) const
{
switch (userType) {
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
case QVariant::Bool:
return "currentIndex";
#endif
@@ -595,7 +597,7 @@ void QExpandingLineEdit::resizeToContents()
#endif // QT_NO_LINEEDIT
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
QBooleanComboBox::QBooleanComboBox(QWidget *parent)
: QComboBox(parent)
@@ -614,14 +616,12 @@ bool QBooleanComboBox::value() const
return (currentIndex() == 1);
}
-#endif // QT_NO_COMBOBOX
+#endif // QT_CONFIG(combobox)
QT_END_NAMESPACE
-#if !defined(QT_NO_LINEEDIT) || !defined(QT_NO_COMBOBOX)
+#if !defined(QT_NO_LINEEDIT) || QT_CONFIG(combobox)
#include "qitemeditorfactory.moc"
#endif
#include "moc_qitemeditorfactory_p.cpp"
-
-#endif // QT_NO_ITEMVIEWS
diff --git a/src/widgets/itemviews/qitemeditorfactory.h b/src/widgets/itemviews/qitemeditorfactory.h
index dea9bce794..f2610ad3de 100644
--- a/src/widgets/itemviews/qitemeditorfactory.h
+++ b/src/widgets/itemviews/qitemeditorfactory.h
@@ -46,10 +46,9 @@
#include <QtCore/qhash.h>
#include <QtCore/qvariant.h>
-QT_BEGIN_NAMESPACE
-
+QT_REQUIRE_CONFIG(itemviews);
-#ifndef QT_NO_ITEMVIEWS
+QT_BEGIN_NAMESPACE
class QWidget;
@@ -111,8 +110,6 @@ private:
QHash<int, QItemEditorCreatorBase *> creatorMap;
};
-#endif // QT_NO_ITEMVIEWS
-
QT_END_NAMESPACE
#endif // QITEMEDITORFACTORY_H
diff --git a/src/widgets/itemviews/qitemeditorfactory_p.h b/src/widgets/itemviews/qitemeditorfactory_p.h
index 91edcf65ba..409ecc684f 100644
--- a/src/widgets/itemviews/qitemeditorfactory_p.h
+++ b/src/widgets/itemviews/qitemeditorfactory_p.h
@@ -55,12 +55,11 @@
#include <QtWidgets/private/qtwidgetsglobal_p.h>
#include <qlineedit.h>
-#ifndef QT_NO_ITEMVIEWS
-
#ifndef QT_NO_LINEEDIT
-QT_BEGIN_NAMESPACE
+QT_REQUIRE_CONFIG(itemviews);
+QT_BEGIN_NAMESPACE
class QExpandingLineEdit : public QLineEdit
{
@@ -92,6 +91,4 @@ QT_END_NAMESPACE
#endif // QT_NO_LINEEDIT
-#endif //QT_NO_ITEMVIEWS
-
#endif //QITEMEDITORFACTORY_P_H
diff --git a/src/widgets/itemviews/qlistview.cpp b/src/widgets/itemviews/qlistview.cpp
index e234bae4dd..0efee755a2 100644
--- a/src/widgets/itemviews/qlistview.cpp
+++ b/src/widgets/itemviews/qlistview.cpp
@@ -40,7 +40,6 @@
#include "qlistview.h"
-#ifndef QT_NO_LISTVIEW
#include <qabstractitemdelegate.h>
#include <qapplication.h>
#include <qpainter.h>
@@ -2814,11 +2813,17 @@ bool QIconModeViewBase::filterDragLeaveEvent(QDragLeaveEvent *e)
bool QIconModeViewBase::filterDragMoveEvent(QDragMoveEvent *e)
{
- if (e->source() != qq || !dd->canDrop(e))
- return false;
+ const bool wasAccepted = e->isAccepted();
// ignore by default
e->ignore();
+
+ if (e->source() != qq || !dd->canDrop(e)) {
+ // restore previous acceptance on failure
+ e->setAccepted(wasAccepted);
+ return false;
+ }
+
// get old dragged items rect
QRect itemsRect = this->itemsRect(draggedItems);
viewport()->update(itemsRect.translated(draggedItemsDelta()));
@@ -3297,5 +3302,3 @@ QSize QListView::viewportSizeHint() const
QT_END_NAMESPACE
#include "moc_qlistview.cpp"
-
-#endif // QT_NO_LISTVIEW
diff --git a/src/widgets/itemviews/qlistview.h b/src/widgets/itemviews/qlistview.h
index 6b164aeec8..66ec9b18b1 100644
--- a/src/widgets/itemviews/qlistview.h
+++ b/src/widgets/itemviews/qlistview.h
@@ -43,10 +43,9 @@
#include <QtWidgets/qtwidgetsglobal.h>
#include <QtWidgets/qabstractitemview.h>
-QT_BEGIN_NAMESPACE
-
+QT_REQUIRE_CONFIG(listview);
-#ifndef QT_NO_LISTVIEW
+QT_BEGIN_NAMESPACE
class QListViewPrivate;
@@ -195,8 +194,6 @@ private:
Q_DISABLE_COPY(QListView)
};
-#endif // QT_NO_LISTVIEW
-
QT_END_NAMESPACE
#endif // QLISTVIEW_H
diff --git a/src/widgets/itemviews/qlistview_p.h b/src/widgets/itemviews/qlistview_p.h
index 6c0e470a93..8d29767951 100644
--- a/src/widgets/itemviews/qlistview_p.h
+++ b/src/widgets/itemviews/qlistview_p.h
@@ -58,7 +58,7 @@
#include <limits.h>
#include <qscrollbar.h>
-#ifndef QT_NO_LISTVIEW
+QT_REQUIRE_CONFIG(listview);
QT_BEGIN_NAMESPACE
@@ -474,6 +474,4 @@ inline bool QCommonListViewBase::isRightToLeft() const { return qq->isRightToLef
QT_END_NAMESPACE
-#endif // QT_NO_LISTVIEW
-
#endif // QLISTVIEW_P_H
diff --git a/src/widgets/itemviews/qstyleditemdelegate.cpp b/src/widgets/itemviews/qstyleditemdelegate.cpp
index 0b8019c21c..bda3325adb 100644
--- a/src/widgets/itemviews/qstyleditemdelegate.cpp
+++ b/src/widgets/itemviews/qstyleditemdelegate.cpp
@@ -39,7 +39,6 @@
#include "qstyleditemdelegate.h"
-#ifndef QT_NO_ITEMVIEWS
#include <qabstractitemmodel.h>
#include <qapplication.h>
#include <qbrush.h>
@@ -643,5 +642,3 @@ bool QStyledItemDelegate::editorEvent(QEvent *event,
QT_END_NAMESPACE
#include "moc_qstyleditemdelegate.cpp"
-
-#endif // QT_NO_ITEMVIEWS
diff --git a/src/widgets/itemviews/qstyleditemdelegate.h b/src/widgets/itemviews/qstyleditemdelegate.h
index d30e6e0e9c..f3b7c4d1f4 100644
--- a/src/widgets/itemviews/qstyleditemdelegate.h
+++ b/src/widgets/itemviews/qstyleditemdelegate.h
@@ -46,10 +46,9 @@
#include <QtGui/qpixmap.h>
#include <QtCore/qvariant.h>
-QT_BEGIN_NAMESPACE
-
+QT_REQUIRE_CONFIG(itemviews);
-#ifndef QT_NO_ITEMVIEWS
+QT_BEGIN_NAMESPACE
class QStyledItemDelegatePrivate;
class QItemEditorFactory;
@@ -101,8 +100,6 @@ private:
Q_DISABLE_COPY(QStyledItemDelegate)
};
-#endif // QT_NO_ITEMVIEWS
-
QT_END_NAMESPACE
#endif // QSTYLEDITEMDELEGATE_H
diff --git a/src/widgets/kernel/qtooltip.cpp b/src/widgets/kernel/qtooltip.cpp
index 48afeb1dcc..830a328948 100644
--- a/src/widgets/kernel/qtooltip.cpp
+++ b/src/widgets/kernel/qtooltip.cpp
@@ -493,12 +493,12 @@ void QToolTip::showText(const QPoint &pos, const QString &text, QWidget *w, cons
}
if (!text.isEmpty()){ // no tip can be reused, create new tip:
-#if 1 // Used to be excluded in Qt4 for Q_WS_WIN
- new QTipLabel(text, w, msecDisplayTime); // sets QTipLabel::instance to itself
-#else
+#ifdef Q_OS_WIN32
// On windows, we can't use the widget as parent otherwise the window will be
// raised when the tooltip will be shown
new QTipLabel(text, QApplication::desktop()->screen(QTipLabel::getTipScreen(pos, w)), msecDisplayTime);
+#else
+ new QTipLabel(text, w, msecDisplayTime); // sets QTipLabel::instance to itself
#endif
QTipLabel::instance->setTipRect(w, rect);
QTipLabel::instance->placeTip(pos, w);
diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp
index e46ef55324..eee0908593 100644
--- a/src/widgets/kernel/qwidget.cpp
+++ b/src/widgets/kernel/qwidget.cpp
@@ -107,7 +107,9 @@
#include "private/qgesturemanager_p.h"
#ifdef QT_KEYPAD_NAVIGATION
+#if QT_CONFIG(tabwidget)
#include "qtabwidget.h" // Needed in inTabWidget()
+#endif
#endif // QT_KEYPAD_NAVIGATION
#include "qwindowcontainer_p.h"
diff --git a/src/widgets/styles/qcommonstyle.cpp b/src/widgets/styles/qcommonstyle.cpp
index ceff1a50a3..c15703ca58 100644
--- a/src/widgets/styles/qcommonstyle.cpp
+++ b/src/widgets/styles/qcommonstyle.cpp
@@ -41,13 +41,17 @@
#include "qcommonstyle_p.h"
#include <qfile.h>
+#if QT_CONFIG(itemviews)
#include <qabstractitemview.h>
+#endif
#include <qapplication.h>
#include <private/qguiapplication_p.h>
#include <qpa/qplatformtheme.h>
#include <qbitmap.h>
#include <qcache.h>
+#if QT_CONFIG(dockwidget)
#include <qdockwidget.h>
+#endif
#include <qdrawutil.h>
#if QT_CONFIG(dialogbuttonbox)
#include <qdialogbuttonbox.h>
@@ -65,8 +69,12 @@
#include <qpainterpath.h>
#include <qslider.h>
#include <qstyleoption.h>
+#if QT_CONFIG(tabbar)
#include <qtabbar.h>
+#endif
+#if QT_CONFIG(tabwidget)
#include <qtabwidget.h>
+#endif
#include <qtoolbar.h>
#include <qtoolbutton.h>
#if QT_CONFIG(rubberband)
@@ -91,7 +99,7 @@
#include <limits.h>
-#ifndef QT_NO_ITEMVIEWS
+#if QT_CONFIG(itemviews)
# include "private/qtextengine_p.h"
#endif
@@ -362,7 +370,7 @@ void QCommonStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, Q
p->setPen(oldPen);
}
break;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
case PE_FrameTabBarBase:
if (const QStyleOptionTabBarBase *tbb
= qstyleoption_cast<const QStyleOptionTabBarBase *>(opt)) {
@@ -425,7 +433,7 @@ void QCommonStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, Q
}
#else
Q_UNUSED(d);
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
case PE_FrameTabWidget:
case PE_FrameWindow:
qDrawWinPanel(p, opt->rect, opt->palette, false, 0);
@@ -450,7 +458,7 @@ void QCommonStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, Q
}
break;
#endif // QT_NO_GROUPBOX
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
case PE_FrameDockWidget:
if (const QStyleOptionFrame *frame = qstyleoption_cast<const QStyleOptionFrame *>(opt)) {
int lw = frame->lineWidth;
@@ -460,7 +468,7 @@ void QCommonStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, Q
qDrawShadePanel(p, frame->rect, frame->palette, false, lw);
}
break;
-#endif // QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
#ifndef QT_NO_TOOLBAR
case PE_IndicatorToolBarHandle:
p->save();
@@ -569,7 +577,7 @@ void QCommonStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, Q
p->setBrush(oldBrush);
break;
}
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
case PE_IndicatorTabTear:
if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(opt)) {
bool rtl = tab->direction == Qt::RightToLeft;
@@ -603,7 +611,7 @@ void QCommonStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, Q
p->drawPath(path);
}
break;
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
#ifndef QT_NO_LINEEDIT
case PE_PanelLineEdit:
if (const QStyleOptionFrame *panel = qstyleoption_cast<const QStyleOptionFrame *>(opt)) {
@@ -675,7 +683,7 @@ void QCommonStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, Q
else
p->drawRect(rect);
break; }
-#ifndef QT_NO_ITEMVIEWS
+#if QT_CONFIG(itemviews)
case PE_PanelItemViewRow:
if (const QStyleOptionViewItem *vopt = qstyleoption_cast<const QStyleOptionViewItem *>(opt)) {
QPalette::ColorGroup cg = (widget ? widget->isEnabled() : (vopt->state & QStyle::State_Enabled))
@@ -713,7 +721,7 @@ void QCommonStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, Q
}
}
break;
-#endif //QT_NO_ITEMVIEWS
+#endif // QT_CONFIG(itemviews)
case PE_PanelScrollAreaCorner: {
const QBrush brush(opt->palette.brush(QPalette::Window));
p->fillRect(opt->rect, brush);
@@ -824,7 +832,7 @@ static void drawArrow(const QStyle *style, const QStyleOptionToolButton *toolbut
}
#endif // QT_NO_TOOLBUTTON
-#ifndef QT_NO_ITEMVIEWS
+#if QT_CONFIG(itemviews)
static QSizeF viewItemTextLayout(QTextLayout &textLayout, int lineWidth)
{
@@ -1095,10 +1103,10 @@ void QCommonStylePrivate::viewItemLayout(const QStyleOptionViewItem *opt, QRect
*textRect = display;
}
}
-#endif // QT_NO_ITEMVIEWS
+#endif // QT_CONFIG(itemviews)
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
/*! \internal
Compute the textRect and the pixmapRect from the opt rect
@@ -1165,7 +1173,7 @@ void QCommonStylePrivate::tabLayout(const QStyleOptionTab *opt, const QWidget *w
*textRect = tr;
}
-#endif //QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
#ifndef QT_NO_ANIMATION
/*! \internal */
@@ -1712,7 +1720,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
}
break;
#endif // QT_NO_TOOLBOX
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
case CE_TabBarTab:
if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(opt)) {
proxy()->drawControl(CE_TabBarTabShape, tab, p, widget);
@@ -1932,7 +1940,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
}
}
break;
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
#ifndef QT_NO_SIZEGRIP
case CE_SizeGrip: {
p->save();
@@ -2036,7 +2044,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
}
break; }
#endif // QT_CONFIG(rubberband)
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
case CE_DockWidgetTitle:
if (const QStyleOptionDockWidget *dwOpt = qstyleoption_cast<const QStyleOptionDockWidget *>(opt)) {
QRect r = dwOpt->rect.adjusted(0, 0, -1, -1);
@@ -2068,7 +2076,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
}
}
break;
-#endif // QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
case CE_Header:
if (const QStyleOptionHeader *header = qstyleoption_cast<const QStyleOptionHeader *>(opt)) {
QRegion clipRegion = p->clipRegion();
@@ -2096,7 +2104,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
case CE_HeaderEmptyArea:
p->fillRect(opt->rect, opt->palette.background());
break;
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
case CE_ComboBoxLabel:
if (const QStyleOptionComboBox *cb = qstyleoption_cast<const QStyleOptionComboBox *>(opt)) {
QRect editRect = proxy()->subControlRect(CC_ComboBox, cb, SC_ComboBoxEditField, widget);
@@ -2128,7 +2136,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
p->restore();
}
break;
-#endif // QT_NO_COMBOBOX
+#endif // QT_CONFIG(combobox)
#ifndef QT_NO_TOOLBAR
case CE_ToolBar:
if (const QStyleOptionToolBar *toolBar = qstyleoption_cast<const QStyleOptionToolBar *>(opt)) {
@@ -2168,7 +2176,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
}
break;
-#ifndef QT_NO_ITEMVIEWS
+#if QT_CONFIG(itemviews)
case CE_ItemViewItem:
if (const QStyleOptionViewItem *vopt = qstyleoption_cast<const QStyleOptionViewItem *>(opt)) {
p->save();
@@ -2248,7 +2256,7 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
}
break;
-#endif // QT_NO_ITEMVIEWS
+#endif // QT_CONFIG(itemviews)
#ifndef QT_NO_FRAME
case CE_ShapedFrame:
if (const QStyleOptionFrame *f = qstyleoption_cast<const QStyleOptionFrame *>(opt)) {
@@ -2505,7 +2513,7 @@ QRect QCommonStyle::subElementRect(SubElement sr, const QStyleOption *opt,
}
break;
#endif // QT_NO_PROGRESSBAR
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
case SE_ComboBoxFocusRect:
if (const QStyleOptionComboBox *cb = qstyleoption_cast<const QStyleOptionComboBox *>(opt)) {
int margin = cb->frame ? 3 : 0;
@@ -2514,7 +2522,7 @@ QRect QCommonStyle::subElementRect(SubElement sr, const QStyleOption *opt,
r = visualRect(opt->direction, opt->rect, r);
}
break;
-#endif // QT_NO_COMBOBOX
+#endif // QT_CONFIG(combobox)
#ifndef QT_NO_TOOLBOX
case SE_ToolBoxTabContents:
r = opt->rect;
@@ -2564,7 +2572,7 @@ QRect QCommonStyle::subElementRect(SubElement sr, const QStyleOption *opt,
r = subElementRect(SE_CheckBoxFocusRect, opt, widget);
r |= subElementRect(SE_CheckBoxIndicator, opt, widget);
break;
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
case SE_TabWidgetTabBar:
if (const QStyleOptionTabWidgetFrame *twf
= qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(opt)) {
@@ -2806,8 +2814,8 @@ QRect QCommonStyle::subElementRect(SubElement sr, const QStyleOption *opt,
}
break;
-#endif // QT_NO_TABWIDGET
-#ifndef QT_NO_TABBAR
+#endif // QT_CONFIG(tabwidget)
+#if QT_CONFIG(tabbar)
case SE_TabBarTearIndicator:
if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(opt)) {
switch (tab->shape) {
@@ -2919,7 +2927,7 @@ QRect QCommonStyle::subElementRect(SubElement sr, const QStyleOption *opt,
r = f->rect.adjusted(frameWidth, frameWidth, -frameWidth, -frameWidth);
}
break;
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
case SE_DockWidgetCloseButton:
case SE_DockWidgetFloatButton:
case SE_DockWidgetTitleBarText:
@@ -3020,7 +3028,7 @@ QRect QCommonStyle::subElementRect(SubElement sr, const QStyleOption *opt,
break;
}
#endif
-#ifndef QT_NO_ITEMVIEWS
+#if QT_CONFIG(itemviews)
case SE_ItemViewItemCheckIndicator:
if (!qstyleoption_cast<const QStyleOptionViewItem *>(opt)) {
r = subElementRect(SE_CheckBoxIndicator, opt, widget);
@@ -3047,7 +3055,7 @@ QRect QCommonStyle::subElementRect(SubElement sr, const QStyleOption *opt,
r = d->displayRect;
}
break;
-#endif //QT_NO_ITEMVIEWS
+#endif // QT_CONFIG(itemviews)
#ifndef QT_NO_TOOLBAR
case SE_ToolBarHandle:
if (const QStyleOptionToolBar *tbopt = qstyleoption_cast<const QStyleOptionToolBar *>(opt)) {
@@ -3439,7 +3447,7 @@ void QCommonStyle::drawComplexControl(ComplexControl cc, const QStyleOptionCompl
ir = proxy()->subControlRect(CC_TitleBar, tb, SC_TitleBarCloseButton, widget);
down = tb->activeSubControls & SC_TitleBarCloseButton && (opt->state & State_Sunken);
if ((tb->titleBarFlags & Qt::WindowType_Mask) == Qt::Tool
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
|| qobject_cast<const QDockWidget *>(widget)
#endif
)
@@ -3892,7 +3900,7 @@ QStyle::SubControl QCommonStyle::hitTestComplexControl(ComplexControl cc, const
}
}
break;
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
case CC_ComboBox:
if (const QStyleOptionComboBox *cb = qstyleoption_cast<const QStyleOptionComboBox *>(opt)) {
QRect r;
@@ -3907,7 +3915,7 @@ QStyle::SubControl QCommonStyle::hitTestComplexControl(ComplexControl cc, const
}
}
break;
-#endif // QT_NO_COMBOBOX
+#endif // QT_CONFIG(combobox)
#ifndef QT_NO_GROUPBOX
case CC_GroupBox:
if (const QStyleOptionGroupBox *groupBox = qstyleoption_cast<const QStyleOptionGroupBox *>(opt)) {
@@ -4140,7 +4148,7 @@ QRect QCommonStyle::subControlRect(ComplexControl cc, const QStyleOptionComplex
}
break;
#endif // QT_NO_TOOLBUTTON
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
case CC_ComboBox:
if (const QStyleOptionComboBox *cb = qstyleoption_cast<const QStyleOptionComboBox *>(opt)) {
int x = cb->rect.x(),
@@ -4172,7 +4180,7 @@ QRect QCommonStyle::subControlRect(ComplexControl cc, const QStyleOptionComplex
ret = visualRect(cb->direction, cb->rect, ret);
}
break;
-#endif // QT_NO_COMBOBOX
+#endif // QT_CONFIG(combobox)
case CC_TitleBar:
if (const QStyleOptionTitleBar *tb = qstyleoption_cast<const QStyleOptionTitleBar *>(opt)) {
const int controlMargin = 2;
@@ -4412,7 +4420,7 @@ int QCommonStyle::pixelMetric(PixelMetric m, const QStyleOption *opt, const QWid
if (const QStyleOptionTitleBar *tb = qstyleoption_cast<const QStyleOptionTitleBar *>(opt)) {
if ((tb->titleBarFlags & Qt::WindowType_Mask) == Qt::Tool) {
ret = qMax(widget ? widget->fontMetrics().height() : opt->fontMetrics.height(), 16);
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
} else if (qobject_cast<const QDockWidget*>(widget)) {
ret = qMax(widget->fontMetrics().height(), int(QStyleHelper::dpiScaled(13)));
#endif
@@ -4524,7 +4532,7 @@ int QCommonStyle::pixelMetric(PixelMetric m, const QStyleOption *opt, const QWid
}
break;
#endif // QT_NO_SLIDER
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
case PM_DockWidgetSeparatorExtent:
ret = int(QStyleHelper::dpiScaled(6.));
break;
@@ -4538,7 +4546,7 @@ int QCommonStyle::pixelMetric(PixelMetric m, const QStyleOption *opt, const QWid
case PM_DockWidgetFrameWidth:
ret = 1;
break;
-#endif // QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
case PM_SpinBoxSliderHeight:
case PM_MenuBarPanelWidth:
@@ -4575,7 +4583,7 @@ int QCommonStyle::pixelMetric(PixelMetric m, const QStyleOption *opt, const QWid
break;
#endif // QT_NO_TOOLBAR
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
case PM_TabBarTabOverlap:
ret = 3;
break;
@@ -4839,7 +4847,7 @@ QSize QCommonStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt,
sz = QSize(sz.width() + 6, sz.height() + 5);
break;
#endif // QT_NO_TOOLBUTTON
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
case CT_ComboBox:
if (const QStyleOptionComboBox *cmb = qstyleoption_cast<const QStyleOptionComboBox *>(opt)) {
int fw = cmb->frame ? proxy()->pixelMetric(PM_ComboBoxFrameWidth, opt, widget) * 2 : 0;
@@ -4849,7 +4857,7 @@ QSize QCommonStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt,
sz = QSize(sz.width() + fw + other, sz.height() + fw);
}
break;
-#endif // QT_NO_COMBOBOX
+#endif // QT_CONFIG(combobox)
case CT_HeaderSection:
if (const QStyleOptionHeader *hdr = qstyleoption_cast<const QStyleOptionHeader *>(opt)) {
bool nullIcon = hdr->icon.isNull();
@@ -4897,7 +4905,7 @@ QSize QCommonStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt,
sz = QSize(1 + 3 * (buttonSize + 1), buttonSize);
}
break;
-#ifndef QT_NO_ITEMVIEWS
+#if QT_CONFIG(itemviews)
case CT_ItemViewItem:
if (const QStyleOptionViewItem *vopt = qstyleoption_cast<const QStyleOptionViewItem *>(opt)) {
QRect decorationRect, displayRect, checkRect;
@@ -4909,7 +4917,7 @@ QSize QCommonStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt,
break;
#else
Q_UNUSED(d);
-#endif // QT_NO_ITEMVIEWS
+#endif // QT_CONFIG(itemviews)
#ifndef QT_NO_SPINBOX
case CT_SpinBox:
if (const QStyleOptionSpinBox *vopt = qstyleoption_cast<const QStyleOptionSpinBox *>(opt)) {
@@ -5177,7 +5185,7 @@ int QCommonStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget
case SH_FocusFrame_AboveWidget:
ret = false;
break;
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
case SH_TabWidget_DefaultTabPosition:
ret = QTabWidget::North;
break;
@@ -5219,7 +5227,7 @@ int QCommonStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget
case SH_ItemView_DrawDelegateFrame:
ret = 0;
break;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
case SH_TabBar_CloseButtonPosition:
ret = QTabBar::RightSide;
break;
diff --git a/src/widgets/styles/qcommonstyle_p.h b/src/widgets/styles/qcommonstyle_p.h
index ebfc06139c..93db75ac2d 100644
--- a/src/widgets/styles/qcommonstyle_p.h
+++ b/src/widgets/styles/qcommonstyle_p.h
@@ -68,7 +68,7 @@ class Q_WIDGETS_EXPORT QCommonStylePrivate : public QStylePrivate
Q_DECLARE_PUBLIC(QCommonStyle)
public:
inline QCommonStylePrivate() :
-#ifndef QT_NO_ITEMVIEWS
+#if QT_CONFIG(itemviews)
cachedOption(0),
#endif
animationFps(30)
@@ -79,12 +79,12 @@ public:
#ifndef QT_NO_ANIMATION
qDeleteAll(animations);
#endif
-#ifndef QT_NO_ITEMVIEWS
+#if QT_CONFIG(itemviews)
delete cachedOption;
#endif
}
-#ifndef QT_NO_ITEMVIEWS
+#if QT_CONFIG(itemviews)
void viewItemDrawText(QPainter *p, const QStyleOptionViewItem *option, const QRect &rect) const;
void viewItemLayout(const QStyleOptionViewItem *opt, QRect *checkRect,
QRect *pixmapRect, QRect *textRect, bool sizehint) const;
@@ -110,7 +110,7 @@ public:
}
#endif
mutable QIcon tabBarcloseButtonIcon;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
void tabLayout(const QStyleOptionTab *opt, const QWidget *widget, QRect *textRect, QRect *pixmapRect) const;
#endif
diff --git a/src/widgets/styles/qfusionstyle.cpp b/src/widgets/styles/qfusionstyle.cpp
index 1e584f47b8..c1b240a381 100644
--- a/src/widgets/styles/qfusionstyle.cpp
+++ b/src/widgets/styles/qfusionstyle.cpp
@@ -42,7 +42,9 @@
#if QT_CONFIG(style_fusion) || defined(QT_PLUGIN)
#include "qcommonstyle_p.h"
+#if QT_CONFIG(combobox)
#include <qcombobox.h>
+#endif
#if QT_CONFIG(pushbutton)
#include <qpushbutton.h>
#endif
diff --git a/src/widgets/styles/qpixmapstyle.cpp b/src/widgets/styles/qpixmapstyle.cpp
index 88482d28c9..63308a5e36 100644
--- a/src/widgets/styles/qpixmapstyle.cpp
+++ b/src/widgets/styles/qpixmapstyle.cpp
@@ -52,10 +52,16 @@
#include <QProgressBar>
#include <QSlider>
#include <QEvent>
+#if QT_CONFIG(combobox)
#include <QComboBox>
+#endif
+#if QT_CONFIG(itemviews)
#include <QAbstractItemView>
-#include <QListView>
#include <QStyledItemDelegate>
+#endif
+#if QT_CONFIG(listview)
+#include <QListView>
+#endif
#include <QAbstractScrollArea>
#include <QScrollBar>
diff --git a/src/widgets/styles/qstyleoption.cpp b/src/widgets/styles/qstyleoption.cpp
index 51fecd0d13..a346ee18c4 100644
--- a/src/widgets/styles/qstyleoption.cpp
+++ b/src/widgets/styles/qstyleoption.cpp
@@ -1227,7 +1227,7 @@ QStyleOptionToolBar::QStyleOptionToolBar(int version)
#endif
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
/*!
\class QStyleOptionTab
\brief The QStyleOptionTab class is used to describe the
@@ -1475,7 +1475,7 @@ QStyleOptionTab::QStyleOptionTab(int version)
The default value is QSize(-1, -1), i.e. an invalid size;
*/
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
/*!
\class QStyleOptionProgressBar
@@ -2996,7 +2996,7 @@ QStyleOptionTitleBar::QStyleOptionTitleBar(int version)
\sa Qt::WindowFlags
*/
-#ifndef QT_NO_ITEMVIEWS
+#if QT_CONFIG(itemviews)
/*!
\class QStyleOptionViewItem
\brief The QStyleOptionViewItem class is used to describe the
@@ -3263,7 +3263,7 @@ QStyleOptionViewItem::QStyleOptionViewItem(int version)
therefore both at the beginning and the end.
*/
-#endif // QT_NO_ITEMVIEWS
+#endif // QT_CONFIG(itemviews)
/*!
\fn T qstyleoption_cast<T>(const QStyleOption *option)
\relates QStyleOption
@@ -3286,7 +3286,7 @@ QStyleOptionViewItem::QStyleOptionViewItem(int version)
Returns a T or 0 depending on the type of the given \a option.
*/
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
/*!
\class QStyleOptionTabWidgetFrame
\brief The QStyleOptionTabWidgetFrame class is used to describe the
@@ -3430,9 +3430,9 @@ QStyleOptionTabWidgetFrame::QStyleOptionTabWidgetFrame(int version)
and the height set to 0.
*/
-#endif // QT_NO_TABWIDGET
+#endif // QT_CONFIG(tabwidget)
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
/*!
\class QStyleOptionTabBarBase
@@ -3552,7 +3552,7 @@ QStyleOptionTabBarBase::QStyleOptionTabBarBase(int version)
The default value is false;
*/
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
#ifndef QT_NO_SIZEGRIP
/*!
diff --git a/src/widgets/styles/qstyleoption.h b/src/widgets/styles/qstyleoption.h
index a3ed35c762..af97479ef0 100644
--- a/src/widgets/styles/qstyleoption.h
+++ b/src/widgets/styles/qstyleoption.h
@@ -47,13 +47,17 @@
#include <QtGui/qmatrix.h>
#include <QtWidgets/qslider.h>
#include <QtWidgets/qstyle.h>
+#if QT_CONFIG(tabbar)
#include <QtWidgets/qtabbar.h>
+#endif
+#if QT_CONFIG(tabwidget)
#include <QtWidgets/qtabwidget.h>
+#endif
#if QT_CONFIG(rubberband)
#include <QtWidgets/qrubberband.h>
#endif
#include <QtWidgets/qframe.h>
-#ifndef QT_NO_ITEMVIEWS
+#if QT_CONFIG(itemviews)
# include <QtCore/qabstractitemmodel.h>
#endif
@@ -143,7 +147,7 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionFrame::FrameFeatures)
typedef Q_DECL_DEPRECATED QStyleOptionFrame QStyleOptionFrameV2;
typedef Q_DECL_DEPRECATED QStyleOptionFrame QStyleOptionFrameV3;
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
class Q_WIDGETS_EXPORT QStyleOptionTabWidgetFrame : public QStyleOption
{
public:
@@ -168,10 +172,10 @@ protected:
};
typedef Q_DECL_DEPRECATED QStyleOptionTabWidgetFrame QStyleOptionTabWidgetFrameV2;
-#endif // QT_NO_TABWIDGET
+#endif // QT_CONFIG(tabwidget)
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
class Q_WIDGETS_EXPORT QStyleOptionTabBarBase : public QStyleOption
{
public:
@@ -191,7 +195,7 @@ protected:
};
typedef Q_DECL_DEPRECATED QStyleOptionTabBarBase QStyleOptionTabBarBaseV2;
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
class Q_WIDGETS_EXPORT QStyleOptionHeader : public QStyleOption
{
@@ -245,7 +249,7 @@ protected:
Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionButton::ButtonFeatures)
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
class Q_WIDGETS_EXPORT QStyleOptionTab : public QStyleOption
{
public:
@@ -284,7 +288,7 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionTab::CornerWidgets)
typedef Q_DECL_DEPRECATED QStyleOptionTab QStyleOptionTabV2;
typedef Q_DECL_DEPRECATED QStyleOptionTab QStyleOptionTabV3;
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
#ifndef QT_NO_TOOLBAR
@@ -388,7 +392,7 @@ protected:
typedef Q_DECL_DEPRECATED QStyleOptionDockWidget QStyleOptionDockWidgetV2;
-#ifndef QT_NO_ITEMVIEWS
+#if QT_CONFIG(itemviews)
class Q_WIDGETS_EXPORT QStyleOptionViewItem : public QStyleOption
{
@@ -443,7 +447,7 @@ typedef Q_DECL_DEPRECATED QStyleOptionViewItem QStyleOptionViewItemV2;
typedef Q_DECL_DEPRECATED QStyleOptionViewItem QStyleOptionViewItemV3;
typedef Q_DECL_DEPRECATED QStyleOptionViewItem QStyleOptionViewItemV4;
-#endif // QT_NO_ITEMVIEWS
+#endif // QT_CONFIG(itemviews)
class Q_WIDGETS_EXPORT QStyleOptionToolBox : public QStyleOption
{
diff --git a/src/widgets/styles/qstylesheetstyle.cpp b/src/widgets/styles/qstylesheetstyle.cpp
index 4fe697a32f..b42876d72e 100644
--- a/src/widgets/styles/qstylesheetstyle.cpp
+++ b/src/widgets/styles/qstylesheetstyle.cpp
@@ -51,7 +51,9 @@
#include <qstyleoption.h>
#include <qlineedit.h>
#include <private/qwindowsstyle_p.h>
+#if QT_CONFIG(combobox)
#include <qcombobox.h>
+#endif
#include "private/qcssparser_p.h"
#include "private/qmath_p.h"
#include <qabstractscrollarea.h>
@@ -69,13 +71,19 @@
#include <qcheckbox.h>
#endif
#include <qstatusbar.h>
+#if QT_CONFIG(itemviews)
#include <qheaderview.h>
+#endif
#include <private/qwindowsstyle_p_p.h>
#include <private/qstyleanimation_p.h>
+#if QT_CONFIG(tabbar)
#include <qtabbar.h>
+#endif
#include <QMetaProperty>
#include <qmainwindow.h>
+#if QT_CONFIG(dockwidget)
#include <qdockwidget.h>
+#endif
#include <qmdisubwindow.h>
#if QT_CONFIG(dialog)
#include <qdialog.h>
@@ -1641,7 +1649,7 @@ int QStyleSheetStyle::nativeFrameWidth(const QWidget *w)
return base->pixelMetric(QStyle::PM_SpinBoxFrameWidth, 0, w);
#endif
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
if (qobject_cast<const QComboBox *>(w))
return base->pixelMetric(QStyle::PM_ComboBoxFrameWidth, 0, w);
#endif
@@ -1719,7 +1727,7 @@ static quint64 pseudoClass(QStyle::State state)
static void qt_check_if_internal_object(const QObject **obj, int *element)
{
-#ifdef QT_NO_DOCKWIDGET
+#if !QT_CONFIG(dockwidget)
Q_UNUSED(obj);
Q_UNUSED(element);
#else
@@ -1885,7 +1893,7 @@ QRenderRule QStyleSheetStyle::renderRule(const QObject *obj, const QStyleOption
extraClass |= PseudoClass_NextSelected;
else if (hdr->selectedPosition == QStyleOptionHeader::PreviousIsSelected)
extraClass |= PseudoClass_PreviousSelected;
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
} else if (const QStyleOptionTabWidgetFrame *tab = qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(opt)) {
switch (tab->shape) {
case QTabBar::RoundedNorth:
@@ -1908,7 +1916,7 @@ QRenderRule QStyleSheetStyle::renderRule(const QObject *obj, const QStyleOption
break;
}
#endif
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
} else if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(opt)) {
if (tab->position == QStyleOptionTab::OnlyOneTab)
extraClass |= PseudoClass_OnlyOne;
@@ -1944,7 +1952,7 @@ QRenderRule QStyleSheetStyle::renderRule(const QObject *obj, const QStyleOption
default:
break;
}
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
} else if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(opt)) {
if (btn->features & QStyleOptionButton::Flat)
extraClass |= PseudoClass_Flat;
@@ -1994,7 +2002,7 @@ QRenderRule QStyleSheetStyle::renderRule(const QObject *obj, const QStyleOption
extraClass |= PseudoClass_PreviousSelected;
}
#endif // QT_NO_TOOLBOX
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
else if (const QStyleOptionDockWidget *dw = qstyleoption_cast<const QStyleOptionDockWidget *>(opt)) {
if (dw->verticalTitleBar)
extraClass |= PseudoClass_Vertical;
@@ -2007,8 +2015,8 @@ QRenderRule QStyleSheetStyle::renderRule(const QObject *obj, const QStyleOption
if (dw->movable)
extraClass |= PseudoClass_Movable;
}
-#endif // QT_NO_DOCKWIDGET
-#ifndef QT_NO_ITEMVIEWS
+#endif // QT_CONFIG(dockwidget)
+#if QT_CONFIG(itemviews)
else if (const QStyleOptionViewItem *vopt = qstyleoption_cast<const QStyleOptionViewItem *>(opt)) {
if (vopt->features & QStyleOptionViewItem::Alternate)
extraClass |= PseudoClass_Alternate;
@@ -2340,7 +2348,7 @@ QRect QStyleSheetStyle::positionRect(const QWidget *w, const QRenderRule& rule1,
*/
static QWidget *embeddedWidget(QWidget *w)
{
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
if (QComboBox *cmb = qobject_cast<QComboBox *>(w)) {
if (cmb->isEditable())
return cmb->lineEdit();
@@ -2374,7 +2382,7 @@ static QWidget *containerWidget(const QWidget *w)
#ifndef QT_NO_LINEEDIT
if (qobject_cast<const QLineEdit *>(w)) {
//if the QLineEdit is an embeddedWidget, we need the rule of the real widget
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
if (qobject_cast<const QComboBox *>(w->parentWidget()))
return w->parentWidget();
#endif
@@ -2413,7 +2421,7 @@ static bool unstylable(const QWidget *w)
// detect QComboBoxPrivateContainer
else if (qobject_cast<const QFrame *>(w)) {
if (0
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
|| qobject_cast<const QComboBox *>(w->parentWidget())
#endif
)
@@ -2421,7 +2429,7 @@ static bool unstylable(const QWidget *w)
}
#endif
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (w->metaObject() == &QWidget::staticMetaObject
&& qobject_cast<const QTabBar*>(w->parentWidget()))
return true; // The moving tab of a QTabBar
@@ -2438,7 +2446,7 @@ static quint64 extendedPseudoClass(const QWidget *w)
pc |= ((slider->orientation() == Qt::Vertical) ? PseudoClass_Vertical : PseudoClass_Horizontal);
} else
#endif
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
if (const QComboBox *combo = qobject_cast<const QComboBox *>(w)) {
if (combo->isEditable())
pc |= (combo->isEditable() ? PseudoClass_Editable : PseudoClass_ReadOnly);
@@ -2805,10 +2813,10 @@ void QStyleSheetStyle::polish(QWidget *w)
QRenderRule rule = renderRule(w, PseudoElement_None, PseudoClass_Any);
if (rule.hasDrawable() || rule.hasBox()) {
if (w->metaObject() == &QWidget::staticMetaObject
-#ifndef QT_NO_ITEMVIEWS
+#if QT_CONFIG(itemviews)
|| qobject_cast<QHeaderView *>(w)
#endif
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
|| qobject_cast<QTabBar *>(w)
#endif
#ifndef QT_NO_FRAME
@@ -2912,7 +2920,7 @@ void QStyleSheetStyle::unpolish(QApplication *app)
styleSheetCaches->styleSheetCache.remove(qApp);
}
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
inline static bool verticalTabs(QTabBar::Shape shape)
{
return shape == QTabBar::RoundedWest
@@ -2920,7 +2928,7 @@ inline static bool verticalTabs(QTabBar::Shape shape)
|| shape == QTabBar::TriangularWest
|| shape == QTabBar::TriangularEast;
}
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
void QStyleSheetStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p,
const QWidget *w) const
@@ -3771,7 +3779,7 @@ void QStyleSheetStyle::drawControl(ControlElement ce, const QStyleOption *opt, Q
}
return;
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
case CE_ComboBoxLabel:
if (!rule.hasBox())
break;
@@ -3807,7 +3815,7 @@ void QStyleSheetStyle::drawControl(ControlElement ce, const QStyleOption *opt, Q
return;
}
break;
-#endif // QT_NO_COMBOBOX
+#endif // QT_CONFIG(combobox)
case CE_Header:
if (hasStyleRule(w, PseudoElement_HeaderViewUpArrow)
@@ -4069,7 +4077,7 @@ void QStyleSheetStyle::drawControl(ControlElement ce, const QStyleOption *opt, Q
fallback = true;
break;
-#ifndef QT_NO_ITEMVIEWS
+#if QT_CONFIG(itemviews)
case CE_ItemViewItem:
if (const QStyleOptionViewItem *vopt = qstyleoption_cast<const QStyleOptionViewItem *>(opt)) {
QRenderRule subRule = renderRule(w, opt, PseudoElement_ViewItem);
@@ -4086,9 +4094,9 @@ void QStyleSheetStyle::drawControl(ControlElement ce, const QStyleOption *opt, Q
return;
}
break;
-#endif // QT_NO_ITEMVIEWS
+#endif // QT_CONFIG(itemviews)
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
case CE_TabBarTab:
if (hasStyleRule(w, PseudoElement_TabBarTab)) {
QWindowsStyle::drawControl(ce, opt, p, w);
@@ -4123,7 +4131,7 @@ void QStyleSheetStyle::drawControl(ControlElement ce, const QStyleOption *opt, Q
return;
}
break;
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
case CE_ColumnViewGrip:
if (rule.hasDrawable()) {
@@ -4477,7 +4485,7 @@ void QStyleSheetStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *op
rule.drawBorder(p, opt->rect);
return;
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
case PE_FrameTabWidget:
if (const QStyleOptionTabWidgetFrame *frm = qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(opt)) {
QRenderRule subRule = renderRule(w, opt, PseudoElement_TabWidgetPane);
@@ -4492,7 +4500,7 @@ void QStyleSheetStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *op
return;
}
break;
-#endif // QT_NO_TABWIDGET
+#endif // QT_CONFIG(tabwidget)
case PE_IndicatorProgressChunk:
pseudoElement = PseudoElement_ProgressBarChunk;
@@ -4530,7 +4538,7 @@ void QStyleSheetStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *op
case PE_IndicatorSpinPlus:
pseudoElement = PseudoElement_SpinBoxUpArrow;
break;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
case PE_IndicatorTabClose:
if (w)
w = w->parentWidget(); //match on the QTabBar instead of the CloseButton
@@ -4790,7 +4798,7 @@ int QStyleSheetStyle::pixelMetric(PixelMetric m, const QStyleOption *opt, const
}
break;
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
case PM_TabBarTabHSpace:
case PM_TabBarTabVSpace:
subRule = renderRule(w, opt, PseudoElement_TabBarTab);
@@ -4823,7 +4831,7 @@ int QStyleSheetStyle::pixelMetric(PixelMetric m, const QStyleOption *opt, const
}
break;
}
-#endif // QT_NO_TABWIDGET
+#endif // QT_CONFIG(tabwidget)
case PM_SliderThickness: // horizontal slider's height (sizeHint)
case PM_SliderLength: // minimum length of slider
@@ -5051,7 +5059,7 @@ QSize QStyleSheetStyle::sizeFromContents(ContentsType ct, const QStyleOption *op
return rule.boxSize(sz);
break;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
case CT_TabBarTab: {
QRenderRule subRule = renderRule(w, opt, PseudoElement_TabBarTab);
if (subRule.hasBox() || !subRule.hasNativeBorder()) {
@@ -5075,7 +5083,7 @@ QSize QStyleSheetStyle::sizeFromContents(ContentsType ct, const QStyleOption *op
sz = subRule.adjustSize(csz);
break;
}
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
case CT_MdiControls:
if (const QStyleOptionComplex *ccOpt = qstyleoption_cast<const QStyleOptionComplex *>(opt)) {
@@ -5107,7 +5115,7 @@ QSize QStyleSheetStyle::sizeFromContents(ContentsType ct, const QStyleOption *op
}
break;
-#ifndef QT_NO_ITEMVIEWS
+#if QT_CONFIG(itemviews)
case CT_ItemViewItem: {
QRenderRule subRule = renderRule(w, opt, PseudoElement_ViewItem);
sz = baseStyle()->sizeFromContents(ct, opt, csz, w);
@@ -5116,7 +5124,7 @@ QSize QStyleSheetStyle::sizeFromContents(ContentsType ct, const QStyleOption *op
sz = subRule.boxSize(sz);
return sz;
}
-#endif // QT_NO_ITEMVIEWS
+#endif // QT_CONFIG(itemviews)
default:
break;
@@ -5275,16 +5283,16 @@ int QStyleSheetStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWi
case SH_ScrollBar_RollBetweenButtons: s = QLatin1String("scrollbar-roll-between-buttons"); break;
case SH_ScrollBar_ScrollWhenPointerLeavesControl: s = QLatin1String("scrollbar-scroll-when-pointer-leaves-control"); break;
case SH_TabBar_Alignment:
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
if (qobject_cast<const QTabWidget *>(w)) {
rule = renderRule(w, opt, PseudoElement_TabWidgetTabBar);
if (rule.hasPosition())
return rule.position()->position;
}
-#endif // QT_NO_TABWIDGET
+#endif // QT_CONFIG(tabwidget)
s = QLatin1String("alignment");
break;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
case SH_TabBar_CloseButtonPosition:
rule = renderRule(w, opt, PseudoElement_TabBarTabCloseButton);
if (rule.hasPosition()) {
@@ -5299,7 +5307,7 @@ int QStyleSheetStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWi
case SH_TabBar_ElideMode: s = QLatin1String("tabbar-elide-mode"); break;
case SH_TabBar_PreferNoArrows: s = QLatin1String("tabbar-prefer-no-arrows"); break;
case SH_ComboBox_PopupFrameStyle:
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
if (qobject_cast<const QComboBox *>(w)) {
QAbstractItemView *view = w->findChild<QAbstractItemView *>();
if (view) {
@@ -5309,7 +5317,7 @@ int QStyleSheetStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWi
return QFrame::NoFrame;
}
}
-#endif // QT_NO_COMBOBOX
+#endif // QT_CONFIG(combobox)
break;
case SH_DialogButtonBox_ButtonsHaveIcons: s = QLatin1String("dialogbuttonbox-buttons-have-icons"); break;
case SH_Workspace_FillSpaceOnMaximize: s = QLatin1String("mdi-fill-space-on-maximize"); break;
@@ -5692,7 +5700,7 @@ QRect QStyleSheetStyle::subElementRect(SubElement se, const QStyleOption *opt, c
RECURSION_GUARD(return baseStyle()->subElementRect(se, opt, w))
QRenderRule rule = renderRule(w, opt);
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
int pe = PseudoElement_None;
#endif
@@ -5758,7 +5766,7 @@ QRect QStyleSheetStyle::subElementRect(SubElement se, const QStyleOption *opt, c
case SE_CheckBoxClickRect: // relies on indicator and contents
return ParentStyle::subElementRect(se, opt, w);
-#ifndef QT_NO_ITEMVIEWS
+#if QT_CONFIG(itemviews)
case SE_ViewItemCheckIndicator:
if (!qstyleoption_cast<const QStyleOptionViewItem *>(opt)) {
return subElementRect(SE_CheckBoxIndicator, opt, w);
@@ -5787,7 +5795,7 @@ QRect QStyleSheetStyle::subElementRect(SubElement se, const QStyleOption *opt, c
}
}
break;
-#endif // QT_NO_ITEMVIEWS
+#endif // QT_CONFIG(itemviews)
case SE_HeaderArrow: {
QRenderRule subRule = renderRule(w, opt, PseudoElement_HeaderViewUpArrow);
@@ -5820,7 +5828,7 @@ QRect QStyleSheetStyle::subElementRect(SubElement se, const QStyleOption *opt, c
}
break;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
case SE_TabWidgetLeftCorner:
pe = PseudoElement_TabWidgetLeftCorner;
// intentionally falls through
@@ -5887,7 +5895,7 @@ QRect QStyleSheetStyle::subElementRect(SubElement se, const QStyleOption *opt, c
}
break;
}
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
case SE_DockWidgetCloseButton:
case SE_DockWidgetFloatButton: {
diff --git a/src/widgets/styles/qwindowsstyle.cpp b/src/widgets/styles/qwindowsstyle.cpp
index f805e29db1..63f7cd43ef 100644
--- a/src/widgets/styles/qwindowsstyle.cpp
+++ b/src/widgets/styles/qwindowsstyle.cpp
@@ -55,7 +55,9 @@
#include "qrubberband.h"
#endif
#include "qstyleoption.h"
+#if QT_CONFIG(tabbar)
#include "qtabbar.h"
+#endif
#include "qwidget.h"
#include "qdebug.h"
#include "qmainwindow.h"
@@ -65,7 +67,9 @@
#if QT_CONFIG(wizard)
#include "qwizard.h"
#endif
+#if QT_CONFIG(listview)
#include "qlistview.h"
+#endif
#include <private/qmath_p.h>
#include <qmath.h>
#include <QtGui/qscreen.h>
@@ -332,7 +336,7 @@ int QWindowsStylePrivate::fixedPixelMetric(QStyle::PixelMetric pm)
break;
case QStyle::PM_DockWidgetSeparatorExtent:
return 4;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
case QStyle::PM_TabBarTabShiftHorizontal:
return 0;
case QStyle::PM_TabBarTabShiftVertical:
@@ -548,7 +552,7 @@ int QWindowsStyle::styleHint(StyleHint hint, const QStyleOption *opt, const QWid
break;
case SH_ItemView_ShowDecorationSelected:
-#ifndef QT_NO_LISTVIEW
+#if QT_CONFIG(listview)
if (qobject_cast<const QListView*>(widget))
ret = 1;
#endif
@@ -715,7 +719,7 @@ void QWindowsStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt,
case PE_FrameButtonTool:
case PE_PanelButtonTool: {
QPen oldPen = p->pen();
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
if (w && w->inherits("QDockWidgetTitleButton")) {
if (const QWidget *dw = w->parentWidget())
if (dw->isWindow()){
@@ -725,7 +729,7 @@ void QWindowsStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt,
return;
}
}
-#endif // QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
QBrush fill;
bool stippled;
bool panel = (pe == PE_PanelButtonTool);
@@ -1020,7 +1024,7 @@ void QWindowsStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt,
popupPal.setColor(QPalette::Midlight, opt->palette.light().color());
qDrawWinPanel(p, opt->rect, popupPal, opt->state & State_Sunken);
break; }
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
case PE_IndicatorDockWidgetResizeHandle:
break;
case PE_FrameDockWidget:
@@ -1028,7 +1032,7 @@ void QWindowsStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt,
proxy()->drawPrimitive(QStyle::PE_FrameWindow, opt, p, w);
}
break;
-#endif // QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
case PE_FrameStatusBarItem:
qDrawShadePanel(p, opt->rect, opt->palette, true, 1, 0);
@@ -1281,7 +1285,7 @@ void QWindowsStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPai
}
break;
#endif // QT_NO_MENUBAR
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
case CE_TabBarTabShape:
if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(opt)) {
bool rtlHorTabs = (tab->direction == Qt::RightToLeft
@@ -1484,7 +1488,7 @@ void QWindowsStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPai
}
}
break;
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
case CE_ToolBoxTabShape:
qDrawShadePanel(p, opt->rect, opt->palette,
opt->state & (State_Sunken | State_On), 1,
@@ -1617,6 +1621,7 @@ void QWindowsStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPai
default:
break;
}
+ Q_FALLTHROUGH(); // It continues in the end of the next case
case Qt::TopToolBarArea :
switch(toolbar->positionWithinLine){
case QStyleOptionToolBar::Beginning:
@@ -1782,7 +1787,7 @@ void QWindowsStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPai
}
break;
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
case CE_DockWidgetTitle:
if (const QStyleOptionDockWidget *dwOpt = qstyleoption_cast<const QStyleOptionDockWidget *>(opt)) {
@@ -1856,8 +1861,8 @@ void QWindowsStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPai
p->restore();
}
return;
-#endif // QT_NO_DOCKWIDGET
-#ifndef QT_NO_COMBOBOX
+#endif // QT_CONFIG(dockwidget)
+#if QT_CONFIG(combobox)
case CE_ComboBoxLabel:
if (const QStyleOptionComboBox *cb = qstyleoption_cast<const QStyleOptionComboBox *>(opt)) {
if (cb->state & State_HasFocus) {
@@ -1870,7 +1875,7 @@ void QWindowsStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPai
}
QCommonStyle::drawControl(ce, opt, p, widget);
break;
-#endif // QT_NO_COMBOBOX
+#endif // QT_CONFIG(combobox)
default:
QCommonStyle::drawControl(ce, opt, p, widget);
}
@@ -2148,7 +2153,7 @@ void QWindowsStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComp
}
break;
#endif // QT_NO_SCROLLBAR
-#ifndef QT_NO_COMBOBOX
+#if QT_CONFIG(combobox)
case CC_ComboBox:
if (const QStyleOptionComboBox *cmb = qstyleoption_cast<const QStyleOptionComboBox *>(opt)) {
QBrush editBrush = cmb->palette.brush(QPalette::Base);
@@ -2221,7 +2226,7 @@ void QWindowsStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComp
}
}
break;
-#endif // QT_NO_COMBOBOX
+#endif // QT_CONFIG(combobox)
#ifndef QT_NO_SPINBOX
case CC_SpinBox:
if (const QStyleOptionSpinBox *sb = qstyleoption_cast<const QStyleOptionSpinBox *>(opt)) {
diff --git a/src/widgets/util/qcompleter.cpp b/src/widgets/util/qcompleter.cpp
index 96f91188b8..3a1821240e 100644
--- a/src/widgets/util/qcompleter.cpp
+++ b/src/widgets/util/qcompleter.cpp
@@ -147,12 +147,16 @@
#include "QtWidgets/qscrollbar.h"
#include "QtCore/qstringlistmodel.h"
+#if QT_CONFIG(dirmodel)
#include "QtWidgets/qdirmodel.h"
+#endif
#if QT_CONFIG(filesystemmodel)
#include "QtWidgets/qfilesystemmodel.h"
#endif
#include "QtWidgets/qheaderview.h"
+#if QT_CONFIG(listview)
#include "QtWidgets/qlistview.h"
+#endif
#include "QtWidgets/qapplication.h"
#include "QtGui/qevent.h"
#include "QtWidgets/qdesktopwidget.h"
@@ -463,7 +467,7 @@ QMatchData QCompletionEngine::filterHistory()
if (curParts.count() <= 1 || c->proxy->showAll || !source)
return QMatchData();
-#ifndef QT_NO_DIRMODEL
+#if QT_CONFIG(dirmodel)
const bool isDirModel = (qobject_cast<QDirModel *>(source) != 0);
#else
const bool isDirModel = false;
@@ -833,11 +837,11 @@ void QCompleterPrivate::init(QAbstractItemModel *m)
proxy = new QCompletionModel(this, q);
QObject::connect(proxy, SIGNAL(rowsAdded()), q, SLOT(_q_autoResizePopup()));
q->setModel(m);
-#ifdef QT_NO_LISTVIEW
+#if !QT_CONFIG(listview)
q->setCompletionMode(QCompleter::InlineCompletion);
#else
q->setCompletionMode(QCompleter::PopupCompletion);
-#endif // QT_NO_LISTVIEW
+#endif // QT_CONFIG(listview)
}
void QCompleterPrivate::setCurrentIndex(QModelIndex index, bool select)
@@ -884,7 +888,7 @@ void QCompleterPrivate::_q_complete(QModelIndex index, bool highlighted)
QModelIndex si = proxy->mapToSource(index);
si = si.sibling(si.row(), column); // for clicked()
completion = q->pathFromIndex(si);
-#ifndef QT_NO_DIRMODEL
+#if QT_CONFIG(dirmodel)
// add a trailing separator in inline
if (mode == QCompleter::InlineCompletion) {
if (qobject_cast<QDirModel *>(proxy->sourceModel()) && QFileInfo(completion).isDir())
@@ -1072,7 +1076,7 @@ void QCompleter::setModel(QAbstractItemModel *model)
setPopup(d->popup); // set the model and make new connections
if (oldModel && oldModel->QObject::parent() == this)
delete oldModel;
-#ifndef QT_NO_DIRMODEL
+#if QT_CONFIG(dirmodel)
if (qobject_cast<QDirModel *>(model)) {
#if defined(Q_OS_WIN)
setCaseSensitivity(Qt::CaseInsensitive);
@@ -1080,7 +1084,7 @@ void QCompleter::setModel(QAbstractItemModel *model)
setCaseSensitivity(Qt::CaseSensitive);
#endif
}
-#endif // QT_NO_DIRMODEL
+#endif // QT_CONFIG(dirmodel)
#if QT_CONFIG(filesystemmodel)
QFileSystemModel *fsModel = qobject_cast<QFileSystemModel *>(model);
if (fsModel) {
@@ -1231,7 +1235,7 @@ void QCompleter::setPopup(QAbstractItemView *popup)
popup->setFocusProxy(d->widget);
popup->installEventFilter(this);
popup->setItemDelegate(new QCompleterItemDelegate(popup));
-#ifndef QT_NO_LISTVIEW
+#if QT_CONFIG(listview)
if (QListView *listView = qobject_cast<QListView *>(popup)) {
listView->setModelColumn(d->column);
}
@@ -1255,7 +1259,7 @@ void QCompleter::setPopup(QAbstractItemView *popup)
QAbstractItemView *QCompleter::popup() const
{
Q_D(const QCompleter);
-#ifndef QT_NO_LISTVIEW
+#if QT_CONFIG(listview)
if (!d->popup && completionMode() != QCompleter::InlineCompletion) {
QListView *listView = new QListView;
listView->setEditTriggers(QAbstractItemView::NoEditTriggers);
@@ -1266,7 +1270,7 @@ QAbstractItemView *QCompleter::popup() const
QCompleter *that = const_cast<QCompleter*>(this);
that->setPopup(listView);
}
-#endif // QT_NO_LISTVIEW
+#endif // QT_CONFIG(listview)
return d->popup;
}
@@ -1597,7 +1601,7 @@ void QCompleter::setCompletionColumn(int column)
Q_D(QCompleter);
if (d->column == column)
return;
-#ifndef QT_NO_LISTVIEW
+#if QT_CONFIG(listview)
if (QListView *listView = qobject_cast<QListView *>(d->popup))
listView->setModelColumn(column);
#endif
@@ -1786,7 +1790,7 @@ QString QCompleter::pathFromIndex(const QModelIndex& index) const
return QString();
bool isDirModel = false;
bool isFsModel = false;
-#ifndef QT_NO_DIRMODEL
+#if QT_CONFIG(dirmodel)
isDirModel = qobject_cast<QDirModel *>(d->proxy->sourceModel()) != 0;
#endif
#if QT_CONFIG(filesystemmodel)
@@ -1835,12 +1839,12 @@ QStringList QCompleter::splitPath(const QString& path) const
{
bool isDirModel = false;
bool isFsModel = false;
-#ifndef QT_NO_DIRMODEL
+#if QT_CONFIG(dirmodel)
Q_D(const QCompleter);
isDirModel = qobject_cast<QDirModel *>(d->proxy->sourceModel()) != 0;
#endif
#if QT_CONFIG(filesystemmodel)
-#ifdef QT_NO_DIRMODEL
+#if !QT_CONFIG(dirmodel)
Q_D(const QCompleter);
#endif
isFsModel = qobject_cast<QFileSystemModel *>(d->proxy->sourceModel()) != 0;
diff --git a/src/widgets/widgets/qabstractbutton.cpp b/src/widgets/widgets/qabstractbutton.cpp
index e65613d5cd..1d78d24a88 100644
--- a/src/widgets/widgets/qabstractbutton.cpp
+++ b/src/widgets/widgets/qabstractbutton.cpp
@@ -40,7 +40,9 @@
#include "private/qabstractbutton_p.h"
#include "private/qbuttongroup_p.h"
+#if QT_CONFIG(itemviews)
#include "qabstractitemview.h"
+#endif
#include "qbuttongroup.h"
#include "qabstractbutton_p.h"
#include "qevent.h"
@@ -1071,7 +1073,7 @@ void QAbstractButton::keyPressEvent(QKeyEvent *e)
#ifndef QT_NO_BUTTONGROUP
|| d->group
#endif
-#ifndef QT_NO_ITEMVIEWS
+#if QT_CONFIG(itemviews)
|| (pw && qobject_cast<QAbstractItemView *>(pw->parentWidget()))
#endif
) {
diff --git a/src/widgets/widgets/qabstractscrollarea.cpp b/src/widgets/widgets/qabstractscrollarea.cpp
index 673983d575..14498c8b90 100644
--- a/src/widgets/widgets/qabstractscrollarea.cpp
+++ b/src/widgets/widgets/qabstractscrollarea.cpp
@@ -50,7 +50,9 @@
#include "qboxlayout.h"
#include "qpainter.h"
#include "qmargins.h"
+#if QT_CONFIG(itemviews)
#include "qheaderview.h"
+#endif
#include <QDebug>
diff --git a/src/widgets/widgets/qcalendarwidget.cpp b/src/widgets/widgets/qcalendarwidget.cpp
index b96492d623..94911d1cb1 100644
--- a/src/widgets/widgets/qcalendarwidget.cpp
+++ b/src/widgets/widgets/qcalendarwidget.cpp
@@ -39,8 +39,6 @@
#include "qcalendarwidget.h"
-#ifndef QT_NO_CALENDARWIDGET
-
#include <qabstractitemmodel.h>
#include <qitemdelegate.h>
#include <qdatetime.h>
@@ -3129,5 +3127,3 @@ QT_END_NAMESPACE
#include "qcalendarwidget.moc"
#include "moc_qcalendarwidget.cpp"
-
-#endif //QT_NO_CALENDARWIDGET
diff --git a/src/widgets/widgets/qcalendarwidget.h b/src/widgets/widgets/qcalendarwidget.h
index 7780065117..29e2ff698b 100644
--- a/src/widgets/widgets/qcalendarwidget.h
+++ b/src/widgets/widgets/qcalendarwidget.h
@@ -44,10 +44,9 @@
#include <QtWidgets/qwidget.h>
#include <QtCore/qdatetime.h>
-QT_BEGIN_NAMESPACE
-
+QT_REQUIRE_CONFIG(calendarwidget);
-#ifndef QT_NO_CALENDARWIDGET
+QT_BEGIN_NAMESPACE
class QDate;
class QTextCharFormat;
@@ -184,9 +183,6 @@ private:
};
-#endif // QT_NO_CALENDARWIDGET
-
QT_END_NAMESPACE
#endif // QCALENDARWIDGET_H
-
diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp
index 1259c236e4..58a1ff9e7f 100644
--- a/src/widgets/widgets/qcombobox.cpp
+++ b/src/widgets/widgets/qcombobox.cpp
@@ -39,7 +39,6 @@
#include "qcombobox.h"
-#ifndef QT_NO_COMBOBOX
#include <qstylepainter.h>
#include <qpa/qplatformtheme.h>
#include <qpa/qplatformmenu.h>
@@ -3508,5 +3507,3 @@ QT_END_NAMESPACE
#include "moc_qcombobox.cpp"
#include "moc_qcombobox_p.cpp"
-
-#endif // QT_NO_COMBOBOX
diff --git a/src/widgets/widgets/qcombobox.h b/src/widgets/widgets/qcombobox.h
index 8f99594a76..a6aac6f8aa 100644
--- a/src/widgets/widgets/qcombobox.h
+++ b/src/widgets/widgets/qcombobox.h
@@ -46,9 +46,9 @@
#include <QtCore/qabstractitemmodel.h>
#include <QtCore/qvariant.h>
-QT_BEGIN_NAMESPACE
+QT_REQUIRE_CONFIG(combobox);
-#ifndef QT_NO_COMBOBOX
+QT_BEGIN_NAMESPACE
class QAbstractItemView;
class QLineEdit;
@@ -277,8 +277,6 @@ inline void QComboBox::insertItem(int aindex, const QString &atext,
const QVariant &auserData)
{ insertItem(aindex, QIcon(), atext, auserData); }
-#endif // QT_NO_COMBOBOX
-
QT_END_NAMESPACE
#endif // QCOMBOBOX_H
diff --git a/src/widgets/widgets/qcombobox_p.h b/src/widgets/widgets/qcombobox_p.h
index 8d3b46a950..6bee9409ee 100644
--- a/src/widgets/widgets/qcombobox_p.h
+++ b/src/widgets/widgets/qcombobox_p.h
@@ -54,7 +54,6 @@
#include <QtWidgets/private/qtwidgetsglobal_p.h>
#include "QtWidgets/qcombobox.h"
-#ifndef QT_NO_COMBOBOX
#include "QtWidgets/qabstractslider.h"
#include "QtWidgets/qapplication.h"
#include "QtWidgets/qitemdelegate.h"
@@ -74,6 +73,8 @@
#include <limits.h>
+QT_REQUIRE_CONFIG(combobox);
+
QT_BEGIN_NAMESPACE
class QAction;
@@ -424,6 +425,4 @@ public:
QT_END_NAMESPACE
-#endif // QT_NO_COMBOBOX
-
#endif // QCOMBOBOX_P_H
diff --git a/src/widgets/widgets/qdatetimeedit_p.h b/src/widgets/widgets/qdatetimeedit_p.h
index bc70780de9..5ac5a9db6a 100644
--- a/src/widgets/widgets/qdatetimeedit_p.h
+++ b/src/widgets/widgets/qdatetimeedit_p.h
@@ -52,7 +52,6 @@
//
#include <QtWidgets/private/qtwidgetsglobal_p.h>
-#include "QtWidgets/qcombobox.h"
#include "QtWidgets/qcalendarwidget.h"
#include "QtWidgets/qspinbox.h"
#include "QtWidgets/qtoolbutton.h"
diff --git a/src/widgets/widgets/qdockarealayout.cpp b/src/widgets/widgets/qdockarealayout.cpp
index 60f6f6d26d..5edcbcf4ec 100644
--- a/src/widgets/widgets/qdockarealayout.cpp
+++ b/src/widgets/widgets/qdockarealayout.cpp
@@ -40,7 +40,9 @@
#include "QtWidgets/qapplication.h"
#include "QtWidgets/qwidget.h"
+#if QT_CONFIG(tabbar)
#include "QtWidgets/qtabbar.h"
+#endif
#include "QtWidgets/qstyle.h"
#include "QtWidgets/qdesktopwidget.h"
#include "QtWidgets/qapplication.h"
@@ -56,8 +58,6 @@
#include <qpainter.h>
#include <qstyleoption.h>
-#ifndef QT_NO_DOCKWIDGET
-
QT_BEGIN_NAMESPACE
// qmainwindow.cpp
@@ -214,7 +214,7 @@ QDockAreaLayoutItem
** QDockAreaLayoutInfo
*/
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
static quintptr tabId(const QDockAreaLayoutItem &item)
{
if (item.widgetItem == 0)
@@ -227,7 +227,7 @@ static const int zero = 0;
QDockAreaLayoutInfo::QDockAreaLayoutInfo()
: sep(&zero), dockPos(QInternal::LeftDock), o(Qt::Horizontal), mainWindow(0)
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
, tabbed(false), tabBar(0), tabBarShape(QTabBar::RoundedSouth)
#endif
{
@@ -237,11 +237,11 @@ QDockAreaLayoutInfo::QDockAreaLayoutInfo(const int *_sep, QInternal::DockPositio
Qt::Orientation _o, int tbshape,
QMainWindow *window)
: sep(_sep), dockPos(_dockPos), o(_o), mainWindow(window)
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
, tabbed(false), tabBar(0), tabBarShape(static_cast<QTabBar::Shape>(tbshape))
#endif
{
-#ifdef QT_NO_TABBAR
+#if !QT_CONFIG(tabbar)
Q_UNUSED(tbshape);
#endif
}
@@ -255,7 +255,7 @@ void QDockAreaLayoutInfo::clear()
{
item_list.clear();
rect = QRect();
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
tabbed = false;
tabBar = 0;
#endif
@@ -289,7 +289,7 @@ QSize QDockAreaLayoutInfo::minimumSize() const
continue;
QSize min_size = item.minimumSize();
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (tabbed) {
a = qMax(a, pick(o, min_size));
} else
@@ -308,7 +308,7 @@ QSize QDockAreaLayoutInfo::minimumSize() const
rpick(o, result) = a;
rperp(o, result) = b;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
QSize tbm = tabBarMinimumSize();
if (!tbm.isNull()) {
switch (tabBarShape) {
@@ -330,7 +330,7 @@ QSize QDockAreaLayoutInfo::minimumSize() const
break;
}
}
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
return result;
}
@@ -341,7 +341,7 @@ QSize QDockAreaLayoutInfo::maximumSize() const
return QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX);
int a = 0, b = QWIDGETSIZE_MAX;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (tabbed)
a = QWIDGETSIZE_MAX;
#endif
@@ -357,7 +357,7 @@ QSize QDockAreaLayoutInfo::maximumSize() const
QSize max_size = item.maximumSize();
min_perp = qMax(min_perp, perp(o, item.minimumSize()));
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (tabbed) {
a = qMin(a, pick(o, max_size));
} else
@@ -381,7 +381,7 @@ QSize QDockAreaLayoutInfo::maximumSize() const
rpick(o, result) = a;
rperp(o, result) = b;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
QSize tbh = tabBarSizeHint();
if (!tbh.isNull()) {
switch (tabBarShape) {
@@ -397,7 +397,7 @@ QSize QDockAreaLayoutInfo::maximumSize() const
break;
}
}
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
return result;
}
@@ -422,7 +422,7 @@ QSize QDockAreaLayoutInfo::sizeHint() const
min_perp = qMax(min_perp, perp(o, item.minimumSize()));
max_perp = qMin(max_perp, perp(o, item.maximumSize()));
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (tabbed) {
a = qMax(a, gap ? item.size : pick(o, size_hint));
} else
@@ -447,7 +447,7 @@ QSize QDockAreaLayoutInfo::sizeHint() const
rpick(o, result) = a;
rperp(o, result) = b;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (tabbed) {
QSize tbh = tabBarSizeHint();
switch (tabBarShape) {
@@ -469,7 +469,7 @@ QSize QDockAreaLayoutInfo::sizeHint() const
break;
}
}
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
return result;
}
@@ -545,7 +545,7 @@ static int realMaxSize(const QDockAreaLayoutInfo &info)
void QDockAreaLayoutInfo::fitItems()
{
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (tabbed) {
return;
}
@@ -759,7 +759,7 @@ QList<int> QDockAreaLayoutInfo::gapIndex(const QPoint& _pos,
QRect item_rect;
int item_index = 0;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (tabbed) {
item_rect = tabContentRect();
} else
@@ -779,7 +779,7 @@ QList<int> QDockAreaLayoutInfo::gapIndex(const QPoint& _pos,
continue;
if (item.subinfo != 0
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
&& !item.subinfo->tabbed
#endif
) {
@@ -941,7 +941,7 @@ static int separatorMoveHelper(QVector<QLayoutStruct> &list, int index, int delt
int QDockAreaLayoutInfo::separatorMove(int index, int delta)
{
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
Q_ASSERT(!tabbed);
#endif
@@ -1065,7 +1065,7 @@ QLayoutItem *QDockAreaLayoutInfo::unplug(const QList<int> &path)
Q_ASSERT(!(item.flags & QDockAreaLayoutItem::GapItem));
item.flags |= QDockAreaLayoutItem::GapItem;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (tabbed) {
} else
#endif
@@ -1081,7 +1081,7 @@ QLayoutItem *QDockAreaLayoutInfo::unplug(const QList<int> &path)
return item.widgetItem;
}
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
quintptr QDockAreaLayoutInfo::currentTabId() const
{
@@ -1113,7 +1113,7 @@ void QDockAreaLayoutInfo::setCurrentTabId(quintptr id)
}
}
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
static QRect dockedGeometry(QWidget *widget)
{
@@ -1146,7 +1146,7 @@ bool QDockAreaLayoutInfo::insertGap(const QList<int> &path, QLayoutItem *dockWid
QDockAreaLayoutItem &item = item_list[index];
if (item.subinfo == 0
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
|| (item.subinfo->tabbed && !insert_tabbed)
#endif
) {
@@ -1159,7 +1159,7 @@ bool QDockAreaLayoutInfo::insertGap(const QList<int> &path, QLayoutItem *dockWid
QRect r = subinfo == 0 ? widgetItem ? dockedGeometry(widgetItem->widget()) : placeHolderItem->topLevelRect : subinfo->rect;
Qt::Orientation opposite = o == Qt::Horizontal ? Qt::Vertical : Qt::Horizontal;
-#ifdef QT_NO_TABBAR
+#if !QT_CONFIG(tabbar)
const int tabBarShape = 0;
#endif
QDockAreaLayoutInfo *new_info
@@ -1177,7 +1177,7 @@ bool QDockAreaLayoutInfo::insertGap(const QList<int> &path, QLayoutItem *dockWid
new_item.size = pick(opposite, r.size());
new_item.pos = pick(opposite, r.topLeft());
new_info->item_list.append(new_item);
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (insert_tabbed) {
new_info->tabbed = true;
}
@@ -1192,7 +1192,7 @@ bool QDockAreaLayoutInfo::insertGap(const QList<int> &path, QLayoutItem *dockWid
gap_item.flags |= QDockAreaLayoutItem::GapItem;
gap_item.widgetItem = dockWidgetItem; // so minimumSize(), maximumSize() and
// sizeHint() will work
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (!tabbed)
#endif
{
@@ -1267,7 +1267,7 @@ QDockAreaLayoutInfo *QDockAreaLayoutInfo::info(QWidget *widget)
if (item.skip())
continue;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (tabbed && widget == tabBar)
return this;
#endif
@@ -1308,7 +1308,7 @@ QRect QDockAreaLayoutInfo::itemRect(int index, bool isGap) const
QRect result;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (tabbed) {
if (isGap || tabId(item) == currentTabId())
result = tabContentRect();
@@ -1357,7 +1357,7 @@ QRect QDockAreaLayoutInfo::itemRect(const QList<int> &path) const
QRect QDockAreaLayoutInfo::separatorRect(int index) const
{
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (tabbed)
return QRect();
#endif
@@ -1389,7 +1389,7 @@ QRect QDockAreaLayoutInfo::separatorRect(const QList<int> &path) const
QList<int> QDockAreaLayoutInfo::findSeparator(const QPoint &_pos) const
{
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (tabbed)
return QList<int>();
#endif
@@ -1500,7 +1500,7 @@ QDockWidget *QDockAreaLayoutInfo::apply(bool animate)
{
QWidgetAnimator &widgetAnimator = mainWindowLayout()->widgetAnimator;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (tabbed) {
QRect tab_rect;
QSize tbh = tabBarSizeHint();
@@ -1533,7 +1533,7 @@ QDockWidget *QDockAreaLayoutInfo::apply(bool animate)
widgetAnimator.animate(tabBar, tab_rect, animate);
}
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
QDockWidget *activated = nullptr;
@@ -1569,10 +1569,10 @@ QDockWidget *QDockAreaLayoutInfo::apply(bool animate)
}
}
}
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (*sep == 1)
updateSeparatorWidgets();
-#endif //QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
return activated;
}
@@ -1599,7 +1599,7 @@ QRegion QDockAreaLayoutInfo::separatorRegion() const
if (isEmpty())
return result;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (tabbed)
return result;
#endif
@@ -1629,7 +1629,7 @@ void QDockAreaLayoutInfo::paintSeparators(QPainter *p, QWidget *widget,
{
if (isEmpty())
return;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (tabbed)
return;
#endif
@@ -1678,7 +1678,7 @@ int QDockAreaLayoutInfo::prev(int index) const
void QDockAreaLayoutInfo::tab(int index, QLayoutItem *dockWidgetItem)
{
-#ifdef QT_NO_TABBAR
+#if !QT_CONFIG(tabbar)
Q_UNUSED(index);
Q_UNUSED(dockWidgetItem);
#else
@@ -1697,7 +1697,7 @@ void QDockAreaLayoutInfo::tab(int index, QLayoutItem *dockWidgetItem)
new_info->updateTabBar();
new_info->setCurrentTab(dockWidgetItem->widget());
}
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
}
void QDockAreaLayoutInfo::split(int index, Qt::Orientation orientation,
@@ -1706,7 +1706,7 @@ void QDockAreaLayoutInfo::split(int index, Qt::Orientation orientation,
if (orientation == o) {
item_list.insert(index + 1, QDockAreaLayoutItem(dockWidgetItem));
} else {
-#ifdef QT_NO_TABBAR
+#if !QT_CONFIG(tabbar)
const int tabBarShape = 0;
#endif
QDockAreaLayoutInfo *new_info
@@ -1787,7 +1787,7 @@ void QDockAreaLayoutInfo::deleteAllLayoutItems()
void QDockAreaLayoutInfo::saveState(QDataStream &stream) const
{
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (tabbed) {
stream << (uchar) TabMarker;
@@ -1802,7 +1802,7 @@ void QDockAreaLayoutInfo::saveState(QDataStream &stream) const
}
stream << index;
} else
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
{
stream << (uchar) SequenceMarker;
}
@@ -1876,7 +1876,7 @@ bool QDockAreaLayoutInfo::restoreState(QDataStream &stream, QList<QDockWidget*>
if (marker != TabMarker && marker != SequenceMarker)
return false;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
tabbed = marker == TabMarker;
int index = -1;
@@ -1981,7 +1981,7 @@ bool QDockAreaLayoutInfo::restoreState(QDataStream &stream, QList<QDockWidget*>
}
} else if (nextMarker == SequenceMarker) {
int dummy;
-#ifdef QT_NO_TABBAR
+#if !QT_CONFIG(tabbar)
const int tabBarShape = 0;
#endif
QDockAreaLayoutItem item(new QDockAreaLayoutInfo(sep, dockPos, o,
@@ -2002,7 +2002,7 @@ bool QDockAreaLayoutInfo::restoreState(QDataStream &stream, QList<QDockWidget*>
}
}
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (!testing && tabbed && index >= 0 && index < item_list.count()) {
updateTabBar();
setCurrentTabId(tabId(item_list.at(index)));
@@ -2014,7 +2014,7 @@ bool QDockAreaLayoutInfo::restoreState(QDataStream &stream, QList<QDockWidget*>
return true;
}
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
void QDockAreaLayoutInfo::updateSeparatorWidgets() const
{
if (tabbed) {
@@ -2065,9 +2065,7 @@ void QDockAreaLayoutInfo::updateSeparatorWidgets() const
separatorWidgets.resize(j);
Q_ASSERT(separatorWidgets.size() == j);
}
-#endif //QT_NO_TABBAR
-#ifndef QT_NO_TABBAR
/*! \internal
reparent all the widgets contained in this layout portion to the
specified parent. This is used to reparent dock widgets and tabbars
@@ -2293,7 +2291,7 @@ void QDockAreaLayoutInfo::moveTab(int from, int to)
{
item_list.move(tabIndexToListIndex(from), tabIndexToListIndex(to));
}
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
/******************************************************************************
** QDockAreaLayout
@@ -2303,7 +2301,7 @@ QDockAreaLayout::QDockAreaLayout(QMainWindow *win) : fallbackToSizeHints(true)
{
mainWindow = win;
sep = win->style()->pixelMetric(QStyle::PM_DockWidgetSeparatorExtent, 0, win);
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
const int tabShape = QTabBar::RoundedSouth;
#else
const int tabShape = 0;
@@ -2423,7 +2421,7 @@ QList<int> QDockAreaLayout::gapIndex(const QPoint &pos, bool disallowTabs) const
QMainWindow::DockOptions opts = mainWindow->dockOptions();
bool nestingEnabled = opts & QMainWindow::AllowNestedDocks;
QDockAreaLayoutInfo::TabMode tabMode = QDockAreaLayoutInfo::NoTabs;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (!disallowTabs) {
if (opts & QMainWindow::AllowTabbedDocks || opts & QMainWindow::VerticalTabs)
tabMode = QDockAreaLayoutInfo::AllowTabs;
@@ -3115,14 +3113,14 @@ void QDockAreaLayout::addDockWidget(QInternal::DockPosition pos, QDockWidget *do
QDockAreaLayoutItem new_item(dockWidgetItem);
info.item_list.append(new_item);
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (info.tabbed && !new_item.skip()) {
info.updateTabBar();
info.setCurrentTabId(tabId(new_item));
}
#endif
} else {
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
int tbshape = info.tabBarShape;
#else
int tbshape = 0;
@@ -3223,10 +3221,10 @@ void QDockAreaLayout::apply(bool animate)
widgetAnimator.animate(centralWidgetItem->widget(), centralWidgetRect,
animate);
}
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (sep == 1)
updateSeparatorWidgets();
-#endif //QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
}
void QDockAreaLayout::paintSeparators(QPainter *p, QWidget *widget,
@@ -3317,7 +3315,7 @@ int QDockAreaLayoutInfo::separatorMove(const QList<int> &separator, const QPoint
return delta;
}
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
// Sets the correct positions for the separator widgets
// Allocates new sepearator widgets with getSeparatorWidget
void QDockAreaLayout::updateSeparatorWidgets() const
@@ -3351,7 +3349,7 @@ void QDockAreaLayout::updateSeparatorWidgets() const
separatorWidgets.resize(j);
}
-#endif //QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
QLayoutItem *QDockAreaLayout::itemAt(int *x, int index) const
{
@@ -3394,7 +3392,7 @@ void QDockAreaLayout::deleteAllLayoutItems()
docks[i].deleteAllLayoutItems();
}
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
QSet<QTabBar*> QDockAreaLayout::usedTabBars() const
{
QSet<QTabBar*> result;
@@ -3450,5 +3448,3 @@ void QDockAreaLayout::styleChangedEvent()
}
QT_END_NAMESPACE
-
-#endif // QT_NO_DOCKWIDGET
diff --git a/src/widgets/widgets/qdockarealayout_p.h b/src/widgets/widgets/qdockarealayout_p.h
index e4cdc9f296..49bd157179 100644
--- a/src/widgets/widgets/qdockarealayout_p.h
+++ b/src/widgets/widgets/qdockarealayout_p.h
@@ -58,7 +58,7 @@
#include "QtCore/qvector.h"
#include "QtWidgets/qlayout.h"
-#ifndef QT_NO_DOCKWIDGET
+QT_REQUIRE_CONFIG(dockwidget);
QT_BEGIN_NAMESPACE
@@ -197,12 +197,10 @@ public:
QRect rect;
QMainWindow *mainWindow;
QList<QDockAreaLayoutItem> item_list;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
void updateSeparatorWidgets() const;
QSet<QWidget*> usedSeparatorWidgets() const;
-#endif //QT_NO_TABBAR
-#ifndef QT_NO_TABBAR
quintptr currentTabId() const;
void setCurrentTab(QWidget *widget);
void setCurrentTabId(quintptr id);
@@ -221,7 +219,7 @@ public:
int tabIndexToListIndex(int) const;
void moveTab(int from, int to);
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
};
class Q_AUTOTEST_EXPORT QDockAreaLayout
@@ -286,9 +284,9 @@ public:
const QPoint &mouse) const;
QRegion separatorRegion() const;
int separatorMove(const QList<int> &separator, const QPoint &origin, const QPoint &dest);
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
void updateSeparatorWidgets() const;
-#endif //QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
QLayoutItem *itemAt(int *x, int index) const;
QLayoutItem *takeAt(int *x, int index);
@@ -302,15 +300,13 @@ public:
QRect gapRect(const QList<int> &path) const;
void keepSize(QDockWidget *w);
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
QSet<QTabBar*> usedTabBars() const;
QSet<QWidget*> usedSeparatorWidgets() const;
-#endif //QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
void styleChangedEvent();
};
QT_END_NAMESPACE
-#endif // QT_NO_QDOCKWIDGET
-
#endif // QDOCKAREALAYOUT_P_H
diff --git a/src/widgets/widgets/qdockwidget.cpp b/src/widgets/widgets/qdockwidget.cpp
index 15f79638c8..36d7ab3421 100644
--- a/src/widgets/widgets/qdockwidget.cpp
+++ b/src/widgets/widgets/qdockwidget.cpp
@@ -39,7 +39,6 @@
#include "qdockwidget.h"
-#ifndef QT_NO_DOCKWIDGET
#include <qaction.h>
#include <qapplication.h>
#include <qdesktopwidget.h>
@@ -1392,14 +1391,14 @@ void QDockWidget::changeEvent(QEvent *event)
d->fixedWindowTitle = qt_setWindowTitle_helperHelper(windowTitle(), this);
d->toggleViewAction->setText(d->fixedWindowTitle);
#endif
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
{
if (QMainWindowLayout *winLayout = qt_mainwindow_layout_from_dock(this)) {
if (QDockAreaLayoutInfo *info = winLayout->layoutState.dockAreaLayout.info(this))
info->updateTabBar();
}
}
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
break;
default:
break;
@@ -1689,5 +1688,3 @@ QT_END_NAMESPACE
#include "qdockwidget.moc"
#include "moc_qdockwidget.cpp"
#include "moc_qdockwidget_p.cpp"
-
-#endif // QT_NO_DOCKWIDGET
diff --git a/src/widgets/widgets/qdockwidget.h b/src/widgets/widgets/qdockwidget.h
index 80df009007..b53fa19a03 100644
--- a/src/widgets/widgets/qdockwidget.h
+++ b/src/widgets/widgets/qdockwidget.h
@@ -43,10 +43,9 @@
#include <QtWidgets/qtwidgetsglobal.h>
#include <QtWidgets/qwidget.h>
-QT_BEGIN_NAMESPACE
-
+QT_REQUIRE_CONFIG(dockwidget);
-#ifndef QT_NO_DOCKWIDGET
+QT_BEGIN_NAMESPACE
class QDockAreaLayout;
class QDockWidgetPrivate;
@@ -134,8 +133,6 @@ private:
Q_DECLARE_OPERATORS_FOR_FLAGS(QDockWidget::DockWidgetFeatures)
-#endif // QT_NO_DOCKWIDGET
-
QT_END_NAMESPACE
#endif // QDYNAMICDOCKWIDGET_H
diff --git a/src/widgets/widgets/qdockwidget_p.h b/src/widgets/widgets/qdockwidget_p.h
index 2d62cf5acd..2c16176c37 100644
--- a/src/widgets/widgets/qdockwidget_p.h
+++ b/src/widgets/widgets/qdockwidget_p.h
@@ -57,7 +57,7 @@
#include "QtWidgets/qboxlayout.h"
#include "QtWidgets/qdockwidget.h"
-#ifndef QT_NO_DOCKWIDGET
+QT_REQUIRE_CONFIG(dockwidget);
QT_BEGIN_NAMESPACE
@@ -204,6 +204,4 @@ inline QDockWidgetLayout *QDockWidgetItem::dockWidgetLayout() const
QT_END_NAMESPACE
-#endif // QT_NO_DOCKWIDGET
-
#endif // QDYNAMICDOCKWIDGET_P_H
diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp
index f859ec0ddb..f57fa4fd85 100644
--- a/src/widgets/widgets/qlineedit.cpp
+++ b/src/widgets/widgets/qlineedit.cpp
@@ -68,7 +68,9 @@
#ifndef QT_NO_ACCESSIBILITY
#include "qaccessible.h"
#endif
+#if QT_CONFIG(itemviews)
#include "qabstractitemview.h"
+#endif
#include "private/qstylesheetstyle_p.h"
#ifndef QT_NO_SHORTCUT
diff --git a/src/widgets/widgets/qlineedit_p.cpp b/src/widgets/widgets/qlineedit_p.cpp
index e1c7a4e280..83dab9e110 100644
--- a/src/widgets/widgets/qlineedit_p.cpp
+++ b/src/widgets/widgets/qlineedit_p.cpp
@@ -43,7 +43,9 @@
#ifndef QT_NO_LINEEDIT
#include "qvariant.h"
+#if QT_CONFIG(itemviews)
#include "qabstractitemview.h"
+#endif
#include "qdrag.h"
#include "qwidgetaction.h"
#include "qclipboard.h"
diff --git a/src/widgets/widgets/qmainwindow.cpp b/src/widgets/widgets/qmainwindow.cpp
index 889082cb2a..694a36ed5b 100644
--- a/src/widgets/widgets/qmainwindow.cpp
+++ b/src/widgets/widgets/qmainwindow.cpp
@@ -44,7 +44,9 @@
#ifndef QT_NO_MAINWINDOW
+#if QT_CONFIG(dockwidget)
#include "qdockwidget.h"
+#endif
#include "qtoolbar.h"
#include <qapplication.h>
@@ -348,7 +350,7 @@ void QMainWindowPrivate::init()
\sa setToolButtonStyle()
*/
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
/*!
\fn void QMainWindow::tabifiedDockWidgetActivated(QDockWidget *dockWidget)
@@ -660,7 +662,7 @@ QWidget *QMainWindow::takeCentralWidget()
return oldcentralwidget;
}
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
/*!
Sets the given dock widget \a area to occupy the specified \a
corner.
@@ -766,12 +768,12 @@ void QMainWindow::addToolBar(Qt::ToolBarArea area, QToolBar *toolbar)
if(toolbar->d_func()->state && toolbar->d_func()->state->dragging) {
//removing a toolbar which is dragging will cause crash
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
bool animated = isAnimated();
setAnimated(false);
#endif
toolbar->d_func()->endDrag();
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
setAnimated(animated);
#endif
}
@@ -870,7 +872,7 @@ bool QMainWindow::toolBarBreak(QToolBar *toolbar) const
#endif // QT_NO_TOOLBAR
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
/*! \property QMainWindow::animated
\brief whether manipulating dock widgets and tool bars is animated
@@ -984,7 +986,7 @@ static bool checkDockWidgetArea(Qt::DockWidgetArea area, const char *where)
return false;
}
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
/*!
\property QMainWindow::documentMode
\brief whether the tab bar for tabbed dockwidgets is set to document mode.
@@ -1003,9 +1005,9 @@ void QMainWindow::setDocumentMode(bool enabled)
{
d_func()->layout->setDocumentMode(enabled);
}
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
/*!
\property QMainWindow::tabShape
\brief the tab shape used for tabbed dock widgets.
@@ -1057,7 +1059,7 @@ void QMainWindow::setTabPosition(Qt::DockWidgetAreas areas, QTabWidget::TabPosit
{
d_func()->layout->setTabPosition(areas, tabPosition);
}
-#endif // QT_NO_TABWIDGET
+#endif // QT_CONFIG(tabwidget)
/*!
Adds the given \a dockwidget to the specified \a area.
@@ -1160,7 +1162,7 @@ void QMainWindow::tabifyDockWidget(QDockWidget *first, QDockWidget *second)
QList<QDockWidget*> QMainWindow::tabifiedDockWidgets(QDockWidget *dockwidget) const
{
QList<QDockWidget*> ret;
-#if defined(QT_NO_TABBAR)
+#if !QT_CONFIG(tabbar)
Q_UNUSED(dockwidget);
#else
const QDockAreaLayoutInfo *info = d_func()->layout->layoutState.dockAreaLayout.info(dockwidget);
@@ -1232,7 +1234,7 @@ void QMainWindow::resizeDocks(const QList<QDockWidget *> &docks,
}
-#endif // QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
/*!
Saves the current state of this mainwindow's toolbars and
@@ -1323,7 +1325,7 @@ bool QMainWindow::event(QEvent *event)
#endif // QT_CONFIG(statustip)
case QEvent::StyleChange:
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
d->layout->layoutState.dockAreaLayout.styleChangedEvent();
#endif
if (!d->explicitIconSize)
@@ -1388,7 +1390,7 @@ bool QMainWindow::unifiedTitleAndToolBarOnMac() const
*/
bool QMainWindow::isSeparator(const QPoint &pos) const
{
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
Q_D(const QMainWindow);
return !d->layout->layoutState.dockAreaLayout.findSeparator(pos).isEmpty();
#else
@@ -1415,7 +1417,7 @@ void QMainWindow::contextMenuEvent(QContextMenuEvent *event)
break;
}
#endif
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
if (QDockWidget *dw = qobject_cast<QDockWidget *>(child)) {
if (dw->parentWidget() != this)
return;
@@ -1426,7 +1428,7 @@ void QMainWindow::contextMenuEvent(QContextMenuEvent *event)
}
break;
}
-#endif // QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
#ifndef QT_NO_TOOLBAR
if (QToolBar *tb = qobject_cast<QToolBar *>(child)) {
if (tb->parentWidget() != this)
@@ -1474,7 +1476,7 @@ QMenu *QMainWindow::createPopupMenu()
{
Q_D(QMainWindow);
QMenu *menu = 0;
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
QList<QDockWidget *> dockwidgets = findChildren<QDockWidget *>();
if (dockwidgets.size()) {
menu = new QMenu(this);
@@ -1497,7 +1499,7 @@ QMenu *QMainWindow::createPopupMenu()
}
menu->addSeparator();
}
-#endif // QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
#ifndef QT_NO_TOOLBAR
QList<QToolBar *> toolbars = findChildren<QToolBar *>();
if (toolbars.size()) {
diff --git a/src/widgets/widgets/qmainwindow.h b/src/widgets/widgets/qmainwindow.h
index bab1176d8a..aa26d4c23b 100644
--- a/src/widgets/widgets/qmainwindow.h
+++ b/src/widgets/widgets/qmainwindow.h
@@ -42,7 +42,9 @@
#include <QtWidgets/qtwidgetsglobal.h>
#include <QtWidgets/qwidget.h>
+#if QT_CONFIG(tabwidget)
#include <QtWidgets/qtabwidget.h>
+#endif
QT_BEGIN_NAMESPACE
@@ -62,16 +64,16 @@ class Q_WIDGETS_EXPORT QMainWindow : public QWidget
Q_PROPERTY(QSize iconSize READ iconSize WRITE setIconSize)
Q_PROPERTY(Qt::ToolButtonStyle toolButtonStyle READ toolButtonStyle WRITE setToolButtonStyle)
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
Q_PROPERTY(bool animated READ isAnimated WRITE setAnimated)
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
Q_PROPERTY(bool documentMode READ documentMode WRITE setDocumentMode)
-#endif // QT_NO_TABBAR
-#ifndef QT_NO_TABWIDGET
+#endif // QT_CONFIG(tabbar)
+#if QT_CONFIG(tabwidget)
Q_PROPERTY(QTabWidget::TabShape tabShape READ tabShape WRITE setTabShape)
-#endif // QT_NO_TABWIDGET
+#endif // QT_CONFIG(tabwidget)
Q_PROPERTY(bool dockNestingEnabled READ isDockNestingEnabled WRITE setDockNestingEnabled)
-#endif // QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
Q_PROPERTY(DockOptions dockOptions READ dockOptions WRITE setDockOptions)
#ifndef QT_NO_TOOLBAR
Q_PROPERTY(bool unifiedTitleAndToolBarOnMac READ unifiedTitleAndToolBarOnMac WRITE setUnifiedTitleAndToolBarOnMac)
@@ -99,22 +101,22 @@ public:
Qt::ToolButtonStyle toolButtonStyle() const;
void setToolButtonStyle(Qt::ToolButtonStyle toolButtonStyle);
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
bool isAnimated() const;
bool isDockNestingEnabled() const;
#endif
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
bool documentMode() const;
void setDocumentMode(bool enabled);
#endif
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
QTabWidget::TabShape tabShape() const;
void setTabShape(QTabWidget::TabShape tabShape);
QTabWidget::TabPosition tabPosition(Qt::DockWidgetArea area) const;
void setTabPosition(Qt::DockWidgetAreas areas, QTabWidget::TabPosition tabPosition);
-#endif // QT_NO_TABWIDGET
+#endif // QT_CONFIG(tabwidget)
void setDockOptions(DockOptions options);
DockOptions dockOptions() const;
@@ -139,7 +141,7 @@ public:
QWidget *takeCentralWidget();
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
void setCorner(Qt::Corner corner, Qt::DockWidgetArea area);
Qt::DockWidgetArea corner(Qt::Corner corner) const;
#endif
@@ -160,7 +162,7 @@ public:
Qt::ToolBarArea toolBarArea(QToolBar *toolbar) const;
bool toolBarBreak(QToolBar *toolbar) const;
#endif
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget);
void addDockWidget(Qt::DockWidgetArea area, QDockWidget *dockwidget,
Qt::Orientation orientation);
@@ -175,7 +177,7 @@ public:
void resizeDocks(const QList<QDockWidget *> &docks,
const QList<int> &sizes, Qt::Orientation orientation);
-#endif // QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
QByteArray saveState(int version = 0) const;
bool restoreState(const QByteArray &state, int version = 0);
@@ -185,7 +187,7 @@ public:
#endif
public Q_SLOTS:
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
void setAnimated(bool enabled);
void setDockNestingEnabled(bool enabled);
#endif
@@ -196,7 +198,7 @@ public Q_SLOTS:
Q_SIGNALS:
void iconSizeChanged(const QSize &iconSize);
void toolButtonStyleChanged(Qt::ToolButtonStyle toolButtonStyle);
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
void tabifiedDockWidgetActivated(QDockWidget *dockWidget);
#endif
diff --git a/src/widgets/widgets/qmainwindowlayout.cpp b/src/widgets/widgets/qmainwindowlayout.cpp
index e48ce301fb..2c1c2ab75c 100644
--- a/src/widgets/widgets/qmainwindowlayout.cpp
+++ b/src/widgets/widgets/qmainwindowlayout.cpp
@@ -39,11 +39,13 @@
****************************************************************************/
#include "qmainwindowlayout_p.h"
-#include "qdockarealayout_p.h"
#ifndef QT_NO_MAINWINDOW
+#if QT_CONFIG(dockwidget)
+#include "qdockarealayout_p.h"
#include "qdockwidget.h"
#include "qdockwidget_p.h"
+#endif
#include "qtoolbar_p.h"
#include "qmainwindow.h"
#include "qtoolbar.h"
@@ -52,7 +54,9 @@
#if QT_CONFIG(rubberband)
#include "qrubberband.h"
#endif
+#if QT_CONFIG(tabbar)
#include "qtabbar_p.h"
+#endif
#include <qapplication.h>
#include <qstatusbar.h>
@@ -81,7 +85,7 @@ extern QMainWindowLayout *qt_mainwindow_layout(const QMainWindow *window);
** debug
*/
-#if !defined(QT_NO_DOCKWIDGET) && !defined(QT_NO_DEBUG_STREAM)
+#if QT_CONFIG(dockwidget) && !defined(QT_NO_DEBUG_STREAM)
static void dumpLayout(QTextStream &qout, const QDockAreaLayoutInfo &layout, QString indent);
@@ -170,7 +174,7 @@ QDebug operator<<(QDebug debug, const QMainWindowLayout *layout)
return debug;
}
-#endif // !defined(QT_NO_DOCKWIDGET) && !defined(QT_NO_DEBUG)
+#endif // QT_CONFIG(dockwidget) && !defined(QT_NO_DEBUG)
/******************************************************************************
** QDockWidgetGroupWindow
@@ -182,7 +186,7 @@ QDebug operator<<(QDebug debug, const QMainWindowLayout *layout)
// If there is only one QDockWidgets, or all QDockWidgets are tabbed together, it is equivalent
// of a floating QDockWidget (the title of the QDockWidget is the title of the window). But if there
// are nested QDockWidget, an additional title bar is there.
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
class QDockWidgetGroupLayout : public QLayout,
public QMainWindowLayoutSeparatorHelper<QDockWidgetGroupLayout>
{
@@ -590,7 +594,7 @@ QMainWindowLayoutState::QMainWindowLayoutState(QMainWindow *win)
#ifndef QT_NO_TOOLBAR
toolBarAreaLayout(win),
#endif
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
dockAreaLayout(win)
#else
centralWidgetItem(0)
@@ -605,7 +609,7 @@ QSize QMainWindowLayoutState::sizeHint() const
QSize result(0, 0);
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
result = dockAreaLayout.sizeHint();
#else
if (centralWidgetItem != 0)
@@ -623,7 +627,7 @@ QSize QMainWindowLayoutState::minimumSize() const
{
QSize result(0, 0);
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
result = dockAreaLayout.minimumSize();
#else
if (centralWidgetItem != 0)
@@ -643,7 +647,7 @@ void QMainWindowLayoutState::apply(bool animated)
toolBarAreaLayout.apply(animated);
#endif
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
// dumpLayout(dockAreaLayout, QString());
dockAreaLayout.apply(animated);
#else
@@ -665,7 +669,7 @@ void QMainWindowLayoutState::fitLayout()
r = toolBarAreaLayout.fitLayout();
#endif // QT_NO_TOOLBAR
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
dockAreaLayout.rect = r;
dockAreaLayout.fitLayout();
#else
@@ -679,14 +683,14 @@ void QMainWindowLayoutState::deleteAllLayoutItems()
toolBarAreaLayout.deleteAllLayoutItems();
#endif
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
dockAreaLayout.deleteAllLayoutItems();
#endif
}
void QMainWindowLayoutState::deleteCentralWidgetItem()
{
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
delete dockAreaLayout.centralWidgetItem;
dockAreaLayout.centralWidgetItem = 0;
#else
@@ -702,7 +706,7 @@ QLayoutItem *QMainWindowLayoutState::itemAt(int index, int *x) const
return ret;
#endif
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
if (QLayoutItem *ret = dockAreaLayout.itemAt(x, index))
return ret;
#else
@@ -720,7 +724,7 @@ QLayoutItem *QMainWindowLayoutState::takeAt(int index, int *x)
return ret;
#endif
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
if (QLayoutItem *ret = dockAreaLayout.takeAt(x, index))
return ret;
#else
@@ -748,7 +752,7 @@ QList<int> QMainWindowLayoutState::indexOf(QWidget *widget) const
}
#endif
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
// is it a dock widget?
if (qobject_cast<QDockWidget *>(widget) || qobject_cast<QDockWidgetGroupWindow *>(widget)) {
result = dockAreaLayout.indexOf(widget);
@@ -756,14 +760,14 @@ QList<int> QMainWindowLayoutState::indexOf(QWidget *widget) const
result.prepend(1);
return result;
}
-#endif //QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
return result;
}
bool QMainWindowLayoutState::contains(QWidget *widget) const
{
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
if (dockAreaLayout.centralWidgetItem != 0 && dockAreaLayout.centralWidgetItem->widget() == widget)
return true;
if (!dockAreaLayout.indexOf(widget).isEmpty())
@@ -789,7 +793,7 @@ void QMainWindowLayoutState::setCentralWidget(QWidget *widget)
if (widget != 0)
item = new QWidgetItemV2(widget);
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
dockAreaLayout.centralWidgetItem = item;
#else
centralWidgetItem = item;
@@ -800,7 +804,7 @@ QWidget *QMainWindowLayoutState::centralWidget() const
{
QLayoutItem *item = 0;
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
item = dockAreaLayout.centralWidgetItem;
#else
item = centralWidgetItem;
@@ -826,7 +830,7 @@ QList<int> QMainWindowLayoutState::gapIndex(QWidget *widget,
}
#endif
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
// is it a dock widget?
if (qobject_cast<QDockWidget *>(widget) != 0
|| qobject_cast<QDockWidgetGroupWindow *>(widget)) {
@@ -842,7 +846,7 @@ QList<int> QMainWindowLayoutState::gapIndex(QWidget *widget,
result.prepend(1);
return result;
}
-#endif //QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
return result;
}
@@ -861,12 +865,12 @@ bool QMainWindowLayoutState::insertGap(const QList<int> &path, QLayoutItem *item
}
#endif
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
if (i == 1) {
Q_ASSERT(qobject_cast<QDockWidget*>(item->widget()) || qobject_cast<QDockWidgetGroupWindow*>(item->widget()));
return dockAreaLayout.insertGap(path.mid(1), item);
}
-#endif //QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
return false;
}
@@ -880,10 +884,10 @@ void QMainWindowLayoutState::remove(const QList<int> &path)
toolBarAreaLayout.remove(path.mid(1));
#endif
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
if (i == 1)
dockAreaLayout.remove(path.mid(1));
-#endif //QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
}
void QMainWindowLayoutState::remove(QLayoutItem *item)
@@ -892,14 +896,14 @@ void QMainWindowLayoutState::remove(QLayoutItem *item)
toolBarAreaLayout.remove(item);
#endif
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
// is it a dock widget?
if (QDockWidget *dockWidget = qobject_cast<QDockWidget *>(item->widget())) {
QList<int> path = dockAreaLayout.indexOf(dockWidget);
if (!path.isEmpty())
dockAreaLayout.remove(path);
}
-#endif //QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
}
void QMainWindowLayoutState::clear()
@@ -908,7 +912,7 @@ void QMainWindowLayoutState::clear()
toolBarAreaLayout.clear();
#endif
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
dockAreaLayout.clear();
#else
centralWidgetRect = QRect();
@@ -934,10 +938,10 @@ QLayoutItem *QMainWindowLayoutState::item(const QList<int> &path)
}
#endif
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
if (i == 1)
return dockAreaLayout.item(path.mid(1)).widgetItem;
-#endif //QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
return 0;
}
@@ -951,10 +955,10 @@ QRect QMainWindowLayoutState::itemRect(const QList<int> &path) const
return toolBarAreaLayout.itemRect(path.mid(1));
#endif
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
if (i == 1)
return dockAreaLayout.itemRect(path.mid(1));
-#endif //QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
return QRect();
}
@@ -968,10 +972,10 @@ QRect QMainWindowLayoutState::gapRect(const QList<int> &path) const
return toolBarAreaLayout.itemRect(path.mid(1));
#endif
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
if (i == 1)
return dockAreaLayout.gapRect(path.mid(1));
-#endif //QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
return QRect();
}
@@ -985,10 +989,10 @@ QLayoutItem *QMainWindowLayoutState::plug(const QList<int> &path)
return toolBarAreaLayout.plug(path.mid(1));
#endif
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
if (i == 1)
return dockAreaLayout.plug(path.mid(1));
-#endif //QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
return 0;
}
@@ -1004,19 +1008,19 @@ QLayoutItem *QMainWindowLayoutState::unplug(const QList<int> &path, QMainWindowL
return toolBarAreaLayout.unplug(path.mid(1), other ? &other->toolBarAreaLayout : 0);
#endif
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
if (i == 1)
return dockAreaLayout.unplug(path.mid(1));
-#endif //QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
return 0;
}
void QMainWindowLayoutState::saveState(QDataStream &stream) const
{
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
dockAreaLayout.saveState(stream);
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
QList<QDockWidgetGroupWindow *> floatingTabs =
mainWindow->findChildren<QDockWidgetGroupWindow *>(QString(), Qt::FindDirectChildrenOnly);
@@ -1048,7 +1052,7 @@ static QList<T> findChildrenHelper(const QObject *o)
return result;
}
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
static QList<QDockWidget*> allMyDockWidgets(const QWidget *mainWindow)
{
QList<QDockWidget*> result;
@@ -1065,7 +1069,7 @@ static QList<QDockWidget*> allMyDockWidgets(const QWidget *mainWindow)
return result;
}
-#endif // QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
//pre4.3 tests the format that was used before 4.3
bool QMainWindowLayoutState::checkFormat(QDataStream &stream)
@@ -1087,7 +1091,7 @@ bool QMainWindowLayoutState::checkFormat(QDataStream &stream)
break;
#endif // QT_NO_TOOLBAR
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
case QDockAreaLayout::DockWidgetStateMarker:
{
const auto dockWidgets = allMyDockWidgets(mainWindow);
@@ -1096,7 +1100,7 @@ bool QMainWindowLayoutState::checkFormat(QDataStream &stream)
}
}
break;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
case QDockAreaLayout::FloatingDockWidgetTabMarker:
{
QRect geom;
@@ -1107,8 +1111,8 @@ bool QMainWindowLayoutState::checkFormat(QDataStream &stream)
return false;
}
break;
-#endif // QT_NO_TABBAR
-#endif // QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(tabbar)
+#endif // QT_CONFIG(dockwidget)
default:
//there was an error during the parsing
return false;
@@ -1143,7 +1147,7 @@ bool QMainWindowLayoutState::restoreState(QDataStream &_stream,
stream >> marker;
switch(marker)
{
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
case QDockAreaLayout::DockWidgetStateMarker:
{
const auto dockWidgets = allMyDockWidgets(mainWindow);
@@ -1192,7 +1196,7 @@ bool QMainWindowLayoutState::restoreState(QDataStream &_stream,
}
break;
#endif // QT_CONFIG(tabwidget)
-#endif // QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
#ifndef QT_NO_TOOLBAR
case QToolBarAreaLayout::ToolBarStateMarker:
@@ -1410,7 +1414,7 @@ void QMainWindowLayout::toggleToolBarsVisible()
** QMainWindowLayoutState - dock areas
*/
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
static QInternal::DockPosition toDockPos(Qt::DockWidgetArea area)
{
@@ -1494,7 +1498,7 @@ bool QMainWindowLayout::restoreDockWidget(QDockWidget *dockwidget)
return true;
}
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
bool QMainWindowLayout::documentMode() const
{
return _documentMode;
@@ -1513,11 +1517,11 @@ void QMainWindowLayout::setDocumentMode(bool enabled)
foreach (QTabBar *bar, unusedTabBars)
bar->setDocumentMode(_documentMode);
}
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
void QMainWindowLayout::setVerticalTabsEnabled(bool enabled)
{
-#ifdef QT_NO_TABBAR
+#if !QT_CONFIG(tabbar)
Q_UNUSED(enabled);
#else
if (verticalTabsEnabled == enabled)
@@ -1526,10 +1530,10 @@ void QMainWindowLayout::setVerticalTabsEnabled(bool enabled)
verticalTabsEnabled = enabled;
updateTabBarShapes();
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
}
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
QTabWidget::TabShape QMainWindowLayout::tabShape() const
{
return _tabShape;
@@ -1585,12 +1589,12 @@ static inline QTabBar::Shape tabBarShapeFrom(QTabWidget::TabShape shape, QTabWid
return rounded ? QTabBar::RoundedWest : QTabBar::TriangularWest;
return QTabBar::RoundedNorth;
}
-#endif // QT_NO_TABWIDGET
+#endif // QT_CONFIG(tabwidget)
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
void QMainWindowLayout::updateTabBarShapes()
{
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
const QTabWidget::TabPosition vertical[] = {
QTabWidget::West,
QTabWidget::East,
@@ -1609,7 +1613,7 @@ void QMainWindowLayout::updateTabBarShapes()
QDockAreaLayout &layout = layoutState.dockAreaLayout;
for (int i = 0; i < QInternal::DockCount; ++i) {
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
QTabWidget::TabPosition pos = verticalTabsEnabled ? vertical[i] : tabPositions[i];
QTabBar::Shape shape = tabBarShapeFrom(_tabShape, pos);
#else
@@ -1618,7 +1622,7 @@ void QMainWindowLayout::updateTabBarShapes()
layout.docks[i].setTabBarShape(shape);
}
}
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
void QMainWindowLayout::splitDockWidget(QDockWidget *after,
QDockWidget *dockwidget,
@@ -1643,7 +1647,7 @@ void QMainWindowLayout::keepSize(QDockWidget *w)
layoutState.dockAreaLayout.keepSize(w);
}
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
// Handle custom tooltip, and allow to drag tabs away.
class QMainWindowTabBar : public QTabBar
@@ -1828,11 +1832,11 @@ void QMainWindowLayout::tabMoved(int from, int to)
info->moveTab(from, to);
}
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
void QMainWindowLayout::raise(QDockWidget *widget)
{
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
QDockAreaLayoutInfo *info = dockInfo(widget);
if (info == 0)
return;
@@ -1842,7 +1846,7 @@ void QMainWindowLayout::raise(QDockWidget *widget)
#endif
}
-#endif // QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
/******************************************************************************
@@ -1964,7 +1968,7 @@ void QMainWindowLayout::invalidate()
minSize = szHint = QSize();
}
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
void QMainWindowLayout::setCurrentHoveredFloat(QDockWidgetGroupWindow *w)
{
if (currentHoveredFloat != w) {
@@ -1987,7 +1991,7 @@ void QMainWindowLayout::setCurrentHoveredFloat(QDockWidgetGroupWindow *w)
updateGapIndicator();
}
}
-#endif //QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
/******************************************************************************
** QMainWindowLayout - remaining stuff
@@ -2080,7 +2084,7 @@ bool QMainWindowLayout::plug(QLayoutItem *widgetItem)
QWidget *widget = widgetItem->widget();
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
// Let's remove the widget from any possible group window
foreach (QDockWidgetGroupWindow *dwgw,
parent()->findChildren<QDockWidgetGroupWindow*>(QString(), Qt::FindDirectChildrenOnly)) {
@@ -2102,7 +2106,7 @@ bool QMainWindowLayout::plug(QLayoutItem *widgetItem)
pluggingWidget = widget;
QRect globalRect = currentGapRect;
globalRect.moveTopLeft(parentWidget()->mapToGlobal(globalRect.topLeft()));
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
if (qobject_cast<QDockWidget*>(widget) != 0) {
QDockWidgetLayout *layout = qobject_cast<QDockWidgetLayout*>(widget->layout());
if (layout->nativeWindowDeco()) {
@@ -2136,7 +2140,7 @@ void QMainWindowLayout::animationFinished(QWidget *widget)
if (widget == pluggingWidget) {
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
#if QT_CONFIG(tabbar)
if (QDockWidgetGroupWindow *dwgw = qobject_cast<QDockWidgetGroupWindow *>(widget)) {
// When the animated widget was a QDockWidgetGroupWindow, it means each of the
@@ -2208,8 +2212,8 @@ void QMainWindowLayout::animationFinished(QWidget *widget)
//and all the geometries (especially the one from the central widget) is correct
layoutState.apply(false);
-#ifndef QT_NO_DOCKWIDGET
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(dockwidget)
+#if QT_CONFIG(tabbar)
if (qobject_cast<QDockWidget*>(widget) != 0) {
// info() might return null if the widget is destroyed while
// animating but before the animationFinished signal is received.
@@ -2222,13 +2226,13 @@ void QMainWindowLayout::animationFinished(QWidget *widget)
if (!widgetAnimator.animating()) {
//all animations are finished
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
parentWidget()->update(layoutState.dockAreaLayout.separatorRegion());
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
foreach (QTabBar *tab_bar, usedTabBars)
tab_bar->show();
-#endif // QT_NO_TABBAR
-#endif // QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(tabbar)
+#endif // QT_CONFIG(dockwidget)
}
updateGapIndicator();
@@ -2254,31 +2258,31 @@ QMainWindowLayout::QMainWindowLayout(QMainWindow *mainwindow, QLayout *parentLay
, savedState(mainwindow)
, dockOptions(QMainWindow::AnimatedDocks | QMainWindow::AllowTabbedDocks)
, statusbar(0)
-#ifndef QT_NO_DOCKWIDGET
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(dockwidget)
+#if QT_CONFIG(tabbar)
, _documentMode(false)
, verticalTabsEnabled(false)
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
, _tabShape(QTabWidget::Rounded)
#endif
#endif
-#endif // QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
, widgetAnimator(this)
, pluggingWidget(0)
{
if (parentLayout)
setParent(parentLayout);
-#ifndef QT_NO_DOCKWIDGET
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(dockwidget)
+#if QT_CONFIG(tabbar)
sep = mainwindow->style()->pixelMetric(QStyle::PM_DockWidgetSeparatorExtent, 0, mainwindow);
#endif
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
for (int i = 0; i < QInternal::DockCount; ++i)
tabPositions[i] = QTabWidget::South;
#endif
-#endif // QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
pluggingWidget = 0;
setObjectName(mainwindow->objectName() + QLatin1String("_layout"));
@@ -2299,7 +2303,7 @@ void QMainWindowLayout::setDockOptions(QMainWindow::DockOptions opts)
dockOptions = opts;
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
setVerticalTabsEnabled(opts & QMainWindow::VerticalTabs);
#endif
@@ -2331,7 +2335,7 @@ void QMainWindowLayout::setCentralWidget(QWidget *widget)
addChildWidget(widget);
layoutState.setCentralWidget(widget);
if (savedState.isValid()) {
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
savedState.dockAreaLayout.centralWidgetItem = layoutState.dockAreaLayout.centralWidgetItem;
savedState.dockAreaLayout.fallbackToSizeHints = true;
#else
@@ -2383,7 +2387,7 @@ static bool unplugGroup(QMainWindowLayout *layout, QLayoutItem **item,
*/
QLayoutItem *QMainWindowLayout::unplug(QWidget *widget, bool group)
{
-#if !defined(QT_NO_DOCKWIDGET) && !defined(QT_NO_TABBAR)
+#if QT_CONFIG(dockwidget) && QT_CONFIG(tabbar)
auto *groupWindow = qobject_cast<const QDockWidgetGroupWindow *>(widget->parentWidget());
if (!widget->isWindow() && groupWindow) {
if (group && groupWindow->tabLayoutInfo()) {
@@ -2423,7 +2427,7 @@ QLayoutItem *QMainWindowLayout::unplug(QWidget *widget, bool group)
QRect r = layoutState.itemRect(path);
savedState = layoutState;
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
if (QDockWidget *dw = qobject_cast<QDockWidget*>(widget)) {
Q_ASSERT(path.constFirst() == 1);
#if QT_CONFIG(tabwidget)
@@ -2438,7 +2442,7 @@ QLayoutItem *QMainWindowLayout::unplug(QWidget *widget, bool group)
dw->d_func()->unplug(r);
}
}
-#endif // QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
#ifndef QT_NO_TOOLBAR
if (QToolBar *tb = qobject_cast<QToolBar*>(widget)) {
tb->d_func()->unplug(r);
@@ -2503,7 +2507,7 @@ void QMainWindowLayout::hover(QLayoutItem *widgetItem, const QPoint &mousePos)
QWidget *widget = widgetItem->widget();
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
if ((dockOptions & QMainWindow::GroupedDragging) && (qobject_cast<QDockWidget*>(widget)
|| qobject_cast<QDockWidgetGroupWindow *>(widget))) {
@@ -2565,7 +2569,7 @@ void QMainWindowLayout::hover(QLayoutItem *widgetItem, const QPoint &mousePos)
}
setCurrentHoveredFloat(nullptr);
layoutState.dockAreaLayout.fallbackToSizeHints = false;
-#endif //QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
QPoint pos = parentWidget()->mapFromGlobal(mousePos);
@@ -2577,7 +2581,7 @@ void QMainWindowLayout::hover(QLayoutItem *widgetItem, const QPoint &mousePos)
if (!path.isEmpty()) {
bool allowed = false;
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
if (QDockWidget *dw = qobject_cast<QDockWidget*>(widget))
allowed = dw->isAreaAllowed(toDockWidgetArea(path.at(1)));
@@ -2624,7 +2628,7 @@ void QMainWindowLayout::hover(QLayoutItem *widgetItem, const QPoint &mousePos)
currentGapRect = newState.gapRect(currentGapPos);
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
parentWidget()->update(layoutState.dockAreaLayout.separatorRegion());
#endif
layoutState = std::move(newState);
@@ -2703,15 +2707,15 @@ bool QMainWindowLayout::restoreState(QDataStream &stream)
savedState.deleteAllLayoutItems();
savedState.clear();
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
if (parentWidget()->isVisible()) {
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
foreach (QTabBar *tab_bar, usedTabBars)
tab_bar->show();
#endif
}
-#endif // QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
return true;
}
diff --git a/src/widgets/widgets/qmainwindowlayout_p.h b/src/widgets/widgets/qmainwindowlayout_p.h
index 6b75ef1caf..948d6edeef 100644
--- a/src/widgets/widgets/qmainwindowlayout_p.h
+++ b/src/widgets/widgets/qmainwindowlayout_p.h
@@ -57,16 +57,20 @@
#ifndef QT_NO_MAINWINDOW
#include "QtWidgets/qlayout.h"
+#if QT_CONFIG(tabbar)
#include "QtWidgets/qtabbar.h"
#include "QtGui/qpainter.h"
#include "QtGui/qevent.h"
+#endif
#include "QtCore/qvector.h"
#include "QtCore/qset.h"
#include "QtCore/qbasictimer.h"
#include "private/qlayoutengine_p.h"
#include "private/qwidgetanimator_p.h"
+#if QT_CONFIG(dockwidget)
#include "qdockarealayout_p.h"
+#endif
#include "qtoolbararealayout_p.h"
QT_BEGIN_NAMESPACE
@@ -319,7 +323,7 @@ bool QMainWindowLayoutSeparatorHelper<Layout>::endSeparatorMove(const QPoint &)
}
#endif
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
class QDockWidgetGroupWindow : public QWidget
{
Q_OBJECT
@@ -381,7 +385,7 @@ public:
QToolBarAreaLayout toolBarAreaLayout;
#endif
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
QDockAreaLayout dockAreaLayout;
#else
QLayoutItem *centralWidgetItem;
@@ -471,7 +475,7 @@ public:
// dock widgets
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
void setCorner(Qt::Corner corner, Qt::DockWidgetArea area);
Qt::DockWidgetArea corner(Qt::Corner corner) const;
void addDockWidget(Qt::DockWidgetArea area,
@@ -486,7 +490,7 @@ public:
void setVerticalTabsEnabled(bool enabled);
bool restoreDockWidget(QDockWidget *dockwidget);
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
QDockAreaLayoutInfo *dockInfo(QWidget *w);
bool _documentMode;
bool documentMode() const;
@@ -502,7 +506,7 @@ public:
QList<QWidget*> unusedSeparatorWidgets;
int sep; // separator extent
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
QTabWidget::TabPosition tabPositions[4];
QTabWidget::TabShape _tabShape;
@@ -512,12 +516,12 @@ public:
void setTabPosition(Qt::DockWidgetAreas areas, QTabWidget::TabPosition tabPosition);
QDockWidgetGroupWindow *createTabbedDockWindow();
-#endif // QT_NO_TABWIDGET
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabwidget)
+#endif // QT_CONFIG(tabbar)
QDockAreaLayout *dockAreaLayoutInfo() { return &layoutState.dockAreaLayout; }
void keepSize(QDockWidget *w);
-#endif // QT_NO_DOCKWIDGET
+#endif // QT_CONFIG(dockwidget)
// save/restore
@@ -550,7 +554,7 @@ public:
#if QT_CONFIG(rubberband)
QPointer<QRubberBand> gapIndicator;
#endif
-#ifndef QT_NO_DOCKWIDGET
+#if QT_CONFIG(dockwidget)
QPointer<QDockWidgetGroupWindow> currentHoveredFloat; // set when dragging over a floating dock widget
void setCurrentHoveredFloat(QDockWidgetGroupWindow *w);
#endif
@@ -566,19 +570,19 @@ public:
private Q_SLOTS:
void updateGapIndicator();
-#ifndef QT_NO_DOCKWIDGET
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(dockwidget)
+#if QT_CONFIG(tabbar)
void tabChanged();
void tabMoved(int from, int to);
#endif
#endif
private:
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
void updateTabBarShapes();
#endif
};
-#if !defined(QT_NO_DOCKWIDGET) && !defined(QT_NO_DEBUG_STREAM)
+#if QT_CONFIG(dockwidget) && !defined(QT_NO_DEBUG_STREAM)
class QDebug;
QDebug operator<<(QDebug debug, const QDockAreaLayout &layout);
QDebug operator<<(QDebug debug, const QMainWindowLayout *layout);
diff --git a/src/widgets/widgets/qmdiarea.cpp b/src/widgets/widgets/qmdiarea.cpp
index 83b5068bba..31d9ae21ae 100644
--- a/src/widgets/widgets/qmdiarea.cpp
+++ b/src/widgets/widgets/qmdiarea.cpp
@@ -254,7 +254,7 @@ static inline QMdiArea *mdiAreaParent(QWidget *widget)
return 0;
}
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
static inline QTabBar::Shape tabBarShapeFrom(QTabWidget::TabShape shape, QTabWidget::TabPosition position)
{
const bool rounded = (shape == QTabWidget::Rounded);
@@ -268,7 +268,7 @@ static inline QTabBar::Shape tabBarShapeFrom(QTabWidget::TabShape shape, QTabWid
return rounded ? QTabBar::RoundedWest : QTabBar::TriangularWest;
return QTabBar::RoundedNorth;
}
-#endif // QT_NO_TABWIDGET
+#endif // QT_CONFIG(tabwidget)
static inline QString tabTextFor(QMdiSubWindow *subWindow)
{
@@ -561,7 +561,7 @@ QPoint MinOverlapPlacer::place(const QSize &size, const QVector<QRect> &rects,
return findBestPlacement(domain, rects, candidates);
}
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
class QMdiAreaTabBar : public QTabBar
{
public:
@@ -659,7 +659,7 @@ QMdiSubWindow *QMdiAreaTabBar::subWindowFromIndex(int index) const
return subWindow;
}
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
/*!
\internal
@@ -672,17 +672,17 @@ QMdiAreaPrivate::QMdiAreaPrivate()
#if QT_CONFIG(rubberband)
rubberBand(0),
#endif
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
tabBar(0),
#endif
activationOrder(QMdiArea::CreationOrder),
viewMode(QMdiArea::SubWindowView),
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
documentMode(false),
tabsClosable(false),
tabsMovable(false),
#endif
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
tabShape(QTabWidget::Rounded),
tabPosition(QTabWidget::North),
#endif
@@ -777,7 +777,7 @@ void QMdiAreaPrivate::_q_processWindowStateChanged(Qt::WindowStates oldState,
void QMdiAreaPrivate::_q_currentTabChanged(int index)
{
-#ifdef QT_NO_TABBAR
+#if !QT_CONFIG(tabbar)
Q_UNUSED(index);
#else
if (!tabBar || index < 0)
@@ -796,28 +796,28 @@ void QMdiAreaPrivate::_q_currentTabChanged(int index)
QMdiSubWindow *subWindow = childWindows.at(index);
Q_ASSERT(subWindow);
activateWindow(subWindow);
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
}
void QMdiAreaPrivate::_q_closeTab(int index)
{
-#ifdef QT_NO_TABBAR
+#if !QT_CONFIG(tabbar)
Q_UNUSED(index);
#else
QMdiSubWindow *subWindow = childWindows.at(index);
Q_ASSERT(subWindow);
subWindow->close();
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
}
void QMdiAreaPrivate::_q_moveTab(int from, int to)
{
-#ifdef QT_NO_TABBAR
+#if !QT_CONFIG(tabbar)
Q_UNUSED(from);
Q_UNUSED(to);
#else
childWindows.move(from, to);
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
}
/*!
@@ -855,7 +855,7 @@ void QMdiAreaPrivate::appendChild(QMdiSubWindow *child)
indicesToActivatedChildren.prepend(childWindows.size() - 1);
Q_ASSERT(indicesToActivatedChildren.size() == childWindows.size());
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (tabBar) {
tabBar->addTab(child->windowIcon(), tabTextFor(child));
updateTabBarGeometry();
@@ -1079,7 +1079,7 @@ void QMdiAreaPrivate::emitWindowActivated(QMdiSubWindow *activeWindow)
aboutToBecomeActive = 0;
Q_ASSERT(active->d_func()->isActive);
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (tabBar && tabBar->currentIndex() != indexToActiveWindow)
tabBar->setCurrentIndex(indexToActiveWindow);
#endif
@@ -1122,7 +1122,7 @@ void QMdiAreaPrivate::updateActiveWindow(int removedIndex, bool activeRemoved)
{
Q_ASSERT(indicesToActivatedChildren.size() == childWindows.size());
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (tabBar && removedIndex >= 0) {
const QSignalBlocker blocker(tabBar);
tabBar->removeTab(removedIndex);
@@ -1560,14 +1560,14 @@ void QMdiAreaPrivate::setViewMode(QMdiArea::ViewMode mode)
// Just a guard since we cannot set viewMode = mode here.
inViewModeChange = true;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (mode == QMdiArea::TabbedView) {
Q_ASSERT(!tabBar);
tabBar = new QMdiAreaTabBar(q);
tabBar->setDocumentMode(documentMode);
tabBar->setTabsClosable(tabsClosable);
tabBar->setMovable(tabsMovable);
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
tabBar->setShape(tabBarShapeFrom(tabShape, tabPosition));
#endif
@@ -1601,12 +1601,12 @@ void QMdiAreaPrivate::setViewMode(QMdiArea::ViewMode mode)
QObject::connect(tabBar, SIGNAL(tabCloseRequested(int)), q, SLOT(_q_closeTab(int)));
QObject::connect(tabBar, SIGNAL(tabMoved(int,int)), q, SLOT(_q_moveTab(int,int)));
} else
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
{ // SubWindowView
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
delete tabBar;
tabBar = 0;
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
viewMode = mode;
q->setViewportMargins(0, 0, 0, 0);
@@ -1621,7 +1621,7 @@ void QMdiAreaPrivate::setViewMode(QMdiArea::ViewMode mode)
inViewModeChange = false;
}
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
/*!
\internal
*/
@@ -1631,7 +1631,7 @@ void QMdiAreaPrivate::updateTabBarGeometry()
return;
Q_Q(QMdiArea);
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
Q_ASSERT(tabBarShapeFrom(tabShape, tabPosition) == tabBar->shape());
#endif
const QSize tabBarSizeHint = tabBar->sizeHint();
@@ -1645,7 +1645,7 @@ void QMdiAreaPrivate::updateTabBarGeometry()
areaWidth -= vbar->width();
QRect tabBarRect;
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
switch (tabPosition) {
case QTabWidget::North:
q->setViewportMargins(0, tabBarSizeHint.height(), 0, 0);
@@ -1672,7 +1672,7 @@ void QMdiAreaPrivate::updateTabBarGeometry()
default:
break;
}
-#endif // QT_NO_TABWIDGET
+#endif // QT_CONFIG(tabwidget)
tabBar->setGeometry(QStyle::visualRect(q->layoutDirection(), q->contentsRect(), tabBarRect));
}
@@ -1688,12 +1688,12 @@ void QMdiAreaPrivate::refreshTabBar()
tabBar->setDocumentMode(documentMode);
tabBar->setTabsClosable(tabsClosable);
tabBar->setMovable(tabsMovable);
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
tabBar->setShape(tabBarShapeFrom(tabShape, tabPosition));
#endif
updateTabBarGeometry();
}
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
/*!
Constructs an empty mdi area. \a parent is passed to QWidget's
@@ -2138,7 +2138,7 @@ void QMdiArea::setViewMode(ViewMode mode)
d->setViewMode(mode);
}
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
/*!
\property QMdiArea::documentMode
\brief whether the tab bar is set to document mode in tabbed view mode.
@@ -2213,9 +2213,9 @@ void QMdiArea::setTabsMovable(bool movable)
d->tabsMovable = movable;
d->refreshTabBar();
}
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
/*!
\property QMdiArea::tabShape
\brief the shape of the tabs in tabbed view mode.
@@ -2267,7 +2267,7 @@ void QMdiArea::setTabPosition(QTabWidget::TabPosition position)
d->tabPosition = position;
d->refreshTabBar();
}
-#endif // QT_NO_TABWIDGET
+#endif // QT_CONFIG(tabwidget)
/*!
\reimp
@@ -2294,7 +2294,7 @@ void QMdiArea::resizeEvent(QResizeEvent *resizeEvent)
return;
}
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
d->updateTabBarGeometry();
#endif
@@ -2532,7 +2532,7 @@ bool QMdiArea::event(QEvent *event)
d->setActive(d->active, false, false);
d->setChildActivationEnabled(false);
break;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
case QEvent::LayoutDirectionChange:
d->updateTabBarGeometry();
break;
@@ -2629,13 +2629,13 @@ bool QMdiArea::eventFilter(QObject *object, QEvent *event)
d->isSubWindowsTiled = false;
break;
case QEvent::Show:
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
if (d->tabBar) {
const int tabIndex = d->childWindows.indexOf(subWindow);
if (!d->tabBar->isTabEnabled(tabIndex))
d->tabBar->setTabEnabled(tabIndex, true);
}
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
// fall through
case QEvent::Hide:
d->isSubWindowsTiled = false;
@@ -2646,7 +2646,7 @@ bool QMdiArea::eventFilter(QObject *object, QEvent *event)
d->hideRubberBand();
break;
#endif
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
case QEvent::WindowTitleChange:
case QEvent::ModifiedChange:
if (d->tabBar)
@@ -2656,7 +2656,7 @@ bool QMdiArea::eventFilter(QObject *object, QEvent *event)
if (d->tabBar)
d->tabBar->setTabIcon(d->childWindows.indexOf(subWindow), subWindow->windowIcon());
break;
-#endif // QT_NO_TABBAR
+#endif // QT_CONFIG(tabbar)
default:
break;
}
diff --git a/src/widgets/widgets/qmdiarea.h b/src/widgets/widgets/qmdiarea.h
index 44a40948af..acc59296b6 100644
--- a/src/widgets/widgets/qmdiarea.h
+++ b/src/widgets/widgets/qmdiarea.h
@@ -42,7 +42,9 @@
#include <QtWidgets/qtwidgetsglobal.h>
#include <QtWidgets/qabstractscrollarea.h>
+#if QT_CONFIG(tabwidget)
#include <QtWidgets/qtabwidget.h>
+#endif
QT_BEGIN_NAMESPACE
@@ -58,12 +60,12 @@ class Q_WIDGETS_EXPORT QMdiArea : public QAbstractScrollArea
Q_PROPERTY(QBrush background READ background WRITE setBackground)
Q_PROPERTY(WindowOrder activationOrder READ activationOrder WRITE setActivationOrder)
Q_PROPERTY(ViewMode viewMode READ viewMode WRITE setViewMode)
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
Q_PROPERTY(bool documentMode READ documentMode WRITE setDocumentMode)
Q_PROPERTY(bool tabsClosable READ tabsClosable WRITE setTabsClosable)
Q_PROPERTY(bool tabsMovable READ tabsMovable WRITE setTabsMovable)
#endif
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
Q_PROPERTY(QTabWidget::TabShape tabShape READ tabShape WRITE setTabShape)
Q_PROPERTY(QTabWidget::TabPosition tabPosition READ tabPosition WRITE setTabPosition)
#endif
@@ -111,7 +113,7 @@ public:
void setViewMode(ViewMode mode);
ViewMode viewMode() const;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
bool documentMode() const;
void setDocumentMode(bool enabled);
@@ -121,7 +123,7 @@ public:
void setTabsMovable(bool movable);
bool tabsMovable() const;
#endif
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
void setTabShape(QTabWidget::TabShape shape);
QTabWidget::TabShape tabShape() const;
diff --git a/src/widgets/widgets/qmdiarea_p.h b/src/widgets/widgets/qmdiarea_p.h
index b77f3f63ea..10b5de6840 100644
--- a/src/widgets/widgets/qmdiarea_p.h
+++ b/src/widgets/widgets/qmdiarea_p.h
@@ -158,12 +158,12 @@ public:
QMdiArea::WindowOrder activationOrder;
QMdiArea::AreaOptions options;
QMdiArea::ViewMode viewMode;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
bool documentMode;
bool tabsClosable;
bool tabsMovable;
#endif
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
QTabWidget::TabShape tabShape;
QTabWidget::TabPosition tabPosition;
#endif
@@ -213,7 +213,7 @@ public:
QList<QMdiSubWindow *> subWindowList(QMdiArea::WindowOrder, bool reversed = false) const;
void disconnectSubWindow(QObject *subWindow);
void setViewMode(QMdiArea::ViewMode mode);
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
void updateTabBarGeometry();
void refreshTabBar();
#endif
diff --git a/src/widgets/widgets/qmdisubwindow.h b/src/widgets/widgets/qmdisubwindow.h
index e2bb533ddf..875c9a22c8 100644
--- a/src/widgets/widgets/qmdisubwindow.h
+++ b/src/widgets/widgets/qmdisubwindow.h
@@ -138,7 +138,7 @@ private:
Q_PRIVATE_SLOT(d_func(), void _q_enterInteractiveMode())
Q_PRIVATE_SLOT(d_func(), void _q_processFocusChanged(QWidget *, QWidget *))
friend class QMdiAreaPrivate;
-#ifndef QT_NO_TABBAR
+#if QT_CONFIG(tabbar)
friend class QMdiAreaTabBar;
#endif
friend class QMdi::ControlContainer;
diff --git a/src/widgets/widgets/qscrollbar.h b/src/widgets/widgets/qscrollbar.h
index 963ae4263b..c180a62585 100644
--- a/src/widgets/widgets/qscrollbar.h
+++ b/src/widgets/widgets/qscrollbar.h
@@ -85,7 +85,7 @@ private:
Q_DISABLE_COPY(QScrollBar)
Q_DECLARE_PRIVATE(QScrollBar)
-#ifndef QT_NO_ITEMVIEWS
+#if QT_CONFIG(itemviews)
friend class QTableView;
friend class QTreeViewPrivate;
friend class QCommonListViewBase;
diff --git a/src/widgets/widgets/qtabbar.cpp b/src/widgets/widgets/qtabbar.cpp
index 9e803f4388..adaafc7d21 100644
--- a/src/widgets/widgets/qtabbar.cpp
+++ b/src/widgets/widgets/qtabbar.cpp
@@ -38,7 +38,9 @@
****************************************************************************/
#include "private/qlayoutengine_p.h"
+#if QT_CONFIG(itemviews)
#include "qabstractitemdelegate.h"
+#endif
#include "qapplication.h"
#include "qbitmap.h"
#include "qcursor.h"
@@ -47,7 +49,9 @@
#include "qstyle.h"
#include "qstyleoption.h"
#include "qstylepainter.h"
+#if QT_CONFIG(tabwidget)
#include "qtabwidget.h"
+#endif
#include "qtooltip.h"
#if QT_CONFIG(whatsthis)
#include "qwhatsthis.h"
@@ -63,8 +67,6 @@
#include "qdebug.h"
#include "private/qtabbar_p.h"
-#ifndef QT_NO_TABBAR
-
#if 0 // Used to be included in Qt4 for Q_WS_MAC
#include <private/qt_mac_p.h>
#include <private/qt_cocoa_helpers_mac_p.h>
@@ -205,7 +207,7 @@ void QTabBarPrivate::initBasicStyleOption(QStyleOptionTab *option, int tabIndex)
option->position = QStyleOptionTab::Middle;
}
-#ifndef QT_NO_TABWIDGET
+#if QT_CONFIG(tabwidget)
if (const QTabWidget *tw = qobject_cast<const QTabWidget *>(q->parentWidget())) {
option->features |= QStyleOptionTab::HasFrame;
if (tw->cornerWidget(Qt::TopLeftCorner) || tw->cornerWidget(Qt::BottomLeftCorner))
@@ -2690,6 +2692,4 @@ QT_END_NAMESPACE
#include "moc_qtabbar.cpp"
-#endif // QT_NO_TABBAR
-
#include "moc_qtabbar_p.cpp"
diff --git a/src/widgets/widgets/qtabbar.h b/src/widgets/widgets/qtabbar.h
index 2a27a98661..ebcd1094ef 100644
--- a/src/widgets/widgets/qtabbar.h
+++ b/src/widgets/widgets/qtabbar.h
@@ -43,10 +43,9 @@
#include <QtWidgets/qtwidgetsglobal.h>
#include <QtWidgets/qwidget.h>
-QT_BEGIN_NAMESPACE
-
+QT_REQUIRE_CONFIG(tabbar);
-#ifndef QT_NO_TABBAR
+QT_BEGIN_NAMESPACE
class QIcon;
class QTabBarPrivate;
@@ -221,8 +220,6 @@ private:
Q_PRIVATE_SLOT(d_func(), void _q_closeTab())
};
-#endif // QT_NO_TABBAR
-
QT_END_NAMESPACE
#endif // QTABBAR_H
diff --git a/src/widgets/widgets/qtabbar_p.h b/src/widgets/widgets/qtabbar_p.h
index 7141ffc8d5..195ff79c5d 100644
--- a/src/widgets/widgets/qtabbar_p.h
+++ b/src/widgets/widgets/qtabbar_p.h
@@ -60,12 +60,12 @@
#include <qdebug.h>
#include <qvariantanimation.h>
-#ifndef QT_NO_TABBAR
-
#define ANIMATION_DURATION 250
#include <qstyleoption.h>
+QT_REQUIRE_CONFIG(tabbar);
+
QT_BEGIN_NAMESPACE
class QMovableTabWidget : public QWidget
@@ -286,9 +286,6 @@ public:
void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE;
};
-
QT_END_NAMESPACE
#endif
-
-#endif
diff --git a/src/widgets/widgets/qtabwidget.cpp b/src/widgets/widgets/qtabwidget.cpp
index c84c78275d..c496d267b3 100644
--- a/src/widgets/widgets/qtabwidget.cpp
+++ b/src/widgets/widgets/qtabwidget.cpp
@@ -39,7 +39,6 @@
#include "qtabwidget.h"
-#ifndef QT_NO_TABWIDGET
#include "private/qwidget_p.h"
#include "private/qtabbar_p.h"
#include "qapplication.h"
@@ -1375,5 +1374,3 @@ void QTabWidget::clear()
QT_END_NAMESPACE
#include "moc_qtabwidget.cpp"
-
-#endif //QT_NO_TABWIDGET
diff --git a/src/widgets/widgets/qtabwidget.h b/src/widgets/widgets/qtabwidget.h
index 7d8864241a..b80fdba1fb 100644
--- a/src/widgets/widgets/qtabwidget.h
+++ b/src/widgets/widgets/qtabwidget.h
@@ -44,10 +44,9 @@
#include <QtWidgets/qwidget.h>
#include <QtGui/qicon.h>
-QT_BEGIN_NAMESPACE
-
+QT_REQUIRE_CONFIG(tabwidget);
-#ifndef QT_NO_TABWIDGET
+QT_BEGIN_NAMESPACE
class QTabBar;
class QTabWidgetPrivate;
@@ -181,8 +180,6 @@ private:
void setUpLayout(bool = false);
};
-#endif // QT_NO_TABWIDGET
-
QT_END_NAMESPACE
#endif // QTABWIDGET_H
diff --git a/src/widgets/widgets/qtoolbar.cpp b/src/widgets/widgets/qtoolbar.cpp
index aaa64c8b2f..476f9d4cfa 100644
--- a/src/widgets/widgets/qtoolbar.cpp
+++ b/src/widgets/widgets/qtoolbar.cpp
@@ -42,7 +42,9 @@
#ifndef QT_NO_TOOLBAR
#include <qapplication.h>
+#if QT_CONFIG(combobox)
#include <qcombobox.h>
+#endif
#include <qevent.h>
#include <qlayout.h>
#include <qmainwindow.h>
diff --git a/src/widgets/widgets/qtoolbarlayout.cpp b/src/widgets/widgets/qtoolbarlayout.cpp
index 79174bdbff..39e61a1951 100644
--- a/src/widgets/widgets/qtoolbarlayout.cpp
+++ b/src/widgets/widgets/qtoolbarlayout.cpp
@@ -666,7 +666,7 @@ void QToolBarLayout::setExpanded(bool exp)
extension->setChecked(expanded);
if (QMainWindow *win = qobject_cast<QMainWindow*>(tb->parentWidget())) {
-#ifdef QT_NO_DOCKWIDGET
+#if !QT_CONFIG(dockwidget)
animating = false;
#else
animating = !tb->isWindow() && win->isAnimated();
diff --git a/src/widgets/widgets/qwidgetlinecontrol.cpp b/src/widgets/widgets/qwidgetlinecontrol.cpp
index 97df3427b0..9555ccc5b6 100644
--- a/src/widgets/widgets/qwidgetlinecontrol.cpp
+++ b/src/widgets/widgets/qwidgetlinecontrol.cpp
@@ -41,7 +41,9 @@
#ifndef QT_NO_LINEEDIT
+#if QT_CONFIG(itemviews)
#include "qabstractitemview.h"
+#endif
#include "qclipboard.h"
#include <private/qguiapplication_p.h>
#include <qpa/qplatformtheme.h>
@@ -548,10 +550,10 @@ void QWidgetLineControl::processInputMethodEvent(QInputMethodEvent *event)
if (!event->commitString().isEmpty()) {
internalInsert(event->commitString());
cursorPositionChanged = true;
+ } else {
+ m_cursor = qBound(0, c, m_text.length());
}
- m_cursor = qBound(0, c, m_text.length());
-
for (int i = 0; i < event->attributes().size(); ++i) {
const QInputMethodEvent::Attribute &a = event->attributes().at(i);
if (a.type == QInputMethodEvent::Selection) {
diff --git a/src/widgets/widgets/widgets.pri b/src/widgets/widgets/widgets.pri
index 610932c6ce..aed3f53478 100644
--- a/src/widgets/widgets/widgets.pri
+++ b/src/widgets/widgets/widgets.pri
@@ -5,13 +5,7 @@ HEADERS += \
widgets/qbuttongroup_p.h \
widgets/qabstractspinbox.h \
widgets/qabstractspinbox_p.h \
- widgets/qcalendarwidget.h \
- widgets/qcombobox.h \
- widgets/qcombobox_p.h \
widgets/qdial.h \
- widgets/qdockwidget.h \
- widgets/qdockwidget_p.h \
- widgets/qdockarealayout_p.h \
widgets/qframe.h \
widgets/qframe_p.h \
widgets/qgroupbox.h \
@@ -40,9 +34,6 @@ HEADERS += \
widgets/qsplitter_p.h \
widgets/qstackedwidget.h \
widgets/qstatusbar.h \
- widgets/qtabbar.h \
- widgets/qtabbar_p.h \
- widgets/qtabwidget.h \
widgets/qtextedit.h \
widgets/qtextedit_p.h \
widgets/qtextbrowser.h \
@@ -67,11 +58,7 @@ HEADERS += \
SOURCES += \
widgets/qbuttongroup.cpp \
widgets/qabstractspinbox.cpp \
- widgets/qcalendarwidget.cpp \
- widgets/qcombobox.cpp \
widgets/qdial.cpp \
- widgets/qdockwidget.cpp \
- widgets/qdockarealayout.cpp \
widgets/qeffects.cpp \
widgets/qframe.cpp \
widgets/qgroupbox.cpp \
@@ -92,8 +79,6 @@ SOURCES += \
widgets/qsplitter.cpp \
widgets/qstackedwidget.cpp \
widgets/qstatusbar.cpp \
- widgets/qtabbar.cpp \
- widgets/qtabwidget.cpp \
widgets/qtextedit.cpp \
widgets/qtextbrowser.cpp \
widgets/qtoolbar.cpp \
@@ -129,6 +114,11 @@ qtConfig(abstractslider) {
widgets/qabstractslider.cpp
}
+qtConfig(calendarwidget) {
+ HEADERS += widgets/qcalendarwidget.h
+ SOURCES += widgets/qcalendarwidget.cpp
+}
+
qtConfig(checkbox) {
HEADERS += \
widgets/qcheckbox.h
@@ -137,6 +127,14 @@ qtConfig(checkbox) {
widgets/qcheckbox.cpp
}
+qtConfig(combobox) {
+ HEADERS += \
+ widgets/qcombobox.h \
+ widgets/qcombobox_p.h
+
+ SOURCES += widgets/qcombobox.cpp
+}
+
qtConfig(commandlinkbutton) {
HEADERS += \
widgets/qcommandlinkbutton.h
@@ -154,6 +152,17 @@ qtConfig(datetimeedit) {
widgets/qdatetimeedit.cpp
}
+qtConfig(dockwidget) {
+ HEADERS += \
+ widgets/qdockwidget.h \
+ widgets/qdockwidget_p.h \
+ widgets/qdockarealayout_p.h
+
+ SOURCES += \
+ widgets/qdockwidget.cpp \
+ widgets/qdockarealayout.cpp
+}
+
qtConfig(fontcombobox) {
HEADERS += widgets/qfontcombobox.h
SOURCES += widgets/qfontcombobox.cpp
@@ -214,6 +223,19 @@ qtConfig(splashscreen) {
widgets/qsplashscreen.cpp
}
+qtConfig(tabbar) {
+ HEADERS += \
+ widgets/qtabbar.h \
+ widgets/qtabbar_p.h
+
+ SOURCES += widgets/qtabbar.cpp
+}
+
+qtConfig(tabwidget) {
+ HEADERS += widgets/qtabwidget.h
+ SOURCES += widgets/qtabwidget.cpp
+}
+
qtConfig(widgettextcontrol) {
HEADERS += \
widgets/qwidgettextcontrol_p.h \