summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2013-06-15 22:39:25 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-06-15 22:39:25 +0200
commite5bcf68d3055d6738b56cbbafb407bad4363e63c (patch)
treed70319316c926697e136527ce9a6628d34f0ebc4
parentd57d184b6d18deab172ac400b9db973e6aacab21 (diff)
parentbe4b80af8235d5f5664f03589258eec0e43da78b (diff)
Merge "Merge remote-tracking branch 'origin/release' into stable" into refs/staging/stable
-rwxr-xr-xbin/syncqt.pl11
-rw-r--r--mkspecs/features/cmake_functions.prf2
-rw-r--r--mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in6
-rw-r--r--mkspecs/features/qml_plugin.prf2
-rw-r--r--mkspecs/features/qt_android_deps.prf2
-rw-r--r--mkspecs/features/qt_build_paths.prf9
-rw-r--r--mkspecs/features/qt_config.prf6
-rw-r--r--mkspecs/features/qt_module_headers.prf6
-rw-r--r--mkspecs/features/qt_module_pris.prf52
-rw-r--r--mkspecs/features/resources.prf6
-rw-r--r--mkspecs/features/spec_post.prf2
-rw-r--r--mkspecs/features/uic.prf2
-rw-r--r--src/3rdparty/xkbcommon.pri2
-rw-r--r--src/angle/angle.pro2
-rw-r--r--src/angle/src/libEGL/libEGL.pro2
-rw-r--r--src/angle/src/libGLESv2/libGLESv2.pro4
-rw-r--r--src/corelib/Qt5CTestMacros.cmake4
-rw-r--r--src/corelib/global/qglobal.cpp6
-rw-r--r--src/gui/Qt5GuiConfigExtras.cmake.in18
-rw-r--r--src/gui/gui.pro6
-rw-r--r--src/gui/opengl/qopenglfunctions_4_1_core.cpp1
-rw-r--r--src/gui/painting/qcosmeticstroker.cpp42
-rw-r--r--src/gui/painting/qcosmeticstroker_p.h2
-rw-r--r--src/gui/painting/qrasterizer.cpp61
-rw-r--r--src/opengl/qglframebufferobject.cpp1
-rw-r--r--src/plugins/platforms/android/src/androidjniinput.cpp4
-rw-r--r--src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm1
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.h2
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.mm8
-rw-r--r--src/plugins/platforms/cocoa/qnsview.h2
-rw-r--r--src/plugins/platforms/cocoa/qnsview.mm43
-rw-r--r--src/plugins/platforms/cocoa/qnswindowdelegate.h1
-rw-r--r--src/plugins/platforms/cocoa/qnswindowdelegate.mm8
-rw-r--r--src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.h2
-rw-r--r--src/plugins/platforms/windows/qwindowsdialoghelpers.cpp36
-rw-r--r--src/tools/bootstrap-dbus/bootstrap-dbus.pro3
-rw-r--r--src/tools/bootstrap/bootstrap.pro5
-rw-r--r--src/tools/qdoc/doc/examples/cpp.qdoc.sample (renamed from src/tools/qdoc/doc/examples/cpp.qdoc)0
-rw-r--r--src/tools/qdoc/doc/examples/qml.qdoc.sample (renamed from src/tools/qdoc/doc/examples/qml.qdoc)0
-rw-r--r--src/tools/qdoc/doc/files/qtgui.qdocconf50
-rw-r--r--src/tools/qdoc/doc/qdoc-guide/qtwritingstyle-cpp.qdoc14
-rw-r--r--src/tools/qdoc/doc/qdoc-guide/qtwritingstyle-qml.qdoc8
-rw-r--r--src/tools/qdoc/doc/qdoc-manual.qdoc50
-rw-r--r--sync.profile8
-rw-r--r--tests/auto/tools/moc/no-keywords.h2
-rw-r--r--tools/configure/configureapp.cpp6
46 files changed, 325 insertions, 185 deletions
diff --git a/bin/syncqt.pl b/bin/syncqt.pl
index d1424f0c32..8c1e04e0d0 100755
--- a/bin/syncqt.pl
+++ b/bin/syncqt.pl
@@ -805,7 +805,9 @@ foreach my $lib (@modules_to_sync) {
die "No such module: $lib" unless(defined $modules{$lib});
#iteration info
- my @dirs = split(/;/, $modules{$lib});
+ my $module = $modules{$lib};
+ my $is_qt = !($module =~ s/^!//);
+ my @dirs = split(/;/, $module);
my $dir = $dirs[0];
my $pathtoheaders = "";
@@ -914,7 +916,7 @@ foreach my $lib (@modules_to_sync) {
}
my $iheader = $subdir . "/" . $header;
- my @classes = $public_header && !$minimal ? classNames($iheader) : ();
+ my @classes = $public_header && (!$minimal && $is_qt) ? classNames($iheader) : ();
if($showonly) {
print "$header [$lib]\n";
foreach(@classes) {
@@ -1024,7 +1026,7 @@ foreach my $lib (@modules_to_sync) {
"#include \"".lc($lib)."version.h\"\n" .
"#endif\n";
- unless ($showonly || $minimal) {
+ unless ($showonly || $minimal || !$is_qt) {
# create deprecated headers
my $first = 1;
while (my ($header, $include) = each %{$deprecatedheaders{$lib}}) {
@@ -1112,7 +1114,9 @@ foreach my $lib (@modules_to_sync) {
my $master_include = "$out_basedir/include/$lib/$lib";
$pri_install_files .= fixPaths($master_include, $dir) . " ";
writeFile($master_include, $master_contents, $lib, "master header");
+ }
+ unless ($showonly || $minimal) {
#handle the headers.pri for each module
my $headers_pri_contents = "";
$headers_pri_contents .= "SYNCQT.HEADER_FILES = $pri_install_files\n";
@@ -1126,6 +1130,7 @@ foreach my $lib (@modules_to_sync) {
if($check_includes) {
foreach my $lib (@modules_to_sync) {
+ next if ($modules{$lib} =~ /^!/);
#calc subdirs
my @subdirs = listSubdirs(map { s/^\^//; $_ } split(/;/, $modules{$lib}));
diff --git a/mkspecs/features/cmake_functions.prf b/mkspecs/features/cmake_functions.prf
index f48ef43b88..a67fd9af9b 100644
--- a/mkspecs/features/cmake_functions.prf
+++ b/mkspecs/features/cmake_functions.prf
@@ -45,7 +45,7 @@ defineReplace(cmakePortablePaths) {
variable = $$1
out =
for(v, variable) {
- out += ${CMAKE_FIND_ROOT_PATH}$$cmakeTargetPath($$v)
+ out += $$[QT_SYSROOT]$$cmakeTargetPath($$v)
}
return ($$join(out, ";"))
}
diff --git a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
index f6fd61602f..c55b728f1b 100644
--- a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
+++ b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in
@@ -104,7 +104,11 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME})
set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS)
!!ENDIF
- foreach(_dir ${_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS} ${Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS})
+ foreach(_dir ${_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS}
+!!IF isEmpty(CMAKE_BUILD_IS_FRAMEWORK)
+ ${Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS}
+!!ENDIF
+ )
_qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${_dir})
endforeach()
diff --git a/mkspecs/features/qml_plugin.prf b/mkspecs/features/qml_plugin.prf
index 70c3bd6b66..28fbb392a7 100644
--- a/mkspecs/features/qml_plugin.prf
+++ b/mkspecs/features/qml_plugin.prf
@@ -86,7 +86,7 @@ load(qt_common)
qtAddToolEnv(QMLPLUGINDUMP, importpath)
TARGETPATHBASE = $$replace(TARGETPATH, \\.\\d+\$, )
qmltypes.target = qmltypes
- qmltypes.commands = $$QMLPLUGINDUMP $$replace(TARGETPATHBASE, /, .) $$IMPORT_VERSION > $$QMLTYPEFILE
+ qmltypes.commands = $$QMLPLUGINDUMP -nonrelocatable $$replace(TARGETPATHBASE, /, .) $$IMPORT_VERSION > $$QMLTYPEFILE
qmltypes.depends = $$QMAKE_RESOLVED_TARGET
} else {
qmltypes.CONFIG += recursive
diff --git a/mkspecs/features/qt_android_deps.prf b/mkspecs/features/qt_android_deps.prf
index c258d55687..96337da9de 100644
--- a/mkspecs/features/qt_android_deps.prf
+++ b/mkspecs/features/qt_android_deps.prf
@@ -13,7 +13,7 @@
# of the module on JNI-based libraries etc. Used for deployment of an Android
# app.
-ANDROID_DEPENDS_DIR = $$MODULE_QMAKE_OUTDIR/lib/
+ANDROID_DEPENDS_DIR = $$MODULE_BASE_OUTDIR/lib/
DEPENDENCY_FILE = $$ANDROID_DEPENDS_DIR$$TARGET-android-dependencies.xml
!build_pass {
diff --git a/mkspecs/features/qt_build_paths.prf b/mkspecs/features/qt_build_paths.prf
index 25fc2c3033..9163ac30b2 100644
--- a/mkspecs/features/qt_build_paths.prf
+++ b/mkspecs/features/qt_build_paths.prf
@@ -11,12 +11,13 @@
# Find the module's source root dir.
isEmpty(_QMAKE_CONF_): error("Project has no top-level .qmake.conf file.")
-MODULE_PROFILE_DIR = $$dirname(_QMAKE_CONF_)
-isEmpty(MODULE_BASE_DIR): MODULE_BASE_DIR = $$MODULE_PROFILE_DIR
-isEmpty(MODULE_BASE_OUTDIR): MODULE_BASE_OUTDIR = $$shadowed($$MODULE_BASE_DIR)
+MODULE_BASE_INDIR = $$dirname(_QMAKE_CONF_)
+MODULE_BASE_OUTDIR = $$shadowed($$MODULE_BASE_INDIR)
+!isEmpty(MODULE_BASE_DIR): MODULE_SYNCQT_DIR = $$MODULE_BASE_DIR # compat for webkit
+isEmpty(MODULE_SYNCQT_DIR): MODULE_SYNCQT_DIR = $$MODULE_BASE_INDIR
isEmpty(MODULE_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$MODULE_BASE_OUTDIR
-exists($$MODULE_PROFILE_DIR/.git): \
+exists($$MODULE_BASE_INDIR/.git): \
CONFIG += git_build
!prefix_build {
diff --git a/mkspecs/features/qt_config.prf b/mkspecs/features/qt_config.prf
index 77d2c0ffc7..cbbd136270 100644
--- a/mkspecs/features/qt_config.prf
+++ b/mkspecs/features/qt_config.prf
@@ -15,9 +15,9 @@ QMAKE_QT_CONFIG = $$[QT_HOST_DATA/get]/mkspecs/qconfig.pri
for(dir, QMAKE_MODULE_PATH) {
debug(1, "Loading modules from $${dir}")
for(mod, $$list($$files($$dir/qt_*.pri))) {
- # For installed Qt these paths will be common for all modules
- # For development these will vary per module, and syncqt will override the value in the
- # qt_<module>.pri forwarding file
+ # For installed Qt these paths will be common for all modules.
+ # For uninstalled prefix builds these will vary per module, via the
+ # forwarding module pri files. Keep qt_module_pris.prf in sync with this!
QT_MODULE_INCLUDE_BASE = $$[QT_INSTALL_HEADERS]
QT_MODULE_LIB_BASE = $$[QT_INSTALL_LIBS]
QT_MODULE_HOST_LIB_BASE = $$[QT_HOST_LIBS]
diff --git a/mkspecs/features/qt_module_headers.prf b/mkspecs/features/qt_module_headers.prf
index fd6cf6b943..ca26eb674b 100644
--- a/mkspecs/features/qt_module_headers.prf
+++ b/mkspecs/features/qt_module_headers.prf
@@ -21,7 +21,7 @@ load(qt_build_paths)
QMAKE_SYNCQT += -module $$MODULE_INCNAME -version $$VERSION
}
QMAKE_SYNCQT += \
- -outdir $$MODULE_BASE_OUTDIR $$MODULE_BASE_DIR
+ -outdir $$MODULE_BASE_OUTDIR $$MODULE_SYNCQT_DIR
!silent: message($$QMAKE_SYNCQT)
system($$QMAKE_SYNCQT)|error("Failed to run: $$QMAKE_SYNCQT")
}
@@ -32,11 +32,11 @@ minimal_syncqt: return()
git_build: \
INC_PATH = $$MODULE_BASE_OUTDIR
else: \
- INC_PATH = $$MODULE_BASE_DIR
+ INC_PATH = $$MODULE_BASE_INDIR
include($$INC_PATH/include/$$MODULE_INCNAME/headers.pri, "", true)
autogen_warning = \
- "/* This file was generated by qmake with the info from <root>/$$relative_path($$_PRO_FILE_, $$MODULE_BASE_DIR). */"
+ "/* This file was generated by qmake with the info from <root>/$$relative_path($$_PRO_FILE_, $$MODULE_BASE_INDIR). */"
# Create a module master depends header
MODULE_MASTER_DEPS_HEADER = $$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME/$${MODULE_INCNAME}Depends
diff --git a/mkspecs/features/qt_module_pris.prf b/mkspecs/features/qt_module_pris.prf
index 666989f75e..81b37f0e92 100644
--- a/mkspecs/features/qt_module_pris.prf
+++ b/mkspecs/features/qt_module_pris.prf
@@ -10,8 +10,17 @@
#
load(qt_build_paths)
+# Pre-generated headers in the source tree and
+# - shadow build or
+# - non-shadow non-prefix build of a module which is not qtbase (because the build-time
+# generated headers all end up in qtbase).
+!git_build:if(!equals(_PRO_FILE_PWD_, $$OUT_PWD) \
+ |if(!prefix_build:!equals(MODULE_BASE_INDIR, $$[QT_HOST_PREFIX]))): \
+ CONFIG += split_incpath
+force_independent|split_incpath: \
+ CONFIG += need_fwd_pri
MODULE_FWD_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_lib_$${MODULE}.pri
-force_independent: \
+need_fwd_pri: \
MODULE_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules-inst/qt_lib_$${MODULE}.pri
else: \
MODULE_PRI = $$MODULE_FWD_PRI
@@ -56,18 +65,22 @@ else: \
MODULE_PRIVATE_INCLUDES = \$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME/$$VERSION \
\$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME
}
- !git_build:if(!equals(_PRO_FILE_PWD_, $$OUT_PWD) \
- |if(!prefix_build:!equals(MODULE_BASE_DIR, $$[QT_HOST_PREFIX]))) {
- pub_inc = $$replace(MODULE_INCLUDES, ^\\\$\\\$QT_MODULE_INCLUDE_BASE, $$MODULE_BASE_DIR/include)
- priv_inc = $$replace(MODULE_PRIVATE_INCLUDES, ^\\\$\\\$QT_MODULE_INCLUDE_BASE, $$MODULE_BASE_DIR/include)
- force_independent {
- MODULE_FWD_PRI_CONT_SUFFIX = \
- "QT.$${MODULE}.includes += $$pub_inc" \
- "QT.$${MODULE}.private_includes = $$priv_inc"
- } else {
- MODULE_INCLUDES += $$pub_inc
- MODULE_PRIVATE_INCLUDES = $$priv_inc
- }
+ split_incpath: \
+ MODULE_SHADOW_INCLUDES = $$replace(MODULE_INCLUDES, ^\\\$\\\$QT_MODULE_INCLUDE_BASE, \
+ $$MODULE_BASE_OUTDIR/include)
+ MODULE_INCLUDES += $$MODULE_AUX_INCLUDES
+ MODULE_PRIVATE_INCLUDES += $$MODULE_PRIVATE_AUX_INCLUDES
+ internal_module {
+ MODULE_PRIVATE_INCLUDES = $$MODULE_INCLUDES $$MODULE_PRIVATE_INCLUDES
+ MODULE_INCLUDES =
+ MODULE_PRIVATE_SHADOW_INCLUDES = $$MODULE_SHADOW_INCLUDES
+ MODULE_SHADOW_INCLUDES =
+ }
+ split_incpath {
+ !isEmpty(MODULE_SHADOW_INCLUDES): \
+ MODULE_FWD_PRI_CONT_SUFFIX += "QT.$${MODULE}.includes += $$MODULE_SHADOW_INCLUDES"
+ !isEmpty(MODULE_PRIVATE_SHADOW_INCLUDES): \
+ MODULE_FWD_PRI_CONT_SUFFIX += "QT.$${MODULE}.private_includes += $$MODULE_PRIVATE_SHADOW_INCLUDES"
}
MODULE_PRI_CONT = \
"QT.$${MODULE}.VERSION = $${VERSION}" \
@@ -98,12 +111,17 @@ else: \
write_file($$MODULE_PRI, MODULE_PRI_CONT)|error("Aborting.")
MODULE_PRI_FILES = $$MODULE_PRI
- force_independent {
+ need_fwd_pri {
+
+ split_incpath: \
+ MODULE_BASE_INCDIR = $$MODULE_BASE_INDIR
+ else: \
+ MODULE_BASE_INCDIR = $$MODULE_BASE_OUTDIR
# Create a forwarding module .pri file
MODULE_FWD_PRI_CONT = \
"QT_MODULE_BIN_BASE = $$MODULE_BASE_OUTDIR/bin" \
- "QT_MODULE_INCLUDE_BASE = $$MODULE_BASE_OUTDIR/include" \
+ "QT_MODULE_INCLUDE_BASE = $$MODULE_BASE_INCDIR/include" \
"QT_MODULE_IMPORT_BASE = $$MODULE_BASE_OUTDIR/imports" \
"QT_MODULE_QML_BASE = $$MODULE_BASE_OUTDIR/qml" \
"QT_MODULE_LIB_BASE = $$MODULE_BASE_OUTDIR/lib" \
@@ -116,9 +134,9 @@ else: \
touch($$MODULE_FWD_PRI, $$MODULE_PRI)
MODULE_PRI_FILES += $$MODULE_FWD_PRI
- } else { # prefix_build
+ } else {
- # This is needed for the direct include() below.
+ # This is needed for the direct include() below. Mirrors qt_config.prf
QT_MODULE_BIN_BASE = $$[QT_INSTALL_BINS]
QT_MODULE_INCLUDE_BASE = $$[QT_INSTALL_HEADERS]
QT_MODULE_IMPORT_BASE = $$[QT_INSTALL_IMPORTS]
diff --git a/mkspecs/features/resources.prf b/mkspecs/features/resources.prf
index ed44d9c308..34a04b4ee2 100644
--- a/mkspecs/features/resources.prf
+++ b/mkspecs/features/resources.prf
@@ -18,11 +18,11 @@ resource_combine {
QMAKE_RESOURCE_FLAGS += -name ${QMAKE_FILE_BASE}
}
}
-rcc.commands = "$$QMAKE_RCC" $$QMAKE_RESOURCE_FLAGS "${QMAKE_FILE_IN}" -o "${QMAKE_FILE_OUT}"
-rcc.depend_command = "$$QMAKE_RCC" -list $$QMAKE_RESOURCE_FLAGS "${QMAKE_FILE_IN}"
+rcc.commands = $$QMAKE_RCC $$QMAKE_RESOURCE_FLAGS ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
+rcc.depend_command = $$QMAKE_RCC -list $$QMAKE_RESOURCE_FLAGS ${QMAKE_FILE_IN}
rcc.CONFIG += add_inputs_as_makefile_deps
rcc.input = RESOURCES
rcc.variable_out = SOURCES
rcc.name = RCC ${QMAKE_FILE_IN}
-silent:rcc.commands = @echo rcc "${QMAKE_FILE_IN}" && $$rcc.commands
+silent:rcc.commands = @echo rcc ${QMAKE_FILE_IN} && $$rcc.commands
QMAKE_EXTRA_COMPILERS += rcc
diff --git a/mkspecs/features/spec_post.prf b/mkspecs/features/spec_post.prf
index 46a512bf17..c9e9f8b2f6 100644
--- a/mkspecs/features/spec_post.prf
+++ b/mkspecs/features/spec_post.prf
@@ -42,7 +42,7 @@ isEmpty(QMAKE_COMPILER) {
else:*-llvm*: \
QMAKE_COMPILER = gcc llvm
else:*-clang*: \
- QMAKE_COMPILER = clang llvm
+ QMAKE_COMPILER = gcc clang llvm
else:*-msvc*: \
QMAKE_COMPILER = msvc
else: \
diff --git a/mkspecs/features/uic.prf b/mkspecs/features/uic.prf
index 36ec185f7b..83e579cb3a 100644
--- a/mkspecs/features/uic.prf
+++ b/mkspecs/features/uic.prf
@@ -4,7 +4,7 @@ isEmpty(UI_DIR):UI_DIR = .
isEmpty(QMAKE_MOD_UIC):QMAKE_MOD_UIC = ui_
uic.commands = $$QMAKE_UIC ${QMAKE_FILE_IN} -o ${QMAKE_FILE_OUT}
-uic.depend_command = "$$QMAKE_UIC" -d "${QMAKE_FILE_IN}"
+uic.depend_command = $$QMAKE_UIC -d ${QMAKE_FILE_IN}
uic.output = $$UI_DIR/$${QMAKE_MOD_UIC}${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)}
uic.input = FORMS
uic.variable_out = GENERATED_FILES
diff --git a/src/3rdparty/xkbcommon.pri b/src/3rdparty/xkbcommon.pri
index 99536576f7..d437c6b8b6 100644
--- a/src/3rdparty/xkbcommon.pri
+++ b/src/3rdparty/xkbcommon.pri
@@ -1,4 +1,4 @@
-QMAKE_CFLAGS = -std=gnu99 -w
+QMAKE_CFLAGS += -std=gnu99 -w
INCLUDEPATH += $$PWD/xkbcommon $$PWD/xkbcommon/src $$PWD/xkbcommon/src/xkbcomp
DEFINES += DFLT_XKB_CONFIG_ROOT='\\"/usr/share/X11/xkb\\"'
diff --git a/src/angle/angle.pro b/src/angle/angle.pro
index 721caf880a..83510698d3 100644
--- a/src/angle/angle.pro
+++ b/src/angle/angle.pro
@@ -6,5 +6,5 @@ SUBDIRS += src
# 2) If we made a 'QtANGLE' module, the include directory would be flattened which won't work since
# we need to support "#include <GLES2/gl2.h>"
CONFIG += minimal_syncqt
-QMAKE_SYNCQT_OPTIONS = -module KHR -module EGL -module GLES2 -version none
+QMAKE_SYNCQT_OPTIONS = -module QtANGLE/KHR -module QtANGLE/EGL -module QtANGLE/GLES2 -version none
load(qt_module_headers)
diff --git a/src/angle/src/libEGL/libEGL.pro b/src/angle/src/libEGL/libEGL.pro
index c0d021ccab..1a338ef0d2 100644
--- a/src/angle/src/libEGL/libEGL.pro
+++ b/src/angle/src/libEGL/libEGL.pro
@@ -40,5 +40,5 @@ egl_headers.files = \
$$ANGLE_DIR/include/EGL/egl.h \
$$ANGLE_DIR/include/EGL/eglext.h \
$$ANGLE_DIR/include/EGL/eglplatform.h
-egl_headers.path = $$[QT_INSTALL_HEADERS]/EGL
+egl_headers.path = $$[QT_INSTALL_HEADERS]/QtANGLE/EGL
INSTALLS += egl_headers
diff --git a/src/angle/src/libGLESv2/libGLESv2.pro b/src/angle/src/libGLESv2/libGLESv2.pro
index d12202f33b..ba1f226143 100644
--- a/src/angle/src/libGLESv2/libGLESv2.pro
+++ b/src/angle/src/libGLESv2/libGLESv2.pro
@@ -235,12 +235,12 @@ for (vs, CLEAR_SHADERS) {
load(qt_installs)
khr_headers.files = $$ANGLE_DIR/include/KHR/khrplatform.h
-khr_headers.path = $$[QT_INSTALL_HEADERS]/KHR
+khr_headers.path = $$[QT_INSTALL_HEADERS]/QtANGLE/KHR
gles2_headers.files = \
$$ANGLE_DIR/include/GLES2/gl2.h \
$$ANGLE_DIR/include/GLES2/gl2ext.h \
$$ANGLE_DIR/include/GLES2/gl2platform.h
-gles2_headers.path = $$[QT_INSTALL_HEADERS]/GLES2
+gles2_headers.path = $$[QT_INSTALL_HEADERS]/QtANGLE/GLES2
INSTALLS += khr_headers gles2_headers
diff --git a/src/corelib/Qt5CTestMacros.cmake b/src/corelib/Qt5CTestMacros.cmake
index 51537a3904..126a348b47 100644
--- a/src/corelib/Qt5CTestMacros.cmake
+++ b/src/corelib/Qt5CTestMacros.cmake
@@ -38,10 +38,6 @@ foreach(module ${CMAKE_MODULES_UNDER_TEST})
)
endforeach()
-if(CMAKE_CROSSCOMPILING AND CMAKE_FIND_ROOT_PATH)
- list(APPEND BUILD_OPTIONS_LIST "-DCMAKE_CXX_LINK_FLAGS=--sysroot=\"${CMAKE_FIND_ROOT_PATH}\"")
-endif()
-
macro(expect_pass _dir)
string(REPLACE "(" "_" testname "${_dir}")
string(REPLACE ")" "_" testname "${testname}")
diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp
index 4598f60d5e..6f63a0d9d3 100644
--- a/src/corelib/global/qglobal.cpp
+++ b/src/corelib/global/qglobal.cpp
@@ -1050,9 +1050,9 @@ bool qSharedBuild() Q_DECL_NOTHROW
\value MV_10_0 Mac OS X 10.0 (unsupported)
\value MV_10_1 Mac OS X 10.1 (unsupported)
\value MV_10_2 Mac OS X 10.2 (unsupported)
- \value MV_10_3 Mac OS X 10.3
- \value MV_10_4 Mac OS X 10.4
- \value MV_10_5 Mac OS X 10.5
+ \value MV_10_3 Mac OS X 10.3 (unsupported)
+ \value MV_10_4 Mac OS X 10.4 (unsupported)
+ \value MV_10_5 Mac OS X 10.5 (unsupported)
\value MV_10_6 Mac OS X 10.6
\value MV_10_7 Mac OS X 10.7
\value MV_10_8 Mac OS X 10.8
diff --git a/src/gui/Qt5GuiConfigExtras.cmake.in b/src/gui/Qt5GuiConfigExtras.cmake.in
index f1bc441009..83e77280d5 100644
--- a/src/gui/Qt5GuiConfigExtras.cmake.in
+++ b/src/gui/Qt5GuiConfigExtras.cmake.in
@@ -2,13 +2,15 @@
!!IF !isEmpty(CMAKE_ANGLE_EGL_DLL_RELEASE)
!!IF isEmpty(CMAKE_INCLUDE_DIR_IS_ABSOLUTE)
-set(Qt5Gui_EGL_INCLUDE_DIRS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$$CMAKE_INCLUDE_DIR\")
+set(Qt5Gui_EGL_INCLUDE_DIRS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$$CMAKE_INCLUDE_DIR/QtANGLE\")
!!ELSE
-set(Qt5Gui_EGL_INCLUDE_DIRS \"$$CMAKE_INCLUDE_DIR\")
+set(Qt5Gui_EGL_INCLUDE_DIRS \"$$CMAKE_INCLUDE_DIR/QtANGLE\")
!!ENDIF
_qt5_Gui_check_file_exists(${Qt5Gui_EGL_INCLUDE_DIRS})
+list(APPEND Qt5Gui_INCLUDE_DIRS ${Qt5Gui_EGL_INCLUDE_DIRS})
+set_property(TARGET Qt5::Gui APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${Qt5Gui_EGL_INCLUDE_DIRS})
set(Qt5Gui_OPENGL_INCLUDE_DIRS ${Qt5Gui_EGL_INCLUDE_DIRS})
macro(_populate_qt5gui_gl_target_properties TargetName Configuration LIB_LOCATION IMPLIB_LOCATION)
@@ -55,7 +57,7 @@ find_path(_qt5gui_OPENGL_INCLUDE_DIR $$CMAKE_GL_HEADER_NAME
PATHS $$CMAKE_GL_INCDIRS
NO_DEFAULT_PATH)
if (NOT _qt5gui_OPENGL_INCLUDE_DIR)
- message(FATAL_ERROR \"Failed to find \\\"$$CMAKE_GL_HEADER_NAME\\\" in \\\"$$CMAKE_GL_INCDIRS\\\", using the CMAKE_FIND_ROOT_PATH \\\"${CMAKE_FIND_ROOT_PATH}\\\".\")
+ message(FATAL_ERROR \"Failed to find \\\"$$CMAKE_GL_HEADER_NAME\\\" in \\\"$$CMAKE_GL_INCDIRS\\\".\")
endif()
_qt5_Gui_check_file_exists(${_qt5gui_OPENGL_INCLUDE_DIR})
@@ -85,7 +87,7 @@ macro(_qt5gui_find_extra_libs Name Libs LibDir IncDirs)
if (\"${ARGN}\" STREQUAL \"OPTIONAL\")
break()
else()
- message(FATAL_ERROR \"Failed to find \\\"${_lib}\\\" in \\\"${LibDir}\\\", using the CMAKE_FIND_ROOT_PATH \\\"${CMAKE_FIND_ROOT_PATH}\\\".\")
+ message(FATAL_ERROR \"Failed to find \\\"${_lib}\\\" in \\\"${LibDir}\\\".\")
endif()
endif()
add_library(Qt5::Gui_${_cmake_lib_name} SHARED IMPORTED)
@@ -114,9 +116,11 @@ macro(_qt5gui_find_extra_libs Name Libs LibDir IncDirs)
endif()
list(APPEND Qt5Gui_${Name}_LIBRARIES Qt5::Gui_${_cmake_lib_name})
endforeach()
- foreach(_dir ${IncDirs})
- _qt5_Gui_check_file_exists(${_dir})
- endforeach()
+ if (NOT CMAKE_CROSSCOMPILING)
+ foreach(_dir ${IncDirs})
+ _qt5_Gui_check_file_exists(${_dir})
+ endforeach()
+ endif()
endmacro()
diff --git a/src/gui/gui.pro b/src/gui/gui.pro
index e2dd5efcde..3203b41362 100644
--- a/src/gui/gui.pro
+++ b/src/gui/gui.pro
@@ -12,6 +12,12 @@ MODULE_PLUGIN_TYPES = \
platforms \
imageformats
+# This is here only because the platform plugin is no module, obviously.
+win32:contains(QT_CONFIG, angle) {
+ MODULE_AUX_INCLUDES = \
+ \$\$QT_MODULE_INCLUDE_BASE/QtANGLE
+}
+
load(qt_module)
# Code coverage with TestCocoon
diff --git a/src/gui/opengl/qopenglfunctions_4_1_core.cpp b/src/gui/opengl/qopenglfunctions_4_1_core.cpp
index b36cb0de94..474397bb1f 100644
--- a/src/gui/opengl/qopenglfunctions_4_1_core.cpp
+++ b/src/gui/opengl/qopenglfunctions_4_1_core.cpp
@@ -57,6 +57,7 @@ QT_BEGIN_NAMESPACE
\class QOpenGLFunctions_4_1_Core
\inmodule QtGui
\since 5.1
+ \wrapper
\brief The QOpenGLFunctions_4_1_Core class provides all functions for this version and profile of OpenGL.
\sa QAbstractOpenGLFunctions
diff --git a/src/gui/painting/qcosmeticstroker.cpp b/src/gui/painting/qcosmeticstroker.cpp
index 0f3cde3efd..39f64224f0 100644
--- a/src/gui/painting/qcosmeticstroker.cpp
+++ b/src/gui/painting/qcosmeticstroker.cpp
@@ -133,10 +133,15 @@ struct NoDasher {
};
+/*
+ * The return value is the result of the clipLine() call performed at the start
+ * of each of the two functions, aka "false" means completely outside the devices
+ * rect.
+ */
template<DrawPixel drawPixel, class Dasher>
-static void drawLine(QCosmeticStroker *stroker, qreal x1, qreal y1, qreal x2, qreal y2, int caps);
+static bool drawLine(QCosmeticStroker *stroker, qreal x1, qreal y1, qreal x2, qreal y2, int caps);
template<DrawPixel drawPixel, class Dasher>
-static void drawLineAA(QCosmeticStroker *stroker, qreal x1, qreal y1, qreal x2, qreal y2, int caps);
+static bool drawLineAA(QCosmeticStroker *stroker, qreal x1, qreal y1, qreal x2, qreal y2, int caps);
inline void drawPixel(QCosmeticStroker *stroker, int x, int y, int coverage)
{
@@ -602,17 +607,20 @@ void QCosmeticStroker::drawPath(const QVectorPath &path)
caps |= CapEnd;
QCosmeticStroker::Point last = this->lastPixel;
- stroke(this, p.x(), p.y(), p2.x(), p2.y(), caps);
+ bool unclipped = stroke(this, p.x(), p.y(), p2.x(), p2.y(), caps);
/* fix for gaps in polylines with fastpen and aliased in a sequence
of points with small distances: if current point p2 has been dropped
- out, keep last non dropped point p. */
- if (fastPenAliased) {
- if (last.x != lastPixel.x || last.y != lastPixel.y ||
- points == begin + 2 || points == end - 2 ) {
- {
- p = p2;
- }
+ out, keep last non dropped point p.
+
+ However, if the line was completely outside the devicerect, we
+ still need to update p to avoid drawing the line after this one from
+ a bad starting position.
+ */
+ if (fastPenAliased && unclipped) {
+ if (last.x != lastPixel.x || last.y != lastPixel.y
+ || points == begin + 2 || points == end - 2) {
+ p = p2;
}
} else {
p = p2;
@@ -720,10 +728,10 @@ static inline void capAdjust(int caps, int &x1, int &x2, int &y, int yinc)
the drawing shifts from horizontal to vertical or back.
*/
template<DrawPixel drawPixel, class Dasher>
-static void drawLine(QCosmeticStroker *stroker, qreal rx1, qreal ry1, qreal rx2, qreal ry2, int caps)
+static bool drawLine(QCosmeticStroker *stroker, qreal rx1, qreal ry1, qreal rx2, qreal ry2, int caps)
{
if (stroker->clipLine(rx1, ry1, rx2, ry2))
- return;
+ return false;
const int half = stroker->legacyRounding ? 31 : 0;
int x1 = toF26Dot6(rx1) + half;
@@ -813,7 +821,7 @@ static void drawLine(QCosmeticStroker *stroker, qreal rx1, qreal ry1, qreal rx2,
} else {
// horizontal
if (!dx)
- return;
+ return true;
QCosmeticStroker::Direction dir = QCosmeticStroker::LeftToRight;
@@ -886,14 +894,15 @@ static void drawLine(QCosmeticStroker *stroker, qreal rx1, qreal ry1, qreal rx2,
}
}
stroker->lastPixel = last;
+ return true;
}
template<DrawPixel drawPixel, class Dasher>
-static void drawLineAA(QCosmeticStroker *stroker, qreal rx1, qreal ry1, qreal rx2, qreal ry2, int caps)
+static bool drawLineAA(QCosmeticStroker *stroker, qreal rx1, qreal ry1, qreal rx2, qreal ry2, int caps)
{
if (stroker->clipLine(rx1, ry1, rx2, ry2))
- return;
+ return false;
int x1 = toF26Dot6(rx1);
int y1 = toF26Dot6(ry1);
@@ -967,7 +976,7 @@ static void drawLineAA(QCosmeticStroker *stroker, qreal rx1, qreal ry1, qreal rx
} else {
// horizontal
if (!dx)
- return;
+ return true;
int yinc = F16Dot16FixedDiv(dy, dx);
@@ -1029,6 +1038,7 @@ static void drawLineAA(QCosmeticStroker *stroker, qreal rx1, qreal ry1, qreal rx
drawPixel(stroker, x, (y>>16) + 1, alpha * alphaEnd >> 6);
}
}
+ return true;
}
QT_END_NAMESPACE
diff --git a/src/gui/painting/qcosmeticstroker_p.h b/src/gui/painting/qcosmeticstroker_p.h
index 05c8a2b0cf..5fc3559da4 100644
--- a/src/gui/painting/qcosmeticstroker_p.h
+++ b/src/gui/painting/qcosmeticstroker_p.h
@@ -53,7 +53,7 @@ QT_BEGIN_NAMESPACE
class QCosmeticStroker;
-typedef void (*StrokeLine)(QCosmeticStroker *stroker, qreal x1, qreal y1, qreal x2, qreal y2, int caps);
+typedef bool (*StrokeLine)(QCosmeticStroker *stroker, qreal x1, qreal y1, qreal x2, qreal y2, int caps);
class QCosmeticStroker
{
diff --git a/src/gui/painting/qrasterizer.cpp b/src/gui/painting/qrasterizer.cpp
index a6be7c6c78..197d49369e 100644
--- a/src/gui/painting/qrasterizer.cpp
+++ b/src/gui/painting/qrasterizer.cpp
@@ -734,6 +734,35 @@ static inline QPointF snapTo26Dot6Grid(const QPointF &p)
qFloorF(p.y() * 64) * (1 / qreal(64)));
}
+/*
+ The rasterize line function relies on some div by zero which should
+ result in +/-inf values. However, when floating point exceptions are
+ enabled, this will cause crashes, so we return high numbers instead.
+ As the returned value is used in further arithmetic, returning
+ FLT_MAX/DBL_MAX will also cause values, so instead return a value
+ that is well outside the int-range.
+ */
+static inline qreal qSafeDivide(qreal x, qreal y)
+{
+ if (y == 0)
+ return x > 0 ? 1e20 : -1e20;
+ return x / y;
+}
+
+/* Conversion to int fails if the value is too large to fit into INT_MAX or
+ too small to fit into INT_MIN, so we need this slightly safer conversion
+ when floating point exceptions are enabled
+ */
+static inline int qSafeFloatToQ16Dot16(qreal x)
+{
+ qreal tmp = x * 65536.;
+ if (tmp > qreal(INT_MAX))
+ return INT_MAX;
+ else if (tmp < qreal(INT_MIN))
+ return -INT_MAX;
+ return int(tmp);
+}
+
void QRasterizer::rasterizeLine(const QPointF &a, const QPointF &b, qreal width, bool squareCap)
{
if (a == b || width == 0 || d->clipRect.isEmpty())
@@ -946,23 +975,23 @@ void QRasterizer::rasterizeLine(const QPointF &a, const QPointF &b, qreal width,
const QPointF bottomLeftEdge = bottom - left;
const QPointF bottomRightEdge = bottom - right;
- const qreal topLeftSlope = topLeftEdge.x() / topLeftEdge.y();
- const qreal bottomLeftSlope = bottomLeftEdge.x() / bottomLeftEdge.y();
+ const qreal topLeftSlope = qSafeDivide(topLeftEdge.x(), topLeftEdge.y());
+ const qreal bottomLeftSlope = qSafeDivide(bottomLeftEdge.x(), bottomLeftEdge.y());
- const qreal topRightSlope = topRightEdge.x() / topRightEdge.y();
- const qreal bottomRightSlope = bottomRightEdge.x() / bottomRightEdge.y();
+ const qreal topRightSlope = qSafeDivide(topRightEdge.x(), topRightEdge.y());
+ const qreal bottomRightSlope = qSafeDivide(bottomRightEdge.x(), bottomRightEdge.y());
- const Q16Dot16 topLeftSlopeFP = FloatToQ16Dot16(topLeftSlope);
- const Q16Dot16 topRightSlopeFP = FloatToQ16Dot16(topRightSlope);
+ const Q16Dot16 topLeftSlopeFP = qSafeFloatToQ16Dot16(topLeftSlope);
+ const Q16Dot16 topRightSlopeFP = qSafeFloatToQ16Dot16(topRightSlope);
- const Q16Dot16 bottomLeftSlopeFP = FloatToQ16Dot16(bottomLeftSlope);
- const Q16Dot16 bottomRightSlopeFP = FloatToQ16Dot16(bottomRightSlope);
+ const Q16Dot16 bottomLeftSlopeFP = qSafeFloatToQ16Dot16(bottomLeftSlope);
+ const Q16Dot16 bottomRightSlopeFP = qSafeFloatToQ16Dot16(bottomRightSlope);
- const Q16Dot16 invTopLeftSlopeFP = FloatToQ16Dot16(1 / topLeftSlope);
- const Q16Dot16 invTopRightSlopeFP = FloatToQ16Dot16(1 / topRightSlope);
+ const Q16Dot16 invTopLeftSlopeFP = qSafeFloatToQ16Dot16(qSafeDivide(1, topLeftSlope));
+ const Q16Dot16 invTopRightSlopeFP = qSafeFloatToQ16Dot16(qSafeDivide(1, topRightSlope));
- const Q16Dot16 invBottomLeftSlopeFP = FloatToQ16Dot16(1 / bottomLeftSlope);
- const Q16Dot16 invBottomRightSlopeFP = FloatToQ16Dot16(1 / bottomRightSlope);
+ const Q16Dot16 invBottomLeftSlopeFP = qSafeFloatToQ16Dot16(qSafeDivide(1, bottomLeftSlope));
+ const Q16Dot16 invBottomRightSlopeFP = qSafeFloatToQ16Dot16(qSafeDivide(1, bottomRightSlope));
if (d->antialiased) {
const Q16Dot16 iTopFP = IntToQ16Dot16(int(topBound));
@@ -1137,10 +1166,10 @@ void QRasterizer::rasterizeLine(const QPointF &a, const QPointF &b, qreal width,
int iBottom = bottom.y() < 0.5f? -1 : int(bottom.y() - 0.5f);
int iMiddle = qMin(iLeft, iRight);
- Q16Dot16 leftIntersectAf = FloatToQ16Dot16(top.x() + 0.5f + (iTop + 0.5f - top.y()) * topLeftSlope);
- Q16Dot16 leftIntersectBf = FloatToQ16Dot16(left.x() + 0.5f + (iLeft + 1.5f - left.y()) * bottomLeftSlope);
- Q16Dot16 rightIntersectAf = FloatToQ16Dot16(top.x() - 0.5f + (iTop + 0.5f - top.y()) * topRightSlope);
- Q16Dot16 rightIntersectBf = FloatToQ16Dot16(right.x() - 0.5f + (iRight + 1.5f - right.y()) * bottomRightSlope);
+ Q16Dot16 leftIntersectAf = qSafeFloatToQ16Dot16(top.x() + 0.5f + (iTop + 0.5f - top.y()) * topLeftSlope);
+ Q16Dot16 leftIntersectBf = qSafeFloatToQ16Dot16(left.x() + 0.5f + (iLeft + 1.5f - left.y()) * bottomLeftSlope);
+ Q16Dot16 rightIntersectAf = qSafeFloatToQ16Dot16(top.x() - 0.5f + (iTop + 0.5f - top.y()) * topRightSlope);
+ Q16Dot16 rightIntersectBf = qSafeFloatToQ16Dot16(right.x() - 0.5f + (iRight + 1.5f - right.y()) * bottomRightSlope);
int ny;
int y = iTop;
diff --git a/src/opengl/qglframebufferobject.cpp b/src/opengl/qglframebufferobject.cpp
index 1c802cabcb..8210b218ec 100644
--- a/src/opengl/qglframebufferobject.cpp
+++ b/src/opengl/qglframebufferobject.cpp
@@ -1122,7 +1122,6 @@ QPaintEngine *QGLFramebufferObject::paintEngine() const
/*!
\fn bool QGLFramebufferObject::bindDefault()
- \internal
Switches rendering back to the default, windowing system provided
framebuffer.
diff --git a/src/plugins/platforms/android/src/androidjniinput.cpp b/src/plugins/platforms/android/src/androidjniinput.cpp
index da6156a330..29ccfe0125 100644
--- a/src/plugins/platforms/android/src/androidjniinput.cpp
+++ b/src/plugins/platforms/android/src/androidjniinput.cpp
@@ -163,6 +163,10 @@ namespace QtAndroidInput
static void longPress(JNIEnv */*env*/, jobject /*thiz*/, jint /*winId*/, jint x, jint y)
{
+ //### TODO: add proper API for Qt 5.2
+ static bool rightMouseFromLongPress = qgetenv("QT_NECESSITAS_COMPATIBILITY_LONG_PRESS").toInt();
+ if (!rightMouseFromLongPress)
+ return;
m_ignoreMouseEvents = true;
QPoint globalPos(x,y);
QWindow *tlw = topLevelWindowAt(globalPos);
diff --git a/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm b/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm
index c40ae3d81d..3ec6ad7a20 100644
--- a/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm
+++ b/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm
@@ -113,6 +113,7 @@ static void cleanupCocoaApplicationDelegate()
- (void)updateScreens:(NSNotification *)notification
{
+ Q_UNUSED(notification);
if (QCocoaIntegration *ci = dynamic_cast<QCocoaIntegration *>(QGuiApplicationPrivate::platformIntegration()))
ci->updateScreens();
}
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.h b/src/plugins/platforms/cocoa/qcocoawindow.h
index 91eaea21b6..b82d096bb5 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.h
+++ b/src/plugins/platforms/cocoa/qcocoawindow.h
@@ -136,6 +136,8 @@ public:
bool windowShouldClose();
bool windowIsPopupType(Qt::WindowType type = Qt::Widget) const;
+ void setSynchedWindowStateFromWindow();
+
NSInteger windowLevel(Qt::WindowFlags flags);
NSUInteger windowStyleMask(Qt::WindowFlags flags);
void setWindowShadow(Qt::WindowFlags flags);
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm
index f8d0eafcb3..19c4faf369 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.mm
+++ b/src/plugins/platforms/cocoa/qcocoawindow.mm
@@ -486,7 +486,7 @@ void QCocoaWindow::setWindowFlags(Qt::WindowFlags flags)
void QCocoaWindow::setWindowState(Qt::WindowState state)
{
- if ([m_nsWindow isVisible])
+ if (window()->isVisible())
syncWindowState(state); // Window state set for hidden windows take effect when show() is called.
}
@@ -725,6 +725,12 @@ bool QCocoaWindow::windowShouldClose()
return accepted;
}
+void QCocoaWindow::setSynchedWindowStateFromWindow()
+{
+ if (QWindow *w = window())
+ m_synchedWindowState = w->windowState();
+}
+
bool QCocoaWindow::windowIsPopupType(Qt::WindowType type) const
{
if (type == Qt::Widget)
diff --git a/src/plugins/platforms/cocoa/qnsview.h b/src/plugins/platforms/cocoa/qnsview.h
index c7c6c20473..3ee994427b 100644
--- a/src/plugins/platforms/cocoa/qnsview.h
+++ b/src/plugins/platforms/cocoa/qnsview.h
@@ -81,7 +81,9 @@ QT_END_NAMESPACE
- (void)invalidateWindowShadowIfNeeded;
- (void)drawRect:(NSRect)dirtyRect;
- (void)updateGeometry;
+- (void)notifyWindowStateChanged:(Qt::WindowState)newState;
- (void)windowNotification : (NSNotification *) windowNotification;
+- (void)notifyWindowWillZoom:(BOOL)willZoom;
- (void)viewDidHide;
- (void)viewDidUnhide;
diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm
index d43b3d36d2..c0bf616ac3 100644
--- a/src/plugins/platforms/cocoa/qnsview.mm
+++ b/src/plugins/platforms/cocoa/qnsview.mm
@@ -253,6 +253,15 @@ static QTouchDevice *touchDevice = 0;
}
}
+- (void)notifyWindowStateChanged:(Qt::WindowState)newState
+{
+ QWindowSystemInterface::handleWindowStateChanged(m_window, newState);
+ // We want to read the window state back from the window,
+ // but the event we just sent may be asynchronous.
+ QWindowSystemInterface::flushWindowSystemEvents();
+ m_platformWindow->setSynchedWindowStateFromWindow();
+}
+
- (void)windowNotification : (NSNotification *) windowNotification
{
//qDebug() << "windowNotification" << QCFString::toQString([windowNotification name]);
@@ -271,10 +280,11 @@ static QTouchDevice *touchDevice = 0;
if (!m_platformWindow->windowIsPopupType())
QWindowSystemInterface::handleWindowActivated(0);
}
- } else if (notificationName == NSWindowDidMiniaturizeNotification) {
- QWindowSystemInterface::handleWindowStateChanged(m_window, Qt::WindowMinimized);
- } else if (notificationName == NSWindowDidDeminiaturizeNotification) {
- QWindowSystemInterface::handleWindowStateChanged(m_window, Qt::WindowNoState);
+ } else if (notificationName == NSWindowDidMiniaturizeNotification
+ || notificationName == NSWindowDidDeminiaturizeNotification) {
+ Qt::WindowState newState = notificationName == NSWindowDidMiniaturizeNotification ?
+ Qt::WindowMinimized : Qt::WindowNoState;
+ [self notifyWindowStateChanged:newState];
} else if ([notificationName isEqualToString: @"NSWindowDidOrderOffScreenNotification"]) {
m_platformWindow->obscureWindow();
} else if ([notificationName isEqualToString: @"NSWindowDidOrderOnScreenAndFinishAnimatingNotification"]) {
@@ -292,10 +302,11 @@ static QTouchDevice *touchDevice = 0;
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
if (QSysInfo::QSysInfo::MacintoshVersion >= QSysInfo::MV_10_7) {
- if (notificationName == NSWindowDidEnterFullScreenNotification) {
- QWindowSystemInterface::handleWindowStateChanged(m_window, Qt::WindowFullScreen);
- } else if (notificationName == NSWindowDidExitFullScreenNotification) {
- QWindowSystemInterface::handleWindowStateChanged(m_window, Qt::WindowNoState);
+ if (notificationName == NSWindowDidEnterFullScreenNotification
+ || notificationName == NSWindowDidExitFullScreenNotification) {
+ Qt::WindowState newState = notificationName == NSWindowDidEnterFullScreenNotification ?
+ Qt::WindowFullScreen : Qt::WindowNoState;
+ [self notifyWindowStateChanged:newState];
}
}
#endif
@@ -303,6 +314,12 @@ static QTouchDevice *touchDevice = 0;
}
}
+- (void)notifyWindowWillZoom:(BOOL)willZoom
+{
+ Qt::WindowState newState = willZoom ? Qt::WindowMaximized : Qt::WindowNoState;
+ [self notifyWindowStateChanged:newState];
+}
+
- (void)viewDidHide
{
m_platformWindow->obscureWindow();
@@ -919,13 +936,13 @@ static QTouchDevice *touchDevice = 0;
// we will send a key event unless the input method sets m_sendKeyEvent to false
m_sendKeyEvent = true;
-
QString text;
+ // ignore text for the U+F700-U+F8FF range. This is used by Cocoa when
+ // delivering function keys (e.g. arrow keys, backspace, F1-F35, etc.)
+ if (ch.unicode() < 0xf700 || ch.unicode() > 0xf8ff)
+ text = QCFString::toQString(characters);
+
if (eventType == QEvent::KeyPress) {
- // ignore text for the U+F700-U+F8FF range. This is used by Cocoa when
- // delivering function keys (e.g. arrow keys, backspace, F1-F35, etc.)
- if (ch.unicode() < 0xf700 || ch.unicode() > 0xf8ff)
- text = QCFString::toQString(characters);
if (m_composingText.isEmpty())
m_sendKeyEvent = !QWindowSystemInterface::tryHandleShortcutEvent(m_window, timestamp, keyCode, modifiers, text);
diff --git a/src/plugins/platforms/cocoa/qnswindowdelegate.h b/src/plugins/platforms/cocoa/qnswindowdelegate.h
index 9a616ba8e8..06e11fffbb 100644
--- a/src/plugins/platforms/cocoa/qnswindowdelegate.h
+++ b/src/plugins/platforms/cocoa/qnswindowdelegate.h
@@ -57,6 +57,7 @@
- (void)windowDidMove:(NSNotification *)notification;
- (void)windowWillMove:(NSNotification *)notification;
- (BOOL)windowShouldClose:(NSNotification *)notification;
+- (BOOL)windowShouldZoom:(NSWindow *)window toFrame:(NSRect)newFrame;
@end
diff --git a/src/plugins/platforms/cocoa/qnswindowdelegate.mm b/src/plugins/platforms/cocoa/qnswindowdelegate.mm
index 8e17936a78..10536bd5f4 100644
--- a/src/plugins/platforms/cocoa/qnswindowdelegate.mm
+++ b/src/plugins/platforms/cocoa/qnswindowdelegate.mm
@@ -90,4 +90,12 @@
return YES;
}
+- (BOOL)windowShouldZoom:(NSWindow *)window toFrame:(NSRect)newFrame
+{
+ Q_UNUSED(newFrame);
+ if (m_cocoaWindow && m_cocoaWindow->m_qtView)
+ [m_cocoaWindow->m_qtView notifyWindowWillZoom:![window isZoomed]];
+ return YES;
+}
+
@end
diff --git a/src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.h b/src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.h
index d4f141c5d8..5b8d08d3c8 100644
--- a/src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.h
+++ b/src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.h
@@ -63,7 +63,7 @@ QT_BEGIN_NAMESPACE
bool debug_accessibility();
# define accessibleDebug !debug_accessibility() ? (void)0 : qDebug
#else
-# define accessibleDebug
+# define accessibleDebug while (false) qDebug
#endif
#ifndef QT_NO_DEBUG_OUTPUT
diff --git a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
index 33b4eb4771..f7ccb00233 100644
--- a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
+++ b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
@@ -825,7 +825,7 @@ public:
inline void updateDirectory() { setDirectory(m_data.directory()); }
inline QString directory() const;
virtual void exec(HWND owner = 0);
- inline void setNameFilters(const QStringList &f);
+ virtual void setNameFilters(const QStringList &f);
inline void selectNameFilter(const QString &filter);
inline void updateSelectedNameFilter() { selectNameFilter(m_data.selectedNameFilter()); }
inline QString selectedNameFilter() const;
@@ -1335,12 +1335,11 @@ class QWindowsNativeSaveFileDialog : public QWindowsNativeFileDialogBase
{
Q_OBJECT
public:
- explicit QWindowsNativeSaveFileDialog(const QWindowsFileDialogSharedData &data);
+ explicit QWindowsNativeSaveFileDialog(const QWindowsFileDialogSharedData &data)
+ : QWindowsNativeFileDialogBase(data) {}
+ virtual void setNameFilters(const QStringList &f);
virtual QStringList selectedFiles() const;
virtual QStringList dialogResult() const;
-
-private slots:
- void slotFilterSelected(const QString &);
};
// Return the first suffix from the name filter "Foo files (*.foo;*.bar)" -> "foo".
@@ -1358,20 +1357,21 @@ static inline QString suffixFromFilter(const QString &filter)
return endPos >= 0 ? filter.mid(suffixPos, endPos - suffixPos) : QString();
}
-QWindowsNativeSaveFileDialog::QWindowsNativeSaveFileDialog(const QWindowsFileDialogSharedData &data)
- : QWindowsNativeFileDialogBase(data)
+void QWindowsNativeSaveFileDialog::setNameFilters(const QStringList &f)
{
- connect(this, &QWindowsNativeFileDialogBase::filterSelected,
- this, &QWindowsNativeSaveFileDialog::slotFilterSelected);
-}
-
-void QWindowsNativeSaveFileDialog::slotFilterSelected(const QString &filter)
-{
- // Cause the dialog to append the suffix of the current filter unless a default
- // suffix is set (Note: Qt 4.8 sets the selected filter's suffix before
- // calling GetSaveFileName()).
- if (!hasDefaultSuffix())
- setDefaultSuffixSys(suffixFromFilter(filter));
+ QWindowsNativeFileDialogBase::setNameFilters(f);
+ // QTBUG-31381, QTBUG-30748: IFileDialog will update the suffix of the selected name
+ // filter only if a default suffix is set (see docs). Set the first available
+ // suffix unless we have a defaultSuffix.
+ if (!hasDefaultSuffix()) {
+ foreach (const QString &filter, f) {
+ const QString suffix = suffixFromFilter(filter);
+ if (!suffix.isEmpty()) {
+ setDefaultSuffixSys(suffix);
+ break;
+ }
+ }
+ } // m_hasDefaultSuffix
}
QStringList QWindowsNativeSaveFileDialog::dialogResult() const
diff --git a/src/tools/bootstrap-dbus/bootstrap-dbus.pro b/src/tools/bootstrap-dbus/bootstrap-dbus.pro
index 6af70efda7..62f9f96a9b 100644
--- a/src/tools/bootstrap-dbus/bootstrap-dbus.pro
+++ b/src/tools/bootstrap-dbus/bootstrap-dbus.pro
@@ -7,8 +7,9 @@ CONFIG += no_module_headers internal_module force_bootstrap
DEFINES += \
QT_NO_CAST_FROM_ASCII
+MODULE_INCLUDES = \
+ \$\$QT_MODULE_INCLUDE_BASE/QtDBus
MODULE_PRIVATE_INCLUDES = \
- \$\$QT_MODULE_INCLUDE_BASE/QtDBus \
\$\$QT_MODULE_INCLUDE_BASE/QtDBus/$$QT_VERSION \
\$\$QT_MODULE_INCLUDE_BASE/QtDBus/$$QT_VERSION/QtDBus
diff --git a/src/tools/bootstrap/bootstrap.pro b/src/tools/bootstrap/bootstrap.pro
index 972f57260e..bf19828634 100644
--- a/src/tools/bootstrap/bootstrap.pro
+++ b/src/tools/bootstrap/bootstrap.pro
@@ -30,12 +30,13 @@ DEFINES += \
DEFINES -= QT_EVAL
-MODULE_PRIVATE_INCLUDES = \
+MODULE_INCLUDES = \
\$\$QT_MODULE_INCLUDE_BASE \
\$\$QT_MODULE_INCLUDE_BASE/QtCore \
+ \$\$QT_MODULE_INCLUDE_BASE/QtXml
+MODULE_PRIVATE_INCLUDES = \
\$\$QT_MODULE_INCLUDE_BASE/QtCore/$$QT_VERSION \
\$\$QT_MODULE_INCLUDE_BASE/QtCore/$$QT_VERSION/QtCore \
- \$\$QT_MODULE_INCLUDE_BASE/QtXml \
\$\$QT_MODULE_INCLUDE_BASE/QtXml/$$QT_VERSION \
\$\$QT_MODULE_INCLUDE_BASE/QtXml/$$QT_VERSION/QtXml
diff --git a/src/tools/qdoc/doc/examples/cpp.qdoc b/src/tools/qdoc/doc/examples/cpp.qdoc.sample
index 08286b956a..08286b956a 100644
--- a/src/tools/qdoc/doc/examples/cpp.qdoc
+++ b/src/tools/qdoc/doc/examples/cpp.qdoc.sample
diff --git a/src/tools/qdoc/doc/examples/qml.qdoc b/src/tools/qdoc/doc/examples/qml.qdoc.sample
index d913c6f164..d913c6f164 100644
--- a/src/tools/qdoc/doc/examples/qml.qdoc
+++ b/src/tools/qdoc/doc/examples/qml.qdoc.sample
diff --git a/src/tools/qdoc/doc/files/qtgui.qdocconf b/src/tools/qdoc/doc/files/qtgui.qdocconf
new file mode 100644
index 0000000000..5073dd7f0f
--- /dev/null
+++ b/src/tools/qdoc/doc/files/qtgui.qdocconf
@@ -0,0 +1,50 @@
+include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf)
+
+project = QtGui
+description = Qt GUI Reference Documentation
+url = http://qt-project.org/doc/qt-$QT_VER/qtgui
+version = $QT_VERSION
+
+examplesinstallpath = gui
+
+qhp.projects = QtGui
+
+qhp.QtGui.file = qtgui.qhp
+qhp.QtGui.namespace = org.qt-project.qtgui.$QT_VERSION_TAG
+qhp.QtGui.virtualFolder = qtgui
+qhp.QtGui.indexTitle = Qt GUI
+qhp.QtGui.indexRoot =
+
+qhp.QtGui.filterAttributes = qtgui $QT_VERSION qtrefdoc
+qhp.QtGui.customFilters.Qt.name = Qtgui $QT_VERSION
+qhp.QtGui.customFilters.Qt.filterAttributes = qtgui $QT_VERSION
+
+qhp.QtGui.subprojects = classes
+qhp.QtGui.subprojects.classes.title = C++ Classes
+qhp.QtGui.subprojects.classes.indexTitle = Qt GUI C++ Classes
+qhp.QtGui.subprojects.classes.selectors = class fake:headerfile
+qhp.QtGui.subprojects.classes.sortPages = true
+
+tagfile = ../../../doc/qtgui/qtgui.tags
+
+depends += \
+ qtcore \
+ qtnetwork \
+ qtopengl \
+ qtsvg \
+ qtqml \
+ qtquick \
+ qtwidgets \
+ qtdoc
+
+headerdirs += ..
+
+sourcedirs += .. \
+ ../../../examples/gui/doc/src
+
+exampledirs += ../../../examples/gui \
+ snippets
+
+imagedirs += images \
+ ../../../examples/gui/doc/images \
+ ../../../doc/src/images \
diff --git a/src/tools/qdoc/doc/qdoc-guide/qtwritingstyle-cpp.qdoc b/src/tools/qdoc/doc/qdoc-guide/qtwritingstyle-cpp.qdoc
index 4ad1f19f67..2095c4e7cb 100644
--- a/src/tools/qdoc/doc/qdoc-guide/qtwritingstyle-cpp.qdoc
+++ b/src/tools/qdoc/doc/qdoc-guide/qtwritingstyle-cpp.qdoc
@@ -41,7 +41,7 @@ Note that the documentation must be in the implementation files such as \c .cpp.
Class documentation is generated using the \l{class-command}{\\class} command and
the name of the class as the first argument.
-\snippet examples/cpp.qdoc class
+\snippet examples/cpp.qdoc.sample class
\l{Context commands} add information about the class, such as its module or
which version the class was added.
@@ -79,7 +79,7 @@ Typically, function documentation immediately precedes the implementation of the
function in the \c .cpp file. For function documentation that is not immediately
above the implementation, the \l{fn-command}{\\fn} is needed.
-\snippet examples/cpp.qdoc function
+\snippet examples/cpp.qdoc.sample function
The function documentation starts with a verb, indicating the operation the
function performs. This also applies to constructors and destructors.
@@ -102,7 +102,7 @@ The \l{a-command}{\\a} command marks the parameter in the documentation.
The return type documentation should link to the type documentation or be
marked with the \l{c-command}{\\c} command in the case of boolean values.
-\snippet examples/cpp.qdoc return
+\snippet examples/cpp.qdoc.sample return
\section1 Properties
@@ -110,7 +110,7 @@ The property documentation resides immediately above the read function's
implementation. The \l{topic-commands}{topic command} for properties is
\l{property-command}{\\property}.
-\snippet examples/cpp.qdoc property
+\snippet examples/cpp.qdoc.sample property
Property documentation usually starts with "This property...", but these are
alternate expressions:
@@ -142,7 +142,7 @@ The \l{topic-commands}{topic command} for signals, notifiers, and slots
is \l{fn-command}{\\fn}. Signal documentation state when they are triggered
or emitted.
-\snippet examples/cpp.qdoc signals
+\snippet examples/cpp.qdoc.sample signals
Signal documentation typically begin with "This signal is triggered when...".
Here are alternate styles:
@@ -164,7 +164,7 @@ notifiers together. To refer to a specifc version of a notifier or signal,
simply refer to the property and mention that there are different versions of
the notifier.
-\snippet examples/cpp.qdoc overloaded notifier
+\snippet examples/cpp.qdoc.sample overloaded notifier
\section1 Enums, Namespaces, and other Types
@@ -181,7 +181,7 @@ continues with the type description.
For enumerations, the \l{value-command}{\\value} command is for listing the
values. QDoc creates a table of values for the enum.
-\snippet examples/cpp.qdoc enums
+\snippet examples/cpp.qdoc.sample enums
*/
diff --git a/src/tools/qdoc/doc/qdoc-guide/qtwritingstyle-qml.qdoc b/src/tools/qdoc/doc/qdoc-guide/qtwritingstyle-qml.qdoc
index 2d67e62f94..7ca0abed71 100644
--- a/src/tools/qdoc/doc/qdoc-guide/qtwritingstyle-qml.qdoc
+++ b/src/tools/qdoc/doc/qdoc-guide/qtwritingstyle-qml.qdoc
@@ -60,7 +60,7 @@ does not exist. The class documentation may be marked as
The \l{qmltype-command}{\\qmltype} command is for QML type documentation.
-\snippet examples/qml.qdoc qmltype
+\snippet examples/qml.qdoc.sample qmltype
The \l{instantiates-command}{\\instantiates} accepts the C++ class which
implements the QML type as the argument. For types implemented in QML, this
@@ -108,7 +108,7 @@ with the \l{qmlsignal-command}{\\qmlsignal} command. Signal documentation
must include the condition for emitting the signal, mention the corresponding
signal handler, and document whether the signal accepts a parameter.
-\snippet examples/qml.qdoc signals
+\snippet examples/qml.qdoc.sample signals
These are the possible documentation styles for signals:
\list
@@ -127,7 +127,7 @@ documentation must reside immediately above the function declaration.
The function documentation starts with a verb, indicating the operation the
function performs.
-\snippet examples/qml.qdoc function
+\snippet examples/qml.qdoc.sample function
Some common verbs for function documentation:
\list
@@ -153,7 +153,7 @@ QML enumerations are documented as QML properties with the
\l{qmlproperty-command}{\\qmlproperty} command. The type of the property
is \c enumeration.
-\snippet examples/qml.qdoc enums
+\snippet examples/qml.qdoc.sample enums
The QDoc comment lists the values of the enumeration. If the enumeration is
implemented in C++, the documentation may link to the corresponding C++
diff --git a/src/tools/qdoc/doc/qdoc-manual.qdoc b/src/tools/qdoc/doc/qdoc-manual.qdoc
index b715b200bf..4a4b1db6ff 100644
--- a/src/tools/qdoc/doc/qdoc-manual.qdoc
+++ b/src/tools/qdoc/doc/qdoc-manual.qdoc
@@ -66,7 +66,7 @@
\li \l {HTML Specific Configuration Variables}
\li \l {Supporting Derived Projects}
\li \l {Example Manifest Files}
- \li \l {qt.qdocconf}
+ \li \l {qtgui.qdocconf}
\li \l {minimum.qdocconf}
\li \l {Generating DITA XML Output}
\endlist
@@ -7179,13 +7179,13 @@
\list
\li A minimum configuration file: \l minimum.qdocconf
- \li The Qt configuration file: \l qt.qdocconf
+ \li The Qt configuration file: \l qtgui.qdocconf
\endlist
*/
/*!
\page 21-1-minimum-qdocconf.html
- \previouspage qt.qdocconf
+ \previouspage qtgui.qdocconf
\contentspage QDoc Manual
\nextpage Generating DITA XML Output
@@ -7195,14 +7195,14 @@
*/
/*!
- \page 21-2-qt-qdocconf.html
+ \page 21-2-qtgui-qdocconf.html
\previouspage Supporting Derived Projects
\contentspage QDoc Manual
\nextpage minimum.qdocconf
- \title qt.qdocconf
+ \title qtgui.qdocconf
- \quotefile files/qt.qdocconf
+ \quotefile files/qtgui.qdocconf
*/
/*!
@@ -7548,10 +7548,9 @@
The general syntax is \tt {extraimages.\e{format} = \e image}. The
file extension is optional.
- For example, in \l qt.qdocconf we use a couple of images within
- the HTML.postheader variable which value is pure HTML. For that
- reason, these images are specified using the \c extraimages
- variable:
+ For example, if additional images are used within the HTML.postheader
+ value, then these images must also be specified using the \c
+ extraimages variable:
\code
extraimages.HTML = qt-logo
@@ -7819,7 +7818,7 @@
Currently, C++ is the only language that QDoc understands. It is
also the default language, and doesn't really need to be
- specified. But for example in \l qt.qdocconf:
+ specified.
\code
language = Cpp
@@ -7889,7 +7888,7 @@
The \c outputdir variable specifies the directory where QDoc will
put the generated documentation.
- In qt.qdocconf:
+ For example:
\code
outputdir = $QTDIR/doc/html
@@ -7972,8 +7971,6 @@
The \c sourcedirs variable specifies the directories containing
the \c .cpp or \c .qdoc files used in the documentation.
- For example in \l qt.qdocconf
-
\code
sourcedirs = $QTDIR/src \
$QTDIR/doc/src \
@@ -8157,7 +8154,7 @@
The \c versionsym variable specifies a C++ preprocessor symbol
that defines the version number of the documented software.
- For example in \l qt.qdocconf:
+ For example:
\code
versionsym = QT_VERSION_STR
@@ -8270,7 +8267,7 @@
Cpp.ignoredirectives} variables, non-standard constructs
(typically macros) can result in erroneous documentation.
- In \l qt.qdocconf:
+ For example:
\code
Cpp.ignoredirectives = Q_DECLARE_INTERFACE \
@@ -8324,8 +8321,6 @@
Cpp.ignoredirectives} variables, non-standard constructs
(typically macros) can result in erroneous documentation.
- In \l qt.qdocconf:
-
\code
Cpp.ignoretokens = QAXFACTORY_EXPORT \
QM_EXPORT_CANVAS \
@@ -8389,18 +8384,12 @@
quotation marks. Note that if the value spans several lines, each
line needs to be enclosed by quotation marks.
- For example in \l qt.qdocconf:
-
\code
HTML.footer = "<p /><address><hr /><div align=\"center\">\n" \
...
"</tr></table></div></address>"
\endcode
- The complete variable entry in \l qt.qdocconf provides the
- standard footer of the \l {http://doc.qt.digia.com/4.0/index.html}
- {Qt Reference Documentation}.
-
\target HTML.postheader-variable
\section1 HTML.postheader
@@ -8414,8 +8403,6 @@
marks. Note that if the value spans several lines, each line needs
to be enclosed by quotation marks.
- For example in \l qt.qdocconf:
-
\code
HTML.postheader = "<table border=\"0\"..." \
...
@@ -8426,8 +8413,6 @@
"</table>"
\endcode
- The complete variable entry in \l qt.qdocconf provides the
- standard header of the \l {http://doc.qt.digia.com/}
{Qt Reference Documentation}.
\target HTML.style-variable
@@ -8440,8 +8425,6 @@
marks. Note that if the value spans several lines, each line needs
to be enclosed by quotation marks.
- For example in \l qt.qdocconf:
-
\code
HTML.style = "h3.fn,span.fn" \
"{ margin-left: 1cm; text-indent: -1cm; }\n" \
@@ -8473,7 +8456,7 @@
\endcode
QDoc expects to find stylesheets in the directory containing the
- \l qt.qdocconf file, and it will copy those specified to the output
+ \l qtgui.qdocconf file, and it will copy those specified to the output
directory alongside the HTML pages.
*/
@@ -8565,7 +8548,7 @@
This feature makes use of the comprehensive indexes generated by
QDoc when it creates the Qt reference documentation.
- For example, \l qt.qdocconf (the configuration file for Qt)
+ For example, \l qtgui.qdocconf (the configuration file for Qt)
contains the following variable definitions:
\code
@@ -8585,9 +8568,6 @@
In a mini-project, you can use an index file by defining an \l
indexes configuration variable in your \c .qdocconf file.
- For example, you can create a \c qtcreator.qdocconf file to help you
- check the Qt Creator documentation:
-
\code
project = QtCreator
description = Qt Creator Manual
diff --git a/sync.profile b/sync.profile
index 3d89d9d71f..74e29a7acf 100644
--- a/sync.profile
+++ b/sync.profile
@@ -11,10 +11,10 @@
"QtDBus" => "$basedir/src/dbus",
"QtConcurrent" => "$basedir/src/concurrent",
"QtPlatformSupport" => "$basedir/src/platformsupport",
- "KHR" => "$basedir/src/3rdparty/angle/include/KHR",
- "GLES2" => "$basedir/src/3rdparty/angle/include/GLES2",
- "EGL" => "$basedir/src/3rdparty/angle/include/EGL",
- "QtZlib" => "$basedir/src/3rdparty/zlib",
+ "QtANGLE/KHR" => "!$basedir/src/3rdparty/angle/include/KHR",
+ "QtANGLE/GLES2" => "!$basedir/src/3rdparty/angle/include/GLES2",
+ "QtANGLE/EGL" => "!$basedir/src/3rdparty/angle/include/EGL",
+ "QtZlib" => "!$basedir/src/3rdparty/zlib",
"QtOpenGLExtensions" => "$basedir/src/openglextensions",
);
%moduleheaders = ( # restrict the module headers to those found in relative path
diff --git a/tests/auto/tools/moc/no-keywords.h b/tests/auto/tools/moc/no-keywords.h
index e04e36b678..ffd5928370 100644
--- a/tests/auto/tools/moc/no-keywords.h
+++ b/tests/auto/tools/moc/no-keywords.h
@@ -47,7 +47,7 @@
#define slots Baz
#define emit Yoyodyne
-#include <QtGui/QtGui>
+#include <QtConcurrent/QtConcurrent>
#include <QtCore>
#include <QtNetwork/QtNetwork>
#include <QtSql/QtSql>
diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp
index 98b59ab6fd..f92fad1d69 100644
--- a/tools/configure/configureapp.cpp
+++ b/tools/configure/configureapp.cpp
@@ -151,12 +151,6 @@ Configure::Configure(int& argc, char** argv)
const QString installPath = buildPath;
#endif
if (sourceDir != buildDir) { //shadow builds!
- if (QStandardPaths::findExecutable(QStringLiteral("perl.exe")).isEmpty()) {
- cout << "Error: Creating a shadow build of Qt requires" << endl
- << "perl to be in the PATH environment";
- exit(0); // Exit cleanly for Ctrl+C
- }
-
cout << "Preparing build tree..." << endl;
QDir(buildPath).mkpath("bin");