summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Rødal <samuel.rodal@digia.com>2013-03-21 08:18:12 +0100
committerOswald Buddenhagen <oswald.buddenhagen@digia.com>2013-03-21 08:49:01 +0100
commit2ab9b747fcc5aa50e8cca758f7780158e734a222 (patch)
tree7017007823d54c2d658079e928f7220a1f57a852
parentf1e681bed21e131864fe1e1c91679f7a56b06823 (diff)
parent8bfbaa41783dad66976fc83d4ca8c7e2673f5629 (diff)
Merge remote-tracking branch 'gerrit/release' into stable
Conflicts: configure mkspecs/features/qt_module_headers.prf mkspecs/features/qt_tool.prf src/angle/angle.pro src/tools/bootstrap/bootstrap.pro tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp Change-Id: Ide5759fe419a50f1c944211a48f7c66f662684e0
-rwxr-xr-xbin/syncqt39
-rwxr-xr-xconfigure42
-rw-r--r--mkspecs/common/shell-unix.conf8
-rw-r--r--mkspecs/common/shell-win32.conf8
-rw-r--r--mkspecs/features/qml_module.prf2
-rw-r--r--mkspecs/features/qt_build_config.prf5
-rw-r--r--mkspecs/features/qt_example_installs.prf2
-rw-r--r--mkspecs/features/qt_functions.prf7
-rw-r--r--mkspecs/features/qt_module.prf2
-rw-r--r--mkspecs/features/qt_module_headers.prf3
-rw-r--r--mkspecs/features/qt_module_pris.prf8
-rw-r--r--mkspecs/features/qt_plugin.prf2
-rw-r--r--mkspecs/features/qt_tool.prf3
-rw-r--r--qmake/generators/mac/pbuilder_pbx.cpp7
-rw-r--r--qmake/generators/makefile.cpp36
-rw-r--r--qmake/generators/makefile.h2
-rw-r--r--qmake/generators/metamakefile.cpp10
-rw-r--r--qmake/generators/win32/msvc_vcproj.cpp7
-rw-r--r--qmake/library/qmakeevaluator.cpp6
-rw-r--r--qmake/main.cpp11
-rw-r--r--src/angle/angle.pro2
-rw-r--r--src/corelib/kernel/qvariant.cpp280
-rw-r--r--src/corelib/tools/qdatetime.cpp15
-rw-r--r--src/corelib/tools/qstring.cpp10
-rw-r--r--src/corelib/tools/tools.pri15
-rw-r--r--src/gui/painting/qcosmeticstroker.cpp12
-rw-r--r--src/plugins/platforms/windows/qwindowsdialoghelpers.cpp4
-rw-r--r--src/plugins/platforms/xcb/qxcbcursor.cpp2
-rw-r--r--src/tools/bootstrap/bootstrap.pro1
-rw-r--r--src/widgets/graphicsview/qgraphicsitem.cpp9
-rw-r--r--src/widgets/graphicsview/qgraphicsscene.cpp11
-rw-r--r--tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp6
-rw-r--r--tests/auto/corelib/tools/qstring/tst_qstring.cpp18
-rw-r--r--tests/auto/gui/painting/qpainter/tst_qpainter.cpp58
-rw-r--r--tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp2
-rw-r--r--tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp9
-rw-r--r--tools/configure/configureapp.cpp7
37 files changed, 366 insertions, 305 deletions
diff --git a/bin/syncqt b/bin/syncqt
index d503e3a87e..90b32a1a81 100755
--- a/bin/syncqt
+++ b/bin/syncqt
@@ -83,9 +83,6 @@ our $quoted_basedir;
# Make sure we use Windows line endings for chomp and friends on Windows.
$INPUT_RECORD_SEPARATOR = "\r\n" if ($^O eq "msys");
-my $mkspecsdir = dirname(dirname($0));
-normalizePath(\$mkspecsdir) if (defined $mkspecsdir);
-
# will be defined based on the modules sync.profile
our (%modules, %moduleheaders, @allmoduleheadersprivate, %classnames, %explicitheaders, %deprecatedheaders);
our @qpa_headers = ();
@@ -103,6 +100,7 @@ my $copy_headers = 0;
my $create_uic_class_map = 0;
my $create_private_headers = 1;
my $minimal = 0;
+my $module_version = 0;
my @modules_to_sync ;
$force_relative = 1 if ( -d "/System/Library/Frameworks" );
@@ -128,7 +126,7 @@ sub showUsage
print " -showonly Show action but not perform (default: " . ($showonly ? "yes" : "no") . ")\n";
print " -minimal Do not create CamelCase headers (default: " . ($minimal ? "yes" : "no") . ")\n";
print " -outdir <PATH> Specify output directory for sync (default: $out_basedir)\n";
- print " -mkspecsdir <PATH> Set the path to the mkspecs (detected: " . (defined $mkspecsdir ? $mkspecsdir : "-none-") . ")\n";
+ print " -version <VERSION> Specify the module's version (default: detect from qglobal.h)\n";
print " -quiet Only report problems, not activity (same as -verbose 0)\n";
print " -v, -verbose <level> Sets the verbosity level (max. 4) (default: $verbose_level)\n";
print " The short form increases the level by +1\n";
@@ -662,8 +660,8 @@ while ( @ARGV ) {
} elsif($arg eq "-private") {
$var = "create_private_headers";
$val = "yes";
- } elsif($arg eq "-mkspecsdir") {
- $var = "mkspecsdir";
+ } elsif($arg eq "-version") {
+ $var = "version";
$val = shift @ARGV;
} elsif($arg =~/^-/) {
print "Unknown option: $arg\n\n" if(!$var);
@@ -739,12 +737,11 @@ while ( @ARGV ) {
push @modules_to_sync, $module;
$moduleheaders{$module} = $headerdir;
$create_uic_class_map = 0;
- } elsif ($var eq "mkspecsdir") {
+ } elsif ($var eq "version") {
if($val) {
- $mkspecsdir = $val;
- normalizePath(\$mkspecsdir);
+ $module_version = $val;
} else {
- die "The -mkspecsdir option requires an argument";
+ die "The -version option requires an argument";
}
} elsif ($var eq "output") {
my $outdir = $val;
@@ -759,11 +756,6 @@ while ( @ARGV ) {
}
}
-die "Cannot automatically detect/use provided path to QtBase's build directory!\n" .
- "QTDIR detected/provided: " . (defined $mkspecsdir ? $mkspecsdir : "-none-") . "\n" .
- "Please use the -mkspecsdir option to provide the correct path.\nsyncqt failed"
- if (!$mkspecsdir || !-d $mkspecsdir);
-
# if we have no $basedir we cannot be sure which sources you want, so die
die "Could not find any sync.profile for your module!\nPass <module directory> to syncqt to sync your header files.\nsyncqt failed" if (!$basedir);
@@ -784,12 +776,12 @@ my %allmoduleheadersprivate = map { $_ => 1 } @allmoduleheadersprivate;
$isunix = checkUnix; #cache checkUnix
-my $qt_version = fileContents($mkspecsdir."/qconfig.pri");
-if (length($qt_version)) {
- $qt_version =~ s,.*^QT_VERSION[ \t]*=[ \t]*(\S+).*,$1,sm;
-} else {
- $qt_version = fileContents($basedir."/src/corelib/global/qglobal.h");
- $qt_version =~ s,.*^#[ \t]*define[ \t]+QT_VERSION_STR[ \t]+"([^"]+)".*,$1,sm;
+if (!$module_version) {
+ my $filco = fileContents($basedir."/src/corelib/global/qglobal.h");
+ if ($filco !~ m,.*^#[ \t]*define[ \t]+QT_VERSION_STR[ \t]+"([^"]+)".*,sm) {
+ die "Cannot determine Qt/Module version. Use -version.\n";
+ }
+ $module_version = $1;
}
foreach my $lib (@modules_to_sync) {
die "No such module: $lib" unless(defined $modules{$lib});
@@ -798,11 +790,6 @@ foreach my $lib (@modules_to_sync) {
my @dirs = split(/;/, $modules{$lib});
my $dir = $dirs[0];
- my $project = $dir;
- $project =~ s,/([^/]+)$,/$1/$1.pro,;
- my $module_version = fileContents($project);
- $module_version = $qt_version unless ($module_version =~ s,.*^VERSION[ \t]*=[ \t]*(\S+).*,$1,sm);
-
my $pathtoheaders = "";
$pathtoheaders = $moduleheaders{$lib} if ($moduleheaders{$lib});
diff --git a/configure b/configure
index d925e8ca4c..be0fe72845 100755
--- a/configure
+++ b/configure
@@ -1196,18 +1196,10 @@ while [ "$#" -gt 0 ]; do
VAL=`echo $1 | sed 's,-R,,'`
fi
;;
- -largefile)
- VAR="largefile"
- VAL="yes"
- ;;
- -l?*|-l)
+ -l) # -lfoo is handled differently
VAR="add_link"
- if [ "$1" = "-l" ]; then
- shift
- VAL="$1"
- else
- VAL=`echo $1 | sed 's,-l,,'`
- fi
+ shift
+ VAL="$1"
;;
-F?*|-F)
VAR="add_fpath"
@@ -1218,14 +1210,10 @@ while [ "$#" -gt 0 ]; do
VAL=`echo $1 | sed 's,-F,,'`
fi
;;
- -fw?*|-fw)
+ -fw) # -fwfoo is handled differently
VAR="add_framework"
- if [ "$1" = "-fw" ]; then
- shift
- VAL="$1"
- else
- VAL=`echo $1 | sed 's,-fw,,'`
- fi
+ shift
+ VAL="$1"
;;
-W*)
VAR="add_warn"
@@ -1504,7 +1492,7 @@ while [ "$#" -gt 0 ]; do
device-option)
DEV_VAR=`echo $VAL | sed "s,^\(.*\)=.*,\1,"`
DEV_VAL=`echo $VAL | sed "s,^.*=\(.*\),\1,"`
- DeviceVar set $DEV_VAR $DEV_VAL
+ DeviceVar set $DEV_VAR "$DEV_VAL"
;;
qpa)
QT_QPA_DEFAULT_PLATFORM="$VAL"
@@ -2240,6 +2228,16 @@ while [ "$#" -gt 0 ]; do
android-toolchain-version)
CFG_DEFAULT_ANDROID_NDK_TOOLCHAIN_VERSION="$VAL"
;;
+ l*) # -lfoo
+ L_FLAGS="$L_FLAGS -l\"${VAR#l}\""
+ ;;
+ fw*) # -fwfoo
+ if [ "$BUILD_ON_MAC" = "yes" ]; then
+ L_FLAGS="$L_FLAGS -framework \"${VAR#fw}\""
+ else
+ UNKNOWN_OPT=yes
+ fi
+ ;;
*)
UNKNOWN_OPT=yes
;;
@@ -2351,7 +2349,7 @@ if [ "$OPT_SHADOW" = "yes" ]; then
if [ -x "$relpath/bin/syncqt" ]; then
mkdir -p "$outpath/bin"
echo "#!/bin/sh" >"$outpath/bin/syncqt"
- echo "perl \"$relpath/bin/syncqt\" -mkspecsdir \"$outpath/mkspecs\" \"\$@\"" >>"$outpath/bin/syncqt"
+ echo "perl \"$relpath/bin/syncqt\" \"\$@\"" >>"$outpath/bin/syncqt"
chmod 755 "$outpath/bin/syncqt"
fi
@@ -3855,7 +3853,7 @@ setBootstrapVariable()
# build qmake
if true; then ###[ '!' -f "$outpath/bin/qmake" ];
- echo "Creating qmake. Please wait..."
+ echo "Creating qmake..."
mkdir -p "$outpath/qmake" || exit
# fix makefiles
@@ -4000,6 +3998,8 @@ if true; then ###[ '!' -f "$outpath/bin/qmake" ];
(cd "$outpath/qmake"; "$MAKE") || exit 2
fi # Build qmake
+echo "Running configuration tests..."
+
#-------------------------------------------------------------------------------
# create a qt.conf for the Qt build tree itself
#-------------------------------------------------------------------------------
diff --git a/mkspecs/common/shell-unix.conf b/mkspecs/common/shell-unix.conf
index 17c3612fdc..63c435d037 100644
--- a/mkspecs/common/shell-unix.conf
+++ b/mkspecs/common/shell-unix.conf
@@ -7,8 +7,8 @@ QMAKE_COPY_DIR = $$QMAKE_COPY -R
QMAKE_MOVE = mv -f
QMAKE_DEL_FILE = rm -f
QMAKE_DEL_DIR = rmdir
-QMAKE_CHK_DIR_EXISTS = test -d
-QMAKE_CHK_FILE_EXISTS = test -f
-QMAKE_CHK_EXISTS_GLUE = "|| "
-QMAKE_MKDIR = mkdir -p
+QMAKE_CHK_EXISTS = test -e %1 ||
+QMAKE_CHK_DIR_EXISTS = test -d # legacy
+QMAKE_MKDIR = mkdir -p # legacy
+QMAKE_MKDIR_CMD = test -d %1 || mkdir -p %1
QMAKE_STREAM_EDITOR = sed
diff --git a/mkspecs/common/shell-win32.conf b/mkspecs/common/shell-win32.conf
index 826e87e34f..77c9698388 100644
--- a/mkspecs/common/shell-win32.conf
+++ b/mkspecs/common/shell-win32.conf
@@ -5,10 +5,10 @@ QMAKE_COPY_DIR = xcopy /s /q /y /i
QMAKE_MOVE = move
QMAKE_DEL_FILE = del
QMAKE_DEL_DIR = rmdir
-QMAKE_CHK_DIR_EXISTS = if not exist
-QMAKE_CHK_FILE_EXISTS = if not exist
-QMAKE_CHK_EXISTS_GLUE =
-QMAKE_MKDIR = mkdir
+QMAKE_CHK_EXISTS = if not exist %1
+QMAKE_CHK_DIR_EXISTS = if not exist # legacy
+QMAKE_MKDIR = mkdir # legacy
+QMAKE_MKDIR_CMD = if not exist %1 mkdir %1 & if not exist %1 exit 1
# xcopy copies the contained files if source is a directory. Deal with it.
CONFIG += copy_dir_files
diff --git a/mkspecs/features/qml_module.prf b/mkspecs/features/qml_module.prf
index db5f6787b3..d6ff25eed5 100644
--- a/mkspecs/features/qml_module.prf
+++ b/mkspecs/features/qml_module.prf
@@ -25,7 +25,7 @@ qml1_target: \
else: \
instbase = $$[QT_INSTALL_QML]
-!prefix_build {
+!force_independent {
# These bizarre rules copy the files to the qtbase build directory
defineReplace(qmlModStripSrcDir) {
diff --git a/mkspecs/features/qt_build_config.prf b/mkspecs/features/qt_build_config.prf
index c53bc960a2..4cbd08910c 100644
--- a/mkspecs/features/qt_build_config.prf
+++ b/mkspecs/features/qt_build_config.prf
@@ -20,10 +20,11 @@
debug(1, "Not loading qmodule.pri twice")
}
+# force_independent can be set externally. prefix_build not.
!exists($$[QT_HOST_DATA]/.qmake.cache): \
- CONFIG += prefix_build
+ CONFIG += prefix_build force_independent
-!build_pass:!isEmpty(_QMAKE_SUPER_CACHE_):prefix_build {
+!build_pass:!isEmpty(_QMAKE_SUPER_CACHE_):force_independent {
# When doing a -prefix build of top-level qt5/qt.pro, we need to announce
# this repo's module pris' location to the other repos.
isEmpty(MODULE_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$shadowed($$dirname(_QMAKE_CONF_))
diff --git a/mkspecs/features/qt_example_installs.prf b/mkspecs/features/qt_example_installs.prf
index 04d7a17ab9..479a16a90b 100644
--- a/mkspecs/features/qt_example_installs.prf
+++ b/mkspecs/features/qt_example_installs.prf
@@ -26,7 +26,7 @@ defineTest(addInstallFiles) {
}
probase = $$relative_path($$_PRO_FILE_PWD_, $$dirname(_QMAKE_CONF_)/examples)
-!isEmpty(probase):!contains(probase, ^\\..*) {
+!isEmpty(probase):!contains(probase, ^\\..*):!isEmpty(_QMAKE_CACHE_) {
for(ex, EXAMPLE_FILES): \
sourcefiles += $$files($$absolute_path($$ex, $$_PRO_FILE_PWD_))
for(res, RESOURCES) {
diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf
index 478c255836..8cd2473224 100644
--- a/mkspecs/features/qt_functions.prf
+++ b/mkspecs/features/qt_functions.prf
@@ -236,13 +236,10 @@ defineTest(qtAddToolEnv) {
defineTest(qtAddTargetEnv) {
deps = $$replace(QT, -private$, )
- deps = $$resolve_depends(deps, "QT.")
+ deps = $$resolve_depends(deps, "QT.", ".depends" ".private_depends" ".run_depends")
!isEmpty(deps) {
- for(dep, deps) {
+ for(dep, deps): \
deppath += $$shell_path($$eval(QT.$${dep}.libs))
- for(rpath, QT.$${dep}.rpath_link): \
- deppath += $$shell_path($$rpath)
- }
equals(QMAKE_HOST.os, Windows) {
deppath.name = PATH
} else:contains(QMAKE_HOST.os, Linux|FreeBSD) {
diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf
index ba109864f6..cfafa15629 100644
--- a/mkspecs/features/qt_module.prf
+++ b/mkspecs/features/qt_module.prf
@@ -133,7 +133,7 @@ unix|win32-g++* {
!isEmpty(_QMAKE_SUPER_CACHE_): \
rplbase = $$dirname(_QMAKE_SUPER_CACHE_)/[^/][^/]*
else: \
- rplbase = $$MODULE_QMAKE_OUTDIR
+ rplbase = $$MODULE_BASE_OUTDIR
include_replace.match = $$rplbase/include
include_replace.replace = $$[QT_INSTALL_HEADERS/raw]
lib_replace.match = $$rplbase/lib
diff --git a/mkspecs/features/qt_module_headers.prf b/mkspecs/features/qt_module_headers.prf
index 1ddc28bed0..298ca102bc 100644
--- a/mkspecs/features/qt_module_headers.prf
+++ b/mkspecs/features/qt_module_headers.prf
@@ -18,10 +18,9 @@ load(qt_build_paths)
} else {
contains(QT_CONFIG, private_tests): \ # -developer-build
QMAKE_SYNCQT += -check-includes
- QMAKE_SYNCQT += -module $$MODULE_INCNAME
+ QMAKE_SYNCQT += -module $$MODULE_INCNAME -version $$VERSION
}
QMAKE_SYNCQT += \
- -mkspecsdir $$[QT_HOST_DATA/get]/mkspecs \
-outdir $$MODULE_BASE_OUTDIR $$MODULE_BASE_DIR
!silent: message($$QMAKE_SYNCQT)
system($$QMAKE_SYNCQT)|error("Failed to run: $$QMAKE_SYNCQT")
diff --git a/mkspecs/features/qt_module_pris.prf b/mkspecs/features/qt_module_pris.prf
index 2822e70b05..bedcfd4c47 100644
--- a/mkspecs/features/qt_module_pris.prf
+++ b/mkspecs/features/qt_module_pris.prf
@@ -11,7 +11,7 @@
load(qt_build_paths)
MODULE_FWD_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_lib_$${MODULE}.pri
-prefix_build: \
+force_independent: \
MODULE_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules-inst/qt_lib_$${MODULE}.pri
else: \
MODULE_PRI = $$MODULE_FWD_PRI
@@ -71,11 +71,11 @@ else: \
$$module_config \
"QT.$${MODULE}.DEFINES = $$MODULE_DEFINES" \ # assume sufficient quoting
"" \
- "QT_CONFIG += $$MODULE" # this is obsolete, but some code still depends on it
+ "QT_MODULES += $$MODULE"
write_file($$MODULE_PRI, MODULE_PRI_CONT)|error("Aborting.")
MODULE_PRI_FILES = $$MODULE_PRI
- prefix_build {
+ force_independent {
# Create a forwarding module .pri file
MODULE_FWD_PRI_CONT = \
@@ -113,7 +113,7 @@ else: \
includes private_includes bins libs libexecs plugins imports qml \
rpath_link rpath_link_private \
)):defined(QT.$${MODULE}.$$var, var):cache(QT.$${MODULE}.$$var, transient)
- cache(QT_CONFIG, transient)
+ cache(QT_MODULES, transient)
} # !build_pass
diff --git a/mkspecs/features/qt_plugin.prf b/mkspecs/features/qt_plugin.prf
index 98710431c3..9f4882c5db 100644
--- a/mkspecs/features/qt_plugin.prf
+++ b/mkspecs/features/qt_plugin.prf
@@ -57,7 +57,7 @@ unix|win32-g++* {
!isEmpty(_QMAKE_SUPER_CACHE_): \
rplbase = $$dirname(_QMAKE_SUPER_CACHE_)/[^/][^/]*
else: \
- rplbase = $$MODULE_QMAKE_OUTDIR
+ rplbase = $$MODULE_BASE_OUTDIR
lib_replace.match = $$rplbase/lib
lib_replace.replace = $$[QT_INSTALL_LIBS/raw]
QMAKE_PRL_INSTALL_REPLACE += lib_replace
diff --git a/mkspecs/features/qt_tool.prf b/mkspecs/features/qt_tool.prf
index 56ba1169a1..46d031fb32 100644
--- a/mkspecs/features/qt_tool.prf
+++ b/mkspecs/features/qt_tool.prf
@@ -37,8 +37,7 @@ load(qt_common)
# If we are doing a prefix build, create a "module" pri which enables
# qtPrepareTool() to work with the non-installed build.
# Non-bootstrapped tools always need this because of the environment setup.
-!build_pass:if(!host_build|!force_bootstrap|prefix_build) {
-
+!build_pass:if(!host_build|!force_bootstrap|force_independent) {
isEmpty(MODULE):MODULE = $$TARGET
MODULE_DEPENDS = $$replace(QT, -private$, )
diff --git a/qmake/generators/mac/pbuilder_pbx.cpp b/qmake/generators/mac/pbuilder_pbx.cpp
index 6b23cbe42e..a09e10c55e 100644
--- a/qmake/generators/mac/pbuilder_pbx.cpp
+++ b/qmake/generators/mac/pbuilder_pbx.cpp
@@ -137,6 +137,7 @@ ProjectBuilderMakefileGenerator::writeSubDirs(QTextStream &t)
QList<ProjectBuilderSubDirs*> pb_subdirs;
pb_subdirs.append(new ProjectBuilderSubDirs(project, QString(), false));
QString oldpwd = qmake_getpwd();
+ QString oldoutpwd = Option::output_dir;
QMap<QString, ProStringList> groups;
for(int pb_subdir = 0; pb_subdir < pb_subdirs.size(); ++pb_subdir) {
ProjectBuilderSubDirs *pb = pb_subdirs[pb_subdir];
@@ -173,6 +174,7 @@ ProjectBuilderMakefileGenerator::writeSubDirs(QTextStream &t)
if(!qmake_setpwd(dir))
fprintf(stderr, "Cannot find directory: %s\n", dir.toLatin1().constData());
}
+ Option::output_dir = Option::globals->shadowedPath(QDir::cleanPath(fi.absoluteFilePath()));
if(tmp_proj.read(fn)) {
if(tmp_proj.first("TEMPLATE") == "subdirs") {
QMakeProject *pp = new QMakeProject(&tmp_proj);
@@ -190,13 +192,13 @@ ProjectBuilderMakefileGenerator::writeSubDirs(QTextStream &t)
bool in_root = true;
QString name = qmake_getpwd();
if(project->isActiveConfig("flat")) {
- QString flat_file = fileFixify(name, oldpwd, Option::output_dir, FileFixifyRelative);
+ QString flat_file = fileFixify(name, oldpwd, oldoutpwd, FileFixifyRelative);
if(flat_file.indexOf(Option::dir_sep) != -1) {
QStringList dirs = flat_file.split(Option::dir_sep);
name = dirs.back();
}
} else {
- QString flat_file = fileFixify(name, oldpwd, Option::output_dir, FileFixifyRelative);
+ QString flat_file = fileFixify(name, oldpwd, oldoutpwd, FileFixifyRelative);
if(QDir::isRelativePath(flat_file) && flat_file.indexOf(Option::dir_sep) != -1) {
QString last_grp("QMAKE_SUBDIR_PBX_HEIR_GROUP");
QStringList dirs = flat_file.split(Option::dir_sep);
@@ -278,6 +280,7 @@ ProjectBuilderMakefileGenerator::writeSubDirs(QTextStream &t)
}
nextfile:
qmake_setpwd(oldpwd);
+ Option::output_dir = oldoutpwd;
}
}
}
diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp
index 3cac073d72..5a5f259358 100644
--- a/qmake/generators/makefile.cpp
+++ b/qmake/generators/makefile.cpp
@@ -92,18 +92,8 @@ bool MakefileGenerator::canExecute(const QStringList &cmdline, int *a) const
QString MakefileGenerator::mkdir_p_asstring(const QString &dir, bool escape) const
{
- QString ret = "@" + chkdir + " ";
- if(escape)
- ret += escapeFilePath(dir);
- else
- ret += dir;
- ret += " " + chkglue + "$(MKDIR) ";
- if(escape)
- ret += escapeFilePath(dir);
- else
- ret += dir;
- ret += " ";
- return ret;
+ QString edir = escape ? escapeFilePath(dir) : dir;
+ return "@" + makedir.arg(edir);
}
bool MakefileGenerator::mkdir(const QString &in_path) const
@@ -440,13 +430,17 @@ MakefileGenerator::init()
if (v["TARGET"].isEmpty())
warn_msg(WarnLogic, "TARGET is empty");
- chkdir = v["QMAKE_CHK_DIR_EXISTS"].join(' ');
- chkfile = v["QMAKE_CHK_FILE_EXISTS"].join(' ');
- if (chkfile.isEmpty()) // Backwards compat with Qt4 specs
- chkfile = isWindowsShell() ? "if not exist" : "test -f";
- chkglue = v["QMAKE_CHK_EXISTS_GLUE"].join(' ');
- if (chkglue.isEmpty()) // Backwards compat with Qt4 specs
- chkglue = isWindowsShell() ? "" : "|| ";
+ makedir = v["QMAKE_MKDIR_CMD"].join(' ');
+ chkexists = v["QMAKE_CHK_EXISTS"].join(' ');
+ if (makedir.isEmpty()) { // Backwards compat with Qt < 5.0.2 specs
+ if (isWindowsShell()) {
+ makedir = "if not exist %1 mkdir %1 & if not exist %1 exit 1";
+ chkexists = "if not exist %1";
+ } else {
+ makedir = "test -d %1 || mkdir -p %1";
+ chkexists = "test -e %1 ||";
+ }
+ }
if (v["QMAKE_LINK_O_FLAG"].isEmpty())
v["QMAKE_LINK_O_FLAG"].append("-o ");
@@ -2401,8 +2395,8 @@ MakefileGenerator::writeSubTargetCall(QTextStream &t,
if (!in.isEmpty()) {
if (!in_directory.isEmpty())
t << "\n\t" << mkdir_p_asstring(out_directory);
- pfx = "( " + chkfile + " " + out + " " + chkglue
- + "$(QMAKE) " + in + buildArgs() + " -o " + out
+ pfx = "( " + chkexists.arg(out) +
+ + " $(QMAKE) " + in + buildArgs() + " -o " + out
+ " ) && ";
}
writeSubMakeCall(t, out_directory_cdin + pfx, makefilein);
diff --git a/qmake/generators/makefile.h b/qmake/generators/makefile.h
index e1447c61c3..47acc8098f 100644
--- a/qmake/generators/makefile.h
+++ b/qmake/generators/makefile.h
@@ -81,7 +81,7 @@ class MakefileGenerator : protected QMakeSourceFileInfo
QString spec;
bool init_opath_already, init_already, no_io;
QHash<QString, bool> init_compiler_already;
- QString chkdir, chkfile, chkglue;
+ QString makedir, chkexists;
QString build_args(const QString &outdir=QString());
//internal caches
diff --git a/qmake/generators/metamakefile.cpp b/qmake/generators/metamakefile.cpp
index e3fa39c7e4..a037a966f6 100644
--- a/qmake/generators/metamakefile.cpp
+++ b/qmake/generators/metamakefile.cpp
@@ -385,18 +385,16 @@ SubdirsMetaMakefileGenerator::write()
const QString &output_name = Option::output.fileName();
for(int i = 0; ret && i < subs.count(); i++) {
const Subdir *sub = subs.at(i);
- qmake_setpwd(subs.at(i)->input_dir);
- Option::output_dir = QFileInfo(subs.at(i)->output_dir).absoluteFilePath();
- if(Option::output_dir.at(Option::output_dir.length()-1) != QLatin1Char('/'))
- Option::output_dir += QLatin1Char('/');
- Option::output.setFileName(subs.at(i)->output_file);
+ qmake_setpwd(sub->input_dir);
+ Option::output_dir = QFileInfo(sub->output_dir).absoluteFilePath();
+ Option::output.setFileName(sub->output_file);
if(i != subs.count()-1) {
for (int ind = 0; ind < sub->indent; ++ind)
printf(" ");
printf("Writing %s\n", QDir::cleanPath(Option::output_dir+"/"+
Option::output.fileName()).toLatin1().constData());
}
- if (!(ret = subs.at(i)->makefile->write()))
+ if (!(ret = sub->makefile->write()))
break;
//restore because I'm paranoid
qmake_setpwd(pwd);
diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp
index fce2147ed5..793c2ad1ad 100644
--- a/qmake/generators/win32/msvc_vcproj.cpp
+++ b/qmake/generators/win32/msvc_vcproj.cpp
@@ -434,18 +434,21 @@ ProStringList VcprojGenerator::collectDependencies(QMakeProject *proj, QHash<QSt
projLookup.insert(profileKey, fi.absoluteFilePath());
}
QString oldpwd = qmake_getpwd();
+ QString oldoutpwd = Option::output_dir;
QMakeProject tmp_proj;
QString dir = fi.absolutePath(), fn = fi.fileName();
if (!dir.isEmpty()) {
if (!qmake_setpwd(dir))
fprintf(stderr, "Cannot find directory: %s", dir.toLatin1().constData());
}
+ Option::output_dir = Option::globals->shadowedPath(QDir::cleanPath(fi.absoluteFilePath()));
if (tmp_proj.read(fn)) {
// Check if all requirements are fulfilled
if (!tmp_proj.isEmpty("QMAKE_FAILED_REQUIREMENTS")) {
fprintf(stderr, "Project file(%s) not added to Solution because all requirements not met:\n\t%s\n",
fn.toLatin1().constData(), tmp_proj.values("QMAKE_FAILED_REQUIREMENTS").join(" ").toLatin1().constData());
qmake_setpwd(oldpwd);
+ Option::output_dir = oldoutpwd;
continue;
}
if (tmp_proj.first("TEMPLATE") == "vcsubdirs") {
@@ -460,13 +463,10 @@ ProStringList VcprojGenerator::collectDependencies(QMakeProject *proj, QHash<QSt
// and to be able to extract all the dependencies
Option::QMAKE_MODE old_mode = Option::qmake_mode;
Option::qmake_mode = Option::QMAKE_GENERATE_NOTHING;
- QString old_output_dir = Option::output_dir;
- Option::output_dir = QFileInfo(fileFixify(dir, qmake_getpwd(), Option::output_dir)).canonicalFilePath();
VcprojGenerator tmp_vcproj;
tmp_vcproj.setNoIO(true);
tmp_vcproj.setProjectFile(&tmp_proj);
Option::qmake_mode = old_mode;
- Option::output_dir = old_output_dir;
// We assume project filename is [QMAKE_PROJECT_NAME].vcproj
QString vcproj = unescapeFilePath(tmp_vcproj.project->first("QMAKE_PROJECT_NAME") + project->first("VCPROJ_EXTENSION"));
@@ -578,6 +578,7 @@ ProStringList VcprojGenerator::collectDependencies(QMakeProject *proj, QHash<QSt
}
nextfile:
qmake_setpwd(oldpwd);
+ Option::output_dir = oldoutpwd;
}
}
}
diff --git a/qmake/library/qmakeevaluator.cpp b/qmake/library/qmakeevaluator.cpp
index 4f4e5854f1..0515fe1c98 100644
--- a/qmake/library/qmakeevaluator.cpp
+++ b/qmake/library/qmakeevaluator.cpp
@@ -1062,7 +1062,7 @@ bool QMakeEvaluator::prepareProject(const QString &inDir)
forever {
QString superfile = superdir + QLatin1String("/.qmake.super");
if (IoUtils::exists(superfile)) {
- m_superfile = superfile;
+ m_superfile = QDir::cleanPath(superfile);
break;
}
QFileInfo qdfi(superdir);
@@ -1099,8 +1099,8 @@ bool QMakeEvaluator::prepareProject(const QString &inDir)
} else {
m_buildRoot = QFileInfo(cachefile).path();
}
- m_conffile = conffile;
- m_cachefile = cachefile;
+ m_conffile = QDir::cleanPath(conffile);
+ m_cachefile = QDir::cleanPath(cachefile);
}
no_cache:
diff --git a/qmake/main.cpp b/qmake/main.cpp
index 2056e36322..55f915b52f 100644
--- a/qmake/main.cpp
+++ b/qmake/main.cpp
@@ -97,15 +97,8 @@ int runQMake(int argc, char **argv)
}
QString oldpwd = qmake_getpwd();
-#ifdef Q_OS_WIN
- if(!(oldpwd.length() == 3 && oldpwd[0].isLetter() && oldpwd.endsWith(":/")))
-#endif
- {
- if(!oldpwd.endsWith(QLatin1Char('/')))
- oldpwd += QLatin1Char('/');
- }
- Option::output_dir = oldpwd; //for now this is the output dir
+ Option::output_dir = oldpwd; //for now this is the output dir
if(Option::output.fileName() != "-") {
QFileInfo fi(Option::output);
QString dir;
@@ -124,7 +117,7 @@ int runQMake(int argc, char **argv)
if(!dir.isNull() && dir != ".")
Option::output_dir = dir;
if(QDir::isRelativePath(Option::output_dir))
- Option::output_dir.prepend(oldpwd);
+ Option::output_dir.prepend(oldpwd + QLatin1Char('/'));
Option::output_dir = QDir::cleanPath(Option::output_dir);
}
diff --git a/src/angle/angle.pro b/src/angle/angle.pro
index 371e39868f..721caf880a 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
+QMAKE_SYNCQT_OPTIONS = -module KHR -module EGL -module GLES2 -version none
load(qt_module_headers)
diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp
index ed1a8a4974..c1bb460e7b 100644
--- a/src/corelib/kernel/qvariant.cpp
+++ b/src/corelib/kernel/qvariant.cpp
@@ -1940,9 +1940,10 @@ inline T qVariantToHelper(const QVariant::Private &d, const HandlersManager &han
/*!
\fn QStringList QVariant::toStringList() const
- Returns the variant as a QStringList if the variant has type()
- StringList, \l String, or \l List of a type that can be converted
- to QString; otherwise returns an empty list.
+ Returns the variant as a QStringList if the variant has userType()
+ \l QMetaType::QStringList, \l QMetaType::QString, or
+ \l QMetaType::QVariantList of a type that can be converted to QString;
+ otherwise returns an empty list.
\sa canConvert(), convert()
*/
@@ -1952,10 +1953,12 @@ QStringList QVariant::toStringList() const
}
/*!
- Returns the variant as a QString if the variant has type() \l
- String, \l Bool, \l ByteArray, \l Char, \l Date, \l DateTime, \l
- Double, \l Int, \l LongLong, \l StringList, \l Time, \l UInt, or
- \l ULongLong; otherwise returns an empty string.
+ Returns the variant as a QString if the variant has userType() \l
+ QMetaType::QString, \l QMetaType::Bool, \l QMetaType::QByteArray,
+ \l QMetaType::QChar, \l QMetaType::QDate, \l QMetaType::QDateTime,
+ \l QMetaType::Double, \l QMetaType::Int, \l QMetaType::LongLong,
+ \l QMetaType::QStringList, \l QMetaType::QTime, \l QMetaType::UInt, or
+ \l QMetaType::ULongLong; otherwise returns an empty string.
\sa canConvert(), convert()
*/
@@ -1966,7 +1969,7 @@ QString QVariant::toString() const
/*!
Returns the variant as a QMap<QString, QVariant> if the variant
- has type() \l Map; otherwise returns an empty map.
+ has type() \l QMetaType::QVariantMap; otherwise returns an empty map.
\sa canConvert(), convert()
*/
@@ -1977,7 +1980,7 @@ QVariantMap QVariant::toMap() const
/*!
Returns the variant as a QHash<QString, QVariant> if the variant
- has type() \l Hash; otherwise returns an empty map.
+ has type() \l QMetaType::QVariantHash; otherwise returns an empty map.
\sa canConvert(), convert()
*/
@@ -1989,11 +1992,12 @@ QVariantHash QVariant::toHash() const
/*!
\fn QDate QVariant::toDate() const
- Returns the variant as a QDate if the variant has type() \l Date,
- \l DateTime, or \l String; otherwise returns an invalid date.
+ Returns the variant as a QDate if the variant has userType()
+ \l QMetaType::QDate, \l QMetaType::QDateTime, or \l QMetaType::QString;
+ otherwise returns an invalid date.
- If the type() is \l String, an invalid date will be returned if the
- string cannot be parsed as a Qt::ISODate format date.
+ If the type() is \l QMetaType::QString, an invalid date will be returned if
+ the string cannot be parsed as a Qt::ISODate format date.
\sa canConvert(), convert()
*/
@@ -2005,10 +2009,11 @@ QDate QVariant::toDate() const
/*!
\fn QTime QVariant::toTime() const
- Returns the variant as a QTime if the variant has type() \l Time,
- \l DateTime, or \l String; otherwise returns an invalid time.
+ Returns the variant as a QTime if the variant has userType()
+ \l QMetaType::QTime, \l QMetaType::QDateTime, or \l QMetaType::QString;
+ otherwise returns an invalid time.
- If the type() is \l String, an invalid time will be returned if
+ If the type() is \l QMetaType::QString, an invalid time will be returned if
the string cannot be parsed as a Qt::ISODate format time.
\sa canConvert(), convert()
@@ -2021,12 +2026,12 @@ QTime QVariant::toTime() const
/*!
\fn QDateTime QVariant::toDateTime() const
- Returns the variant as a QDateTime if the variant has type() \l
- DateTime, \l Date, or \l String; otherwise returns an invalid
- date/time.
+ Returns the variant as a QDateTime if the variant has userType()
+ \l QMetaType::QDateTime, \l QMetaType::QDate, or \l QMetaType::QString;
+ otherwise returns an invalid date/time.
- If the type() is \l String, an invalid date/time will be returned
- if the string cannot be parsed as a Qt::ISODate format date/time.
+ If the type() is \l QMetaType::QString, an invalid date/time will be
+ returned if the string cannot be parsed as a Qt::ISODate format date/time.
\sa canConvert(), convert()
*/
@@ -2039,8 +2044,8 @@ QDateTime QVariant::toDateTime() const
\since 4.7
\fn QEasingCurve QVariant::toEasingCurve() const
- Returns the variant as a QEasingCurve if the variant has type() \l
- EasingCurve; otherwise returns a default easing curve.
+ Returns the variant as a QEasingCurve if the variant has userType()
+ \l QMetaType::QEasingCurve; otherwise returns a default easing curve.
\sa canConvert(), convert()
*/
@@ -2054,9 +2059,9 @@ QEasingCurve QVariant::toEasingCurve() const
/*!
\fn QByteArray QVariant::toByteArray() const
- Returns the variant as a QByteArray if the variant has type() \l
- ByteArray or \l String (converted using QString::fromUtf8());
- otherwise returns an empty byte array.
+ Returns the variant as a QByteArray if the variant has userType()
+ \l QMetaType::QByteArray or \l QMetaType::QString (converted using
+ QString::fromUtf8()); otherwise returns an empty byte array.
\sa canConvert(), convert()
*/
@@ -2069,8 +2074,9 @@ QByteArray QVariant::toByteArray() const
/*!
\fn QPoint QVariant::toPoint() const
- Returns the variant as a QPoint if the variant has type()
- \l Point or \l PointF; otherwise returns a null QPoint.
+ Returns the variant as a QPoint if the variant has userType()
+ \l QMetaType::QPointF or \l QMetaType::QPointF; otherwise returns a null
+ QPoint.
\sa canConvert(), convert()
*/
@@ -2082,8 +2088,8 @@ QPoint QVariant::toPoint() const
/*!
\fn QRect QVariant::toRect() const
- Returns the variant as a QRect if the variant has type() \l Rect;
- otherwise returns an invalid QRect.
+ Returns the variant as a QRect if the variant has userType()
+ \l QMetaType::QRect; otherwise returns an invalid QRect.
\sa canConvert(), convert()
*/
@@ -2095,8 +2101,8 @@ QRect QVariant::toRect() const
/*!
\fn QSize QVariant::toSize() const
- Returns the variant as a QSize if the variant has type() \l Size;
- otherwise returns an invalid QSize.
+ Returns the variant as a QSize if the variant has userType()
+ \l QMetaType::QSize; otherwise returns an invalid QSize.
\sa canConvert(), convert()
*/
@@ -2108,8 +2114,8 @@ QSize QVariant::toSize() const
/*!
\fn QSizeF QVariant::toSizeF() const
- Returns the variant as a QSizeF if the variant has type() \l
- SizeF; otherwise returns an invalid QSizeF.
+ Returns the variant as a QSizeF if the variant has userType() \l
+ QMetaType::QSizeF; otherwise returns an invalid QSizeF.
\sa canConvert(), convert()
*/
@@ -2121,8 +2127,9 @@ QSizeF QVariant::toSizeF() const
/*!
\fn QRectF QVariant::toRectF() const
- Returns the variant as a QRectF if the variant has type() \l Rect
- or \l RectF; otherwise returns an invalid QRectF.
+ Returns the variant as a QRectF if the variant has userType()
+ \l QMetaType::QRect or \l QMetaType::QRectF; otherwise returns an invalid
+ QRectF.
\sa canConvert(), convert()
*/
@@ -2134,8 +2141,8 @@ QRectF QVariant::toRectF() const
/*!
\fn QLineF QVariant::toLineF() const
- Returns the variant as a QLineF if the variant has type() \l
- LineF; otherwise returns an invalid QLineF.
+ Returns the variant as a QLineF if the variant has userType()
+ \l QMetaType::QLineF; otherwise returns an invalid QLineF.
\sa canConvert(), convert()
*/
@@ -2147,8 +2154,8 @@ QLineF QVariant::toLineF() const
/*!
\fn QLine QVariant::toLine() const
- Returns the variant as a QLine if the variant has type() \l Line;
- otherwise returns an invalid QLine.
+ Returns the variant as a QLine if the variant has userType()
+ \l QMetaType::QLine; otherwise returns an invalid QLine.
\sa canConvert(), convert()
*/
@@ -2160,8 +2167,9 @@ QLine QVariant::toLine() const
/*!
\fn QPointF QVariant::toPointF() const
- Returns the variant as a QPointF if the variant has type() \l
- Point or \l PointF; otherwise returns a null QPointF.
+ Returns the variant as a QPointF if the variant has userType() \l
+ QMetaType::QPoint or \l QMetaType::QPointF; otherwise returns a null
+ QPointF.
\sa canConvert(), convert()
*/
@@ -2176,8 +2184,8 @@ QPointF QVariant::toPointF() const
/*!
\fn QUrl QVariant::toUrl() const
- Returns the variant as a QUrl if the variant has type()
- \l Url; otherwise returns an invalid QUrl.
+ Returns the variant as a QUrl if the variant has userType()
+ \l QMetaType::QUrl; otherwise returns an invalid QUrl.
\sa canConvert(), convert()
*/
@@ -2190,8 +2198,8 @@ QUrl QVariant::toUrl() const
/*!
\fn QLocale QVariant::toLocale() const
- Returns the variant as a QLocale if the variant has type()
- \l Locale; otherwise returns an invalid QLocale.
+ Returns the variant as a QLocale if the variant has userType()
+ \l QMetaType::QLocale; otherwise returns an invalid QLocale.
\sa canConvert(), convert()
*/
@@ -2204,8 +2212,8 @@ QLocale QVariant::toLocale() const
\fn QRegExp QVariant::toRegExp() const
\since 4.1
- Returns the variant as a QRegExp if the variant has type() \l
- RegExp; otherwise returns an empty QRegExp.
+ Returns the variant as a QRegExp if the variant has userType()
+ \l QMetaType::QRegExp; otherwise returns an empty QRegExp.
\sa canConvert(), convert()
*/
@@ -2221,7 +2229,7 @@ QRegExp QVariant::toRegExp() const
\fn QRegularExpression QVariant::toRegularExpression() const
\since 5.0
- Returns the variant as a QRegularExpression if the variant has type() \l
+ Returns the variant as a QRegularExpression if the variant has userType() \l
QRegularExpression; otherwise returns an empty QRegularExpression.
\sa canConvert(), convert()
@@ -2236,7 +2244,7 @@ QRegularExpression QVariant::toRegularExpression() const
/*!
\since 5.0
- Returns the variant as a QUuid if the variant has type() \l
+ Returns the variant as a QUuid if the variant has userType() \l
QUuid; otherwise returns a default constructed QUuid.
\sa canConvert(), convert()
@@ -2249,7 +2257,7 @@ QUuid QVariant::toUuid() const
/*!
\since 5.0
- Returns the variant as a QModelIndex if the variant has type() \l
+ Returns the variant as a QModelIndex if the variant has userType() \l
QModelIndex; otherwise returns a default constructed QModelIndex.
\sa canConvert(), convert()
@@ -2262,7 +2270,7 @@ QModelIndex QVariant::toModelIndex() const
/*!
\since 5.0
- Returns the variant as a QJsonValue if the variant has type() \l
+ Returns the variant as a QJsonValue if the variant has userType() \l
QJsonValue; otherwise returns a default constructed QJsonValue.
\sa canConvert(), convert()
@@ -2275,7 +2283,7 @@ QJsonValue QVariant::toJsonValue() const
/*!
\since 5.0
- Returns the variant as a QJsonObject if the variant has type() \l
+ Returns the variant as a QJsonObject if the variant has userType() \l
QJsonObject; otherwise returns a default constructed QJsonObject.
\sa canConvert(), convert()
@@ -2288,7 +2296,7 @@ QJsonObject QVariant::toJsonObject() const
/*!
\since 5.0
- Returns the variant as a QJsonArray if the variant has type() \l
+ Returns the variant as a QJsonArray if the variant has userType() \l
QJsonArray; otherwise returns a default constructed QJsonArray.
\sa canConvert(), convert()
@@ -2301,7 +2309,7 @@ QJsonArray QVariant::toJsonArray() const
/*!
\since 5.0
- Returns the variant as a QJsonDocument if the variant has type() \l
+ Returns the variant as a QJsonDocument if the variant has userType() \l
QJsonDocument; otherwise returns a default constructed QJsonDocument.
\sa canConvert(), convert()
@@ -2315,8 +2323,9 @@ QJsonDocument QVariant::toJsonDocument() const
/*!
\fn QChar QVariant::toChar() const
- Returns the variant as a QChar if the variant has type() \l Char,
- \l Int, or \l UInt; otherwise returns an invalid QChar.
+ Returns the variant as a QChar if the variant has userType()
+ \l QMetaType::QChar, \l QMetaType::Int, or \l QMetaType::UInt; otherwise
+ returns an invalid QChar.
\sa canConvert(), convert()
*/
@@ -2326,8 +2335,8 @@ QChar QVariant::toChar() const
}
/*!
- Returns the variant as a QBitArray if the variant has type()
- \l BitArray; otherwise returns an empty bit array.
+ Returns the variant as a QBitArray if the variant has userType()
+ \l QMetaType::QBitArray; otherwise returns an empty bit array.
\sa canConvert(), convert()
*/
@@ -2353,16 +2362,19 @@ inline T qNumVariantToHelper(const QVariant::Private &d,
}
/*!
- Returns the variant as an int if the variant has type() \l Int,
- \l Bool, \l ByteArray, \l Char, \l Double, \l LongLong, \l
- String, \l UInt, or \l ULongLong; otherwise returns 0.
+ Returns the variant as an int if the variant has userType()
+ \l QMetaType::Int, \l QMetaType::Bool, \l QMetaType::QByteArray,
+ \l QMetaType::QChar, \l QMetaType::Double, \l QMetaType::LongLong,
+ \l QMetaType::QString, \l QMetaType::UInt, or \l QMetaType::ULongLong;
+ otherwise returns 0.
If \a ok is non-null: \c{*}\a{ok} is set to true if the value could be
converted to an int; otherwise \c{*}\a{ok} is set to false.
- \b{Warning:} If the value is convertible to a \l LongLong but is too
- large to be represented in an int, the resulting arithmetic overflow will
- not be reflected in \a ok. A simple workaround is to use QString::toInt().
+ \b{Warning:} If the value is convertible to a \l QMetaType::LongLong but is
+ too large to be represented in an int, the resulting arithmetic overflow
+ will not be reflected in \a ok. A simple workaround is to use
+ QString::toInt().
\sa canConvert(), convert()
*/
@@ -2372,16 +2384,19 @@ int QVariant::toInt(bool *ok) const
}
/*!
- Returns the variant as an unsigned int if the variant has type()
- \l UInt, \l Bool, \l ByteArray, \l Char, \l Double, \l Int, \l
- LongLong, \l String, or \l ULongLong; otherwise returns 0.
+ Returns the variant as an unsigned int if the variant has userType()
+ \l QMetaType::UInt, \l QMetaType::Bool, \l QMetaType::QByteArray,
+ \l QMetaType::QChar, \l QMetaType::Double, \l QMetaType::Int,
+ \l QMetaType::LongLong, \l QMetaType::QString, or \l QMetaType::ULongLong;
+ otherwise returns 0.
If \a ok is non-null: \c{*}\a{ok} is set to true if the value could be
converted to an unsigned int; otherwise \c{*}\a{ok} is set to false.
- \b{Warning:} If the value is convertible to a \l ULongLong but is too
- large to be represented in an unsigned int, the resulting arithmetic overflow will
- not be reflected in \a ok. A simple workaround is to use QString::toUInt().
+ \b{Warning:} If the value is convertible to a \l QMetaType::ULongLong but is
+ too large to be represented in an unsigned int, the resulting arithmetic
+ overflow will not be reflected in \a ok. A simple workaround is to use
+ QString::toUInt().
\sa canConvert(), convert()
*/
@@ -2391,9 +2406,11 @@ uint QVariant::toUInt(bool *ok) const
}
/*!
- Returns the variant as a long long int if the variant has type()
- \l LongLong, \l Bool, \l ByteArray, \l Char, \l Double, \l Int,
- \l String, \l UInt, or \l ULongLong; otherwise returns 0.
+ Returns the variant as a long long int if the variant has userType()
+ \l QMetaType::LongLong, \l QMetaType::Bool, \l QMetaType::QByteArray,
+ \l QMetaType::QChar, \l QMetaType::Double, \l QMetaType::Int,
+ \l QMetaType::QString, \l QMetaType::UInt, or \l QMetaType::ULongLong;
+ otherwise returns 0.
If \a ok is non-null: \c{*}\c{ok} is set to true if the value could be
converted to an int; otherwise \c{*}\c{ok} is set to false.
@@ -2407,9 +2424,10 @@ qlonglong QVariant::toLongLong(bool *ok) const
/*!
Returns the variant as as an unsigned long long int if the
- variant has type() \l ULongLong, \l Bool, \l ByteArray, \l Char,
- \l Double, \l Int, \l LongLong, \l String, or \l UInt; otherwise
- returns 0.
+ variant has type() \l QMetaType::ULongLong, \l QMetaType::Bool,
+ \l QMetaType::QByteArray, \l QMetaType::QChar, \l QMetaType::Double,
+ \l QMetaType::Int, \l QMetaType::LongLong, \l QMetaType::QString, or
+ \l QMetaType::UInt; otherwise returns 0.
If \a ok is non-null: \c{*}\a{ok} is set to true if the value could be
converted to an int; otherwise \c{*}\a{ok} is set to false.
@@ -2422,13 +2440,14 @@ qulonglong QVariant::toULongLong(bool *ok) const
}
/*!
- Returns the variant as a bool if the variant has type() Bool.
+ Returns the variant as a bool if the variant has userType() Bool.
- Returns true if the variant has type() \l Bool, \l Char, \l Double,
- \l Int, \l LongLong, \l UInt, or \l ULongLong and the value is
- non-zero, or if the variant has type \l String or \l ByteArray and
- its lower-case content is not one of the following: empty, "0"
- or "false"; otherwise returns false.
+ Returns true if the variant has userType() \l QMetaType::Bool,
+ \l QMetaType::QChar, \l QMetaType::Double, \l QMetaType::Int,
+ \l QMetaType::LongLong, \l QMetaType::UInt, or \l QMetaType::ULongLong and
+ the value is non-zero, or if the variant has type \l QMetaType::QString or
+ \l QMetaType::QByteArray and its lower-case content is not one of the
+ following: empty, "0" or "false"; otherwise returns false.
\sa canConvert(), convert()
*/
@@ -2444,9 +2463,11 @@ bool QVariant::toBool() const
}
/*!
- Returns the variant as a double if the variant has type() \l
- Double, \l QMetaType::Float, \l Bool, \l ByteArray, \l Int, \l LongLong, \l String, \l
- UInt, or \l ULongLong; otherwise returns 0.0.
+ Returns the variant as a double if the variant has userType()
+ \l QMetaType::Double, \l QMetaType::Float, \l QMetaType::Bool,
+ \l QMetaType::QByteArray, \l QMetaType::Int, \l QMetaType::LongLong,
+ \l QMetaType::QString, \l QMetaType::UInt, or \l QMetaType::ULongLong;
+ otherwise returns 0.0.
If \a ok is non-null: \c{*}\a{ok} is set to true if the value could be
converted to a double; otherwise \c{*}\a{ok} is set to false.
@@ -2459,9 +2480,11 @@ double QVariant::toDouble(bool *ok) const
}
/*!
- Returns the variant as a float if the variant has type() \l
- Double, \l QMetaType::Float, \l Bool, \l ByteArray, \l Int, \l LongLong, \l String, \l
- UInt, or \l ULongLong; otherwise returns 0.0.
+ Returns the variant as a float if the variant has userType()
+ \l QMetaType::Double, \l QMetaType::Float, \l QMetaType::Bool,
+ \l QMetaType::QByteArray, \l QMetaType::Int, \l QMetaType::LongLong,
+ \l QMetaType::QString, \l QMetaType::UInt, or \l QMetaType::ULongLong;
+ otherwise returns 0.0.
\since 4.6
@@ -2476,9 +2499,11 @@ float QVariant::toFloat(bool *ok) const
}
/*!
- Returns the variant as a qreal if the variant has type() \l
- Double, \l QMetaType::Float, \l Bool, \l ByteArray, \l Int, \l LongLong, \l String, \l
- UInt, or \l ULongLong; otherwise returns 0.0.
+ Returns the variant as a qreal if the variant has userType()
+ \l QMetaType::Double, \l QMetaType::Float, \l QMetaType::Bool,
+ \l QMetaType::QByteArray, \l QMetaType::Int, \l QMetaType::LongLong,
+ \l QMetaType::QString, \l QMetaType::UInt, or \l QMetaType::ULongLong;
+ otherwise returns 0.0.
\since 4.6
@@ -2493,8 +2518,9 @@ qreal QVariant::toReal(bool *ok) const
}
/*!
- Returns the variant as a QVariantList if the variant has type()
- \l List or \l StringList; otherwise returns an empty list.
+ Returns the variant as a QVariantList if the variant has userType()
+ \l QMetaType::QVariantList or \l QMetaType::QStringList; otherwise returns
+ an empty list.
\sa canConvert(), convert()
*/
@@ -2633,27 +2659,51 @@ static bool canConvertMetaObject(int fromId, int toId, QObject *fromObject)
\table
\header \li Type \li Automatically Cast To
- \row \li \l Bool \li \l Char, \l Double, \l Int, \l LongLong, \l String, \l UInt, \l ULongLong
- \row \li \l ByteArray \li \l Double, \l Int, \l LongLong, \l String, \l UInt, \l ULongLong
- \row \li \l Char \li \l Bool, \l Int, \l UInt, \l LongLong, \l ULongLong
- \row \li \l Color \li \l String
- \row \li \l Date \li \l DateTime, \l String
- \row \li \l DateTime \li \l Date, \l String, \l Time
- \row \li \l Double \li \l Bool, \l Int, \l LongLong, \l String, \l UInt, \l ULongLong
- \row \li \l Font \li \l String
- \row \li \l Int \li \l Bool, \l Char, \l Double, \l LongLong, \l String, \l UInt, \l ULongLong
- \row \li \l KeySequence \li \l Int, \l String
- \row \li \l List \li \l StringList (if the list's items can be converted to strings)
- \row \li \l LongLong \li \l Bool, \l ByteArray, \l Char, \l Double, \l Int, \l String, \l UInt, \l ULongLong
- \row \li \l Point \li PointF
- \row \li \l Rect \li RectF
- \row \li \l String \li \l Bool, \l ByteArray, \l Char, \l Color, \l Date, \l DateTime, \l Double,
- \l Font, \l Int, \l KeySequence, \l LongLong, \l StringList, \l Time, \l UInt,
- \l ULongLong
- \row \li \l StringList \li \l List, \l String (if the list contains exactly one item)
- \row \li \l Time \li \l String
- \row \li \l UInt \li \l Bool, \l Char, \l Double, \l Int, \l LongLong, \l String, \l ULongLong
- \row \li \l ULongLong \li \l Bool, \l Char, \l Double, \l Int, \l LongLong, \l String, \l UInt
+ \row \li \l QMetaType::Bool \li \l QMetaType::QChar, \l QMetaType::Double,
+ \l QMetaType::Int, \l QMetaType::LongLong, \l QMetaType::QString,
+ \l QMetaType::UInt, \l QMetaType::ULongLong
+ \row \li \l QMetaType::QByteArray \li \l QMetaType::Double,
+ \l QMetaType::Int, \l QMetaType::LongLong, \l QMetaType::QString,
+ \l QMetaType::UInt, \l QMetaType::ULongLong
+ \row \li \l QMetaType::QChar \li \l QMetaType::Bool, \l QMetaType::Int,
+ \l QMetaType::UInt, \l QMetaType::LongLong, \l QMetaType::ULongLong
+ \row \li \l QMetaType::QColor \li \l QMetaType::QString
+ \row \li \l QMetaType::QDate \li \l QMetaType::QDateTime,
+ \l QMetaType::QString
+ \row \li \l QMetaType::QDateTime \li \l QMetaType::QDate,
+ \l QMetaType::QString, \l QMetaType::QTime
+ \row \li \l QMetaType::Double \li \l QMetaType::Bool, \l QMetaType::Int,
+ \l QMetaType::LongLong, \l QMetaType::QString, \l QMetaType::UInt,
+ \l QMetaType::ULongLong
+ \row \li \l QMetaType::QFont \li \l QMetaType::QString
+ \row \li \l QMetaType::Int \li \l QMetaType::Bool, \l QMetaType::QChar,
+ \l QMetaType::Double, \l QMetaType::LongLong, \l QMetaType::QString,
+ \l QMetaType::UInt, \l QMetaType::ULongLong
+ \row \li \l QMetaType::QKeySequence \li \l QMetaType::Int,
+ \l QMetaType::QString
+ \row \li \l QMetaType::QVariantList \li \l QMetaType::QStringList (if the
+ list's items can be converted to QStrings)
+ \row \li \l QMetaType::LongLong \li \l QMetaType::Bool,
+ \l QMetaType::QByteArray, \l QMetaType::QChar, \l QMetaType::Double,
+ \l QMetaType::Int, \l QMetaType::QString, \l QMetaType::UInt,
+ \l QMetaType::ULongLong
+ \row \li \l QMetaType::QPoint \li QMetaType::QPointF
+ \row \li \l QMetaType::QRect \li QMetaType::QRectF
+ \row \li \l QMetaType::QString \li \l QMetaType::Bool,
+ \l QMetaType::QByteArray, \l QMetaType::QChar, \l QMetaType::QColor,
+ \l QMetaType::QDate, \l QMetaType::QDateTime, \l QMetaType::Double,
+ \l QMetaType::QFont, \l QMetaType::Int, \l QMetaType::QKeySequence,
+ \l QMetaType::LongLong, \l QMetaType::QStringList, \l QMetaType::QTime,
+ \l QMetaType::UInt, \l QMetaType::ULongLong
+ \row \li \l QMetaType::QStringList \li \l QMetaType::QVariantList,
+ \l QMetaType::QString (if the list contains exactly one item)
+ \row \li \l QMetaType::QTime \li \l QMetaType::QString
+ \row \li \l QMetaType::UInt \li \l QMetaType::Bool, \l QMetaType::QChar,
+ \l QMetaType::Double, \l QMetaType::Int, \l QMetaType::LongLong,
+ \l QMetaType::QString, \l QMetaType::ULongLong
+ \row \li \l QMetaType::ULongLong \li \l QMetaType::Bool,
+ \l QMetaType::QChar, \l QMetaType::Double, \l QMetaType::Int,
+ \l QMetaType::LongLong, \l QMetaType::QString, \l QMetaType::UInt
\endtable
A QVariant containing a pointer to a type derived from QObject will also return true for this
diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp
index 31c870b012..07b617ee2e 100644
--- a/src/corelib/tools/qdatetime.cpp
+++ b/src/corelib/tools/qdatetime.cpp
@@ -260,8 +260,7 @@ static QString fmtDateTime(const QString& f, const QTime* dt = 0, const QDate* d
If the specified date is invalid, the date is not set and
isValid() returns false.
- \warning Years 0 to 99 are interpreted as is, i.e., years
- 0-99.
+ \warning Years 1 to 99 are interpreted as is. Year 0 is invalid.
\sa isValid()
*/
@@ -1483,10 +1482,7 @@ int QTime::msec() const
If \a format is Qt::ISODate, the string format corresponds to the
ISO 8601 extended specification for representations of dates,
- which is also HH:MM:SS. (However, contrary to ISO 8601, dates
- before 15 October 1582 are handled as Julian dates, not Gregorian
- dates. See \l{QDate G and J} {Use of Gregorian and Julian
- Calendars}. This might change in a future version of Qt.)
+ which is also HH:MM:SS.
If the \a format is Qt::SystemLocaleShortDate or
Qt::SystemLocaleLongDate, the string format depends on the locale
@@ -1555,9 +1551,9 @@ QString QTime::toString(Qt::DateFormat format) const
\row \li z \li the milliseconds without leading zeroes (0 to 999)
\row \li zzz \li the milliseconds with leading zeroes (000 to 999)
\row \li AP or A
- \li use AM/PM display. \e AP will be replaced by either "AM" or "PM".
+ \li use AM/PM display. \e A/AP will be replaced by either "AM" or "PM".
\row \li ap or a
- \li use am/pm display. \e ap will be replaced by either "am" or "pm".
+ \li use am/pm display. \e a/ap will be replaced by either "am" or "pm".
\row \li t \li the timezone (for example "CEST")
\endtable
@@ -3754,8 +3750,7 @@ static bool hasUnquotedAP(const QString &f)
for (int i=0; i<max; ++i) {
if (f.at(i) == quote) {
inquote = !inquote;
- } else if (!inquote && f.at(i).toUpper() == QLatin1Char('A')
- && i + 1 < max && f.at(i + 1).toUpper() == QLatin1Char('P')) {
+ } else if (!inquote && f.at(i).toUpper() == QLatin1Char('A')) {
return true;
}
}
diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp
index a3f6a0b075..54b1a084b2 100644
--- a/src/corelib/tools/qstring.cpp
+++ b/src/corelib/tools/qstring.cpp
@@ -2953,7 +2953,7 @@ QString& QString::replace(const QRegExp &rx, const QString &after)
QString &QString::replace(const QRegularExpression &re, const QString &after)
{
if (!re.isValid()) {
- qWarning("QString::replace: invalid QRegularExpresssion object");
+ qWarning("QString::replace: invalid QRegularExpression object");
return *this;
}
@@ -3278,7 +3278,7 @@ int QString::count(const QRegExp& rx) const
int QString::indexOf(const QRegularExpression& re, int from) const
{
if (!re.isValid()) {
- qWarning("QString::indexOf: invalid QRegularExpresssion object");
+ qWarning("QString::indexOf: invalid QRegularExpression object");
return -1;
}
@@ -3304,7 +3304,7 @@ int QString::indexOf(const QRegularExpression& re, int from) const
int QString::lastIndexOf(const QRegularExpression &re, int from) const
{
if (!re.isValid()) {
- qWarning("QString::lastIndexOf: invalid QRegularExpresssion object");
+ qWarning("QString::lastIndexOf: invalid QRegularExpression object");
return -1;
}
@@ -3333,7 +3333,7 @@ int QString::lastIndexOf(const QRegularExpression &re, int from) const
bool QString::contains(const QRegularExpression &re) const
{
if (!re.isValid()) {
- qWarning("QString::contains: invalid QRegularExpresssion object");
+ qWarning("QString::contains: invalid QRegularExpression object");
return false;
}
QRegularExpressionMatch match = re.match(*this);
@@ -3382,7 +3382,7 @@ bool QString::contains(const QRegularExpression &re, QRegularExpressionMatch *ma
int QString::count(const QRegularExpression &re) const
{
if (!re.isValid()) {
- qWarning("QString::count: invalid QRegularExpresssion object");
+ qWarning("QString::count: invalid QRegularExpression object");
return 0;
}
int count = 0;
diff --git a/src/corelib/tools/tools.pri b/src/corelib/tools/tools.pri
index bb152987e6..40858e5336 100644
--- a/src/corelib/tools/tools.pri
+++ b/src/corelib/tools/tools.pri
@@ -128,8 +128,19 @@ contains(QT_CONFIG, zlib) {
contains(QT_CONFIG,icu) {
SOURCES += tools/qlocale_icu.cpp
DEFINES += QT_USE_ICU
- win32:LIBS_PRIVATE += -licuin -licuuc
- else:LIBS_PRIVATE += -licui18n -licuuc
+ win32 {
+ CONFIG(static, static|shared) {
+ CONFIG(debug, debug|release) {
+ LIBS_PRIVATE += -lsicuind -lsicuucd -lsicudtd
+ } else {
+ LIBS_PRIVATE += -lsicuin -lsicuuc -lsicudt
+ }
+ } else {
+ LIBS_PRIVATE += -licuin -licuuc
+ }
+ } else {
+ LIBS_PRIVATE += -licui18n -licuuc
+ }
}
pcre {
diff --git a/src/gui/painting/qcosmeticstroker.cpp b/src/gui/painting/qcosmeticstroker.cpp
index 7f53bec52f..0f3cde3efd 100644
--- a/src/gui/painting/qcosmeticstroker.cpp
+++ b/src/gui/painting/qcosmeticstroker.cpp
@@ -290,14 +290,14 @@ void QCosmeticStroker::setup()
ppl = buffer->bytesPerLine()>>2;
}
- // dashes are sensitive to clips, so we need to clip consistently when painting to the same device
- QRect clipRect = strokeSelection & Dashed ? deviceRect : clip;
+ // line drawing produces different results with different clips, so
+ // we need to clip consistently when painting to the same device
// setup FP clip bounds
- xmin = clipRect.left() - 1;
- xmax = clipRect.right() + 2;
- ymin = clipRect.top() - 1;
- ymax = clipRect.bottom() + 2;
+ xmin = deviceRect.left() - 1;
+ xmax = deviceRect.right() + 2;
+ ymin = deviceRect.top() - 1;
+ ymax = deviceRect.bottom() + 2;
lastPixel.x = -1;
}
diff --git a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
index 5cc5230832..8565bf0204 100644
--- a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
+++ b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
@@ -1340,7 +1340,9 @@ static inline QString appendSuffix(const QString &fileName, const QString &filte
if (suffixPos < 0)
return fileName;
suffixPos += 3;
- int endPos = filter.indexOf(QLatin1Char(';'), suffixPos + 1);
+ int endPos = filter.indexOf(QLatin1Char(' '), suffixPos + 1);
+ if (endPos < 0)
+ endPos = filter.indexOf(QLatin1Char(';'), suffixPos + 1);
if (endPos < 0)
endPos = filter.indexOf(QLatin1Char(')'), suffixPos + 1);
if (endPos < 0)
diff --git a/src/plugins/platforms/xcb/qxcbcursor.cpp b/src/plugins/platforms/xcb/qxcbcursor.cpp
index ff40c6a9ab..3fd2ca70e3 100644
--- a/src/plugins/platforms/xcb/qxcbcursor.cpp
+++ b/src/plugins/platforms/xcb/qxcbcursor.cpp
@@ -490,7 +490,7 @@ xcb_cursor_t QXcbCursor::createFontCursor(int cshape)
0xFFFF, 0xFFFF, 0xFFFF, 0, 0, 0);
}
- if (cursor && cshape >= 0 && cshape < Qt::LastCursor) {
+ if (cursor && cshape >= 0 && cshape < Qt::LastCursor && connection()->hasXFixes()) {
const char *name = cursorNames[cshape];
xcb_xfixes_set_cursor_name(conn, cursor, strlen(name), name);
}
diff --git a/src/tools/bootstrap/bootstrap.pro b/src/tools/bootstrap/bootstrap.pro
index 8b69c715d2..8b28b09e00 100644
--- a/src/tools/bootstrap/bootstrap.pro
+++ b/src/tools/bootstrap/bootstrap.pro
@@ -42,6 +42,7 @@ CONFIG += minimal_syncqt
QMAKE_SYNCQT_OPTIONS = -module QtCore -module QtDBus -module QtXml
contains(QT_CONFIG, zlib): \
QMAKE_SYNCQT_OPTIONS += -module QtZlib
+QMAKE_SYNCQT_OPTIONS += -version $$QT_VERSION
load(qt_module)
diff --git a/src/widgets/graphicsview/qgraphicsitem.cpp b/src/widgets/graphicsview/qgraphicsitem.cpp
index 9aeee7c37a..62eab6a7a2 100644
--- a/src/widgets/graphicsview/qgraphicsitem.cpp
+++ b/src/widgets/graphicsview/qgraphicsitem.cpp
@@ -745,9 +745,6 @@
#include <QtGui/qevent.h>
#include <QtGui/qinputmethod.h>
#include <QtWidgets/qgraphicseffect.h>
-#ifndef QT_NO_ACCESSIBILITY
-# include "qaccessible.h"
-#endif
#include <private/qgraphicsitem_p.h>
#include <private/qgraphicswidget_p.h>
@@ -7357,12 +7354,6 @@ void QGraphicsItem::updateMicroFocus()
if (scene()->views().at(i) == fw) {
if (qApp)
qApp->inputMethod()->update(Qt::ImQueryAll);
-
-#ifndef QT_NO_ACCESSIBILITY
- // ##### is this correct
- if (toGraphicsObject())
- QAccessible::updateAccessibility(toGraphicsObject(), 0, QAccessible::StateChanged);
-#endif
break;
}
}
diff --git a/src/widgets/graphicsview/qgraphicsscene.cpp b/src/widgets/graphicsview/qgraphicsscene.cpp
index ba59b15a54..2768c67134 100644
--- a/src/widgets/graphicsview/qgraphicsscene.cpp
+++ b/src/widgets/graphicsview/qgraphicsscene.cpp
@@ -245,9 +245,6 @@
#include <QtGui/qtransform.h>
#include <QtGui/qinputmethod.h>
#include <QtWidgets/qgraphicseffect.h>
-#ifndef QT_NO_ACCESSIBILITY
-# include <QtGui/qaccessible.h>
-#endif
#include <private/qapplication_p.h>
#include <private/qobject_p.h>
#include <private/qgraphicseffect_p.h>
@@ -866,14 +863,6 @@ void QGraphicsScenePrivate::setFocusItemHelper(QGraphicsItem *item,
focusItem = item;
updateInputMethodSensitivityInViews();
-#ifndef QT_NO_ACCESSIBILITY
- if (focusItem) {
- if (QGraphicsObject *focusObj = focusItem->toGraphicsObject()) {
- QAccessibleEvent event(focusObj, QAccessible::Focus);
- QAccessible::updateAccessibility(&event);
- }
- }
-#endif
if (item) {
QFocusEvent event(QEvent::FocusIn, focusReason);
sendEvent(item, &event);
diff --git a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
index 4e5b0a3555..b84039f557 100644
--- a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
+++ b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
@@ -1481,16 +1481,10 @@ void tst_QDateTime::toString_strformat_data()
QTest::newRow( "datetime13" ) << QDateTime(QDate(1974, 12, 1), QTime(14, 14, 20))
<< QString("hh''mm''ss dd''MM''yyyy")
<< QString("14'14'20 01'12'1974");
- QTest::newRow( "missing p and P" ) << QDateTime(QDate(1999, 12, 31), QTime(3, 59, 59, 999))
- << QString("hhhhhaA") << QString("03033aA");
- QTest::newRow( "OK A, bad P" ) << QDateTime(QDate(1999, 12, 31), QTime(0, 59, 59, 999))
- << QString("hhAX") << QString("00AX");
QTest::newRow( "single, 0 => 12 AM" ) << QDateTime(QDate(1999, 12, 31), QTime(0, 59, 59, 999))
<< QString("hAP") << QString("12AM");
QTest::newRow( "double, 0 => 12 AM" ) << QDateTime(QDate(1999, 12, 31), QTime(0, 59, 59, 999))
<< QString("hhAP") << QString("12AM");
- QTest::newRow( "double, garbage" ) << QDateTime(QDate(1999, 12, 31), QTime(0, 59, 59, 999))
- << QString("hhAX") << QString("00AX");
QTest::newRow( "dddd" ) << QDateTime(QDate(1999, 12, 31), QTime(0, 59, 59, 999))
<< QString("dddd") << QString("Friday");
QTest::newRow( "ddd" ) << QDateTime(QDate(1999, 12, 31), QTime(0, 59, 59, 999))
diff --git a/tests/auto/corelib/tools/qstring/tst_qstring.cpp b/tests/auto/corelib/tools/qstring/tst_qstring.cpp
index aa61885a47..91293ffc21 100644
--- a/tests/auto/corelib/tools/qstring/tst_qstring.cpp
+++ b/tests/auto/corelib/tools/qstring/tst_qstring.cpp
@@ -156,6 +156,7 @@ private slots:
void count();
void lastIndexOf_data();
void lastIndexOf();
+ void lastIndexOfInvalidRegex();
void indexOf_data();
void indexOf();
void indexOf2_data();
@@ -635,6 +636,7 @@ void tst_QString::replace_regexp_data()
<< QString("a9a8a7a6a5nmlkjii0hh0gg0ff0ee0dd0cc0bb0a");
QTest::newRow("backref10") << QString("abc") << QString("((((((((((((((abc))))))))))))))")
<< QString("\\0\\01\\011") << QString("\\0\\01\\011");
+ QTest::newRow("invalid") << QString("") << QString("invalid regex\\") << QString("") << QString("");
}
void tst_QString::utf8_data()
@@ -1383,6 +1385,12 @@ void tst_QString::lastIndexOf()
}
}
+void tst_QString::lastIndexOfInvalidRegex()
+{
+ QTest::ignoreMessage(QtWarningMsg, "QString::lastIndexOf: invalid QRegularExpression object");
+ QCOMPARE(QString("").lastIndexOf(QRegularExpression("invalid regex\\"), 0), -1);
+}
+
void tst_QString::count()
{
QString a;
@@ -1400,7 +1408,8 @@ void tst_QString::count()
QCOMPARE(a.count(QRegExp("[G][HE]")),2);
QCOMPARE(a.count(QRegularExpression("[FG][HI]")), 1);
QCOMPARE(a.count(QRegularExpression("[G][HE]")), 2);
-
+ QTest::ignoreMessage(QtWarningMsg, "QString::count: invalid QRegularExpression object");
+ QCOMPARE(a.count(QRegularExpression("invalid regex\\")), 0);
CREATE_REF(QLatin1String("FG"));
QCOMPARE(a.count(ref),2);
@@ -1485,6 +1494,8 @@ void tst_QString::contains()
QStringRef emptyRef(&a, 0, 0);
QVERIFY(a.contains(emptyRef, Qt::CaseInsensitive));
+ QTest::ignoreMessage(QtWarningMsg, "QString::contains: invalid QRegularExpression object");
+ QVERIFY(!a.contains(QRegularExpression("invalid regex\\")));
}
@@ -2395,7 +2406,10 @@ void tst_QString::replace_regexp()
s2.replace( QRegExp(regexp), after );
QTEST( s2, "result" );
s2 = string;
- s2.replace( QRegularExpression(regexp), after );
+ QRegularExpression regularExpression(regexp);
+ if (!regularExpression.isValid())
+ QTest::ignoreMessage(QtWarningMsg, "QString::replace: invalid QRegularExpression object");
+ s2.replace( regularExpression, after );
QTEST( s2, "result" );
}
diff --git a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
index 6c37f1fc27..4f1213dff9 100644
--- a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
+++ b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
@@ -277,7 +277,9 @@ private slots:
void drawTextWithComplexBrush();
void QTBUG26013_squareCapStroke();
void QTBUG25153_drawLine();
- void dashing_systemClip();
+
+ void cosmeticStrokerClipping_data();
+ void cosmeticStrokerClipping();
private:
void fillData();
@@ -4459,22 +4461,54 @@ void tst_QPainter::QTBUG25153_drawLine()
}
}
-static void dashing_systemClip_paint(QPainter *p)
+enum CosmeticStrokerPaint
+{
+ Antialiasing,
+ Dashing
+};
+
+static void paint_func(QPainter *p, CosmeticStrokerPaint type)
+{
+ p->save();
+ switch (type) {
+ case Antialiasing:
+ p->setPen(Qt::black);
+ p->setRenderHint(QPainter::Antialiasing);
+ p->drawLine(4, 8, 42, 42);
+ break;
+ case Dashing:
+ p->setPen(QPen(Qt::black, 1, Qt::DashLine, Qt::RoundCap, Qt::MiterJoin));
+ p->drawLine(8, 8, 42, 8);
+ p->drawLine(42, 8, 42, 42);
+ p->drawLine(42, 42, 8, 42);
+ p->drawLine(8, 42, 8, 8);
+ break;
+ default:
+ Q_ASSERT(false);
+ break;
+ }
+ p->restore();
+}
+
+Q_DECLARE_METATYPE(CosmeticStrokerPaint)
+
+void tst_QPainter::cosmeticStrokerClipping_data()
{
- p->setPen(QPen(Qt::black, 1, Qt::DashLine, Qt::RoundCap, Qt::MiterJoin));
- p->drawLine(8, 8, 42, 8);
- p->drawLine(42, 8, 42, 42);
- p->drawLine(42, 42, 8, 42);
- p->drawLine(8, 42, 8, 8);
+ QTest::addColumn<CosmeticStrokerPaint>("paint");
+
+ QTest::newRow("antialiasing_paint") << Antialiasing;
+ QTest::newRow("dashing_paint") << Dashing;
}
-void tst_QPainter::dashing_systemClip()
+void tst_QPainter::cosmeticStrokerClipping()
{
+ QFETCH(CosmeticStrokerPaint, paint);
+
QImage image(50, 50, QImage::Format_RGB32);
image.fill(Qt::white);
QPainter p(&image);
- dashing_systemClip_paint(&p);
+ paint_func(&p, paint);
p.end();
QImage old = image.copy();
@@ -4482,7 +4516,8 @@ void tst_QPainter::dashing_systemClip()
image.paintEngine()->setSystemClip(QRect(10, 0, image.width() - 10, image.height()));
p.begin(&image);
- dashing_systemClip_paint(&p);
+ p.fillRect(image.rect(), Qt::white);
+ paint_func(&p, paint);
// doing same paint operation again with different system clip should not change the image
QCOMPARE(old, image);
@@ -4490,7 +4525,8 @@ void tst_QPainter::dashing_systemClip()
old = image;
p.setClipRect(QRect(20, 20, 30, 30));
- dashing_systemClip_paint(&p);
+ p.fillRect(image.rect(), Qt::white);
+ paint_func(&p, paint);
// ditto for regular clips
QCOMPARE(old, image);
diff --git a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
index c94e5c7ffd..feb6978690 100644
--- a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
+++ b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
@@ -708,6 +708,8 @@ void tst_QSslSocket::peerCertificateChain()
if (!QSslSocket::supportsSsl())
return;
+ QSKIP("QTBUG-29941 - Unstable auto-test due to intermittently unreachable host");
+
QSslSocketPtr socket = newSocket();
this->socket = socket.data();
diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
index 252d47f698..13237e8c7a 100644
--- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
+++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
@@ -4246,6 +4246,7 @@ void tst_QWidget::scroll()
UpdateWidget updateWidget;
updateWidget.resize(w, h);
updateWidget.reset();
+ updateWidget.move(QGuiApplication::primaryScreen()->geometry().center() - QPoint(250, 250));
updateWidget.show();
qApp->setActiveWindow(&updateWidget);
QVERIFY(QTest::qWaitForWindowActive(&updateWidget));
@@ -4257,7 +4258,7 @@ void tst_QWidget::scroll()
qApp->processEvents();
QRegion dirty(QRect(0, 0, w, 10));
dirty += QRegion(QRect(0, 10, 10, h - 10));
- QCOMPARE(updateWidget.paintedRegion, dirty);
+ QTRY_COMPARE(updateWidget.paintedRegion, dirty);
}
{
@@ -4267,7 +4268,7 @@ void tst_QWidget::scroll()
qApp->processEvents();
QRegion dirty(QRect(0, 0, w, 10));
dirty += QRegion(QRect(0, 10, 10, 10));
- QCOMPARE(updateWidget.paintedRegion, dirty);
+ QTRY_COMPARE(updateWidget.paintedRegion, dirty);
}
if (updateWidget.width() < 200 || updateWidget.height() < 200)
@@ -4283,7 +4284,7 @@ void tst_QWidget::scroll()
dirty += QRegion(QRect(0, 60, 110, 40));
dirty += QRegion(QRect(50, 100, 60, 10));
dirty += QRegion(QRect(50, 110, 10, 40));
- QCOMPARE(updateWidget.paintedRegion, dirty);
+ QTRY_COMPARE(updateWidget.paintedRegion, dirty);
}
{
@@ -4294,7 +4295,7 @@ void tst_QWidget::scroll()
QRegion dirty(QRect(0, 0, 100, 100));
dirty += QRegion(QRect(100, 100, 100, 10));
dirty += QRegion(QRect(100, 110, 10, 90));
- QCOMPARE(updateWidget.paintedRegion, dirty);
+ QTRY_COMPARE(updateWidget.paintedRegion, dirty);
}
}
#endif
diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp
index 55ac3d997a..b9d50d62c4 100644
--- a/tools/configure/configureapp.cpp
+++ b/tools/configure/configureapp.cpp
@@ -172,7 +172,7 @@ Configure::Configure(int& argc, char** argv)
QTextStream stream(&syncqt_bat);
stream << "@echo off" << endl
<< "call " << QDir::toNativeSeparators(sourcePath + "/bin/syncqt.bat")
- << " -mkspecsdir \"" << QDir::toNativeSeparators(buildPath) << "/mkspecs\" %*" << endl;
+ << " %*" << endl;
syncqt_bat.close();
}
}
@@ -2032,7 +2032,8 @@ bool Configure::checkAvailability(const QString &part)
else if (part == "ICU")
available = findFile("unicode/utypes.h") && findFile("unicode/ucol.h") && findFile("unicode/ustring.h")
- && (findFile("icuin.lib") || findFile("libicuin.lib")); // libicun.lib if compiled with mingw
+ && (findFile("icuin.lib") || findFile("sicuin.lib")
+ || findFile("libicuin.lib") || findFile("libsicuin.lib")); // "lib" prefix for mingw, 's' prefix for static
else if (part == "ANGLE") {
available = checkAngleAvailability();
@@ -2141,6 +2142,8 @@ bool Configure::checkAvailability(const QString &part)
*/
void Configure::autoDetection()
{
+ cout << "Running configuration tests..." << endl;
+
if (dictionary["C++11"] == "auto") {
if (!dictionary["QMAKESPEC"].contains("msvc"))
dictionary["C++11"] = tryCompileProject("common/c++11") ? "yes" : "no";