Merge "Merge remote-tracking branch 'gerrit/release' into stable" into refs/staging/stable
This commit is contained in:
commit
fb9cff6e88
39
bin/syncqt
39
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});
|
||||
|
||||
|
42
configure
vendored
42
configure
vendored
@ -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
|
||||
#-------------------------------------------------------------------------------
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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) {
|
||||
|
@ -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_))
|
||||
|
@ -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) {
|
||||
|
@ -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) {
|
||||
|
@ -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
|
||||
|
@ -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")
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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$, )
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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:
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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 {
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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))
|
||||
|
@ -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" );
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
{
|
||||
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);
|
||||
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();
|
||||
}
|
||||
|
||||
void tst_QPainter::dashing_systemClip()
|
||||
Q_DECLARE_METATYPE(CosmeticStrokerPaint)
|
||||
|
||||
void tst_QPainter::cosmeticStrokerClipping_data()
|
||||
{
|
||||
QTest::addColumn<CosmeticStrokerPaint>("paint");
|
||||
|
||||
QTest::newRow("antialiasing_paint") << Antialiasing;
|
||||
QTest::newRow("dashing_paint") << Dashing;
|
||||
}
|
||||
|
||||
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);
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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
|
||||
|
@ -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";
|
||||
|
Loading…
Reference in New Issue
Block a user