diff options
288 files changed, 12380 insertions, 4096 deletions
diff --git a/bin/createpackage.pl b/bin/createpackage.pl index 522d1fb..87ed29e 100755 --- a/bin/createpackage.pl +++ b/bin/createpackage.pl @@ -82,6 +82,8 @@ Where supported options are as follows: [-s|stub] = Generates stub sis for ROM. [-n|sisname <name>] = Specifies the final sis name. [-g|gcce-is-armv5] = Convert gcce platform to armv5. + [-d|dont-patch] = Skip automatic patching of capabilities and pkg file if default certificate + is used. Instead non-self-signable capabilities just cause warnings. Where parameters are as follows: templatepkg = Name of .pkg file template target = Either debug or release @@ -127,6 +129,7 @@ my $stub = ""; my $signed_sis_name = ""; my $onlyUnsigned = ""; my $convertGcce = ""; +my $dontPatchCaps = ""; unless (GetOptions('i|install' => \$install, 'p|preprocess' => \$preprocessonly, @@ -135,16 +138,19 @@ unless (GetOptions('i|install' => \$install, 'o|only-unsigned' => \$onlyUnsigned, 's|stub' => \$stub, 'n|sisname=s' => \$signed_sis_name, - 'g|gcce-is-armv5' => \$convertGcce,)) { + 'g|gcce-is-armv5' => \$convertGcce, + 'd|dont-patch' => \$dontPatchCaps,)) { Usage(); } my $epocroot = $ENV{EPOCROOT}; +my $epocToolsDir = ""; if ($epocroot ne "") { $epocroot =~ s,\\,/,g; if ($epocroot =~ m,[^/]$,) { $epocroot = $epocroot."/"; } + $epocToolsDir = "${epocroot}epoc32/tools/"; } my $certfilepath = abs_path(dirname($certfile)); @@ -337,24 +343,25 @@ if($stub) { mkpath($systeminstall); my $stub_sis_name = $systeminstall."/".$stub_sis_name; # Create stub SIS. - system ("${epocroot}epoc32/tools/makesis -s $pkgoutput $stub_sis_name"); + system ("${epocToolsDir}makesis -s $pkgoutput $stub_sis_name"); } else { if ($certtext eq "Self Signed" && !@certificates && $templatepkg !~ m/_installer\.pkg$/i && !$onlyUnsigned) { - print("Auto-patching capabilities for self signed package.\n"); my $patch_capabilities = File::Spec->catfile(dirname($0), "patch_capabilities"); - system ("$patch_capabilities $pkgoutput") and die ("ERROR: Automatic patching failed"); + if ($dontPatchCaps) { + system ("$patch_capabilities -c $pkgoutput") and print ("Warning: Package check for self-signing viability failed. Installing the package on a device will most likely fail!\n\n"); + } else { + print("Auto-patching self-signed package.\n"); + system ("$patch_capabilities $pkgoutput") and die ("ERROR: Automatic patching failed"); + } } # Create SIS. # The 'and' is because system uses 0 to indicate success. - if($epocroot) { - system ("${epocroot}epoc32/tools/makesis $pkgoutput $unsigned_sis_name") and die ("ERROR: makesis failed"); - } else { - system ("makesis $pkgoutput $unsigned_sis_name") and die ("ERROR: makesis failed"); - } + system ("${epocToolsDir}makesis $pkgoutput $unsigned_sis_name") and die ("ERROR: makesis failed"); + print("\n"); my $targetInsert = ""; @@ -381,7 +388,7 @@ if($stub) { my $relcert = File::Spec->abs2rel($certificate); my $relkey = File::Spec->abs2rel($key); # The 'and' is because system uses 0 to indicate success. - system ("signsis $unsigned_sis_name $signed_sis_name $relcert $relkey $passphrase") and die ("ERROR: signsis failed"); + system ("${epocToolsDir}signsis $unsigned_sis_name $signed_sis_name $relcert $relkey $passphrase") and die ("ERROR: signsis failed"); # Check if creating signed SIS Succeeded stat($signed_sis_name); @@ -394,7 +401,7 @@ if($stub) { my $relcert = File::Spec->abs2rel(File::Spec->rel2abs( $row->[0], $certfilepath)); my $relkey = File::Spec->abs2rel(File::Spec->rel2abs( $row->[1], $certfilepath)); - system ("signsis $signed_sis_name $signed_sis_name $relcert $relkey $row->[2]"); + system ("${epocToolsDir}signsis $signed_sis_name $signed_sis_name $relcert $relkey $row->[2]"); print ("\tAdditionally signed the SIS with certificate: $row->[0]!\n"); } diff --git a/bin/patch_capabilities.pl b/bin/patch_capabilities.pl index 994d493..c3fb89f 100755 --- a/bin/patch_capabilities.pl +++ b/bin/patch_capabilities.pl @@ -63,8 +63,11 @@ sub Usage() { print(" symbian-sbsv2 platform, 'target-platform' is REQUIRED. ***\n\n"); print(" *** NOTE2: When patching gcce binaries built with symbian-sbsv2 toolchain,\n"); print(" armv5 must be specified as platform.\n"); - print("\nUsage: patch_capabilities.pl pkg_filename [target-platform [capability list]]\n"); + print("\nUsage: patch_capabilities.pl [-c] pkg_filename [target-platform [capability list]]\n"); print("\nE.g. patch_capabilities.pl myapp_template.pkg release-armv5 \"All -TCB\"\n"); + print("\nThe parameter -c can be used to just check if package is compatible with self-signing\n"); + print("without actually doing any patching.\n"); + print("Explicit capability list cannot be used with -c parameter.\n"); exit(); } @@ -75,6 +78,16 @@ sub trim($) { return $string; } +my $epocroot = $ENV{EPOCROOT}; +my $epocToolsDir = ""; +if ($epocroot ne "") { + $epocroot =~ s,\\,/,g; + if ($epocroot =~ m,[^/]$,) { + $epocroot = $epocroot."/"; + } + $epocToolsDir = "${epocroot}epoc32/tools/"; +} + my $nullDevice = "/dev/null"; $nullDevice = "NUL" if ($^O =~ /MSWin/); @@ -86,6 +99,14 @@ if (@ARGV) { # Parse the first given script argument as a ".pkg" file name. my $pkgFileName = shift(@ARGV); + my $justCheck = ""; + my $msgPrefix = "Patching:"; + + if ($pkgFileName eq "-c") { + $pkgFileName = shift(@ARGV); + $justCheck = true; + $msgPrefix = "Warning:"; + } # These variables will only be set for template .pkg files. my $target; @@ -123,15 +144,22 @@ if (@ARGV) if (($pkgFileName =~ m|\.pkg$|i) && -r($pkgFileName)) { print ("\n"); - print ("Patching package file and relevant binaries...\n"); + if ($justCheck) { + print ("Checking"); + } else { + print ("Patching"); + } + print (" package file and relevant binaries...\n"); - # If there are more arguments given, parse them as capabilities. - if (@ARGV) - { - @capabilitiesSpecified = (); - while (@ARGV) + if (!$justCheck) { + # If there are more arguments given, parse them as capabilities. + if (@ARGV) { - push (@capabilitiesSpecified, pop(@ARGV)); + @capabilitiesSpecified = (); + while (@ARGV) + { + push (@capabilitiesSpecified, pop(@ARGV)); + } } } @@ -139,11 +167,15 @@ if (@ARGV) my @binaries = (); my $tempPkgFileName = $pkgFileName."_@@TEMP@@"; - unlink($tempPkgFileName); - open (NEW_PKG, ">>".$tempPkgFileName); + + if (!$justCheck) { + unlink($tempPkgFileName); + open (NEW_PKG, ">>".$tempPkgFileName); + } open (PKG, "<".$pkgFileName); - my $manufacturerElseBlock = 0; + my $checkFailed = ""; + my $somethingPatched = ""; # Parse each line. while (<PKG>) @@ -155,66 +187,19 @@ if (@ARGV) if ($line =~ m/^\#.*\((0x[0-7][0-9a-fA-F]*)\).*$/) { my $oldUID = $1; - my $newUID = $oldUID; - $newUID =~ s/0x./0xE/i; - $newLine =~ s/$oldUID/$newUID/; - print ("Patching: UID $oldUID is not compatible with self-signing! Changed to: $newUID.\n"); - } - - # Patch embedded sis name and UID if UID is in protected range - if ($line =~ m/^@\"*(.*\.sis).*\((0x[0-7][0-9a-fA-F]*)\).*$/) - { - my $oldSisName = $1; - my $oldUID = $2; - my $newUID = $oldUID; - $newUID =~ s/0x./0xE/i; - $newLine =~ s/$oldUID/$newUID/; - print ("Patching: Embedded sis $oldSisName UID $oldUID changed to: $newUID.\n"); - - if ($oldSisName !~ m/^.*_selfsigned.sis$/i) - { - my $newSisName = $oldSisName; - $newSisName =~ s/\.sis$/_selfsigned\.sis/i; - $newLine =~ s/$oldSisName/$newSisName/i; - print ("Patching: Embedded sis $oldSisName name changed to: $newSisName.\n"); + print ("$msgPrefix UID $oldUID is not compatible with self-signing!\n"); + + if ($justCheck) { + $checkFailed = true; + } else { + my $newUID = $oldUID; + $newUID =~ s/0x./0xE/i; + $newLine =~ s/$oldUID/$newUID/; + print ("$msgPrefix Package UID changed to: $newUID.\n"); + $somethingPatched = true; } } - # Remove dependencies to known problem packages (i.e. packages that are likely to be patched, too) - # to reduce unnecessary error messages. - if ($line =~ m/^\((0x2002af5f)\).*\{.*\}$/) - { - $newLine = "\n"; - print ("Patching: Removed dependency to sqlite3.sis ($1) to avoid installation issues in case sqlite3.sis is also patched.\n"); - } - if ($line =~ m/^\((0x2001E61C)\).*\{.*\}$/) - { - $newLine = "\n"; - print ("Patching: Removed dependency to qt.sis ($1) to avoid installation issues in case qt.sis is also patched.\n"); - } - - # Remove manufacturer ifdef - if ($line =~ m/^.*\(MANUFACTURER\)\=\(.*\).*$/) - { - $newLine = "\n"; - print ("Patching: Removed manufacturer check as it is usually not desirable in self-signed packages.\n"); - } - - if ($line =~ m/^ELSEIF.*MANUFACTURER$/) - { - $manufacturerElseBlock = 1; - } - - if ($manufacturerElseBlock eq 1) - { - $newLine = "\n"; - } - - if ($line =~ m/^ENDIF.*MANUFACTURER$/) - { - $manufacturerElseBlock = 0; - } - # If the line specifies a file, parse the source and destination locations. if ($line =~ m|^ *\"([^\"]+)\"\s*\-\s*\"([^\"]+)\"|) { @@ -231,16 +216,20 @@ if (@ARGV) $sourcePath =~ s/\$\(TARGET\)/$target/gm; } - # Change the source file name (but only if not already patched) - my $patchedSourcePath = $sourcePath; - if ($patchedSourcePath !~ m/_patched_caps/) - { - $newLine =~ s/(^.*)(\.dll|\.exe)(.*)(\.dll|\.exe)/$1_patched_caps$2$3$4/i; - $patchedSourcePath =~ s/(^.*)(\.dll|\.exe)/$1_patched_caps$2/i; - - copy($sourcePath, $patchedSourcePath) or die "$sourcePath cannot be copied for patching."; + if ($justCheck) { + push (@binaries, $sourcePath); + } else { + # Change the source file name (but only if not already patched) + my $patchedSourcePath = $sourcePath; + if ($patchedSourcePath !~ m/_patched_caps/) + { + $newLine =~ s/(^.*)(\.dll|\.exe)(.*)(\.dll|\.exe)/$1_patched_caps$2$3$4/i; + $patchedSourcePath =~ s/(^.*)(\.dll|\.exe)/$1_patched_caps$2/i; + + copy($sourcePath, $patchedSourcePath) or die "$sourcePath cannot be copied for patching."; + } + push (@binaries, $patchedSourcePath); } - push (@binaries, $patchedSourcePath); } } @@ -250,14 +239,15 @@ if (@ARGV) } close (PKG); - close (NEW_PKG); - - unlink($pkgFileName); - rename($tempPkgFileName, $pkgFileName); + if (!$justCheck) { + close (NEW_PKG); + unlink($pkgFileName); + rename($tempPkgFileName, $pkgFileName); + } print ("\n"); - my $baseCommandToExecute = "elftran -vid 0x0 -capability \"%s\" "; + my $baseCommandToExecute = "${epocToolsDir}elftran -vid 0x0 -capability \"%s\" "; # Actually set the capabilities of the listed binaries. foreach my $binaryPath(@binaries) @@ -265,18 +255,18 @@ if (@ARGV) # Create the command line for setting the capabilities. my ($binaryVolume, $binaryDirs, $binaryBaseName) = File::Spec->splitpath($binaryPath); my $commandToExecute = $baseCommandToExecute; - my $executeNeeded = 0; + my $executeNeeded = ""; if (@capabilitiesSpecified) { $commandToExecute = sprintf($baseCommandToExecute, join(" ", @capabilitiesSpecified)); - $executeNeeded = 1; + $executeNeeded = true; my $capString = join(" ", @capabilitiesSpecified); - print ("Patching: Patching the the Vendor ID to 0 and the capabilities used to: \"$capString\" in \"$binaryBaseName\".\n"); + print ("$msgPrefix Patching the the Vendor ID to 0 and the capabilities used to: \"$capString\" in \"$binaryBaseName\".\n"); } else { # Test which capabilities are present and then restrict them to the allowed set. # This avoid raising the capabilities of apps that already have none. my $dllCaps; - open($dllCaps, "elftran -dump s $binaryPath |") or die ("Could not execute elftran"); + open($dllCaps, "${epocToolsDir}elftran -dump s $binaryPath |") or die ("ERROR: Could not execute elftran"); my $capsFound = 0; my $originalVid; my @capabilitiesToSet; @@ -288,8 +278,8 @@ if (@ARGV) if ($binaryBaseName =~ /\.exe$/) { # Installer refuses to install protected executables in a self signed package, so abort if one is detected. # We can't simply just patch the executable SID, as any registration resources executable uses will be linked to it via SID. - print ("Patching: Executable with SID in the protected range (0x$exeSid) detected: \"$binaryBaseName\". A self-signed sis with protected executables is not supported.\n"); - exit(1); + print ("$msgPrefix Executable with SID in the protected range (0x$exeSid) detected: \"$binaryBaseName\". A self-signed sis with protected executables is not supported.\n\n"); + $checkFailed = true; } } if (/^Vendor ID: ([0-9a-fA-F]*)$/) { @@ -302,7 +292,7 @@ if (@ARGV) if ($capabilitiesToAllow =~ /$_/) { push(@capabilitiesToSet, $_); if (Location =~ /$_/i) { - print ("Patching: Warning - \"Location\" capability detected for binary: \"$binaryBaseName\". This capability is not self-signable for S60 3rd edition feature pack 1 devices, so installing this package on those devices will most likely not work.\n"); + print ("$msgPrefix \"Location\" capability detected for binary: \"$binaryBaseName\". This capability is not self-signable for S60 3rd edition feature pack 1 devices, so installing this package on those devices will most likely not work.\n\n"); } } else { push(@capabilitiesToDrop, $_); @@ -311,22 +301,32 @@ if (@ARGV) } close($dllCaps); if ($originalVid !~ "00000000") { - print ("Patching: Vendor ID (0x$originalVid) incompatible with self-signed packages, setting it to zero for \"$binaryBaseName\".\n"); - $executeNeeded = 1; + print ("$msgPrefix Non-zero vendor ID (0x$originalVid) is incompatible with self-signed packages in \"$binaryBaseName\""); + if ($justCheck) { + print (".\n\n"); + $checkFailed = true; + } else { + print (", setting it to zero.\n\n"); + $executeNeeded = true; + } } if ($#capabilitiesToDrop) { my $capsToDropStr = join("\", \"", @capabilitiesToDrop); $capsToDropStr =~ s/\", \"$//; - if ($binaryBaseName =~ /\.exe$/) { - # While libraries often have capabilities they do not themselves need just to enable them to be loaded by wider variety of processes, - # executables are more likely to need every capability they have been assigned or they won't function correctly. - print ("Patching: Executable with capabilities incompatible with self-signing detected: \"$binaryBaseName\". (Incompatible capabilities: \"$capsToDropStr\".) Reducing capabilities is only supported for libraries.\n"); - print ("Patching: Please use a proper developer certificate for signing this package.\n"); - exit(1); + if ($justCheck) { + print ("$msgPrefix The following capabilities used in \"$binaryBaseName\" are not compatible with a self-signed package: \"$capsToDropStr\".\n\n"); + $checkFailed = true; } else { - print ("Patching: The following capabilities used in \"$binaryBaseName\" are not compatible with a self-signed package and will be removed: \"$capsToDropStr\".\n"); - $executeNeeded = 1; + if ($binaryBaseName =~ /\.exe$/) { + # While libraries often have capabilities they do not themselves need just to enable them to be loaded by wider variety of processes, + # executables are more likely to need every capability they have been assigned or they won't function correctly. + print ("$msgPrefix Executable with capabilities incompatible with self-signing detected: \"$binaryBaseName\". (Incompatible capabilities: \"$capsToDropStr\".) Reducing capabilities is only supported for libraries.\n"); + $checkFailed = true; + } else { + print ("$msgPrefix The following capabilities used in \"$binaryBaseName\" are not compatible with a self-signed package and will be removed: \"$capsToDropStr\".\n"); + $executeNeeded = true; + } } } $commandToExecute = sprintf($baseCommandToExecute, join(" ", @capabilitiesToSet)); @@ -337,16 +337,35 @@ if (@ARGV) # Actually execute the elftran command to set the capabilities. print ("\n"); system ("$commandToExecute > $nullDevice"); + $somethingPatched = true; } - ## Create another command line to check that the set capabilities are correct. - #$commandToExecute = "elftran -dump s ".$binaryPath; } + if ($checkFailed) { + print ("\n"); + if ($justCheck) { + print ("$msgPrefix The package is not compatible with self-signing.\n"); + } else { + print ("$msgPrefix Unable to patch the package for self-singing.\n"); + } + print ("Use a proper developer certificate for signing this package.\n\n"); + exit(1); + } + + if ($justCheck) { + print ("Package is compatible with self-signing.\n"); + } else { + if ($somethingPatched) { + print ("NOTE: A patched package may not work as expected due to reduced capabilities and other modifications,\n"); + print (" so it should not be used for any kind of Symbian signing or distribution!\n"); + print (" Use a proper certificate to avoid the need to patch the package.\n"); + } else { + print ("No patching was required!\n"); + } + } print ("\n"); - print ("NOTE: A patched package may not work as expected due to reduced capabilities and other modifications,\n"); - print (" so it should not be used for any kind of Symbian signing or distribution!\n"); - print (" Use a proper certificate to avoid the need to patch the package.\n"); - print ("\n"); + } else { + Usage(); } } else @@ -849,6 +849,7 @@ CFG_ALSA=auto CFG_PULSEAUDIO=auto CFG_COREWLAN=auto CFG_ICD=auto +CFG_NOPROCESS=no # initalize variables used for installation QT_INSTALL_PREFIX= @@ -888,6 +889,9 @@ QT_LIBS_GLIB= QT_CFLAGS_GSTREAMER= QT_LIBS_GSTREAMER= +#flag for Symbian fpu settings +QT_CFLAGS_FPU= + # flags for libconnsettings0 (used for Maemo ICD bearer management plugin) QT_CFLAGS_CONNSETTINGS= QT_LIBS_CONNSETTINGS= @@ -1172,6 +1176,16 @@ while [ "$#" -gt 0 ]; do VAL=`echo $1 | sed 's,-D,,'` fi ;; + -fpu) + VAR="fpu" + # this option may or may not be followed by an argument + if [ -z "$2" ] || echo "$2" | grep '^-' >/dev/null 2>&1; then + VAL=no + else + shift + VAL=$1 + fi + ;; -I?*|-I) VAR="add_ipath" if [ "$1" = "-I" ]; then @@ -2357,6 +2371,12 @@ while [ "$#" -gt 0 ]; do UNKNOWN_OPT=yes fi ;; + dont-process) + CFG_NOPROCESS=yes + ;; + process) + CFG_NOPROCESS=no + ;; audio-backend) if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then CFG_AUDIO_BACKEND="$VAL" @@ -2364,6 +2384,11 @@ while [ "$#" -gt 0 ]; do UNKNOWN_OPT=yes fi ;; + fpu) + if [ "$VAL" != "no" ]; then + QT_CFLAGS_FPU=$VAL + fi + ;; *) UNKNOWN_OPT=yes ;; @@ -5016,6 +5041,9 @@ if [ "$XPLATFORM_SYMBIAN" = "yes" ]; then if [ "$CFG_LARGEFILE" = auto ]; then CFG_LARGEFILE=no fi + if [ "$CFG_PHONON" = auto ]; then + CFG_PHONON=yes + fi if test -z "$EPOCROOT"; then echo "Please export EPOCROOT. It should point to the sdk install dir" @@ -6898,9 +6926,11 @@ else QCONFIG_FLAGS="$QCONFIG_FLAGS QT_STYLE_S60" fi -# Disable OpenGL on Symbian. +# Just check if OpenGL is not set by command argumets for Symbian. if [ "$XPLATFORM_SYMBIAN" = "yes" ]; then - CFG_OPENGL="no" + if [ "$CFG_OPENGL" = "auto" ]; then + CFG_OPENGL="no" + fi fi # enable opengl @@ -8220,6 +8250,12 @@ if [ "$CFG_DEV" = "yes" ]; then QT_CONFIG="$QT_CONFIG private_tests" fi +if [ -z "$QT_CFLAGS_FPU" ]; then + if echo "$XPLATFORM" | grep "symbian-sbsv2" > /dev/null 2>&1; then + QT_CFLAGS_FPU=softvfp + fi +fi + # Make the application arch follow the Qt arch for single arch builds. # (for multiple-arch builds, set CONFIG manually in the application .pro file) if [ `echo "$CFG_MAC_ARCHS" | wc -w` -eq 1 ]; then @@ -8253,10 +8289,11 @@ if [ -n "$QT_GCC_MAJOR_VERSION" ]; then echo "QT_GCC_MINOR_VERSION = $QT_GCC_MINOR_VERSION" >> "$QTCONFIG.tmp" echo "QT_GCC_PATCH_VERSION = $QT_GCC_PATCH_VERSION" >> "$QTCONFIG.tmp" fi -if [ "$XPLATFORM_SYMBIAN_SBSV2" = "yes" ]; then +if [ -n "$QT_CFLAGS_FPU" ]; then echo "#Qt for symbian FPU settings" >> "$QTCONFIG.tmp" - echo "MMP_RULES += \"ARMFPU softvfp\"" >> "$QTCONFIG.tmp" + echo "MMP_RULES += \"ARMFPU $QT_CFLAGS_FPU\"" >> "$QTCONFIG.tmp" fi + # replace qconfig.pri if it differs from the newly created temp file if cmp -s "$QTCONFIG.tmp" "$QTCONFIG"; then rm -f "$QTCONFIG.tmp" @@ -8679,11 +8716,13 @@ EXEC="" #------------------------------------------------------------------------------- echo "Finding project files. Please wait..." -"$outpath/bin/qmake" -prl -r "${relpath}/projects.pro" -if [ -f "${relpath}/projects.pro" ]; then - mkfile="${outpath}/Makefile" - [ -f "$mkfile" ] && chmod +w "$mkfile" - QTDIR="$outpath" "$outpath/bin/qmake" -spec "$XQMAKESPEC" "${relpath}/projects.pro" -o "$mkfile" +if [ "$CFG_NOPROCESS" != "yes" ]; then + "$outpath/bin/qmake" -prl -r "${relpath}/projects.pro" + if [ -f "${relpath}/projects.pro" ]; then + mkfile="${outpath}/Makefile" + [ -f "$mkfile" ] && chmod +w "$mkfile" + QTDIR="$outpath" "$outpath/bin/qmake" -spec "$XQMAKESPEC" "${relpath}/projects.pro" -o "$mkfile" + fi fi # .projects -> projects to process @@ -8812,8 +8851,8 @@ PART_ROOTS= for part in $CFG_BUILD_PARTS; do case "$part" in tools) PART_ROOTS="$PART_ROOTS tools" ;; - libs) PART_ROOTS="$PART_ROOTS src" ;; - translations) PART_ROOTS="$PART_ROOTS tools/linguist/lrelease translations" ;; + libs) PART_ROOTS="$PART_ROOTS src tools/linguist/lrelease" ;; + translations) PART_ROOTS="$PART_ROOTS translations" ;; examples) PART_ROOTS="$PART_ROOTS examples demos" ;; *) ;; esac @@ -8841,12 +8880,17 @@ for file in .projects .projects.3; do [ "$XPLATFORM_MINGW" = "yes" ] || continue SPEC=$XQMAKESPEC ;; *s60main/s60main.pro) - [ "$XPLATFORM_SYMBIAN" = "yes" ] || continue - ;; + if [ "$CFG_NOPROCESS" = "yes" ] || [ "$XPLATFORM_SYMBIAN" != "yes" ]; then + continue + fi;; *examples/activeqt/*) continue ;; */qmake/qmake.pro) continue ;; *tools/bootstrap*|*tools/moc*|*tools/rcc*|*tools/uic*|*linguist/lrelease*) SPEC=$QMAKESPEC ;; - *) SPEC=$XQMAKESPEC ;; + *) if [ "$CFG_NOPROCESS" = "yes" ]; then + continue + else + SPEC=$XQMAKESPEC + fi;; esac dir=`dirname "$a" | sed -e "s;$sepath;.;g"` test -d "$dir" || mkdir -p "$dir" diff --git a/configure.exe b/configure.exe Binary files differindex f8d520a..068701f 100755 --- a/configure.exe +++ b/configure.exe diff --git a/doc/src/declarative/basictypes.qdoc b/doc/src/declarative/basictypes.qdoc index 71192bf..034b7d1 100644 --- a/doc/src/declarative/basictypes.qdoc +++ b/doc/src/declarative/basictypes.qdoc @@ -33,7 +33,7 @@ the \l {QML Elements}. Some of these types can also be used for defining - \c property values in QML. See \l{Extending types from QML} for the + \c property values in QML. See \l{Writing QML Components: Properties, Methods and Signals} for the list of types that can be used for \c property values. \annotatedlist qmlbasictypes @@ -380,7 +380,7 @@ \c child1, \c child2 and \c child3 will be added to the children list in the order in which they appear. - List \l {Adding new properties}{properties} can be created as a + List \l {Adding Properties}{properties} can be created as a \c variant type, or as a \c list<Type> type, where \c Type is the type of the object in the list: diff --git a/doc/src/declarative/declarativeui.qdoc b/doc/src/declarative/declarativeui.qdoc index 01e1302..5d9eaaf 100644 --- a/doc/src/declarative/declarativeui.qdoc +++ b/doc/src/declarative/declarativeui.qdoc @@ -91,9 +91,10 @@ Module. \list \o \l{QML Documents} \o \l{Property Binding} +\o \l{Anchor-based Layout in QML} +\o \l{Writing QML Components: Properties, Methods and Signals} \o \l{QML Scope} \o \l{QML Modules} -\o \l{Anchor-based Layout in QML} \endlist \section1 User Interaction @@ -118,7 +119,6 @@ Module. \list \o \l{Qt Declarative UI Runtime} \o \l{Integrating JavaScript} -\o \l{Extending types from QML} \o \l{Dynamic Object Management in QML} \endlist diff --git a/doc/src/declarative/dynamicobjects.qdoc b/doc/src/declarative/dynamicobjects.qdoc index daf2ae1..fcc9fd4 100644 --- a/doc/src/declarative/dynamicobjects.qdoc +++ b/doc/src/declarative/dynamicobjects.qdoc @@ -102,6 +102,9 @@ Notice in both instances, \l {Component::createObject()}{createObject()} is call When using files with relative paths, the path should be relative to the file where \l {QML:Qt::createComponent()}{Qt.createComponent()} is executed. +To connect signals to (or receive signals from) dynamically created objects, use the signal +\c connect() method. See \l {Connecting signals to methods and other signals} for more information. + \section2 Creating an object from a string of QML diff --git a/doc/src/declarative/extending-tutorial.qdoc b/doc/src/declarative/extending-tutorial.qdoc index dff1d9c..c998c5c 100644 --- a/doc/src/declarative/extending-tutorial.qdoc +++ b/doc/src/declarative/extending-tutorial.qdoc @@ -285,8 +285,8 @@ int-type property to store an identifier for each chart: } \endcode -We can also use various other property types. QML has built-in support for the following -types listed in the \l{Extending Types from QML} document, including the following: +We can also use various other property types. QML has built-in support for the types +listed in the \l{Adding Properties} documentation, which includes the following: \list \o bool, unsigned int, int, float, double, qreal diff --git a/doc/src/declarative/extending.qdoc b/doc/src/declarative/extending.qdoc index 19e9ffc..e17004a 100644 --- a/doc/src/declarative/extending.qdoc +++ b/doc/src/declarative/extending.qdoc @@ -75,13 +75,15 @@ constructor. \endquotation +#include <QtDeclarative> to use qmlRegisterType(). + Types can be registered by libraries, application code, or by plugins (see QDeclarativeExtensionPlugin). Once registered, all \l {Qt's Property System}{properties} of the supported types are available in QML. QML has intrinsic support for -properties of the types listed in the \l{Extending Types from QML} -document, including the following: +properties of the types listed in the \l{Adding Properties} +document, which includes the following: \list \o bool, unsigned int, int, float, double, qreal @@ -427,7 +429,7 @@ on<Property-name>Changed, regardless of the name used for the NOTIFY signal in C++. We recommend using <property-name>Changed() for the NOTIFY signal in C++. -See also \l {Extending Types from QML}. +See also \l {Writing QML Components: Properties, Methods and Signals} \section1 Methods @@ -635,147 +637,177 @@ public: /*! \page qml-extending-types.html -\title Extending Types from QML +\title Writing QML Components: Properties, Methods and Signals -Many of the elements available for use in QML are implemented in -\l {Extending QML in C++}{C++}. These types are know as "core types". QML -allows programmers to build new, fully functional elements without using C++. -Existing core types can be extended, and new types defined entirely in the QML -language. +One of the key concepts in QML is the ability to define your own QML components that suit +the purposes of your application. The standard \l {QML Elements} provide the essential components +for creating a QML application; beyond these, you can write your own custom components that can +be created and reused, without the use of C++. -\tableofcontents +Components are the building blocks of a QML project. When writing a QML application, whether +large or small, it is best to separate QML code into smaller components that perform specific +sets of operations, instead of creating mammoth QML files with large, combined functionality +that is more difficult to manage and may contain duplicated code. + + +\section1 Defining New Components + +A component is a reusable type with a well-defined interface, built entirely in QML. +Any snippet of QML code can become a component, by placing the code in a file "<Name>.qml" where +<Name> is the new component name, beginning with an uppercase letter. These QML files automatically +become available as new QML element types to other QML components and applications in the same directory. -\section1 Adding new properties +For example, one of the simplest and most common components you can build in QML is a +button-type component. Below, we implement this component as a \l Rectangle with a clickable +\l MouseArea, in a file named \c Button.qml: -New properties can be added to an existing type using the \c property keyword. -These new properties are -available for use within QML, and also appear as regular Qt properties on the -C++ object, accessible through the regular property access mechanisms. +\snippet doc/src/snippets/declarative/qml-extending-types/components/Button.qml 0 -Like all properties in QML, custom properties are typed. The type is used to -define the property's behavior, and also determines the C++ type of the created -Qt property. The following table shows the list of types available when -declaring a new property, and the corresponding C++ type. +Now this component can be reused by another file within the same directory. Since the file is +named \c Button.qml, the component is referred to as \c Button: \table -\header \o QML Type Name \o C++ Type Name -\row \o int \o int -\row \o bool \o bool -\row \o double \o double -\row \o real \o double -\row \o string \o QString -\row \o url \o QUrl -\row \o color \o QColor -\row \o date \o QDateTime -\row \o variant \o QVariant +\row +\o \snippet doc/src/snippets/declarative/qml-extending-types/components/application.qml 0 +\o \image qml-extending-types.png \endtable -From QML you can also declare object and list properties using any element name -like this: +The root object in \c Button.qml defines the attributes that are available to users of the +\c Button component. In this case, the root object is a \l Rectangle, so any properties, methods +and signals of \l Rectangle are made available, allowing \c application.qml to +customize the \c width, \c height, \c radius and \c color properties of \c Button objects. -\code - property QtObject objectProperty - property Item itemProperty - property MyCustomType customProperty - property list<Item> listOfItemsProperty -\endcode -Custom types must be registered with qmlRegisterType() to be usable as a property -type. Also note that list properties cannot be modified like ordinary JavaScript -arrays; see the \l {list}{list type documentation} for details. +If \c Button.qml was not in the same directory, \c application.qml would need to load it as a +\l {Modules}{module} from a specific filesystem path or \l{QDeclarativeExtensionPlugin}{plugin}. +Also, note the letter case of the component file name is significant on some (notably UNIX) +filesystems. It is recommended the file name case matches the case of the QML component name +exactly - for example, \c Box.qml and not \c BoX.qml - regardless of the platform to which the +QML component will be deployed. + +To write a useful component, it is generally necessary to provide it with custom attributes that store and +communicate specific data. This is achieved by adding the following attributes to your components: -QML supports two methods for adding a new property to a type: a new property -definition, and a property alias. These are shown below. +\list +\o \bold Properties that can be accessed externally to modify an object (for example, \l Item has + \l {Item::}{width} and \l {Item::}{height} properties) and used in \l {Property Binding} +\o \bold Methods of JavaScript code can be invoked internally or externally (for example, + \l Animation has a \l {Animation::}{start()} method) +\o \bold Signals to notify other objects when an event has occurred (for example, MouseArea has a + \c clicked signal) +\endlist + +The following sections show how these attributes can be added to QML components. -\section2 Property definitions -Property definitions add a new property to an existing type. The storage of the -property is managed by QML. The defined property may be read, written and bound -to and from. +\section1 Adding Properties + +A property is a value of a QML component that can be read and modified by other objects. For +example, a \l Rectangle component has \l {Item::}{width}, \l {Item::}{height} and \l +{Rectangle::}{color} properties. Significantly, properties be used with \l {Property Binding}, where +a property value is automatically updated using the value of another property. The syntax for defining a new property is: + \code - [default] property <type> <name>[: defaultValue] +[default] property <type> <name>[: defaultValue] \endcode -This declaration may appear anywhere within a type body, but it is customary to -include it at the top. Attempting to declare two properties with the same name -in the same type block is an error. However, a new property may reuse the name -of an existing property on the type. This should be done with caution, as the -existing property will be hidden, and become inaccessible. +A \c property declaration can appear anywhere within a QML component definition, but it is customary +to place it at the top. A component cannot declare more than one property with the same name. (It is +possible to have a property name that is the same as an existing property in a type, but this is not +recommended as the existing property becomes hidden and inaccessible.) -The <type> must be one of the QML type names shown in the above table. -Additionally, an optional default value of the property can be provided. The -default value is a convenient shortcut, but is behaviorally identical to doing -it in two steps, like this: +Below is an example. The \c ImageViewer component has defined a \c string type property named +\c currentImage, and its initial value is "default-image.png". This property is used to set the image +displayed in the child \l Image object. Another file, \c application.qml, can create +an \c ImageViewer object and read or modify the \c currentImage value: -\code - // Use default value - property int myProperty: 10 +\table +\row +\o \snippet doc/src/snippets/declarative/qml-extending-types/properties/ImageViewer.qml 0 +\o \snippet doc/src/snippets/declarative/qml-extending-types/properties/application.qml 0 +\endtable - // Longer, but behaviorally identical - property int myProperty - myProperty: 10 -\endcode +It is optional for a property to have a default value. The default value is a convenient shortcut, and is +behaviorally identical to doing it in two steps, like this: + +\qml +// Use default value +property int myProperty: 10 + +// Longer, but behaviorally identical +property int myProperty +myProperty: 10 +\endqml + + +\section2 Supported property types + +All QML properties are typed. The examples above show properties with \c int and \c string types; +notice that the type of the property must be declared. The type is used to determine the property +behavior, and how the property is defined in C++. -If a default value is not supplied or set later in the file, each type has a -default value for when none is explicitly set. Below are the default values -of some of the types. For the remaining types the default values are undefined. +A number of property types are supported by default. These are listed in the table below, +with their default values and the corresponding C++ type: \table -\header \o QML Type \o Default Value -\row \o bool \o false -\row \o int \o 0 -\row \o double, real \o 0.0 -\row \o string, url \o "" (an empty string) -\row \o color \o #000000 (black) +\header \o QML Type Name \o Default value \o C++ Type Name +\row \o int \o 0 \o int +\row \o bool \o \c false \o bool +\row \o double \o 0.0 \o double +\row \o real \o 0.0 \o double +\row \o string \o "" (empty string) \o QString +\row \o url \o "" (empty url) \o QUrl +\row \o color \o #000000 (black) \o QColor +\row \o date \o \c undefined \o QDateTime +\row \o variant \o \c undefined \o QVariant \endtable -The following example shows how to declare a new "innerColor" property that -controls the color of the inner rectangle. +QML object types can also be used as property types. This includes +\l {Defining new QML elements}{custom QML types} implemented in C++. Such properties are +defined like this: -\code - Rectangle { - property color innerColor: "black" - - color: "red"; width: 100; height: 100 - Rectangle { - anchors.centerIn: parent - width: parent.width - 10 - height: parent.height - 10 - color: innerColor - } - } -\endcode +\qml +property Item itemProperty +property QtObject objectProperty +property MyCustomType customProperty +\endqml +Such object-type properties default to an \c undefined value. -\section3 Property signal handlers +\l{list}{List properties} are created with the \c list<Type> syntax, and default to an empty +list: -Adding a property to an item automatically adds a \e{value-changed} -signal handler to the item. The signal hander is named -\c{on<Property_name>Changed}, with the first letter of the property -name being upper case. +\qml +property list<Item> listOfItems +\endqml -Signal handlers can have arbitrary JavaScript code assigned. The following -example shows how to output to a text console a new value of property -\c{innerColor} whenever the value of this property changes. +Note that list properties cannot be modified like ordinary JavaScript +arrays. See the \l {list}{list type documentation} for details. -\code - Rectangle { - id: rect - property color innerColor: "black" +For details about accessing and manipulating QML properties from C++, see \l {Using QML with C++}. - onInnerColorChanged: { console.log(rect.innerColor); } - } -\endcode +\section2 Property change signals + +Adding a \c property to an item automatically adds a \e {value changed} +signal handler to the item. To connect to this signal, use a \l {Signal Handlers}{signal handler} +named with the \c on<Property>Changed syntax, using upper case for the first letter of the +property name. + +For example, the following \c onMyNumberChanged signal handler is automatically called whenever the +\c myNumber property changes: + +\snippet doc/src/snippets/declarative/qml-extending-types/properties/property-signals.qml 0 -\section3 Setting default properties + +\section2 Default properties The optional \c default attribute for a property marks it as the \e {default property} for a type. This allows other items to specify the default property's value -as child elements. For example, the \l Item element's default property is its -\l{Item::children}{children} property. This allows the children of an \l Item +as child elements. For example, the \l Item element's default property is its +\l{Item::children}{children} property. This allows the children of an \l Item to be set like this: \qml @@ -785,7 +817,7 @@ Item { } \endqml -If the \l{Item::children}{children} property was not the default property for +If the \l{Item::children}{children} property was not the default property for \l Item, its value would have to be set like this instead: \qml @@ -802,21 +834,20 @@ demonstration of using default properties. Specifying a default property overrides any existing default property (for example, any default property inherited from a parent item). Using the -default attribute twice in the same type block is an error. +\c default attribute twice in the same type block is an error. -\target qml-property-aliases \section2 Property aliases Property aliases are a more advanced form of property declaration. Unlike a -property definition, that allocates a new, unique storage space for the +property definition, which allocates a new, unique storage space for the property, a property alias connects the newly declared property (called the -aliasing property) to an existing property (the aliased property). Read +aliasing property) as a direct reference to an existing property (the aliased property). Read operations on the aliasing property act as read operations on the aliased property, and write operations on the aliasing property as write operations on the aliased property. -A property alias declaration looks a lot like a property definition: +A property alias declaration looks a lot like an ordinary property definition: \code [default] property alias <name>: <alias reference> \endcode @@ -827,7 +858,7 @@ value, a property alias includes a compulsory alias reference. The alias reference is used to locate the aliased property. While similar to a property binding, the alias reference syntax is highly restricted. -An alias reference takes one of the following forms +An alias reference takes one of the following forms: \code <id>.<property> <id> @@ -836,61 +867,58 @@ An alias reference takes one of the following forms where <id> must refer to an object id within the same component as the type declaring the alias, and, optionally, <property> refers to a property on that object. -Here is the property definition example rewritten to use property aliases. -\code -Rectangle { - property alias innerColor: innerRect.color - - color: "red"; width: 100; height: 100 - Rectangle { - id: innerRect - anchors.centerIn: parent - width: parent.width - 10 - height: parent.height - 10 - color: "black" - } -} -\endcode +For example, below is a \c Button.qml component with a \c buttonText aliased property which is +connected to the child Text object's \c text property: + +\snippet doc/src/snippets/declarative/qml-extending-types/properties/alias.qml 0 + +The following code would create a \c Button with a defined text string for the +child \l Text object: -Aliases are most useful when \l {Defining new Components}. Consequently -they have several apparent limitations that only make sense in this context. +\qml +Button { buttonText: "This is a button" } +\endqml + +Here, modifying \c buttonText directly modifies the \c textItem.text value; it does not +change some other value that then updates \c textItem.text. + +In this case, the use of aliased properties is essential. If \c buttonText was not an alias, +changing its value would not actually change the displayed text at all, as +\l {Property Binding}{property bindings} are not bi-directional: the \c buttonText value would +change when \c textItem.text changes, but not the other way around. + +Aliased properties are also useful for allowing external objects to directly modify and +access child objects in a component. For example, here is a modified version of the \c ImageViewer +component shown \l {Adding Properties}{earlier} on this page. The \c currentImage property has +been changed to an alias to the child \l Image object: + +\table +\row +\o \snippet doc/src/snippets/declarative/qml-extending-types/properties/alias/ImageViewer.qml 0 +\o \snippet doc/src/snippets/declarative/qml-extending-types/properties/alias/application.qml 0 +\endtable + +Instead of being limited to setting the \l Image source, \c application.qml can now directly +access and modify the child \l Image object and its properties. + +Obviously, exposing child objects in this manner should be done with care, as it allows external +objects to modify them freely. However, this use of aliased properties can be quite useful in +particular situations, such as for the \l {declarative/ui-components/tabwidget}{TabWidget} +example, where new tab items are actually parented to a child object that displays the current tab. + + +\section3 Considerations for property aliases Aliases are only activated once the component specifying them is completed. The most obvious consequence of this is that the component itself cannot generally -use the aliased property directly. For example, this will not work: +use the aliased property directly during creation. For example, this will not work: \code // Does NOT work - property alias innerColor: innerRect.color - innerColor: "black" + property alias buttonText: textItem.text + buttonText: "Some text" // buttonText is not yet defined when this value is set \endcode -This behavior is required to allow type developers to redefine the behavior -of existing property names while continuing to use the existing behavior within -the type they are building, something that is not possible with property -definitions. In the example used so far, this could allows the developer to fix -the external rectangle's color as "red" and redefine the "color" property to -refer to the inner rectangle, like this: - -\code -Rectangle { - property alias color: innerRect.color - - color: "red"; width: 100; height: 100 - Rectangle { - id: innerRect - anchors.centerIn: parent - width: parent.width - 10 - height: parent.height - 10 - color: "black" - } -} -\endcode - -Users of this type would not be able to affect the color of the red rectangle, -but would find using the "color" property, rather than the strange new -"innerColor" property, much more familiar. - A second, much less significant, consequence of the delayed activation of aliases is that an alias reference cannot refer to another aliasing property declared within the same component. This will not work: @@ -898,198 +926,177 @@ declared within the same component. This will not work: \code // Does NOT work id: root - property alias innerColor: innerRect.color - property alias innerColor2: root.innerColor + property alias buttonText: textItem.text + property alias buttonText2: root.buttonText \endcode -From outside the component, aliasing properties appear as regular Qt properties -and consequently can be used in alias references. +At the time the component is created, the \c buttonText value has not yet been assigned, +so \c root.buttonText would refer to an undefined value. (From outside the component, +however, aliasing properties appear as regular Qt properties and consequently can be +used in alias references.) -\section1 Adding new signals +It is possible for an aliased property to have the same name as an existing property. For example, +the following component has a \c color alias property, named the same as the built-in +\l {Rectangle::color} property: -New signals can be added to an existing type. These new signals are available -for use within QML, and also appear as regular Qt signals on the C++ object that -can be used in Qt signal/slot connections. +\snippet doc/src/snippets/declarative/qml-extending-types/properties/alias-override.qml 0 + +Any objects that use this component and refer to its \c color property will be +referring to the alias rather than the ordinary \l {Rectangle::color} property. Internally, +however, the rectangle can correctly set this property to "red" and refer to the actual defined +property rather than the alias. + + +\section1 Adding Methods + +A QML component can define methods of JavaScript code. These methods can be invoked +either internally or by other objects. + +The syntax for defining a method is: -The syntax for defining a new signal is: \code -signal <name>[([<type> <parameter name>[, ...]])] +function <name>([<parameter name>[, ...]]) { <body> } \endcode This declaration may appear anywhere within a type body, but it is customary to -include it at the top. Attempting to declare two signals or methods with the -same name in the same type block is an error. However, a new signal may reuse -the name of an existing signal on the type. This should be done with caution, -as the existing signal may be hidden and become inaccessible. +include it at the top. Attempting to declare two methods or signals with the +same name in the same type block is an error. However, a new method may reuse +the name of an existing method on the type. (This should be done with caution, +as the existing method may be hidden and become inaccessible.) -The options for parameter types are the same as for property types (see -\l {Adding new properties}. If this signal has no parameters, the parameter -list may be omitted entirely. +Unlike \l{Adding Signals}{signals}, method parameter types do not have to be declared as they +default to the \c variant type. The body of the method is written in JavaScript and may access +the parameters by name. -Here are three examples of signal declarations: -\code - Item { - signal clicked - signal hovered() - signal performAction(string action, variant actionArgument) - } -\endcode +Here is an example of a component with a \c say() method that accepts a single \c text argument: -Adding a signal to an item automatically adds a signal handler to it. -The signal hander is named on<Signal name>, with the first letter of the -signal name being upper cased. The above example item would now have the -following signal handlers: +\snippet doc/src/snippets/declarative/qml-extending-types/methods/app.qml 0 -\list - \o onClicked - \o onHovered - \o onPerformAction -\endlist +A method can be connected to a signal so that it is automatically invoked whenever the signal +is emitted. See \l {Connecting signals to methods and other signals} below. + +Also see \l {Integrating JavaScript} for more information on using JavaScript with QML. -\section1 Adding new methods -New methods can be added to an existing type. These new methods are available -for use within QML, and also appear as regular Qt slots on the C++ object that -can be used in Qt signal/slot connections. +\section1 Adding Signals + +Signals provide a way to notify other objects when an event has occurred. For example, the MouseArea +\c clicked signal notifies other objects that the mouse has been clicked within the area. + +The syntax for defining a new signal is: \code -function <name>([<parameter name>[, ...]]) { <body> } +signal <name>[([<type> <parameter name>[, ...]])] \endcode This declaration may appear anywhere within a type body, but it is customary to -include it at the top. Attempting to declare two methods or signals with the -same name in the same type block is an error. However, a new method may reuse -the name of an existing method on the type. This should be done with caution, -as the existing method may be hidden and become inaccessible. +include it at the top. Attempting to declare two signals or methods with the +same name in the same type block is an error. However, a new signal may reuse +the name of an existing signal on the type. (This should be done with caution, +as the existing signal may be hidden and become inaccessible.) -Methods parameters are not typed. In C++ these parameters are of type QVariant. -The body of the method is written in JavaScript and may access the parameters by -name. +Here are three examples of signal declarations: -This example adds a new method that behaves like a child: \code Item { - function say(text) { - console.log("You said " + text); - } + signal clicked + signal hovered() + signal performAction(string action, variant actionArgument) } \endcode -This may be connected to via QObject::connect() or called directly from C++ using -QMetaObject::invokeMethod(): +If the signal has no parameters, the "()" brackets are optional. If parameters are used, the +parameter types must be declared, as for the \c string and \c variant arguments for the \c +performAction signal above; the allowed parameter types are the same as those listed in the \l +{Adding Properties} section on this page. -\code - QDeclarativeEngine engine; - QDeclarativeContext *context = new QDeclarativeContext(engine.rootContext()); - QDeclarativeComponent component(&engine, QUrl::fromLocalFile("main.qml")); - QObject *object = component.create(context); - QVariant str("Hello"); - QMetaObject::invokeMethod(object, "say", Q_ARG(QVariant, str)); -\endcode - -Return values of type QVariant are also supported via Q_RETURN_ARG. - -\section1 Defining new Components -\target components +Adding a signal to an item automatically adds a \l {Signal Handlers}{signal handler} as well. +The signal hander is named \c on<SignalName>, with the first letter of the signal being upper +cased. The above example item would now have the following signal handlers: -A component is a reusable type with a well-defined interface built entirely in -QML. Components appear as regular QML elements, and can be used interchangeably -with core types. Components allow developers to create new types to be reused -in other projects without the use of C++. Components can also help to reduce -duplication inside one project by limiting the need for large numbers of -copy-and-pasted blocks. +\list +\o onClicked +\o onHovered +\o onPerformAction +\endlist -Any snippet of QML code can become a component, just by placing it in the file "<Name>.qml" -where <Name> is the new element name, and begins with an uppercase letter. Note that -the case of all characters in the <Name> are significant on some filesystems, notably -UNIX filesystems. It is recommended that the case of the filename matches the case of -the component name in QML exactly, regardless of the platform the QML will be deployed to. +To emit a signal, simply invoke it in the same way as a method. Below left, when the \l MouseArea is +clicked, it emits the parent \c buttonClicked signal by invoking \c rect.buttonClicked(). The +signal is received by \c application.qml through an \c onButtonClicked signal handler: -These QML files automatically become available as new QML element types -to other QML components and applications in the same directory. +\table +\row +\o \snippet doc/src/snippets/declarative/qml-extending-types/signals/basic.qml 0 +\o \snippet doc/src/snippets/declarative/qml-extending-types/signals/no-parameters.qml 0 +\endtable -For example, here we show how a component named "Box" is defined and used -multiple times by an application. +If the signal has parameters, they are accessible by parameter name in the signal handler. +In the example below, \c buttonClicked is emitted with \c xPos and \c yPos parameters instead: \table \row -\o application.qml -\code -Rectangle { - width: 100; height: 400; - Box { x: 0; y: 0 } - Box { x: 0; y: 150 } - Box { x: 0; y: 300 } -} -\endcode -\o Box.qml -\code -Rectangle { - width: 100; height: 100; - color: "blue" -} -\endcode +\o \snippet doc/src/snippets/declarative/qml-extending-types/signals/Button.qml 0 +\o \snippet doc/src/snippets/declarative/qml-extending-types/signals/parameters.qml 0 \endtable -Components may be collected into \l {Modules} that gives the -developer more freedom than just putting files in the same directory. -\section2 Building reusable components +\section2 Connecting signals to methods and other signals -A component type built to be reused by others must have a well defined -interface. In QML, an interface consists of a defined collection of -properties, signals and methods. Users of a component have access to all the -properties, signals and methods defined on the root element of the component. +Signal objects have a \c connect() method that can be used to a connect a signal to a method or +another signal. When a signal is connected to a method, the method is automatically invoked +whenever the signal is emitted. (In Qt terminology, the method is a \e slot that is connected +to the \e signal; all methods defined in QML are created as Qt slots.) This enables a signal +to be received by a method instead of a \l {Signal Handlers}{signal handler}. -In the component example above, the root element of the "Box" component is a -Rect. As the Rect type has a "color" property, this property is accessible to -users of the Box component. For example, the application.qml can be modified -to show three different colored boxes like this: -\code -Rectangle { - width: 100; height: 400; - Box { x: 0; y: 0; color: "red"; } - Box { x: 0; y: 150; color: "yellow"; } - Box { x: 0; y: 300; color: "green"; } -} -\endcode +For example, the \c application.qml above could be rewritten as: -As expected, adding additional properties to the root element of Box, makes them -available externally. Here we add a "text" property: +\snippet doc/src/snippets/declarative/qml-extending-types/signals/connectslots.qml 0 -\table -\row -\o application.qml -\code -Rectangle { - width: 100; height: 400; - Box { x: 0; y: 0; color: "red"; text: "stop" } - Box { x: 0; y: 150; color: "yellow"; text: "slow" } - Box { x: 0; y: 300; color: "green"; text: "go" } -} -\endcode -\o Box.qml -\code -Rectangle { - property alias text: myText.text - width: 100; height: 100; - color: "blue" - Text { - id: myText - anchors.centerIn: parent +The \c myMethod() method will be called whenever the \c buttonClicked signal is received. + +In many cases it is sufficient to receive signals through signal handlers rather than using +the \c connect() function; the above example does not provide any improvements over using a +simple \c onButtonClicked handler. However, if you are \l{Dynamic Object Management in QML}{creating objects dynamically}, +or \l {Integrating JavaScript}{integrating JavaScript code}, then you will find the +\c connect() method useful. For example, the component below creates three \c Button +objects dynamically, and connects the \c buttonClicked signal of each object to the +\c myMethod() function: + +\snippet doc/src/snippets/declarative/qml-extending-types/signals/connectdynamic.qml 0 + +In the same way, you could connect a signal to methods defined in a dynamically +created object, or \l {Receiving QML Signals in JavaScript}{connect a signal to a JavaScript method}. + +There is also a corresponding \c disconnect() method for removing connected signals. The following +code removes the connection created in \c application.qml above: + +\qml +// application.qml +Item { + ... + + function removeSignal() { + button.clicked.disconnect(item.myMethod) } } -\endcode -\endtable +\endqml + + +\section3 Forwarding signals + +The \c connect() method can also connect a signal to other signals. This has the effect +of "forwarding" a signal: it is automatically emitted whenever the relevant signal is emitted. For +example, the MouseArea \c onClicked handler in \c Button.qml above could have been replaced with +a call to \c connect(): + +\qml +MouseArea { + anchors.fill: parent + Component.onCompleted: clicked.connect(item.buttonClicked) +} +\endqml -Methods and signals may be added in the same way. +Whenever the \l MouseArea \c clicked signal is emitted, the \c rect.buttonClicked signal will +automatically be emitted as well. -As all external methods, signals and properties are accessible to external -users, developers should ensure that setting these properties does not have -any undesirable side-effects. For most resilience, root level properties should -only be used for literal default values. When a root level property must be -used inside the component - such as the children property - property aliases -can be used to redirect this property to a "safe" location for external users. -Try to think of the root level properties as being "owned" by the components -user, rather than the component itself. */ diff --git a/doc/src/declarative/javascriptblocks.qdoc b/doc/src/declarative/javascriptblocks.qdoc index b6fad5b..16d0633 100644 --- a/doc/src/declarative/javascriptblocks.qdoc +++ b/doc/src/declarative/javascriptblocks.qdoc @@ -207,6 +207,25 @@ changes. See \l {Property Binding} for more information. +\section1 Receiving QML Signals in JavaScript + +To receive a QML signal, use the signal's \c connect() method to connect it to a JavaScript +function. + +For example, the following code connects the MouseArea \c clicked signal to the \c jsFunction() +in \c script.js: + +\table +\row +\o \snippet doc/src/snippets/declarative/integrating-javascript/connectjs.qml 0 +\o \snippet doc/src/snippets/declarative/integrating-javascript/script.js 0 +\endtable + +The \c jsFunction() will now be called whenever MouseArea's \c clicked signal is emitted. + +See \l {Connecting signals to methods and other signals} for more information. + + \section1 QML JavaScript Restrictions QML executes standard JavaScript code, with the following restrictions: diff --git a/doc/src/declarative/pics/qml-extending-types.png b/doc/src/declarative/pics/qml-extending-types.png Binary files differnew file mode 100644 index 0000000..6990d7c --- /dev/null +++ b/doc/src/declarative/pics/qml-extending-types.png diff --git a/doc/src/declarative/qdeclarativeintro.qdoc b/doc/src/declarative/qdeclarativeintro.qdoc index 1d807e3..4e41fda 100644 --- a/doc/src/declarative/qdeclarativeintro.qdoc +++ b/doc/src/declarative/qdeclarativeintro.qdoc @@ -186,7 +186,7 @@ Item { \section3 The \c id property Each object can be given a special unique property called an \e id. No other object within the -same \l{QML Documents}{QML document} can have the same \c id value. Assigning an id enables the object +same QML component (see \l{QML Documents}) can have the same \c id value. Assigning an id enables the object to be referred to by other objects and scripts. The first Rectangle element below has an \e id, "myRect". The second Rectangle element defines its @@ -233,6 +233,10 @@ Image { } \endcode +Items in the list can be accessed by index. See the \l{list}{list type} documentation +for more details about list properties and their available operations. + + \section2 Default properties Each object type can specify one of its list or object properties as its default property. diff --git a/doc/src/declarative/qmlinuse.qdoc b/doc/src/declarative/qmlinuse.qdoc index 90ce02c..1127b4c 100644 --- a/doc/src/declarative/qmlinuse.qdoc +++ b/doc/src/declarative/qmlinuse.qdoc @@ -7,11 +7,11 @@ ** This file is part of the documentation of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:FDL$ -** Commercial Usage -** Licensees holding valid Qt Commercial licenses may use this file in -** accordance with the Qt Commercial License Agreement provided with the -** Software or, alternatively, in accordance with the terms contained in a -** written agreement between you and Nokia. +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. ** ** GNU Free Documentation License ** Alternatively, this file may be used under the terms of the GNU Free diff --git a/doc/src/declarative/qtbinding.qdoc b/doc/src/declarative/qtbinding.qdoc index c3ce6d0..71f41bc 100644 --- a/doc/src/declarative/qtbinding.qdoc +++ b/doc/src/declarative/qtbinding.qdoc @@ -230,7 +230,7 @@ Also see the QDeclarativeContext documentation for more information. \section2 Defining new QML elements -While new QML elements can be \l {Defining new Components}{defined in QML}, they can also be +While new QML elements can be \l {Defining New Components}{defined in QML}, they can also be defined by C++ classes; in fact, many of the core \l {QML Elements} are implemented through C++ classes. When you create a QML object using one of these elements, you are simply creating an instance of a QObject-based C++ class and setting its properties. diff --git a/doc/src/declarative/qtdeclarative.qdoc b/doc/src/declarative/qtdeclarative.qdoc index f2b2032..b0c6e06 100644 --- a/doc/src/declarative/qtdeclarative.qdoc +++ b/doc/src/declarative/qtdeclarative.qdoc @@ -57,6 +57,8 @@ \relates QDeclarativeEngine Equivalent to \c Q_DECLARE_METATYPE(TYPE) and \c Q_DECLARE_METATYPE(QDeclarativeListProperty<TYPE>) + + #include <QtDeclarative> to use this macro. */ /*! @@ -68,6 +70,8 @@ Current the only supported type info is \c QML_HAS_ATTACHED_PROPERTIES which declares that the \a Type supports \l {Attached Properties}. + + #include <QtDeclarative> to use this macro. */ @@ -86,6 +90,10 @@ "com.mycompany.qmlcomponents": \code + #include <QtDeclarative> + + ... + qmlRegisterType<MySliderItem>("com.mycompany.qmlcomponents", 1, 0, "Slider"); \endcode @@ -119,6 +127,8 @@ Returns the QML type id. + #include <QtDeclarative> to use this function. + \sa qmlRegisterTypeNotAvailable() */ @@ -154,6 +164,8 @@ Without this, a generic "Game is not a type" message would be given. + #include <QtDeclarative> to use this function. + \sa qmlRegisterUncreatableType() */ @@ -166,6 +178,8 @@ system. Instances of this type cannot be created from the QML system. + #include <QtDeclarative> to use this function. + Returns the QML type id. */ @@ -176,5 +190,7 @@ This template function registers the C++ type in the QML system under the name \a typeName. + #include <QtDeclarative> to use this function. + Returns the QML type id. */ diff --git a/doc/src/declarative/tutorial.qdoc b/doc/src/declarative/tutorial.qdoc index 8467478..d8139b4 100644 --- a/doc/src/declarative/tutorial.qdoc +++ b/doc/src/declarative/tutorial.qdoc @@ -124,7 +124,7 @@ Our color picker is made of six cells with different colors. To avoid writing the same code multiple times for each cell, we create a new \c Cell component. A component provides a way of defining a new type that we can re-use in other QML files. A QML component is like a black-box and interacts with the outside world through properties, signals and functions and is generally -defined in its own QML file. (For more details, see \l {Defining new Components}). +defined in its own QML file. (For more details, see \l {Defining New Components}). The component's filename must always start with a capital letter. Here is the QML code for \c Cell.qml: @@ -144,7 +144,7 @@ An \l Item is the most basic visual element in QML and is often used as a contai We declare a \c cellColor property. This property is accessible from \e outside our component, this allows us to instantiate the cells with different colors. -This property is just an alias to an existing property - the color of the rectangle that compose the cell (see \l{Adding new properties}). +This property is just an alias to an existing property - the color of the rectangle that compose the cell (see \l{Adding Properties}). \snippet examples/declarative/tutorials/helloworld/Cell.qml 5 diff --git a/doc/src/examples/qml-examples.qdoc b/doc/src/examples/qml-examples.qdoc index ca24c66..0834527 100644 --- a/doc/src/examples/qml-examples.qdoc +++ b/doc/src/examples/qml-examples.qdoc @@ -663,7 +663,8 @@ \example declarative/ui-components/tabwidget This example shows how to create a tab widget. It also demonstrates how - \l {Setting default properties}{default properties} can be used to collect and + \l {Property aliases}{property aliases} and + \l {Default Properties}{default properties} can be used to collect and assemble the child items declared within an \l Item. \image qml-tabwidget-example.png diff --git a/doc/src/platforms/emb-envvars.qdoc b/doc/src/platforms/emb-envvars.qdoc index 1d109b4..3f318eb 100644 --- a/doc/src/platforms/emb-envvars.qdoc +++ b/doc/src/platforms/emb-envvars.qdoc @@ -112,7 +112,7 @@ device, e.g., \c /dev/mouse for mouse devices and \c /dev/ts for touch panels. - Multiple keyboard drivers can be specified in one go: + Multiple mouse drivers can be specified in one go: \snippet doc/src/snippets/code/doc_src_emb-envvars.qdoc 3 diff --git a/doc/src/platforms/platform-notes.qdoc b/doc/src/platforms/platform-notes.qdoc index 9c5f3c8..177d3f6 100644 --- a/doc/src/platforms/platform-notes.qdoc +++ b/doc/src/platforms/platform-notes.qdoc @@ -737,18 +737,23 @@ \o \c PowerMgmt if QProcess::kill(...) or QProcess::terminate(...) is called. \row \o QtCore \o \c AllFiles when \l{http://developer.symbian.org/wiki/index.php/Capabilities_%28Symbian_Signed%29/AllFiles_Capability}{accessing specific areas.} + \row \o QtDeclarative + \o \c NetworkServices is automatically added for this module. + \row \o QtNetwork + \o \c NetworkServices is automatically added for this module. \row \o QtNetwork - \o \c NetworkServices is basically always required for this module. \o \c ReadUserData is required to include all the phone's SSL certificates in the system's default CA certificate list (for example those added by the user or stored in the SIM card), without this capability only the CA certs built into the phone are used. \row \o QtMultiMedia \o \c UserEnvironment if QAudioInput is used. + \row \o QtWebkit + \o \c NetworkServices is automatically added for this module. \endtable - Note that some modules rely on other modules. If your application uses - QtXmlPatterns, QtWebkit or QtScript it may still require \c NetworkServices - as these modules rely on QtNetwork to go online. + \note Some modules rely on other modules. E.g. QtWebkit and QtDeclarative + depend on QtNetwork and therefore any application that + depends on these modules is also likely to need \c NetworkServices capability. For more information see the documentation of the individual Qt classes. If a class does not mention Symbian capabilities, it requires none. diff --git a/doc/src/platforms/symbian-introduction.qdoc b/doc/src/platforms/symbian-introduction.qdoc index 7bc5303..cce2be3 100644 --- a/doc/src/platforms/symbian-introduction.qdoc +++ b/doc/src/platforms/symbian-introduction.qdoc @@ -144,8 +144,17 @@ Smart installer will attempt to download missing dependencies in addition to just installing the application. + Note: The application \c .sis contained in smart installer \c .sis + will be recreated and signed with same certificates as + smart installer \c .sis. + \row \o \c ok_installer_sis \o Otherwise similar to \c installer_sis target, except + the application sis will not be recreated. This is useful + when application \c .sis needs to be separately signed before + including it into smart installer \c .sis. \row \o \c unsigned_installer_sis \o Create unsigned \l{Smart Installer}{smart installer} \c .sis file for project. + Note: The application \c .sis contained in smart installer + \c .sis will also be unsigned. \row \o \c stub_sis \o Create a stub sis to allow upgradability of projects that are deployed in ROM \endtable @@ -222,6 +231,7 @@ \row \o -s \o Generates stub sis for ROM. \row \o -n <name> \o Specifies the final sis name. \row \o -g \o Treat gcce platform as armv5. + \row \o -d \o Skip automatic patching of the package when default certificate is used. \endtable Execute the \c{createpackage.pl} script without any diff --git a/doc/src/snippets/declarative/integrating-javascript/connectjs.qml b/doc/src/snippets/declarative/integrating-javascript/connectjs.qml new file mode 100644 index 0000000..d84b827 --- /dev/null +++ b/doc/src/snippets/declarative/integrating-javascript/connectjs.qml @@ -0,0 +1,57 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +import QtQuick 1.0 +import "script.js" as MyScript + +Item { + id: item + width: 200; height: 200 + + MouseArea { + id: mouseArea + anchors.fill: parent + } + + Component.onCompleted: { + mouseArea.clicked.connect(MyScript.jsFunction) + } +} +//![0] diff --git a/doc/src/snippets/declarative/integrating-javascript/script.js b/doc/src/snippets/declarative/integrating-javascript/script.js new file mode 100644 index 0000000..f7099f8 --- /dev/null +++ b/doc/src/snippets/declarative/integrating-javascript/script.js @@ -0,0 +1,47 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +// script.js + +function jsFunction() { + console.log("Called JavaScript function!") +} +//![0] + diff --git a/doc/src/snippets/declarative/keynavigation.qml b/doc/src/snippets/declarative/keynavigation.qml new file mode 100644 index 0000000..e11cdf1 --- /dev/null +++ b/doc/src/snippets/declarative/keynavigation.qml @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +import QtQuick 1.0 + +Grid { + width: 100; height: 100 + columns: 2 + + Rectangle { + id: topLeft + width: 50; height: 50 + color: focus ? "red" : "lightgray" + focus: true + + KeyNavigation.right: topRight + KeyNavigation.down: bottomLeft + } + + Rectangle { + id: topRight + width: 50; height: 50 + color: focus ? "red" : "lightgray" + + KeyNavigation.left: topLeft + KeyNavigation.down: bottomRight + } + + Rectangle { + id: bottomLeft + width: 50; height: 50 + color: focus ? "red" : "lightgray" + + KeyNavigation.right: bottomRight + KeyNavigation.up: topLeft + } + + Rectangle { + id: bottomRight + width: 50; height: 50 + color: focus ? "red" : "lightgray" + + KeyNavigation.left: bottomLeft + KeyNavigation.up: topRight + } +} +//![0] diff --git a/doc/src/snippets/declarative/qml-extending-types/components/Button.qml b/doc/src/snippets/declarative/qml-extending-types/components/Button.qml new file mode 100644 index 0000000..43fe0e2 --- /dev/null +++ b/doc/src/snippets/declarative/qml-extending-types/components/Button.qml @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +// Button.qml +import QtQuick 1.0 + +Rectangle { + width: 100; height: 100 + color: "red" + + MouseArea { + anchors.fill: parent + onClicked: console.log("Button clicked!") + } +} +//![0] diff --git a/doc/src/snippets/declarative/qml-extending-types/components/application.qml b/doc/src/snippets/declarative/qml-extending-types/components/application.qml new file mode 100644 index 0000000..0c3b0df --- /dev/null +++ b/doc/src/snippets/declarative/qml-extending-types/components/application.qml @@ -0,0 +1,49 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +// application.qml +import QtQuick 1.0 + +Column { + Button { width: 50; height: 50 } + Button { x: 50; width: 100; height: 50; color: "blue" } + Button { width: 50; height: 50; radius: 8 } +} +//![0] diff --git a/doc/src/snippets/declarative/qml-extending-types/methods/app.qml b/doc/src/snippets/declarative/qml-extending-types/methods/app.qml new file mode 100644 index 0000000..3b5f008 --- /dev/null +++ b/doc/src/snippets/declarative/qml-extending-types/methods/app.qml @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +import QtQuick 1.0 +//![0] +Rectangle { + id: rect + width: 100; height: 100 + + function say(text) { + console.log("You said: " + text); + } + + MouseArea { + anchors.fill: parent + onClicked: rect.say("Mouse clicked") + } +} +//![0] diff --git a/doc/src/snippets/declarative/qml-extending-types/properties/ImageViewer.qml b/doc/src/snippets/declarative/qml-extending-types/properties/ImageViewer.qml new file mode 100644 index 0000000..e37db9c --- /dev/null +++ b/doc/src/snippets/declarative/qml-extending-types/properties/ImageViewer.qml @@ -0,0 +1,52 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +// ImageViewer.qml +import QtQuick 1.0 + +Item { + id: item + width: 200; height: 200 + + property string currentImage: "default-image.png" + + Image { source: item.currentImage } +} +//![0] diff --git a/doc/src/snippets/declarative/qml-extending-types/properties/alias-override.qml b/doc/src/snippets/declarative/qml-extending-types/properties/alias-override.qml new file mode 100644 index 0000000..aab2748 --- /dev/null +++ b/doc/src/snippets/declarative/qml-extending-types/properties/alias-override.qml @@ -0,0 +1,48 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +import QtQuick 1.0 +//![0] +Rectangle { + property alias color: childRect.color + color: "red" + + Rectangle { id: childRect } +} +//![0] diff --git a/doc/src/snippets/declarative/qml-extending-types/properties/alias.qml b/doc/src/snippets/declarative/qml-extending-types/properties/alias.qml new file mode 100644 index 0000000..1bda447 --- /dev/null +++ b/doc/src/snippets/declarative/qml-extending-types/properties/alias.qml @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +// Button.qml +import QtQuick 1.0 + +Item { + property alias buttonText: textItem.text + + width: 200; height: 50 + + Text { id: textItem } +} +//![0] diff --git a/doc/src/snippets/declarative/qml-extending-types/properties/alias/ImageViewer.qml b/doc/src/snippets/declarative/qml-extending-types/properties/alias/ImageViewer.qml new file mode 100644 index 0000000..7f50674 --- /dev/null +++ b/doc/src/snippets/declarative/qml-extending-types/properties/alias/ImageViewer.qml @@ -0,0 +1,52 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +// ImageViewer.qml +import QtQuick 1.0 + +Item { + id: item + width: 200; height: 200 + + property alias currentImage: image + + Image { id: image } +} +//![0] diff --git a/doc/src/snippets/declarative/qml-extending-types/properties/alias/application.qml b/doc/src/snippets/declarative/qml-extending-types/properties/alias/application.qml new file mode 100644 index 0000000..3592e60 --- /dev/null +++ b/doc/src/snippets/declarative/qml-extending-types/properties/alias/application.qml @@ -0,0 +1,54 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +// application.qml +import QtQuick 1.0 + +ImageViewer { + id: viewer + + currentImage.source: "http://qt.nokia.com/logo.png" + currentImage.width: width + currentImage.height: height + currentImage.fillMode: Image.Tile + + Text { text: currentImage.source } +} +//![0] diff --git a/doc/src/snippets/declarative/qml-extending-types/properties/application.qml b/doc/src/snippets/declarative/qml-extending-types/properties/application.qml new file mode 100644 index 0000000..4978f05 --- /dev/null +++ b/doc/src/snippets/declarative/qml-extending-types/properties/application.qml @@ -0,0 +1,50 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +import QtQuick 1.0 + +ImageViewer { + id: viewer + + currentImage: "http://qt.nokia.com/logo.png" + + Text { text: viewer.currentImage } +} +//![0] diff --git a/doc/src/snippets/declarative/qml-extending-types/properties/property-signals.qml b/doc/src/snippets/declarative/qml-extending-types/properties/property-signals.qml new file mode 100644 index 0000000..1d1b325 --- /dev/null +++ b/doc/src/snippets/declarative/qml-extending-types/properties/property-signals.qml @@ -0,0 +1,49 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +import QtQuick 1.0 +//![0] +Item { + property int myNumber + + onMyNumberChanged: { console.log("myNumber has changed:", myNumber); } + + Component.onCompleted: myNumber = 100 +} +//![0] diff --git a/doc/src/snippets/declarative/qml-extending-types/signals/Button.qml b/doc/src/snippets/declarative/qml-extending-types/signals/Button.qml new file mode 100644 index 0000000..9272572 --- /dev/null +++ b/doc/src/snippets/declarative/qml-extending-types/signals/Button.qml @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +import QtQuick 1.0 + +//![0] +// Button.qml +Rectangle { + id: rect + width: 100; height: 100 + + signal buttonClicked(int xPos, int yPos) + + MouseArea { + anchors.fill: parent + onClicked: rect.buttonClicked(mouse.x, mouse.y) + } +} +//![0] diff --git a/doc/src/snippets/declarative/qml-extending-types/signals/basic.qml b/doc/src/snippets/declarative/qml-extending-types/signals/basic.qml new file mode 100644 index 0000000..272c972 --- /dev/null +++ b/doc/src/snippets/declarative/qml-extending-types/signals/basic.qml @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +// Button.qml +import QtQuick 1.0 + +Rectangle { + id: rect + width: 100; height: 100 + + signal buttonClicked + + MouseArea { + anchors.fill: parent + onClicked: rect.buttonClicked() + } +} +//![0] diff --git a/doc/src/snippets/declarative/qml-extending-types/signals/connectdynamic.qml b/doc/src/snippets/declarative/qml-extending-types/signals/connectdynamic.qml new file mode 100644 index 0000000..4b1f217 --- /dev/null +++ b/doc/src/snippets/declarative/qml-extending-types/signals/connectdynamic.qml @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +import QtQuick 1.0 +//![0] +Item { + id: item + width: 300; height: 100 + + function myMethod() { + console.log("Button was clicked!") + } + + Row { id: row } + + Component.onCompleted: { + var component = Qt.createComponent("Button.qml") + for (var i=0; i<3; i++) { + var button = component.createObject(row) + button.border.width = 1 + button.buttonClicked.connect(myMethod) + } + } +} +//![0] diff --git a/doc/src/snippets/declarative/qml-extending-types/signals/connectslots.qml b/doc/src/snippets/declarative/qml-extending-types/signals/connectslots.qml new file mode 100644 index 0000000..ae14281 --- /dev/null +++ b/doc/src/snippets/declarative/qml-extending-types/signals/connectslots.qml @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +import QtQuick 1.0 +//![0] +Item { + id: item + width: 200; height: 200 + + function myMethod() { + console.log("Button was clicked!") + } + + Button { + id: button + anchors.fill: parent + Component.onCompleted: buttonClicked.connect(item.myMethod) + } +} +//![0] diff --git a/doc/src/snippets/declarative/qml-extending-types/signals/no-parameters.qml b/doc/src/snippets/declarative/qml-extending-types/signals/no-parameters.qml new file mode 100644 index 0000000..742ab18 --- /dev/null +++ b/doc/src/snippets/declarative/qml-extending-types/signals/no-parameters.qml @@ -0,0 +1,49 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +//![0] +// application.qml +import QtQuick 1.0 + +Button { + width: 100; height: 100 + onButtonClicked: console.log("Mouse was clicked") +} +//![0] + diff --git a/doc/src/snippets/declarative/qml-extending-types/signals/parameters.qml b/doc/src/snippets/declarative/qml-extending-types/signals/parameters.qml new file mode 100644 index 0000000..f513f5f --- /dev/null +++ b/doc/src/snippets/declarative/qml-extending-types/signals/parameters.qml @@ -0,0 +1,50 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ +import QtQuick 1.0 +//![0] +// application.qml +Button { + width: 100; height: 100 + onButtonClicked: { + console.log("Mouse clicked at " + xPos + "," + yPos) + } +} +//![0] + diff --git a/doc/src/snippets/declarative/qtbinding/newelements/imageviewer.h b/doc/src/snippets/declarative/qtbinding/newelements/imageviewer.h index fd9db5e..cec9757 100644 --- a/doc/src/snippets/declarative/qtbinding/newelements/imageviewer.h +++ b/doc/src/snippets/declarative/qtbinding/newelements/imageviewer.h @@ -37,10 +37,10 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ +//![0] #include <QtCore> #include <QtDeclarative> -//![0] class ImageViewer : public QDeclarativeItem { Q_OBJECT diff --git a/examples/declarative/modelviews/visualitemmodel/visualitemmodel.qml b/examples/declarative/modelviews/visualitemmodel/visualitemmodel.qml index 15f2f11..f6564f7 100644 --- a/examples/declarative/modelviews/visualitemmodel/visualitemmodel.qml +++ b/examples/declarative/modelviews/visualitemmodel/visualitemmodel.qml @@ -55,16 +55,22 @@ Rectangle { width: view.width; height: view.height color: "#FFFEF0" Text { text: "Page 1"; font.bold: true; anchors.centerIn: parent } + + Component.onDestruction: print("destroyed 1") } Rectangle { width: view.width; height: view.height color: "#F0FFF7" Text { text: "Page 2"; font.bold: true; anchors.centerIn: parent } + + Component.onDestruction: print("destroyed 2") } Rectangle { width: view.width; height: view.height color: "#F4F0FF" Text { text: "Page 3"; font.bold: true; anchors.centerIn: parent } + + Component.onDestruction: print("destroyed 3") } } @@ -76,6 +82,7 @@ Rectangle { highlightRangeMode: ListView.StrictlyEnforceRange orientation: ListView.Horizontal snapMode: ListView.SnapOneItem; flickDeceleration: 2000 + cacheBuffer: 200 } Rectangle { diff --git a/examples/declarative/ui-components/tabwidget/TabWidget.qml b/examples/declarative/ui-components/tabwidget/TabWidget.qml index f066fd2..2a74c46 100644 --- a/examples/declarative/ui-components/tabwidget/TabWidget.qml +++ b/examples/declarative/ui-components/tabwidget/TabWidget.qml @@ -45,8 +45,8 @@ Item { // Setting the default property to stack.children means any child items // of the TabWidget are actually added to the 'stack' item's children. - // See the "Extending Types from QML" documentation for details on default - // properties. + // See the "Writing QML Components: Properties, Methods and Signals" + // documentation for details on default properties. default property alias content: stack.children property int current: 0 diff --git a/mkspecs/common/symbian/symbian.conf b/mkspecs/common/symbian/symbian.conf index 0b5c573..bc5ea45 100644 --- a/mkspecs/common/symbian/symbian.conf +++ b/mkspecs/common/symbian/symbian.conf @@ -139,7 +139,11 @@ SYMBIAN_SUPPORTED_LANGUAGES = \ mr mo mn nb pl pt pa ro ru sr \ si sk sl so es sw sv tl ta te \ th bo ti tr tk uk ur vi cy zu \ - nn + nn eu zh gl fa st en_US fr_BE \ + pt_BR en_CA fr_CA el_CY tr_CY \ + en_TW en_HK en_CN en_JP en_TH \ + sv_FI zh_HK es_419 en_ZA fr_CH \ + de_CH it_CH zh_TW # These directories must match what configure uses for QT_INSTALL_PLUGINS and QT_INSTALL_IMPORTS QT_PLUGINS_BASE_DIR = /resource/qt$${QT_LIBINFIX}/plugins diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf index e5ef5a1..964e13b 100644 --- a/mkspecs/features/qt_functions.prf +++ b/mkspecs/features/qt_functions.prf @@ -49,16 +49,23 @@ defineTest(qtAddLibrary) { isEqual(LIB_NAME, QtGui) { # Needed for #include <QtGui> because qs60mainapplication.h includes aknapp.h INCLUDEPATH *= $$MW_LAYER_SYSTEMINCLUDE - } - isEqual(LIB_NAME, QtWebKit) { + } else:isEqual(LIB_NAME, QtWebKit) { # Needed for because relative inclusion problem in toolchain INCLUDEPATH *= $$QMAKE_INCDIR_QT/QtXmlPatterns INCLUDEPATH *= $$QMAKE_INCDIR_QT/QtNetwork - } - isEqual(LIB_NAME, QtXmlPatterns) { + TARGET.CAPABILITY *= NetworkServices + isEmpty(TARGET.EPOCHEAPSIZE):TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 + } else:isEqual(LIB_NAME, QtXmlPatterns) { # Needed for #include <QtXmlPatterns/QtXmlPatterns> because relative inclusion problem in toolchain INCLUDEPATH *= $$QMAKE_INCDIR_QT/QtNetwork + } else:isEqual(LIB_NAME, QtNetwork) { + TARGET.CAPABILITY *= NetworkServices + } else:isEqual(LIB_NAME, QtDeclarative) { + TARGET.CAPABILITY *= NetworkServices + isEmpty(TARGET.EPOCHEAPSIZE):TARGET.EPOCHEAPSIZE = 0x20000 0x2000000 } + export(TARGET.EPOCHEAPSIZE) + export(TARGET.CAPABILITY) } isEmpty(LINKAGE) { if(!debug_and_release|build_pass):CONFIG(debug, debug|release) { diff --git a/mkspecs/features/symbian/localize_deployment.prf b/mkspecs/features/symbian/localize_deployment.prf index 5f52dbc..26a254b 100644 --- a/mkspecs/features/symbian/localize_deployment.prf +++ b/mkspecs/features/symbian/localize_deployment.prf @@ -3,11 +3,13 @@ SYMBIAN_LANG.sq = 35 #Albanian SYMBIAN_LANG.am = 36 #Amharic SYMBIAN_LANG.ar = 37 #Arabic SYMBIAN_LANG.hy = 38 #Armenian +SYMBIAN_LANG.eu = 102 #Basque SYMBIAN_LANG.bn = 41 #Bengali SYMBIAN_LANG.bg = 42 #Bulgarian SYMBIAN_LANG.my = 43 #Burmese SYMBIAN_LANG.be = 40 #Byelorussian SYMBIAN_LANG.ca = 44 #Catalan +SYMBIAN_LANG.zh = 31 #Chinese SYMBIAN_LANG.hr = 45 #Croatian SYMBIAN_LANG.cs = 25 #Czech SYMBIAN_LANG.da = 07 #Danish @@ -17,6 +19,7 @@ SYMBIAN_LANG.et = 49 #Estonian SYMBIAN_LANG.fi = 09 #Finnish SYMBIAN_LANG.fr = 02 #French SYMBIAN_LANG.gd = 52 #Gaelic +SYMBIAN_LANG.gl = 103 #Galician SYMBIAN_LANG.ka = 53 #Georgian SYMBIAN_LANG.de = 03 #German SYMBIAN_LANG.el = 54 #Greek @@ -42,6 +45,8 @@ SYMBIAN_LANG.mr = 72 #Marathi SYMBIAN_LANG.mo = 73 #Moldavian SYMBIAN_LANG.mn = 74 #Mongolian SYMBIAN_LANG.nb = 08 #Norwegian +SYMBIAN_LANG.nn = 75 #Nynorsk +SYMBIAN_LANG.fa = 50 #Persian SYMBIAN_LANG.pl = 27 #Polish SYMBIAN_LANG.pt = 13 #Portuguese SYMBIAN_LANG.pa = 77 #Punjabi @@ -52,6 +57,7 @@ SYMBIAN_LANG.si = 80 #Singhalese SYMBIAN_LANG.sk = 26 #Slovak SYMBIAN_LANG.sl = 28 #Slovenian SYMBIAN_LANG.so = 81 #Somali +SYMBIAN_LANG.st = 101 #South Sotho/Sesotho SYMBIAN_LANG.es = 04 #Spanish SYMBIAN_LANG.sw = 84 #Swahili SYMBIAN_LANG.sv = 06 #Swedish @@ -68,7 +74,28 @@ SYMBIAN_LANG.ur = 94 #Urdu SYMBIAN_LANG.vi = 96 #Vietnamese SYMBIAN_LANG.cy = 97 #Welsh SYMBIAN_LANG.zu = 98 #Zulu -SYMBIAN_LANG.nn = 75 #Nynorsk + +# Regional dialects +SYMBIAN_LANG.en_US = 10 #American English +SYMBIAN_LANG.fr_BE = 21 #Belgian French +SYMBIAN_LANG.pt_BR = 76 #Brazilian Portuguese +SYMBIAN_LANG.en_CA = 46 #Canadian English +SYMBIAN_LANG.fr_CA = 51 #Canadian French +SYMBIAN_LANG.el_CY = 55 #Cyprus Greek +SYMBIAN_LANG.tr_CY = 91 #Cyprus Turkish +SYMBIAN_LANG.en_TW = 157 #English as appropriate for use in Taiwan +SYMBIAN_LANG.en_HK = 158 #English as appropriate for use in Hong Kong +SYMBIAN_LANG.en_CN = 159 #English as appropriate for use in the Peoples Republic of China +SYMBIAN_LANG.en_JP = 160 #English as appropriate for use in Japan +SYMBIAN_LANG.en_TH = 161 #English as appropriate for use in Thailand +SYMBIAN_LANG.sv_FI = 85 #Finland Swedish +SYMBIAN_LANG.zh_HK = 30 #HongKong Chinese +SYMBIAN_LANG.es_419 = 83 #Latin American Spanish +SYMBIAN_LANG.en_ZA = 48 #South African English +SYMBIAN_LANG.fr_CH = 11 #Swiss French +SYMBIAN_LANG.de_CH = 12 #Swiss German +SYMBIAN_LANG.it_CH = 61 #Swiss Italian +SYMBIAN_LANG.zh_TW = 29 #Taiwan Chinese isEmpty(SYMBIAN_MATCHED_LANGUAGES) { matchSymbianLanguages() diff --git a/mkspecs/features/symbian/sis_targets.prf b/mkspecs/features/symbian/sis_targets.prf index 7456deb..d94693d 100644 --- a/mkspecs/features/symbian/sis_targets.prf +++ b/mkspecs/features/symbian/sis_targets.prf @@ -34,19 +34,16 @@ equals(GENERATE_SIS_TARGETS, true) { make_cache_name = .make.cache sis_target.target = sis - sis_target.commands = $(if $(wildcard $${baseTarget}_template.pkg), \ - $(if $(wildcard $$make_cache_name), \ - $(MAKE) -f $(MAKEFILE) ok_sis MAKEFILES=$$make_cache_name \ + sis_target.commands = $(if $(wildcard $$make_cache_name), \ + $(MAKE) -f $(MAKEFILE) ok_sis MAKEFILES=$$make_cache_name \ + , \ + $(if $(QT_SIS_TARGET), \ + $(MAKE) -f $(MAKEFILE) ok_sis \ , \ - $(if $(QT_SIS_TARGET), \ - $(MAKE) -f $(MAKEFILE) ok_sis \ - , \ - $(MAKE) -f $(MAKEFILE) fail_sis_nocache \ - ) \ + $(MAKE) -f $(MAKEFILE) fail_sis_nocache \ ) \ - , \ - $(MAKE) -f $(MAKEFILE) fail_sis_nopkg \ ) + sis_target.depends += $${baseTarget}_template.pkg ok_sis_target.target = ok_sis @@ -54,19 +51,16 @@ equals(GENERATE_SIS_TARGETS, true) { $(QT_SIS_TARGET) $(QT_SIS_CERTIFICATE) $(QT_SIS_KEY) $(QT_SIS_PASSPHRASE) unsigned_sis_target.target = unsigned_sis - unsigned_sis_target.commands = $(if $(wildcard $${baseTarget}_template.pkg), \ - $(if $(wildcard $$make_cache_name), \ - $(MAKE) -f $(MAKEFILE) ok_unsigned_sis MAKEFILES=$$make_cache_name \ - , \ - $(if $(QT_SIS_TARGET), \ - $(MAKE) -f $(MAKEFILE) ok_unsigned_sis \ + unsigned_sis_target.commands = $(if $(wildcard $$make_cache_name), \ + $(MAKE) -f $(MAKEFILE) ok_unsigned_sis MAKEFILES=$$make_cache_name \ , \ - $(MAKE) -f $(MAKEFILE) fail_sis_nocache \ - ) \ - ) \ - , \ - $(MAKE) -f $(MAKEFILE) fail_sis_nopkg \ - ) + $(if $(QT_SIS_TARGET), \ + $(MAKE) -f $(MAKEFILE) ok_unsigned_sis \ + , \ + $(MAKE) -f $(MAKEFILE) fail_sis_nocache \ + ) \ + ) + unsigned_sis_target.depends += $${baseTarget}_template.pkg ok_unsigned_sis_target.target = ok_unsigned_sis @@ -75,49 +69,39 @@ equals(GENERATE_SIS_TARGETS, true) { target_sis_target.target = $${baseTarget}.sis target_sis_target.commands = $(MAKE) -f $(MAKEFILE) sis + # The installer_sis target has dependency to sis target, so it will regenerate sis package. + # To create smart installer wrapper for for an existing sis package, use ok_installer_sis target directly. installer_sis_target.target = installer_sis - installer_sis_target.commands = $(if $(wildcard $${baseTarget}_installer.pkg), \ - $(MAKE) -f $(MAKEFILE) ok_installer_sis \ - , \ - $(MAKE) -f $(MAKEFILE) fail_sis_nopkg \ - ) + installer_sis_target.commands = $(MAKE) -f $(MAKEFILE) ok_installer_sis installer_sis_target.depends = $${baseTarget}_installer.pkg sis ok_installer_sis_target.target = ok_installer_sis ok_installer_sis_target.commands = createpackage $(QT_SIS_OPTIONS) $${baseTarget}_installer.pkg - \ $(QT_SIS_CERTIFICATE) $(QT_SIS_KEY) $(QT_SIS_PASSPHRASE) + ok_installer_sis_target.depends = $${baseTarget}_installer.pkg unsigned_installer_sis_target.target = unsigned_installer_sis - unsigned_installer_sis_target.commands = $(if $(wildcard $${baseTarget}_installer.pkg), \ - $(MAKE) -f $(MAKEFILE) ok_unsigned_installer_sis \ - , \ - $(MAKE) -f $(MAKEFILE) fail_sis_nopkg \ - ) + unsigned_installer_sis_target.commands = $(MAKE) -f $(MAKEFILE) ok_unsigned_installer_sis unsigned_installer_sis_target.depends = $${baseTarget}_installer.pkg unsigned_sis ok_unsigned_installer_sis_target.target = ok_unsigned_installer_sis ok_unsigned_installer_sis_target.commands = createpackage $(QT_SIS_OPTIONS) -o $${baseTarget}_installer.pkg - - fail_sis_nopkg_target.target = fail_sis_nopkg - fail_sis_nopkg_target.commands = "$(error PKG file does not exist, 'sis' and 'installer_sis' target are only supported for executables or projects with DEPLOYMENT statement)" + ok_unsigned_installer_sis_target.depends = $${baseTarget}_installer.pkg fail_sis_nocache_target.target = fail_sis_nocache fail_sis_nocache_target.commands = "$(error Project has to be built or QT_SIS_TARGET environment variable has to be set before calling 'SIS' target)" stub_sis_target.target = stub_sis - stub_sis_target.commands = $(if $(wildcard $${baseTarget}_template.pkg), \ - $(if $(wildcard $$make_cache_name), \ - $(MAKE) -f $(MAKEFILE) ok_stub_sis MAKEFILES=$$make_cache_name \ + stub_sis_target.commands = $(if $(wildcard $$make_cache_name), \ + $(MAKE) -f $(MAKEFILE) ok_stub_sis MAKEFILES=$$make_cache_name \ + , \ + $(if $(QT_SIS_TARGET), \ + $(MAKE) -f $(MAKEFILE) ok_stub_sis \ , \ - $(if $(QT_SIS_TARGET), \ - $(MAKE) -f $(MAKEFILE) ok_stub_sis \ - , \ - $(MAKE) -f $(MAKEFILE) fail_sis_nocache \ - ) \ + $(MAKE) -f $(MAKEFILE) fail_sis_nocache \ ) \ - , \ - $(MAKE) -f $(MAKEFILE) fail_sis_nopkg \ ) + stub_sis_target.depends += $${baseTarget}_stub.pkg ok_stub_sis_target.target = ok_stub_sis @@ -133,7 +117,6 @@ equals(GENERATE_SIS_TARGETS, true) { ok_installer_sis_target \ unsigned_installer_sis_target \ ok_unsigned_installer_sis_target \ - fail_sis_nopkg_target \ fail_sis_nocache_target \ stub_sis_target \ ok_stub_sis_target @@ -179,10 +162,14 @@ equals(GENERATE_SIS_TARGETS, true) { target_sis_target.commands = $(MAKE) -f $(MAKEFILE) sis installer_sis_target.target = installer_sis - installer_sis_target.commands = $$QMAKE_CREATEPACKAGE $(QT_SIS_OPTIONS) $${baseTarget}_installer.pkg - \ - $(QT_SIS_CERTIFICATE) $(QT_SIS_KEY) $(QT_SIS_PASSPHRASE) + installer_sis_target.commands = $(MAKE) -f $(MAKEFILE) ok_installer_sis installer_sis_target.depends = $${baseTarget}_installer.pkg sis + ok_installer_sis_target.target = ok_installer_sis + ok_installer_sis_target.commands = $$QMAKE_CREATEPACKAGE $(QT_SIS_OPTIONS) $${baseTarget}_installer.pkg - \ + $(QT_SIS_CERTIFICATE) $(QT_SIS_KEY) $(QT_SIS_PASSPHRASE) + ok_installer_sis_target.depends = $${baseTarget}_installer.pkg + unsigned_installer_sis_target.target = unsigned_installer_sis unsigned_installer_sis_target.commands = $$QMAKE_CREATEPACKAGE $(QT_SIS_OPTIONS) -o $${baseTarget}_installer.pkg unsigned_installer_sis_target.depends = $${baseTarget}_installer.pkg unsigned_sis @@ -198,6 +185,7 @@ equals(GENERATE_SIS_TARGETS, true) { unsigned_sis_target \ target_sis_target \ installer_sis_target \ + ok_installer_sis_target \ unsigned_installer_sis_target QMAKE_DISTCLEAN += $${sis_destdir}/$${baseTarget}.sis diff --git a/qmake/generators/symbian/symmake_sbsv2.cpp b/qmake/generators/symbian/symmake_sbsv2.cpp index c4b51f2..c219f1d 100644 --- a/qmake/generators/symbian/symmake_sbsv2.cpp +++ b/qmake/generators/symbian/symmake_sbsv2.cpp @@ -377,7 +377,6 @@ void SymbianSbsv2MakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, boo t << qmakeCmd << endl; t << endl; - QString currentClause; QString locFileDep = generateLocFileTarget(t, qmakeCmd); t << "debug: " << locFileDep << BLD_INF_FILENAME << endl; diff --git a/qmake/generators/win32/msbuild_objectmodel.cpp b/qmake/generators/win32/msbuild_objectmodel.cpp index 76df854..f093e90 100644 --- a/qmake/generators/win32/msbuild_objectmodel.cpp +++ b/qmake/generators/win32/msbuild_objectmodel.cpp @@ -328,30 +328,46 @@ void XTreeNode::generateXML(XmlOutput &xml, XmlOutput &xmlFilter, const QString if (children.size()) { // Filter + QString tempFilterName; ChildrenMap::ConstIterator it, end = children.constEnd(); if (!tagName.isEmpty()) { + tempFilterName.append(filter); + tempFilterName.append("\\"); + tempFilterName.append(tagName); + xmlFilter << tag(_ItemGroup); xmlFilter << tag("Filter") - << attrTag("Include", tagName) - << attrTagS("Extensions", ""); + << attrTag("Include", tempFilterName) + << closetag(); + xmlFilter << closetag(); } // First round, do nested filters for (it = children.constBegin(); it != end; ++it) if ((*it)->children.size()) - (*it)->generateXML(xml, xmlFilter, it.key(), tool, filter); + { + if ( !tempFilterName.isEmpty() ) + (*it)->generateXML(xml, xmlFilter, it.key(), tool, tempFilterName); + else + (*it)->generateXML(xml, xmlFilter, it.key(), tool, filter); + } // Second round, do leafs for (it = children.constBegin(); it != end; ++it) if (!(*it)->children.size()) - (*it)->generateXML(xml, xmlFilter, it.key(), tool, filter); - - if (!tagName.isEmpty()) - xml << closetag("Filter"); + { + if ( !tempFilterName.isEmpty() ) + (*it)->generateXML(xml, xmlFilter, it.key(), tool, tempFilterName); + else + (*it)->generateXML(xml, xmlFilter, it.key(), tool, filter); + } } else { // Leaf + xml << tag(_ItemGroup); + xmlFilter << tag(_ItemGroup); VCXProjectWriter::outputFileConfigs(tool, xml, xmlFilter, info, filter); + xmlFilter << closetag(); + xml << closetag(); } } - // Flat file generation --------------------------------------------- void XFlatNode::generateXML(XmlOutput &xml, XmlOutput &xmlFilter, const QString &/*tagName*/, VCProject &tool, const QString &filter) { if (children.size()) { diff --git a/qmake/project.cpp b/qmake/project.cpp index 38b47e0..dadaff4 100644 --- a/qmake/project.cpp +++ b/qmake/project.cpp @@ -1813,11 +1813,10 @@ QMakeProject::doProjectExpand(QString func, QList<QStringList> args_list, for(int i = 0; i < args_list.size(); ++i) args += args_list[i].join(QString(Option::field_sep)); - QString lfunc = func.toLower(); - if (!lfunc.isSharedWith(func)) + ExpandFunc func_t = qmake_expandFunctions().value(func); + if (!func_t && (func_t = qmake_expandFunctions().value(func.toLower()))) warn_msg(WarnDeprecated, "%s:%d: Using uppercased builtin functions is deprecated.", parser.file.toLatin1().constData(), parser.line_no); - ExpandFunc func_t = qmake_expandFunctions().value(lfunc); debug_msg(1, "Running project expand: %s(%s) [%d]", func.toLatin1().constData(), args.join("::").toLatin1().constData(), func_t); diff --git a/src/3rdparty/phonon/ds9/videorenderer_evr.cpp b/src/3rdparty/phonon/ds9/videorenderer_evr.cpp index de3f46f..ff39eccc4 100644 --- a/src/3rdparty/phonon/ds9/videorenderer_evr.cpp +++ b/src/3rdparty/phonon/ds9/videorenderer_evr.cpp @@ -62,19 +62,21 @@ namespace Phonon VideoRendererEVR::VideoRendererEVR(QWidget *target) : m_target(target) { + if (QSysInfo::WindowsVersion < QSysInfo::WV_VISTA) + return; m_filter = Filter(CLSID_EnhancedVideoRenderer, IID_IBaseFilter); if (!m_filter) { return; } ComPointer<IMFVideoDisplayControl> filterControl = getService<IMFVideoDisplayControl>(m_filter, MR_VIDEO_RENDER_SERVICE, IID_IMFVideoDisplayControl); - if (!filterControl) { + if (!filterControl || + FAILED(filterControl->SetVideoWindow(reinterpret_cast<HWND>(target->winId()))) || + FAILED(filterControl->SetAspectRatioMode(MFVideoARMode_None)) || // We're in control of the size + !getService<IMFVideoMixerControl>(m_filter, MR_VIDEO_MIXER_SERVICE, IID_IMFVideoMixerControl) || + !getService<IMFVideoProcessor>(m_filter, MR_VIDEO_MIXER_SERVICE, IID_IMFVideoProcessor)) { m_filter = Filter(); //will release the interface - return; } - - filterControl->SetVideoWindow(reinterpret_cast<HWND>(target->winId())); - filterControl->SetAspectRatioMode(MFVideoARMode_None); // We're in control of the size } QImage VideoRendererEVR::snapshot() const diff --git a/src/3rdparty/phonon/phonon/effectwidget.cpp b/src/3rdparty/phonon/phonon/effectwidget.cpp index a2fe50f..edcbe1f 100644 --- a/src/3rdparty/phonon/phonon/effectwidget.cpp +++ b/src/3rdparty/phonon/phonon/effectwidget.cpp @@ -112,7 +112,7 @@ void EffectWidgetPrivate::autogenerateUi() #endif QWidget *control = 0; - switch (para.type()) { + switch (int(para.type())) { case QVariant::String: { QComboBox *cb = new QComboBox(q); diff --git a/src/3rdparty/phonon/phonon/globalconfig.cpp b/src/3rdparty/phonon/phonon/globalconfig.cpp index be751ce..f83ebc4 100644 --- a/src/3rdparty/phonon/phonon/globalconfig.cpp +++ b/src/3rdparty/phonon/phonon/globalconfig.cpp @@ -97,7 +97,7 @@ static void filter(ObjectDescriptionType type, BackendInterface *backendIface, Q static QList<int> sortDevicesByCategoryPriority(const GlobalConfig *config, const QSettingsGroup *backendConfig, ObjectDescriptionType type, Phonon::Category category, QList<int> &defaultList) { - Q_ASSERT(config); + Q_ASSERT(config); Q_UNUSED(config); Q_ASSERT(backendConfig); Q_ASSERT(type == AudioOutputDeviceType || type == AudioCaptureDeviceType); diff --git a/src/3rdparty/phonon/phonon/mediacontroller.cpp b/src/3rdparty/phonon/phonon/mediacontroller.cpp index 9f651d6..3dc22b7 100644 --- a/src/3rdparty/phonon/phonon/mediacontroller.cpp +++ b/src/3rdparty/phonon/phonon/mediacontroller.cpp @@ -76,9 +76,9 @@ MediaController::~MediaController() MediaController::Features MediaController::supportedFeatures() const { if (!d || !d->media) { - return false; + return Features(); } - IFACE false; + IFACE Features(); Features ret; if (iface->hasInterface(AddonInterface::AngleInterface)) { ret |= Angles; diff --git a/src/3rdparty/phonon/phonon/pulsesupport.cpp b/src/3rdparty/phonon/phonon/pulsesupport.cpp index 642843f..b1ba196 100644 --- a/src/3rdparty/phonon/phonon/pulsesupport.cpp +++ b/src/3rdparty/phonon/phonon/pulsesupport.cpp @@ -56,7 +56,7 @@ static int debugLevel() { static int level = -1; if (level < 1) { level = 0; - QString pulseenv = qgetenv("PHONON_PULSEAUDIO_DEBUG"); + QByteArray pulseenv = qgetenv("PHONON_PULSEAUDIO_DEBUG"); int l = pulseenv.toInt(); if (l > 0) level = (l > 2 ? 2 : l); @@ -71,18 +71,18 @@ static void logMessage(const QString &message, int priority, QObject *obj) QString output; if (obj) { // Strip away namespace from className - QString className(obj->metaObject()->className()); + QByteArray className(obj->metaObject()->className()); int nameLength = className.length() - className.lastIndexOf(':') - 1; className = className.right(nameLength); output.sprintf("%s %s (%s %p)", message.toLatin1().constData(), obj->objectName().toLatin1().constData(), - className.toLatin1().constData(), obj); + className.constData(), obj); } else { output = message; } if (priority <= debugLevel()) { - qDebug() << QString("PulseSupport(%1): %2").arg(priority).arg(output); + qDebug() << QString::fromLatin1("PulseSupport(%1): %2").arg(priority).arg(output); } } } @@ -96,7 +96,7 @@ class AudioDevice : pulseName(name), pulseIndex(index) { properties["name"] = desc; - properties["description"] = ""; // We don't have descriptions (well we do, but we use them as the name!) + properties["description"] = QLatin1String(""); // We don't have descriptions (well we do, but we use them as the name!) properties["icon"] = icon; properties["available"] = (index != PA_INVALID_INDEX); properties["isAdvanced"] = false; // Nothing is advanced! @@ -158,8 +158,8 @@ static void createGenericDevices() s_outputDevices.clear(); s_outputDevicePriorities.clear(); index = s_deviceIndexCounter++; - s_outputDeviceIndexes.insert("sink:default", index); - s_outputDevices.insert(index, AudioDevice("sink:default", QObject::tr("PulseAudio Sound Server").toUtf8(), "audio-backend-pulseaudio", 0)); + s_outputDeviceIndexes.insert(QLatin1String("sink:default"), index); + s_outputDevices.insert(index, AudioDevice(QLatin1String("sink:default"), QObject::tr("PulseAudio Sound Server"), QLatin1String("audio-backend-pulseaudio"), 0)); for (int i = Phonon::NoCategory; i <= Phonon::LastCategory; ++i) { Phonon::Category cat = static_cast<Phonon::Category>(i); s_outputDevicePriorities[cat].insert(0, index); @@ -169,8 +169,8 @@ static void createGenericDevices() s_captureDevices.clear(); s_captureDevicePriorities.clear(); index = s_deviceIndexCounter++; - s_captureDeviceIndexes.insert("source:default", index); - s_captureDevices.insert(index, AudioDevice("source:default", QObject::tr("PulseAudio Sound Server").toUtf8(), "audio-backend-pulseaudio", 0)); + s_captureDeviceIndexes.insert(QLatin1String("source:default"), index); + s_captureDevices.insert(index, AudioDevice(QLatin1String("source:default"), QObject::tr("PulseAudio Sound Server"), QLatin1String("audio-backend-pulseaudio"), 0)); for (int i = Phonon::NoCategory; i <= Phonon::LastCategory; ++i) { Phonon::Category cat = static_cast<Phonon::Category>(i); s_captureDevicePriorities[cat].insert(0, index); @@ -397,7 +397,7 @@ void sink_input_cb(pa_context *c, const pa_sink_input_info *i, int eol, void *us if (pa_context_errno(c) == PA_ERR_NOENTITY) return; - logMessage(QString("Sink input callback failure")); + logMessage(QLatin1String("Sink input callback failure")); return; } @@ -409,8 +409,8 @@ void sink_input_cb(pa_context *c, const pa_sink_input_info *i, int eol, void *us // loop through (*i) and extract phonon->streamindex... const char *t; if ((t = pa_proplist_gets(i->proplist, "phonon.streamid"))) { - logMessage(QString("Found PulseAudio stream index %1 for Phonon Output Stream %2").arg(i->index).arg(t)); - s_outputStreamIndexMap[QString(t)] = i->index; + logMessage(QString::fromLatin1("Found PulseAudio stream index %1 for Phonon Output Stream %2").arg(i->index).arg(QLatin1String(t))); + s_outputStreamIndexMap[QLatin1String(t)] = i->index; // Find the sink's phonon index and notify whoever cares... if (PA_INVALID_INDEX != i->sink) { @@ -426,8 +426,8 @@ void sink_input_cb(pa_context *c, const pa_sink_input_info *i, int eol, void *us } if (found) { // OK so we just emit our signal - logMessage(QString("Letting the rest of phonon know about this")); - s_instance->emitUsingDevice(QString(t), device); + logMessage(QLatin1String("Letting the rest of phonon know about this")); + s_instance->emitUsingDevice(QLatin1String(t), device); } } } @@ -441,7 +441,7 @@ void source_output_cb(pa_context *c, const pa_source_output_info *i, int eol, vo if (pa_context_errno(c) == PA_ERR_NOENTITY) return; - logMessage(QString("Source output callback failure")); + logMessage(QLatin1String("Source output callback failure")); return; } @@ -453,8 +453,8 @@ void source_output_cb(pa_context *c, const pa_source_output_info *i, int eol, vo // loop through (*i) and extract phonon->streamindex... const char *t; if ((t = pa_proplist_gets(i->proplist, "phonon.streamid"))) { - logMessage(QString("Found PulseAudio stream index %1 for Phonon Capture Stream %2").arg(i->index).arg(t)); - s_captureStreamIndexMap[QString(t)] = i->index; + logMessage(QString::fromLatin1("Found PulseAudio stream index %1 for Phonon Capture Stream %2").arg(i->index).arg(QLatin1String(t))); + s_captureStreamIndexMap[QLatin1String(t)] = i->index; // Find the source's phonon index and notify whoever cares... if (PA_INVALID_INDEX != i->source) { @@ -470,8 +470,8 @@ void source_output_cb(pa_context *c, const pa_source_output_info *i, int eol, vo } if (found) { // OK so we just emit our signal - logMessage(QString("Letting the rest of phonon know about this")); - s_instance->emitUsingDevice(QString(t), device); + logMessage(QLatin1String("Letting the rest of phonon know about this")); + s_instance->emitUsingDevice(QLatin1String(t), device); } } } @@ -486,17 +486,17 @@ static void subscribe_cb(pa_context *c, pa_subscription_event_type_t t, uint32_t QString phononid = s_outputStreamIndexMap.key(index); if (!phononid.isEmpty()) { if (s_outputStreamIndexMap.contains(phononid)) { - logMessage(QString("Phonon Output Stream %1 is gone at the PA end. Marking it as invalid in our cache as we may reuse it.").arg(phononid)); + logMessage(QString::fromLatin1("Phonon Output Stream %1 is gone at the PA end. Marking it as invalid in our cache as we may reuse it.").arg(phononid)); s_outputStreamIndexMap[phononid] = PA_INVALID_INDEX; } else { - logMessage(QString("Removing Phonon Output Stream %1 (it's gone!)").arg(phononid)); + logMessage(QString::fromLatin1("Removing Phonon Output Stream %1 (it's gone!)").arg(phononid)); s_outputStreamIndexMap.remove(phononid); } } } else { pa_operation *o; if (!(o = pa_context_get_sink_input_info(c, index, sink_input_cb, NULL))) { - logMessage(QString("pa_context_get_sink_input_info() failed")); + logMessage(QLatin1String("pa_context_get_sink_input_info() failed")); return; } pa_operation_unref(o); @@ -508,17 +508,17 @@ static void subscribe_cb(pa_context *c, pa_subscription_event_type_t t, uint32_t QString phononid = s_captureStreamIndexMap.key(index); if (!phononid.isEmpty()) { if (s_captureStreamIndexMap.contains(phononid)) { - logMessage(QString("Phonon Capture Stream %1 is gone at the PA end. Marking it as invalid in our cache as we may reuse it.").arg(phononid)); + logMessage(QString::fromLatin1("Phonon Capture Stream %1 is gone at the PA end. Marking it as invalid in our cache as we may reuse it.").arg(phononid)); s_captureStreamIndexMap[phononid] = PA_INVALID_INDEX; } else { - logMessage(QString("Removing Phonon Capture Stream %1 (it's gone!)").arg(phononid)); + logMessage(QString::fromLatin1("Removing Phonon Capture Stream %1 (it's gone!)").arg(phononid)); s_captureStreamIndexMap.remove(phononid); } } } else { pa_operation *o; if (!(o = pa_context_get_source_output_info(c, index, source_output_cb, NULL))) { - logMessage(QString("pa_context_get_sink_input_info() failed")); + logMessage(QLatin1String("pa_context_get_sink_input_info() failed")); return; } pa_operation_unref(o); @@ -528,29 +528,27 @@ static void subscribe_cb(pa_context *c, pa_subscription_event_type_t t, uint32_t } -static const char* statename(pa_context_state_t state) +static QString statename(pa_context_state_t state) { switch (state) { - case PA_CONTEXT_UNCONNECTED: return "Unconnected"; - case PA_CONTEXT_CONNECTING: return "Connecting"; - case PA_CONTEXT_AUTHORIZING: return "Authorizing"; - case PA_CONTEXT_SETTING_NAME: return "Setting Name"; - case PA_CONTEXT_READY: return "Ready"; - case PA_CONTEXT_FAILED: return "Failed"; - case PA_CONTEXT_TERMINATED: return "Terminated"; + case PA_CONTEXT_UNCONNECTED: return QLatin1String("Unconnected"); + case PA_CONTEXT_CONNECTING: return QLatin1String("Connecting"); + case PA_CONTEXT_AUTHORIZING: return QLatin1String("Authorizing"); + case PA_CONTEXT_SETTING_NAME: return QLatin1String("Setting Name"); + case PA_CONTEXT_READY: return QLatin1String("Ready"); + case PA_CONTEXT_FAILED: return QLatin1String("Failed"); + case PA_CONTEXT_TERMINATED: return QLatin1String("Terminated"); } - static QString unknown; - unknown = QString("Unknown state: %0").arg(state); - return unknown.toAscii().constData(); + return QString::fromLatin1("Unknown state: %0").arg(state); } static void context_state_callback(pa_context *c, void *) { Q_ASSERT(c); - logMessage(QString("context_state_callback %1").arg(statename(pa_context_get_state(c)))); + logMessage(QString::fromLatin1("context_state_callback %1").arg(statename(pa_context_get_state(c)))); pa_context_state_t state = pa_context_get_state(c); if (state == PA_CONTEXT_READY) { // We've connected to PA, so it is active @@ -566,7 +564,7 @@ static void context_state_callback(pa_context *c, void *) if (!(o = pa_context_subscribe(c, (pa_subscription_mask_t) (PA_SUBSCRIPTION_MASK_SINK_INPUT| PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT), NULL, NULL))) { - logMessage(QString("pa_context_subscribe() failed")); + logMessage(QLatin1String("pa_context_subscribe() failed")); return; } pa_operation_unref(o); @@ -639,27 +637,27 @@ PulseSupport::PulseSupport() { #ifdef HAVE_PULSEAUDIO // Initialise our map (is there a better way to do this?) - s_roleCategoryMap["none"] = Phonon::NoCategory; - s_roleCategoryMap["video"] = Phonon::VideoCategory; - s_roleCategoryMap["music"] = Phonon::MusicCategory; - s_roleCategoryMap["game"] = Phonon::GameCategory; - s_roleCategoryMap["event"] = Phonon::NotificationCategory; - s_roleCategoryMap["phone"] = Phonon::CommunicationCategory; - //s_roleCategoryMap["animation"]; // No Mapping - //s_roleCategoryMap["production"]; // No Mapping - s_roleCategoryMap["a11y"] = Phonon::AccessibilityCategory; + s_roleCategoryMap[QLatin1String("none")] = Phonon::NoCategory; + s_roleCategoryMap[QLatin1String("video")] = Phonon::VideoCategory; + s_roleCategoryMap[QLatin1String("music")] = Phonon::MusicCategory; + s_roleCategoryMap[QLatin1String("game")] = Phonon::GameCategory; + s_roleCategoryMap[QLatin1String("event")] = Phonon::NotificationCategory; + s_roleCategoryMap[QLatin1String("phone")] = Phonon::CommunicationCategory; + //s_roleCategoryMap[QLatin1String("animation")]; // No Mapping + //s_roleCategoryMap[QLatin1String("production")]; // No Mapping + s_roleCategoryMap[QLatin1String("a11y")] = Phonon::AccessibilityCategory; // To allow for easy debugging, give an easy way to disable this pulseaudio check - QString pulseenv = qgetenv("PHONON_PULSEAUDIO_DISABLE"); + QByteArray pulseenv = qgetenv("PHONON_PULSEAUDIO_DISABLE"); if (pulseenv.toInt()) { - logMessage("PulseAudio support disabled: PHONON_PULSEAUDIO_DISABLE is set"); + logMessage(QLatin1String("PulseAudio support disabled: PHONON_PULSEAUDIO_DISABLE is set")); return; } // We require a glib event loop - if (QLatin1String(QAbstractEventDispatcher::instance()->metaObject()->className()) - != "QGuiEventDispatcherGlib") { - logMessage("Disabling PulseAudio integration for lack of GLib event loop."); + if (strcmp(QAbstractEventDispatcher::instance()->metaObject()->className(), + "QGuiEventDispatcherGlib") != 0) { + logMessage(QLatin1String("Disabling PulseAudio integration for lack of GLib event loop.")); return; } @@ -667,21 +665,21 @@ PulseSupport::PulseSupport() // use a fully async integrated mainloop method to connect and get proper support. pa_mainloop *p_test_mainloop; if (!(p_test_mainloop = pa_mainloop_new())) { - logMessage("PulseAudio support disabled: Unable to create mainloop"); + logMessage(QLatin1String("PulseAudio support disabled: Unable to create mainloop")); return; } pa_context *p_test_context; if (!(p_test_context = pa_context_new(pa_mainloop_get_api(p_test_mainloop), "libphonon-probe"))) { - logMessage("PulseAudio support disabled: Unable to create context"); + logMessage(QLatin1String("PulseAudio support disabled: Unable to create context")); pa_mainloop_free(p_test_mainloop); return; } - logMessage("Probing for PulseAudio..."); + logMessage(QLatin1String("Probing for PulseAudio...")); // (cg) Convert to PA_CONTEXT_NOFLAGS when PulseAudio 0.9.19 is required if (pa_context_connect(p_test_context, NULL, static_cast<pa_context_flags_t>(0), NULL) < 0) { - logMessage(QString("PulseAudio support disabled: %1").arg(pa_strerror(pa_context_errno(p_test_context)))); + logMessage(QString::fromLatin1("PulseAudio support disabled: %1").arg(QString::fromLocal8Bit(pa_strerror(pa_context_errno(p_test_context))))); pa_context_disconnect(p_test_context); pa_context_unref(p_test_context); pa_mainloop_free(p_test_mainloop); @@ -693,7 +691,7 @@ PulseSupport::PulseSupport() pa_mainloop_iterate(p_test_mainloop, 1, NULL); if (!PA_CONTEXT_IS_GOOD(pa_context_get_state(p_test_context))) { - logMessage("PulseAudio probe complete."); + logMessage(QLatin1String("PulseAudio probe complete.")); break; } } @@ -702,12 +700,12 @@ PulseSupport::PulseSupport() pa_mainloop_free(p_test_mainloop); if (!s_pulseActive) { - logMessage("PulseAudio support is not available."); + logMessage(QLatin1String("PulseAudio support is not available.")); return; } // If we're still here, PA is available. - logMessage("PulseAudio support enabled"); + logMessage(QLatin1String("PulseAudio support enabled")); // Now we connect for real using a proper main loop that we can forget // all about processing. @@ -856,7 +854,7 @@ static void setDevicePriority(Category category, QStringList list) if (role.isEmpty()) return; - logMessage(QString("Reindexing %1: %2").arg(role).arg(list.join(", "))); + logMessage(QString::fromLatin1("Reindexing %1: %2").arg(role).arg(list.join(QLatin1String(", ")))); char **devices; devices = pa_xnew(char *, list.size()+1); @@ -926,7 +924,7 @@ void PulseSupport::setStreamPropList(Category category, QString streamUuid) if (role.isEmpty()) return; - logMessage(QString("Setting role to %1 for streamindex %2").arg(role).arg(streamUuid)); + logMessage(QString::fromLatin1("Setting role to %1 for streamindex %2").arg(role).arg(streamUuid)); setenv("PULSE_PROP_media.role", role.toLatin1().constData(), 1); setenv("PULSE_PROP_phonon.streamid", streamUuid.toLatin1().constData(), 1); #endif @@ -952,30 +950,30 @@ bool PulseSupport::setOutputDevice(QString streamUuid, int device) { return true; if (!s_outputDevices.contains(device)) { - logMessage(QString("Attempting to set Output Device for invalid device id %1.").arg(device)); + logMessage(QString::fromLatin1("Attempting to set Output Device for invalid device id %1.").arg(device)); return false; } const QVariant var = s_outputDevices[device].properties["name"]; - logMessage(QString("Attempting to set Output Device to '%1' for Output Stream %2").arg(var.toString()).arg(streamUuid)); + logMessage(QString::fromLatin1("Attempting to set Output Device to '%1' for Output Stream %2").arg(var.toString()).arg(streamUuid)); // Attempt to look up the pulse stream index. if (s_outputStreamIndexMap.contains(streamUuid) && s_outputStreamIndexMap[streamUuid] != PA_INVALID_INDEX) { - logMessage(QString("... Found in map. Moving now")); + logMessage(QLatin1String("... Found in map. Moving now")); uint32_t pulse_device_index = s_outputDevices[device].pulseIndex; uint32_t pulse_stream_index = s_outputStreamIndexMap[streamUuid]; - logMessage(QString("Moving Pulse Sink Input %1 to '%2' (Pulse Sink %3)").arg(pulse_stream_index).arg(var.toString()).arg(pulse_device_index)); + logMessage(QString::fromLatin1("Moving Pulse Sink Input %1 to '%2' (Pulse Sink %3)").arg(pulse_stream_index).arg(var.toString()).arg(pulse_device_index)); /// @todo Find a way to move the stream without saving it... We don't want to pollute the stream restore db. pa_operation* o; if (!(o = pa_context_move_sink_input_by_index(s_context, pulse_stream_index, pulse_device_index, NULL, NULL))) { - logMessage(QString("pa_context_move_sink_input_by_index() failed")); + logMessage(QLatin1String("pa_context_move_sink_input_by_index() failed")); return false; } pa_operation_unref(o); } else { - logMessage(QString("... Not found in map. We will be notified of the device when the stream appears and we can process any moves needed then")); + logMessage(QLatin1String("... Not found in map. We will be notified of the device when the stream appears and we can process any moves needed then")); } return true; #endif @@ -991,30 +989,30 @@ bool PulseSupport::setCaptureDevice(QString streamUuid, int device) { return true; if (!s_captureDevices.contains(device)) { - logMessage(QString("Attempting to set Capture Device for invalid device id %1.").arg(device)); + logMessage(QString::fromLatin1("Attempting to set Capture Device for invalid device id %1.").arg(device)); return false; } const QVariant var = s_captureDevices[device].properties["name"]; - logMessage(QString("Attempting to set Capture Device to '%1' for Capture Stream %2").arg(var.toString()).arg(streamUuid)); + logMessage(QString::fromLatin1("Attempting to set Capture Device to '%1' for Capture Stream %2").arg(var.toString()).arg(streamUuid)); // Attempt to look up the pulse stream index. if (s_captureStreamIndexMap.contains(streamUuid) && s_captureStreamIndexMap[streamUuid] == PA_INVALID_INDEX) { - logMessage(QString("... Found in map. Moving now")); + logMessage(QString::fromLatin1("... Found in map. Moving now")); uint32_t pulse_device_index = s_captureDevices[device].pulseIndex; uint32_t pulse_stream_index = s_captureStreamIndexMap[streamUuid]; - logMessage(QString("Moving Pulse Source Output %1 to '%2' (Pulse Sink %3)").arg(pulse_stream_index).arg(var.toString()).arg(pulse_device_index)); + logMessage(QString::fromLatin1("Moving Pulse Source Output %1 to '%2' (Pulse Sink %3)").arg(pulse_stream_index).arg(var.toString()).arg(pulse_device_index)); /// @todo Find a way to move the stream without saving it... We don't want to pollute the stream restore db. pa_operation* o; if (!(o = pa_context_move_source_output_by_index(s_context, pulse_stream_index, pulse_device_index, NULL, NULL))) { - logMessage(QString("pa_context_move_source_output_by_index() failed")); + logMessage(QString::fromLatin1("pa_context_move_source_output_by_index() failed")); return false; } pa_operation_unref(o); } else { - logMessage(QString("... Not found in map. We will be notified of the device when the stream appears and we can process any moves needed then")); + logMessage(QString::fromLatin1("... Not found in map. We will be notified of the device when the stream appears and we can process any moves needed then")); } return true; #endif @@ -1025,7 +1023,7 @@ void PulseSupport::clearStreamCache(QString streamUuid) { Q_UNUSED(streamUuid); return; #else - logMessage(QString("Clearing stream cache for stream %1").arg(streamUuid)); + logMessage(QString::fromLatin1("Clearing stream cache for stream %1").arg(streamUuid)); s_outputStreamIndexMap.remove(streamUuid); s_captureStreamIndexMap.remove(streamUuid); #endif diff --git a/src/corelib/io/qprocess_symbian.cpp b/src/corelib/io/qprocess_symbian.cpp index 003e781..5b283a5 100644 --- a/src/corelib/io/qprocess_symbian.cpp +++ b/src/corelib/io/qprocess_symbian.cpp @@ -1050,6 +1050,7 @@ bool QProcessPrivate::startDetached(const QString &program, const QStringList &a newProc->Resume(); newProc->Close(); + delete newProc; return true; } diff --git a/src/corelib/tools/qalgorithms.qdoc b/src/corelib/tools/qalgorithms.qdoc index 898f940..cd33f28 100644 --- a/src/corelib/tools/qalgorithms.qdoc +++ b/src/corelib/tools/qalgorithms.qdoc @@ -266,7 +266,7 @@ \overload - This is the same as qFind(\a{container}.begin(), \a{container}.end(), value); + This is the same as qFind(\a{container}.constBegin(), \a{container}.constEnd(), value); */ /*! \fn void qCount(InputIterator begin, InputIterator end, const T &value, Size &n) diff --git a/src/dbus/qdbusconnection_p.h b/src/dbus/qdbusconnection_p.h index 1bd00da..67145b8 100644 --- a/src/dbus/qdbusconnection_p.h +++ b/src/dbus/qdbusconnection_p.h @@ -203,6 +203,8 @@ public: void disconnectRelay(const QString &service, const QString &path, const QString &interface, QDBusAbstractInterface *receiver, const char *signal); + void registerService(const QString &serviceName); + void unregisterService(const QString &serviceName); bool handleMessage(const QDBusMessage &msg); void waitForFinished(QDBusPendingCallPrivate *pcall); @@ -247,9 +249,11 @@ public slots: void socketWrite(int); void objectDestroyed(QObject *o); void relaySignal(QObject *obj, const QMetaObject *, int signalId, const QVariantList &args); - void _q_serviceOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOwner); - void registerService(const QString &serviceName); - void unregisterService(const QString &serviceName); + +private slots: + void serviceOwnerChangedNoLock(const QString &name, const QString &oldOwner, const QString &newOwner); + void registerServiceNoLock(const QString &serviceName); + void unregisterServiceNoLock(const QString &serviceName); signals: void serviceOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOwner); @@ -303,6 +307,9 @@ public: QObject *receiver, const char *signal, int minMIdx, bool buildSignature); static DBusHandlerResult messageFilter(DBusConnection *, DBusMessage *, void *); + static bool checkReplyForDelivery(QDBusConnectionPrivate *target, QObject *object, + int idx, const QList<int> &metaTypes, + const QDBusMessage &msg); static QDBusCallDeliveryEvent *prepareReply(QDBusConnectionPrivate *target, QObject *object, int idx, const QList<int> &metaTypes, const QDBusMessage &msg); diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp index c7f62aa..4118727 100644 --- a/src/dbus/qdbusintegrator.cpp +++ b/src/dbus/qdbusintegrator.cpp @@ -552,6 +552,9 @@ bool QDBusConnectionPrivate::handleMessage(const QDBusMessage &amsg) (*(*list)[i])(amsg); } + if (!ref) + return false; + switch (amsg.type()) { case QDBusMessage::SignalMessage: handleSignal(amsg); @@ -713,6 +716,8 @@ static int findSlot(const QMetaObject *mo, const QByteArray &name, int flags, return -1; } +static QDBusCallDeliveryEvent * const DIRECT_DELIVERY = (QDBusCallDeliveryEvent *)1; + QDBusCallDeliveryEvent* QDBusConnectionPrivate::prepareReply(QDBusConnectionPrivate *target, QObject *object, int idx, const QList<int> &metaTypes, @@ -736,6 +741,8 @@ QDBusCallDeliveryEvent* QDBusConnectionPrivate::prepareReply(QDBusConnectionPriv // we can deliver // prepare for the call + if (target == object) + return DIRECT_DELIVERY; return new QDBusCallDeliveryEvent(QDBusConnection(target), idx, target, msg, metaTypes); } @@ -750,6 +757,12 @@ void QDBusConnectionPrivate::activateSignal(const QDBusConnectionPrivate::Signal // Slots can optionally have one final parameter that is a QDBusMessage // Slots receive read-only copies of the message (i.e., pass by value or by const-ref) QDBusCallDeliveryEvent *call = prepareReply(this, hook.obj, hook.midx, hook.params, msg); + if (call == DIRECT_DELIVERY) { + // short-circuit delivery + Q_ASSERT(this == hook.obj); + deliverCall(this, 0, msg, hook.params, hook.midx); + return; + } if (call) postEventToThread(ActivateSignalAction, hook.obj, call); } @@ -1207,11 +1220,11 @@ void QDBusConnectionPrivate::relaySignal(QObject *obj, const QMetaObject *mo, in q_dbus_message_unref(msg); } -void QDBusConnectionPrivate::_q_serviceOwnerChanged(const QString &name, - const QString &oldOwner, const QString &newOwner) +void QDBusConnectionPrivate::serviceOwnerChangedNoLock(const QString &name, + const QString &oldOwner, const QString &newOwner) { Q_UNUSED(oldOwner); - QDBusWriteLocker locker(UpdateSignalHookOwnerAction, this); +// QDBusWriteLocker locker(UpdateSignalHookOwnerAction, this); WatchedServicesHash::Iterator it = watchedServices.find(name); if (it == watchedServices.end()) return; @@ -1686,11 +1699,11 @@ void QDBusConnectionPrivate::setConnection(DBusConnection *dbc, const QDBusError hook.obj = this; hook.params << QMetaType::Void << QVariant::String; // both functions take a QString as parameter and return void - hook.midx = staticMetaObject.indexOfSlot("registerService(QString)"); + hook.midx = staticMetaObject.indexOfSlot("registerServiceNoLock(QString)"); Q_ASSERT(hook.midx != -1); signalHooks.insert(QLatin1String("NameAcquired:" DBUS_INTERFACE_DBUS), hook); - hook.midx = staticMetaObject.indexOfSlot("unregisterService(QString)"); + hook.midx = staticMetaObject.indexOfSlot("unregisterServiceNoLock(QString)"); Q_ASSERT(hook.midx != -1); signalHooks.insert(QLatin1String("NameLost:" DBUS_INTERFACE_DBUS), hook); @@ -2081,7 +2094,7 @@ void QDBusConnectionPrivate::connectSignal(const QString &key, const SignalHook // we need to watch for this service changing connectSignal(dbusServiceString(), QString(), dbusInterfaceString(), QLatin1String("NameOwnerChanged"), QStringList() << hook.service, QString(), - this, SLOT(_q_serviceOwnerChanged(QString,QString,QString))); + this, SLOT(serviceOwnerChangedNoLock(QString,QString,QString))); data.owner = getNameOwnerNoCache(hook.service); qDBusDebug() << this << "Watching service" << hook.service << "for owner changes (current owner:" << data.owner << ")"; @@ -2342,12 +2355,22 @@ QDBusConnectionPrivate::findMetaObject(const QString &service, const QString &pa void QDBusConnectionPrivate::registerService(const QString &serviceName) { QDBusWriteLocker locker(RegisterServiceAction, this); + registerServiceNoLock(serviceName); +} + +void QDBusConnectionPrivate::registerServiceNoLock(const QString &serviceName) +{ serviceNames.append(serviceName); } void QDBusConnectionPrivate::unregisterService(const QString &serviceName) { QDBusWriteLocker locker(UnregisterServiceAction, this); + unregisterServiceNoLock(serviceName); +} + +void QDBusConnectionPrivate::unregisterServiceNoLock(const QString &serviceName) +{ serviceNames.removeAll(serviceName); } diff --git a/src/declarative/debugger/qdeclarativedebugservice.cpp b/src/declarative/debugger/qdeclarativedebugservice.cpp index 8c86ae8..849df73 100644 --- a/src/declarative/debugger/qdeclarativedebugservice.cpp +++ b/src/declarative/debugger/qdeclarativedebugservice.cpp @@ -226,9 +226,11 @@ QDeclarativeDebugServer *QDeclarativeDebugServer::instance() server->waitForConnection(); } } else { - qWarning(QString::fromAscii("QDeclarativeDebugServer: Ignoring \"-qmljsdebugger=%1\". " - "Format is -qmljsdebugger=port:<port>[,block]").arg( - appD->qmljsDebugArgumentsString()).toAscii().constData()); + const QString message = + QString::fromAscii("QDeclarativeDebugServer: Ignoring \"-qmljsdebugger=%1\". " + "Format is -qmljsdebugger=port:<port>[,block]"). + arg(appD->qmljsDebugArgumentsString()); + qWarning("%s", qPrintable(message)); } } #endif diff --git a/src/declarative/declarative.pro b/src/declarative/declarative.pro index 299ca06..93ad861 100644 --- a/src/declarative/declarative.pro +++ b/src/declarative/declarative.pro @@ -25,7 +25,10 @@ include(graphicsitems/graphicsitems.pri) include(qml/qml.pri) include(debugger/debugger.pri) -symbian:TARGET.UID3=0x2001E623 +symbian: { + TARGET.UID3=0x2001E623 + LIBS += -lefsrv +} DEFINES += QT_NO_OPENTYPE INCLUDEPATH += ../3rdparty/harfbuzz/src diff --git a/src/declarative/graphicsitems/qdeclarativeborderimage.cpp b/src/declarative/graphicsitems/qdeclarativeborderimage.cpp index 649c8fb..c0a7d72 100644 --- a/src/declarative/graphicsitems/qdeclarativeborderimage.cpp +++ b/src/declarative/graphicsitems/qdeclarativeborderimage.cpp @@ -509,7 +509,7 @@ void QDeclarativeBorderImage::doUpdate() void QDeclarativeBorderImage::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWidget *) { Q_D(QDeclarativeBorderImage); - if (d->pix.isNull()) + if (d->pix.isNull() || d->width() <= 0.0 || d->height() <= 0.0) return; bool oldAA = p->testRenderHint(QPainter::Antialiasing); @@ -518,7 +518,23 @@ void QDeclarativeBorderImage::paint(QPainter *p, const QStyleOptionGraphicsItem p->setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform, d->smooth); const QDeclarativeScaleGrid *border = d->getScaleGrid(); - QMargins margins(border->left(), border->top(), border->right(), border->bottom()); + int left = border->left(); + int right = border->right(); + qreal borderWidth = left + right; + if (borderWidth > 0.0 && d->width() < borderWidth) { + qreal diff = borderWidth - d->width() - 1; + left -= qRound(diff * qreal(left) / borderWidth); + right -= qRound(diff * qreal(right) / borderWidth); + } + int top = border->top(); + int bottom = border->bottom(); + qreal borderHeight = top + bottom; + if (borderHeight > 0.0 && d->height() < borderHeight) { + qreal diff = borderHeight - d->height() - 1; + top -= qRound(diff * qreal(top) / borderHeight); + bottom -= qRound(diff * qreal(bottom) / borderHeight); + } + QMargins margins(left, top, right, bottom); QTileRules rules((Qt::TileRule)d->horizontalTileMode, (Qt::TileRule)d->verticalTileMode); qDrawBorderPixmap(p, QRect(0, 0, (int)d->width(), (int)d->height()), margins, d->pix, d->pix.rect(), margins, rules); if (d->smooth) { diff --git a/src/declarative/graphicsitems/qdeclarativeevents.cpp b/src/declarative/graphicsitems/qdeclarativeevents.cpp index 61fd562..4b5e777 100644 --- a/src/declarative/graphicsitems/qdeclarativeevents.cpp +++ b/src/declarative/graphicsitems/qdeclarativeevents.cpp @@ -108,6 +108,34 @@ Item { so that ancestor items do not also respond to the same event. */ +/*! + \qmlproperty int KeyEvent::modifiers + + This property holds the keyboard modifier flags that existed immediately + before the event occurred. + + It contains a bitwise combination of: + \list + \o Qt.NoModifier - No modifier key is pressed. + \o Qt.ShiftModifier - A Shift key on the keyboard is pressed. + \o Qt.ControlModifier - A Ctrl key on the keyboard is pressed. + \o Qt.AltModifier - An Alt key on the keyboard is pressed. + \o Qt.MetaModifier - A Meta key on the keyboard is pressed. + \o Qt.KeypadModifier - A keypad button is pressed. + \endlist + + For example, to react to a Shift key + Enter key combination: + \qml + Item { + focus: true + Keys.onPressed: { + if ((event.key == Qt.Key_Enter) && (event.modifiers & Qt.ShiftModifier)) + doSomething(); + } + } + \endqml +*/ + /*! \qmlclass MouseEvent QDeclarativeMouseEvent @@ -199,7 +227,7 @@ Item { \qml MouseArea { onClicked: { - if (mouse.button == Qt.LeftButton && mouse.modifiers & Qt.ShiftModifier) + if ((mouse.button == Qt.LeftButton) && (mouse.modifiers & Qt.ShiftModifier)) doSomething(); } } diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp index 6f38f63..1615b0f 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview.cpp +++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp @@ -219,12 +219,8 @@ public: } } else { qreal pos = (modelIndex / columns) * rowSize(); - if (header) { - qreal headerSize = flow == QDeclarativeGridView::LeftToRight - ? header->item->height() - : header->item->width(); - pos += headerSize; - } + if (header) + pos += headerSize(); return pos; } return 0; @@ -291,11 +287,9 @@ public: if (item->index == -1) continue; qreal itemTop = item->rowPos(); - if (item->index == model->count()-1 || (itemTop+rowSize()/2 >= pos)) + if (itemTop+rowSize()/2 >= pos && itemTop - rowSize()/2 <= pos) return item; } - if (visibleItems.count() && visibleItems.first()->rowPos() <= pos) - return visibleItems.first(); return 0; } @@ -315,6 +309,16 @@ public: return index; } + qreal headerSize() const { + if (!header) + return 0.0; + + return flow == QDeclarativeGridView::LeftToRight + ? header->item->height() + : header->item->width(); + } + + virtual void itemGeometryChanged(QDeclarativeItem *item, const QRectF &newGeometry, const QRectF &oldGeometry) { Q_Q(const QDeclarativeGridView); QDeclarativeFlickablePrivate::itemGeometryChanged(item, newGeometry, oldGeometry); @@ -878,14 +882,11 @@ void QDeclarativeGridViewPrivate::updateHeader() if (header) { if (visibleItems.count()) { qreal startPos = startPosition(); - qreal headerSize = flow == QDeclarativeGridView::LeftToRight - ? header->item->height() - : header->item->width(); if (visibleIndex == 0) { - header->setPosition(0, startPos - headerSize); + header->setPosition(0, startPos - headerSize()); } else { - if (position() <= startPos || header->rowPos() > startPos - headerSize) - header->setPosition(0, startPos - headerSize); + if (position() <= startPos || header->rowPos() > startPos - headerSize()) + header->setPosition(0, startPos - headerSize()); } } else { header->setPosition(0, 0); @@ -920,10 +921,14 @@ void QDeclarativeGridViewPrivate::fixup(AxisData &data, qreal minExtent, qreal m qreal bottomPos = qMax(bottomItem->rowPos() - highlightRangeEnd, -minExtent); pos = qAbs(data.move + topPos) < qAbs(data.move + bottomPos) ? topPos : bottomPos; } else if (topItem) { - pos = qMax(qMin(topItem->rowPos() - highlightRangeStart, -maxExtent), -minExtent); + if (topItem->index == 0 && header && position()+highlightRangeStart < header->rowPos()+headerSize()/2) + pos = header->rowPos() - highlightRangeStart; + else + pos = qMax(qMin(topItem->rowPos() - highlightRangeStart, -maxExtent), -minExtent); } else if (bottomItem) { pos = qMax(qMin(bottomItem->rowPos() - highlightRangeStart, -maxExtent), -minExtent); } else { + QDeclarativeFlickablePrivate::fixup(data, minExtent, maxExtent); fixupDuration = oldDuration; return; } @@ -1764,8 +1769,10 @@ void QDeclarativeGridView::setFooter(QDeclarativeComponent *footer) d->footer = 0; } d->footerComponent = footer; - d->updateFooter(); - d->updateGrid(); + if (isComponentComplete()) { + d->updateFooter(); + d->updateGrid(); + } emit footerChanged(); } } @@ -1794,9 +1801,11 @@ void QDeclarativeGridView::setHeader(QDeclarativeComponent *header) d->header = 0; } d->headerComponent = header; - d->updateHeader(); - d->updateFooter(); - d->updateGrid(); + if (isComponentComplete()) { + d->updateHeader(); + d->updateFooter(); + d->updateGrid(); + } emit headerChanged(); } } @@ -2221,6 +2230,8 @@ void QDeclarativeGridView::componentComplete() { Q_D(QDeclarativeGridView); QDeclarativeFlickable::componentComplete(); + d->updateHeader(); + d->updateFooter(); d->updateGrid(); if (d->isValid()) { refill(); diff --git a/src/declarative/graphicsitems/qdeclarativeimage.cpp b/src/declarative/graphicsitems/qdeclarativeimage.cpp index 3b08a9b..aa74716 100644 --- a/src/declarative/graphicsitems/qdeclarativeimage.cpp +++ b/src/declarative/graphicsitems/qdeclarativeimage.cpp @@ -461,7 +461,7 @@ QRectF QDeclarativeImage::boundingRect() const void QDeclarativeImage::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWidget *) { Q_D(QDeclarativeImage); - if (d->pix.isNull()) + if (d->pix.pixmap().isNull() ) return; bool oldAA = p->testRenderHint(QPainter::Antialiasing); diff --git a/src/declarative/graphicsitems/qdeclarativeitem.cpp b/src/declarative/graphicsitems/qdeclarativeitem.cpp index e0df751..9d6fe12 100644 --- a/src/declarative/graphicsitems/qdeclarativeitem.cpp +++ b/src/declarative/graphicsitems/qdeclarativeitem.cpp @@ -421,58 +421,28 @@ void QDeclarativeItemKeyFilter::componentComplete() \since 4.7 \brief The KeyNavigation attached property supports key navigation by arrow keys. - It is common in key-based UIs to use arrow keys to navigate - between focused items. The KeyNavigation property provides a - convenient way of specifying which item will gain focus - when an arrow key is pressed. The following example provides - key navigation for a 2x2 grid of items. - - \code - Grid { - columns: 2 - width: 100; height: 100 - Rectangle { - id: item1 - focus: true - width: 50; height: 50 - color: focus ? "red" : "lightgray" - KeyNavigation.right: item2 - KeyNavigation.down: item3 - } - Rectangle { - id: item2 - width: 50; height: 50 - color: focus ? "red" : "lightgray" - KeyNavigation.left: item1 - KeyNavigation.down: item4 - } - Rectangle { - id: item3 - width: 50; height: 50 - color: focus ? "red" : "lightgray" - KeyNavigation.right: item4 - KeyNavigation.up: item1 - } - Rectangle { - id: item4 - width: 50; height: 50 - color: focus ? "red" : "lightgray" - KeyNavigation.left: item3 - KeyNavigation.up: item2 - } - } - \endcode + Key-based user interfaces commonly allow the use of arrow keys to navigate between + focusable items. The KeyNavigation attached property enables this behavior by providing a + convenient way to specify the item that should gain focus when an arrow or tab key is pressed. + + The following example provides key navigation for a 2x2 grid of items: - By default KeyNavigation receives key events after the item it is attached to. - If the item accepts an arrow key event, the KeyNavigation - attached property will not receive an event for that key. Setting the - \l priority property to KeyNavigation.BeforeItem allows handling - of the key events before normal item processing. + \snippet doc/src/snippets/declarative/keynavigation.qml 0 - If an item has been set for a direction and the KeyNavigation - attached property receives the corresponding - key press and release events, the events will be accepted by - KeyNavigation and will not propagate any further. + The top-left item initially receives focus by setting \l {Item::}{focus} to + \c true. When an arrow key is pressed, the focus will move to the + appropriate item, as defined by the value that has been set for + the KeyNavigation \l left, \l right, \l up or \l down properties. + + Note that if a KeyNavigation attached property receives the key press and release + events for a requested arrow or tab key, the event is accepted and does not + propagate any further. + + By default, KeyNavigation receives key events after the item to which it is attached. + If the item accepts the key event, the KeyNavigation attached property will not + receive an event for that key. Setting the \l priority property to + \c KeyNavigation.BeforeItem allows the event to be used for key navigation + before the item, rather than after. \sa {Keys}{Keys attached property} */ @@ -599,7 +569,7 @@ void QDeclarativeKeyNavigationAttached::setBacktab(QDeclarativeItem *i) \list \o KeyNavigation.BeforeItem - process the key events before normal - item key processing. If the event is accepted it will not + item key processing. If the event is used for key navigation, it will be accepted and will not be passed on to the item. \o KeyNavigation.AfterItem (default) - process the key events after normal item key handling. If the item accepts the key event it will not be diff --git a/src/declarative/graphicsitems/qdeclarativeitem_p.h b/src/declarative/graphicsitems/qdeclarativeitem_p.h index f85fa27..d8635b9 100644 --- a/src/declarative/graphicsitems/qdeclarativeitem_p.h +++ b/src/declarative/graphicsitems/qdeclarativeitem_p.h @@ -259,7 +259,7 @@ public: QDeclarativeStateGroup *_states(); QDeclarativeStateGroup *_stateGroup; - QDeclarativeItem::TransformOrigin origin:4; + QDeclarativeItem::TransformOrigin origin:5; bool widthValid:1; bool heightValid:1; bool componentComplete:1; diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index 450b6af..845da79 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -402,6 +402,8 @@ public: void itemGeometryChanged(QDeclarativeItem *item, const QRectF &newGeometry, const QRectF &oldGeometry) { Q_Q(QDeclarativeListView); QDeclarativeFlickablePrivate::itemGeometryChanged(item, newGeometry, oldGeometry); + if (!q->isComponentComplete()) + return; if (item != contentItem && (!highlight || item != highlight->item)) { if ((orient == QDeclarativeListView::Vertical && newGeometry.height() != oldGeometry.height()) || (orient == QDeclarativeListView::Horizontal && newGeometry.width() != oldGeometry.width())) { @@ -1123,8 +1125,6 @@ void QDeclarativeListViewPrivate::updateHeader() QDeclarativeItemPrivate *itemPrivate = static_cast<QDeclarativeItemPrivate*>(QGraphicsItemPrivate::get(item)); itemPrivate->addItemChangeListener(this, QDeclarativeItemPrivate::Geometry); header = new FxListItem(item, q); - if (visibleItems.isEmpty()) - visiblePos = header->size(); } } if (header) { @@ -1137,6 +1137,8 @@ void QDeclarativeListViewPrivate::updateHeader() header->setPosition(startPos - header->size()); } } else { + if (itemCount == 0) + visiblePos = header->size(); header->setPosition(0); } } @@ -1185,10 +1187,14 @@ void QDeclarativeListViewPrivate::fixup(AxisData &data, qreal minExtent, qreal m FxListItem *bottomItem = snapItemAt(position()+highlightRangeEnd); qreal pos; if (topItem) { - pos = qMax(qMin(topItem->position() - highlightRangeStart, -maxExtent), -minExtent); + if (topItem->index == 0 && header && position()+highlightRangeStart < header->position()+header->size()/2) + pos = header->position() - highlightRangeStart; + else + pos = qMax(qMin(topItem->position() - highlightRangeStart, -maxExtent), -minExtent); } else if (bottomItem) { pos = qMax(qMin(bottomItem->position() - highlightRangeStart, -maxExtent), -minExtent); } else { + QDeclarativeFlickablePrivate::fixup(data, minExtent, maxExtent); fixupDuration = oldDuration; return; } @@ -2211,8 +2217,10 @@ void QDeclarativeListView::setFooter(QDeclarativeComponent *footer) d->footerComponent = footer; d->minExtentDirty = true; d->maxExtentDirty = true; - d->updateFooter(); - d->updateViewport(); + if (isComponentComplete()) { + d->updateFooter(); + d->updateViewport(); + } emit footerChanged(); } } @@ -2243,9 +2251,11 @@ void QDeclarativeListView::setHeader(QDeclarativeComponent *header) d->headerComponent = header; d->minExtentDirty = true; d->maxExtentDirty = true; - d->updateHeader(); - d->updateFooter(); - d->updateViewport(); + if (isComponentComplete()) { + d->updateHeader(); + d->updateFooter(); + d->updateViewport(); + } emit headerChanged(); } } @@ -2655,6 +2665,8 @@ void QDeclarativeListView::componentComplete() Q_D(QDeclarativeListView); QDeclarativeFlickable::componentComplete(); updateSections(); + d->updateHeader(); + d->updateFooter(); if (d->isValid()) { refill(); d->moveReason = QDeclarativeListViewPrivate::SetIndex; diff --git a/src/declarative/graphicsitems/qdeclarativerectangle.cpp b/src/declarative/graphicsitems/qdeclarativerectangle.cpp index 7686dde..99b36a8 100644 --- a/src/declarative/graphicsitems/qdeclarativerectangle.cpp +++ b/src/declarative/graphicsitems/qdeclarativerectangle.cpp @@ -420,6 +420,10 @@ void QDeclarativeRectangle::generateRoundedRect() p.drawRoundedRect(QRectF(qreal(pw)/2+1, qreal(pw)/2+1, d->rectImage.width()-(pw+1), d->rectImage.height()-(pw+1)), d->radius, d->radius); else p.drawRoundedRect(QRectF(qreal(pw)/2, qreal(pw)/2, d->rectImage.width()-pw, d->rectImage.height()-pw), d->radius, d->radius); + + // end painting before inserting pixmap + // to pixmap cache to avoid a deep copy + p.end(); QPixmapCache::insert(key, d->rectImage); } } @@ -454,6 +458,10 @@ void QDeclarativeRectangle::generateBorderedRect() p.drawRect(QRectF(qreal(pw)/2+1, qreal(pw)/2+1, d->rectImage.width()-(pw+1), d->rectImage.height()-(pw+1))); else p.drawRect(QRectF(qreal(pw)/2, qreal(pw)/2, d->rectImage.width()-pw, d->rectImage.height()-pw)); + + // end painting before inserting pixmap + // to pixmap cache to avoid a deep copy + p.end(); QPixmapCache::insert(key, d->rectImage); } } @@ -462,6 +470,8 @@ void QDeclarativeRectangle::generateBorderedRect() void QDeclarativeRectangle::paint(QPainter *p, const QStyleOptionGraphicsItem *, QWidget *) { Q_D(QDeclarativeRectangle); + if (width() <= 0 || height() <= 0) + return; if (d->radius > 0 || (d->pen && d->pen->isValid()) || (d->gradient && d->gradient->gradient()) ) { drawRect(*p); @@ -531,6 +541,12 @@ void QDeclarativeRectangle::drawRect(QPainter &p) Q_ASSERT(d->rectImage.width() == 2*xOffset + 1); Q_ASSERT(d->rectImage.height() == 2*yOffset + 1); + // check whether we've eliminated the center completely + if (2*xOffset > width()+pw) + xOffset = (width()+pw)/2; + if (2*yOffset > height()+pw) + yOffset = (height()+pw)/2; + QMargins margins(xOffset, yOffset, xOffset, yOffset); QTileRules rules(Qt::StretchTile, Qt::StretchTile); //NOTE: even though our item may have qreal-based width and height, qDrawBorderPixmap only supports QRects diff --git a/src/declarative/graphicsitems/qdeclarativetext.cpp b/src/declarative/graphicsitems/qdeclarativetext.cpp index 82c444e..303b21c 100644 --- a/src/declarative/graphicsitems/qdeclarativetext.cpp +++ b/src/declarative/graphicsitems/qdeclarativetext.cpp @@ -436,12 +436,13 @@ void QDeclarativeTextPrivate::invalidateImageCache() { Q_Q(QDeclarativeText); - if (imageCacheDirty) - return; - - imageCacheDirty = true; - imageCache = QPixmap(); + if(cacheAllTextAsImage || style != QDeclarativeText::Normal){//If actually using the image cache + if (imageCacheDirty) + return; + imageCacheDirty = true; + imageCache = QPixmap(); + } if (q->isComponentComplete()) q->update(); } diff --git a/src/declarative/graphicsitems/qdeclarativetextinput.cpp b/src/declarative/graphicsitems/qdeclarativetextinput.cpp index 0deacf8..f8421a3 100644 --- a/src/declarative/graphicsitems/qdeclarativetextinput.cpp +++ b/src/declarative/graphicsitems/qdeclarativetextinput.cpp @@ -771,7 +771,7 @@ void QDeclarativeTextInput::setEchoMode(QDeclarativeTextInput::EchoMode echo) imHints &= ~(Qt::ImhNoAutoUppercase | Qt::ImhNoPredictiveText); setInputMethodHints(imHints); d->control->setEchoMode((uint)echo); - update(); + q_textChanged(); emit echoModeChanged(echoMode()); } diff --git a/src/declarative/graphicsitems/qdeclarativetextlayout.cpp b/src/declarative/graphicsitems/qdeclarativetextlayout.cpp index e8da367..14a1109 100644 --- a/src/declarative/graphicsitems/qdeclarativetextlayout.cpp +++ b/src/declarative/graphicsitems/qdeclarativetextlayout.cpp @@ -361,10 +361,18 @@ void QDeclarativeTextLayout::draw(QPainter *painter, const QPointF &p) d->position = p; } + QPen oldPen = priv->state->pen; + QColor currentColor = oldPen.color(); for (int ii = 0; ii < itemCount; ++ii) { QStaticTextItem &item = d->items[ii]; + if (item.color.isValid() && currentColor != item.color) { + painter->setPen(item.color); + currentColor = item.color; + } priv->extended->drawStaticTextItem(&item); } + if (currentColor != oldPen.color()) + painter->setPen(oldPen); } QT_END_NAMESPACE diff --git a/src/declarative/qml/qdeclarativebinding.cpp b/src/declarative/qml/qdeclarativebinding.cpp index cb6ad8c..a7fbf44 100644 --- a/src/declarative/qml/qdeclarativebinding.cpp +++ b/src/declarative/qml/qdeclarativebinding.cpp @@ -55,6 +55,158 @@ QT_BEGIN_NAMESPACE +QDeclarativeAbstractBinding::QDeclarativeAbstractBinding() +: m_object(0), m_propertyIndex(-1), m_mePtr(0), m_prevBinding(0), m_nextBinding(0) +{ +} + +QDeclarativeAbstractBinding::~QDeclarativeAbstractBinding() +{ + Q_ASSERT(m_prevBinding == 0); + Q_ASSERT(m_mePtr == 0); +} + +/*! +Destroy the binding. Use this instead of calling delete. + +Bindings are free to implement their own memory management, so the delete operator is not +necessarily safe. The default implementation clears the binding, removes it from the object +and calls delete. +*/ +void QDeclarativeAbstractBinding::destroy() +{ + removeFromObject(); + clear(); + + delete this; +} + +/*! +Add this binding to \a object. + +This transfers ownership of the binding to the object, marks the object's property as +being bound. + +However, it does not enable the binding itself or call update() on it. +*/ +void QDeclarativeAbstractBinding::addToObject(QObject *object, int index) +{ + Q_ASSERT(object); + + if (m_object == object && m_propertyIndex == index) + return; + + removeFromObject(); + + Q_ASSERT(!m_prevBinding); + + m_object = object; + m_propertyIndex = index; + + QDeclarativeData *data = QDeclarativeData::get(object, true); + + if (index & 0xFF000000) { + // Value type + + int coreIndex = index & 0xFFFFFF; + + // Find the value type proxy (if there is one) + QDeclarativeValueTypeProxyBinding *proxy = 0; + if (data->hasBindingBit(coreIndex)) { + QDeclarativeAbstractBinding *b = data->bindings; + while (b && b->propertyIndex() != coreIndex) + b = b->m_nextBinding; + Q_ASSERT(b && b->bindingType() == QDeclarativeAbstractBinding::ValueTypeProxy); + proxy = static_cast<QDeclarativeValueTypeProxyBinding *>(b); + } + + if (!proxy) { + proxy = new QDeclarativeValueTypeProxyBinding(object, coreIndex); + proxy->addToObject(object, coreIndex); + } + + m_nextBinding = proxy->m_bindings; + if (m_nextBinding) m_nextBinding->m_prevBinding = &m_nextBinding; + m_prevBinding = &proxy->m_bindings; + proxy->m_bindings = this; + + } else { + m_nextBinding = data->bindings; + if (m_nextBinding) m_nextBinding->m_prevBinding = &m_nextBinding; + m_prevBinding = &data->bindings; + data->bindings = this; + + data->setBindingBit(m_object, index); + } +} + +/*! +Remove the binding from the object. +*/ +void QDeclarativeAbstractBinding::removeFromObject() +{ + if (m_prevBinding) { + int index = propertyIndex(); + + *m_prevBinding = m_nextBinding; + if (m_nextBinding) m_nextBinding->m_prevBinding = m_prevBinding; + m_prevBinding = 0; + m_nextBinding = 0; + + if (index & 0xFF000000) { + // Value type - we don't remove the proxy from the object. It will sit their happily + // doing nothing until it is removed by a write, a binding change or it is reused + // to hold more sub-bindings. + } else if (m_object) { + QDeclarativeData *data = QDeclarativeData::get(m_object, false); + if (data) data->clearBindingBit(index); + } + + m_object = 0; + m_propertyIndex = -1; + } +} + +static void bindingDummyDeleter(QDeclarativeAbstractBinding *) +{ +} + +QDeclarativeAbstractBinding::Pointer QDeclarativeAbstractBinding::weakPointer() +{ + if (m_selfPointer.isNull()) + m_selfPointer = QSharedPointer<QDeclarativeAbstractBinding>(this, bindingDummyDeleter); + + return m_selfPointer.toWeakRef(); +} + +void QDeclarativeAbstractBinding::clear() +{ + if (m_mePtr) { + *m_mePtr = 0; + m_mePtr = 0; + } +} + +QString QDeclarativeAbstractBinding::expression() const +{ + return QLatin1String("<Unknown>"); +} + +QObject *QDeclarativeAbstractBinding::object() const +{ + return m_object; +} + +int QDeclarativeAbstractBinding::propertyIndex() const +{ + return m_propertyIndex; +} + +void QDeclarativeAbstractBinding::setEnabled(bool enabled, QDeclarativePropertyPrivate::WriteFlags flags) +{ + if (enabled) update(flags); +} + void QDeclarativeBindingPrivate::refresh() { Q_Q(QDeclarativeBinding); @@ -255,20 +407,8 @@ void QDeclarativeBinding::setEnabled(bool e, QDeclarativePropertyPrivate::WriteF d->enabled = e; setNotifyOnValueChanged(e); - QDeclarativeAbstractBinding::setEnabled(e, flags); - - if (e) { - addToObject(d->property.object()); + if (e) update(flags); - } else { - removeFromObject(); - } -} - -int QDeclarativeBinding::propertyIndex() -{ - Q_D(QDeclarativeBinding); - return QDeclarativePropertyPrivate::bindingIndex(d->property); } bool QDeclarativeBinding::enabled() const @@ -283,127 +423,6 @@ QString QDeclarativeBinding::expression() const return QDeclarativeExpression::expression(); } -QDeclarativeAbstractBinding::QDeclarativeAbstractBinding() -: m_object(0), m_mePtr(0), m_prevBinding(0), m_nextBinding(0) -{ -} - -QDeclarativeAbstractBinding::~QDeclarativeAbstractBinding() -{ - Q_ASSERT(m_prevBinding == 0); - Q_ASSERT(m_mePtr == 0); -} - -void QDeclarativeAbstractBinding::destroy() -{ - removeFromObject(); - clear(); - - delete this; -} - -void QDeclarativeAbstractBinding::addToObject(QObject *object) -{ - Q_ASSERT(object); - - if (m_object == object) - return; - - int index = propertyIndex(); - - removeFromObject(); - - Q_ASSERT(!m_prevBinding); - - m_object = object; - QDeclarativeData *data = QDeclarativeData::get(object, true); - - if (index & 0xFF000000) { - // Value type - - int coreIndex = index & 0xFFFFFF; - - // Find the value type proxy (if there is one) - QDeclarativeValueTypeProxyBinding *proxy = 0; - if (data->hasBindingBit(coreIndex)) { - QDeclarativeAbstractBinding *b = data->bindings; - while (b && b->propertyIndex() != coreIndex) - b = b->m_nextBinding; - Q_ASSERT(b && b->bindingType() == QDeclarativeAbstractBinding::ValueTypeProxy); - proxy = static_cast<QDeclarativeValueTypeProxyBinding *>(b); - } - - if (!proxy) - proxy = new QDeclarativeValueTypeProxyBinding(object, coreIndex); - proxy->addToObject(object); - - m_nextBinding = proxy->m_bindings; - if (m_nextBinding) m_nextBinding->m_prevBinding = &m_nextBinding; - m_prevBinding = &proxy->m_bindings; - proxy->m_bindings = this; - - } else { - m_nextBinding = data->bindings; - if (m_nextBinding) m_nextBinding->m_prevBinding = &m_nextBinding; - m_prevBinding = &data->bindings; - data->bindings = this; - - data->setBindingBit(m_object, index); - } -} - -void QDeclarativeAbstractBinding::removeFromObject() -{ - if (m_prevBinding) { - int index = propertyIndex(); - - *m_prevBinding = m_nextBinding; - if (m_nextBinding) m_nextBinding->m_prevBinding = m_prevBinding; - m_prevBinding = 0; - m_nextBinding = 0; - - if (index & 0xFF000000) { - // Value type - we don't remove the proxy from the object. It will sit their happily - // doing nothing for ever more. - } else if (m_object) { - QDeclarativeData *data = QDeclarativeData::get(m_object, false); - if (data) data->clearBindingBit(index); - } - - m_object = 0; - } -} - -static void bindingDummyDeleter(QDeclarativeAbstractBinding *) -{ -} - -QDeclarativeAbstractBinding::Pointer QDeclarativeAbstractBinding::weakPointer() -{ - if (m_selfPointer.isNull()) - m_selfPointer = QSharedPointer<QDeclarativeAbstractBinding>(this, bindingDummyDeleter); - - return m_selfPointer.toWeakRef(); -} - -void QDeclarativeAbstractBinding::clear() -{ - if (m_mePtr) { - *m_mePtr = 0; - m_mePtr = 0; - } -} - -QString QDeclarativeAbstractBinding::expression() const -{ - return QLatin1String("<Unknown>"); -} - -void QDeclarativeAbstractBinding::setEnabled(bool e, QDeclarativePropertyPrivate::WriteFlags) -{ - if (e) m_mePtr = 0; -} - QDeclarativeValueTypeProxyBinding::QDeclarativeValueTypeProxyBinding(QObject *o, int index) : m_object(o), m_index(index), m_bindings(0) { @@ -421,16 +440,10 @@ QDeclarativeValueTypeProxyBinding::~QDeclarativeValueTypeProxyBinding() void QDeclarativeValueTypeProxyBinding::setEnabled(bool e, QDeclarativePropertyPrivate::WriteFlags flags) { if (e) { - addToObject(m_object); - QDeclarativeAbstractBinding *bindings = m_bindings; - m_bindings = 0; recursiveEnable(bindings, flags); } else { - removeFromObject(); - QDeclarativeAbstractBinding *bindings = m_bindings; - m_bindings = 0; recursiveDisable(bindings); } } @@ -440,13 +453,7 @@ void QDeclarativeValueTypeProxyBinding::recursiveEnable(QDeclarativeAbstractBind if (!b) return; - QDeclarativeAbstractBinding *next = b->m_nextBinding; - b->m_prevBinding = 0; - b->m_nextBinding = 0; - Q_ASSERT(b->m_mePtr == 0); - b->m_mePtr = &b; - - recursiveEnable(next, flags); + recursiveEnable(b->m_nextBinding, flags); if (b) b->setEnabled(true, flags); @@ -459,19 +466,8 @@ void QDeclarativeValueTypeProxyBinding::recursiveDisable(QDeclarativeAbstractBin recursiveDisable(b->m_nextBinding); - b->setEnabled(false, 0); - - Q_ASSERT(b->m_prevBinding == 0); - Q_ASSERT(b->m_nextBinding == 0); - b->m_nextBinding = m_bindings; - if (b->m_nextBinding) b->m_nextBinding->m_prevBinding = &b->m_nextBinding; - b->m_prevBinding = &m_bindings; - m_bindings = b; -} - -int QDeclarativeValueTypeProxyBinding::propertyIndex() -{ - return m_index; + if (b) + b->setEnabled(false, 0); } void QDeclarativeValueTypeProxyBinding::update(QDeclarativePropertyPrivate::WriteFlags) @@ -488,4 +484,25 @@ QDeclarativeAbstractBinding *QDeclarativeValueTypeProxyBinding::binding(int prop return binding; } +/*! +Removes a collection of bindings, corresponding to the set bits in \a mask. +*/ +void QDeclarativeValueTypeProxyBinding::removeBindings(quint32 mask) +{ + QDeclarativeAbstractBinding *binding = m_bindings; + while (binding) { + if (mask & (1 << (binding->propertyIndex() >> 24))) { + QDeclarativeAbstractBinding *remove = binding; + binding = remove->m_nextBinding; + *remove->m_prevBinding = remove->m_nextBinding; + if (remove->m_nextBinding) remove->m_nextBinding->m_prevBinding = remove->m_prevBinding; + remove->m_prevBinding = 0; + remove->m_nextBinding = 0; + remove->destroy(); + } else { + binding = binding->m_nextBinding; + } + } +} + QT_END_NAMESPACE diff --git a/src/declarative/qml/qdeclarativebinding_p.h b/src/declarative/qml/qdeclarativebinding_p.h index 0b9bde6..7823a3d 100644 --- a/src/declarative/qml/qdeclarativebinding_p.h +++ b/src/declarative/qml/qdeclarativebinding_p.h @@ -78,14 +78,16 @@ public: enum Type { PropertyBinding, ValueTypeProxy }; virtual Type bindingType() const { return PropertyBinding; } + QObject *object() const; + int propertyIndex() const; + void setEnabled(bool e) { setEnabled(e, QDeclarativePropertyPrivate::DontRemoveBinding); } virtual void setEnabled(bool, QDeclarativePropertyPrivate::WriteFlags) = 0; - virtual int propertyIndex() = 0; void update() { update(QDeclarativePropertyPrivate::DontRemoveBinding); } virtual void update(QDeclarativePropertyPrivate::WriteFlags) = 0; - void addToObject(QObject *); + void addToObject(QObject *, int); void removeFromObject(); static Pointer getPointer(QDeclarativeAbstractBinding *p) { return p ? p->weakPointer() : Pointer(); } @@ -98,12 +100,14 @@ private: Pointer weakPointer(); friend class QDeclarativeData; + friend class QDeclarativeComponentPrivate; friend class QDeclarativeValueTypeProxyBinding; friend class QDeclarativePropertyPrivate; friend class QDeclarativeVME; friend class QtSharedPointer::ExternalRefCount<QDeclarativeAbstractBinding>; QObject *m_object; + int m_propertyIndex; QDeclarativeAbstractBinding **m_mePtr; QDeclarativeAbstractBinding **m_prevBinding; QDeclarativeAbstractBinding *m_nextBinding; @@ -118,11 +122,12 @@ public: virtual Type bindingType() const { return ValueTypeProxy; } virtual void setEnabled(bool, QDeclarativePropertyPrivate::WriteFlags); - virtual int propertyIndex(); virtual void update(QDeclarativePropertyPrivate::WriteFlags); QDeclarativeAbstractBinding *binding(int propertyIndex); + void removeBindings(quint32 mask); + protected: ~QDeclarativeValueTypeProxyBinding(); @@ -154,7 +159,6 @@ public: // Inherited from QDeclarativeAbstractBinding virtual void setEnabled(bool, QDeclarativePropertyPrivate::WriteFlags flags); - virtual int propertyIndex(); virtual void update(QDeclarativePropertyPrivate::WriteFlags flags); virtual QString expression() const; diff --git a/src/declarative/qml/qdeclarativecompiledbindings.cpp b/src/declarative/qml/qdeclarativecompiledbindings.cpp index fbe5829..5c295b9 100644 --- a/src/declarative/qml/qdeclarativecompiledbindings.cpp +++ b/src/declarative/qml/qdeclarativecompiledbindings.cpp @@ -187,7 +187,6 @@ public: // Inherited from QDeclarativeAbstractBinding virtual void setEnabled(bool, QDeclarativePropertyPrivate::WriteFlags flags); - virtual int propertyIndex(); virtual void update(QDeclarativePropertyPrivate::WriteFlags flags); virtual void destroy(); @@ -294,14 +293,6 @@ QDeclarativeAbstractBinding *QDeclarativeCompiledBindings::configBinding(int ind void QDeclarativeCompiledBindingsPrivate::Binding::setEnabled(bool e, QDeclarativePropertyPrivate::WriteFlags flags) { - if (e) { - addToObject(target); - } else { - removeFromObject(); - } - - QDeclarativeAbstractBinding::setEnabled(e, flags); - if (enabled != e) { enabled = e; @@ -309,11 +300,6 @@ void QDeclarativeCompiledBindingsPrivate::Binding::setEnabled(bool e, QDeclarati } } -int QDeclarativeCompiledBindingsPrivate::Binding::propertyIndex() -{ - return property & 0xFFFF; -} - void QDeclarativeCompiledBindingsPrivate::Binding::update(QDeclarativePropertyPrivate::WriteFlags flags) { parent->run(this, flags); diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp index 645402e..df428b1 100644 --- a/src/declarative/qml/qdeclarativecompiler.cpp +++ b/src/declarative/qml/qdeclarativecompiler.cpp @@ -946,6 +946,16 @@ void QDeclarativeCompiler::genObject(QDeclarativeParser::Object *obj) QDeclarativePropertyCache::Data::IsVMEFunction, QDeclarativePropertyCache::Data::IsVMESignal); + // Add flag for alias properties + if (!obj->synthdata.isEmpty()) { + const QDeclarativeVMEMetaData *vmeMetaData = + reinterpret_cast<const QDeclarativeVMEMetaData *>(obj->synthdata.constData()); + for (int ii = 0; ii < vmeMetaData->aliasCount; ++ii) { + int index = obj->metaObject()->propertyOffset() + vmeMetaData->propertyCount + ii; + propertyCache->property(index)->flags |= QDeclarativePropertyCache::Data::IsAlias; + } + } + if (obj == unitRoot) { propertyCache->addref(); output->rootPropertyCache = propertyCache; @@ -1003,7 +1013,8 @@ void QDeclarativeCompiler::genObjectBody(QDeclarativeParser::Object *obj) seenDefer = true; continue; } - genValueProperty(prop, obj); + if (!prop->isAlias) + genValueProperty(prop, obj); } if (seenDefer) { QDeclarativeInstruction defer; @@ -1113,25 +1124,56 @@ void QDeclarativeCompiler::genObjectBody(QDeclarativeParser::Object *obj) } foreach(Property *prop, obj->valueTypeProperties) { - QDeclarativeInstruction fetch; - fetch.type = QDeclarativeInstruction::FetchValueType; - fetch.fetchValue.property = prop->index; - fetch.fetchValue.type = prop->type; - fetch.line = prop->location.start.line; + if (!prop->isAlias) + genValueTypeProperty(obj, prop); + } - output->bytecode << fetch; + foreach(Property *prop, obj->valueProperties) { + if (prop->isDeferred) + continue; + if (prop->isAlias) + genValueProperty(prop, obj); + } + + foreach(Property *prop, obj->valueTypeProperties) { + if (prop->isAlias) + genValueTypeProperty(obj, prop); + } +} +void QDeclarativeCompiler::genValueTypeProperty(QDeclarativeParser::Object *obj,QDeclarativeParser::Property *prop) +{ + QDeclarativeInstruction fetch; + fetch.type = QDeclarativeInstruction::FetchValueType; + fetch.fetchValue.property = prop->index; + fetch.fetchValue.type = prop->type; + fetch.fetchValue.bindingSkipList = 0; + fetch.line = prop->location.start.line; + + if (obj->type == -1 || output->types.at(obj->type).component) { + // We only have to do this if this is a composite type. If it is a builtin + // type it can't possibly already have bindings that need to be cleared. foreach(Property *vprop, prop->value->valueProperties) { - genPropertyAssignment(vprop, prop->value, prop); + if (!vprop->values.isEmpty()) { + Q_ASSERT(vprop->index >= 0 && vprop->index < 32); + fetch.fetchValue.bindingSkipList |= (1 << vprop->index); + } } + } - QDeclarativeInstruction pop; - pop.type = QDeclarativeInstruction::PopValueType; - pop.fetchValue.property = prop->index; - pop.fetchValue.type = prop->type; - pop.line = prop->location.start.line; - output->bytecode << pop; + output->bytecode << fetch; + + foreach(Property *vprop, prop->value->valueProperties) { + genPropertyAssignment(vprop, prop->value, prop); } + + QDeclarativeInstruction pop; + pop.type = QDeclarativeInstruction::PopValueType; + pop.fetchValue.property = prop->index; + pop.fetchValue.type = prop->type; + pop.fetchValue.bindingSkipList = 0; + pop.line = prop->location.start.line; + output->bytecode << pop; } void QDeclarativeCompiler::genComponent(QDeclarativeParser::Object *obj) @@ -1440,10 +1482,22 @@ bool QDeclarativeCompiler::buildProperty(QDeclarativeParser::Property *prop, if (p.name()) { prop->type = p.userType(); } - } - if (prop->index != -1) - prop->parent->setBindingBit(prop->index); + // Check if this is an alias + if (prop->index != -1 && + prop->parent && + prop->parent->type != -1 && + output->types.at(prop->parent->type).component) { + + QDeclarativePropertyCache *cache = output->types.at(prop->parent->type).component->rootPropertyCache; + if (cache && cache->property(prop->index) && + cache->property(prop->index)->flags & QDeclarativePropertyCache::Data::IsAlias) + prop->isAlias = true; + } + + if (prop->index != -1 && !prop->values.isEmpty()) + prop->parent->setBindingBit(prop->index); + } if (!prop->isDefault && prop->name == "id" && !ctxt.isSubContext()) { @@ -1778,6 +1832,12 @@ bool QDeclarativeCompiler::buildGroupedProperty(QDeclarativeParser::Property *pr COMPILE_EXCEPTION(prop, tr( "Invalid property assignment: \"%1\" is a read-only property").arg(QString::fromUtf8(prop->name))); } + + if (prop->isAlias) { + foreach (Property *vtProp, prop->value->properties) + vtProp->isAlias = true; + } + COMPILE_CHECK(buildValueTypeProperty(enginePrivate->valueTypes[prop->type], prop->value, obj, ctxt.incr())); obj->addValueTypeProperty(prop); @@ -2423,7 +2483,7 @@ bool QDeclarativeCompiler::buildDynamicMeta(QDeclarativeParser::Object *obj, Dyn if (p.type == Object::DynamicProperty::Alias) { if (mode == ResolveAliases) { ((QDeclarativeVMEMetaData *)dynamicData.data())->aliasCount++; - compileAlias(builder, dynamicData, obj, p); + COMPILE_CHECK(compileAlias(builder, dynamicData, obj, p)); } else { // Need a fake signal so that the metaobject remains consistent across // the resolve and non-resolve alias runs @@ -2694,7 +2754,10 @@ void QDeclarativeCompiler::genBindingAssignment(QDeclarativeParser::Value *bindi } QDeclarativeInstruction store; - store.type = QDeclarativeInstruction::StoreBinding; + if (!prop->isAlias) + store.type = QDeclarativeInstruction::StoreBinding; + else + store.type = QDeclarativeInstruction::StoreBindingOnAlias; store.assignBinding.value = output->indexForByteArray(ref.compiledData); store.assignBinding.context = ref.bindingContext.stack; store.assignBinding.owner = ref.bindingContext.owner; @@ -2769,13 +2832,17 @@ bool QDeclarativeCompiler::completeComponentBuild() expr.expression = binding.expression; expr.imports = unit->imports(); - int index = bindingCompiler.compile(expr, enginePrivate); - if (index != -1) { - binding.dataType = BindingReference::Experimental; - binding.compiledIndex = index; - componentStat.optimizedBindings.append(iter.key()->location); - continue; - } + // ### We don't currently optimize for bindings on alias's - because + // of the solution to QTBUG-13719 + if (!binding.property->isAlias) { + int index = bindingCompiler.compile(expr, enginePrivate); + if (index != -1) { + binding.dataType = BindingReference::Experimental; + binding.compiledIndex = index; + componentStat.optimizedBindings.append(iter.key()->location); + continue; + } + } binding.dataType = BindingReference::QtScript; diff --git a/src/declarative/qml/qdeclarativecompiler_p.h b/src/declarative/qml/qdeclarativecompiler_p.h index 5cd1fd2..7d76ad9 100644 --- a/src/declarative/qml/qdeclarativecompiler_p.h +++ b/src/declarative/qml/qdeclarativecompiler_p.h @@ -252,6 +252,7 @@ private: void genObject(QDeclarativeParser::Object *obj); void genObjectBody(QDeclarativeParser::Object *obj); + void genValueTypeProperty(QDeclarativeParser::Object *obj,QDeclarativeParser::Property *); void genComponent(QDeclarativeParser::Object *obj); void genValueProperty(QDeclarativeParser::Property *prop, QDeclarativeParser::Object *obj); void genListProperty(QDeclarativeParser::Property *prop, QDeclarativeParser::Object *obj); diff --git a/src/declarative/qml/qdeclarativecomponent.cpp b/src/declarative/qml/qdeclarativecomponent.cpp index 2686ce3..63bde0f 100644 --- a/src/declarative/qml/qdeclarativecomponent.cpp +++ b/src/declarative/qml/qdeclarativecomponent.cpp @@ -876,9 +876,12 @@ void QDeclarativeComponentPrivate::complete(QDeclarativeEnginePrivate *enginePri QDeclarativeEnginePrivate::SimpleList<QDeclarativeAbstractBinding> bv = state->bindValues.at(ii); for (int jj = 0; jj < bv.count; ++jj) { - if(bv.at(jj)) + if(bv.at(jj)) { + // XXX akennedy + bv.at(jj)->m_mePtr = 0; bv.at(jj)->setEnabled(true, QDeclarativePropertyPrivate::BypassInterceptor | QDeclarativePropertyPrivate::DontRemoveBinding); + } } QDeclarativeEnginePrivate::clear(bv); } diff --git a/src/declarative/qml/qdeclarativedata_p.h b/src/declarative/qml/qdeclarativedata_p.h index def4188..4767169 100644 --- a/src/declarative/qml/qdeclarativedata_p.h +++ b/src/declarative/qml/qdeclarativedata_p.h @@ -65,6 +65,7 @@ class QDeclarativeContext; class QDeclarativePropertyCache; class QDeclarativeContextData; class QDeclarativeNotifier; +class QDeclarativeDataExtended; // This class is structured in such a way, that simply zero'ing it is the // default state for elemental object allocations. This is crucial in the // workings of the QDeclarativeInstruction::CreateSimpleObject instruction. @@ -150,17 +151,13 @@ public: } } + bool hasExtendedData() const { return extendedData != 0; } QDeclarativeNotifier *objectNameNotifier() const; QHash<int, QObject *> *attachedProperties() const; - struct ExtendedData { - ExtendedData(); - ~ExtendedData(); - - QHash<int, QObject *> attachedProperties; - void *objectNameNotifier; - }; - mutable ExtendedData *extendedData; +private: + // For objectNameNotifier and attachedProperties + mutable QDeclarativeDataExtended *extendedData; }; template<class T> diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index cd11336..2d5a910 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -678,6 +678,9 @@ QNetworkAccessManager *QDeclarativeEngine::networkAccessManager() const requests. See the QDeclarativeImageProvider documentation for details on implementing and using image providers. + All required image providers should be added to the engine before any + QML sources files are loaded. + Note that images loaded from a QDeclarativeImageProvider are cached by QPixmapCache, similar to any image loaded by QML. @@ -897,9 +900,7 @@ void QDeclarativeEngine::setObjectOwnership(QObject *object, ObjectOwnership own if (!object) return; - // No need to do anything if CppOwnership and there is no QDeclarativeData as - // the current ownership must be CppOwnership - QDeclarativeData *ddata = QDeclarativeData::get(object, ownership == JavaScriptOwnership); + QDeclarativeData *ddata = QDeclarativeData::get(object, true); if (!ddata) return; @@ -957,7 +958,7 @@ QObject *qmlAttachedPropertiesObjectById(int id, const QObject *object, bool cre if (!data) return 0; // Attached properties are only on objects created by QML - QObject *rv = data->extendedData?data->attachedProperties()->value(id):0; + QObject *rv = data->hasExtendedData()?data->attachedProperties()->value(id):0; if (rv || !create) return rv; @@ -985,6 +986,35 @@ QObject *qmlAttachedPropertiesObject(int *idCache, const QObject *object, return qmlAttachedPropertiesObjectById(*idCache, object, create); } +class QDeclarativeDataExtended { +public: + QDeclarativeDataExtended(); + ~QDeclarativeDataExtended(); + + QHash<int, QObject *> attachedProperties; + QDeclarativeNotifier objectNameNotifier; +}; + +QDeclarativeDataExtended::QDeclarativeDataExtended() +{ +} + +QDeclarativeDataExtended::~QDeclarativeDataExtended() +{ +} + +QDeclarativeNotifier *QDeclarativeData::objectNameNotifier() const +{ + if (!extendedData) extendedData = new QDeclarativeDataExtended; + return &extendedData->objectNameNotifier; +} + +QHash<int, QObject *> *QDeclarativeData::attachedProperties() const +{ + if (!extendedData) extendedData = new QDeclarativeDataExtended; + return &extendedData->attachedProperties; +} + void QDeclarativeData::destroyed(QObject *object) { if (deferredComponent) @@ -1075,28 +1105,6 @@ void QDeclarativeData::setBindingBit(QObject *obj, int bit) bindingBits[bit / 32] |= (1 << (bit % 32)); } -QDeclarativeData::ExtendedData::ExtendedData() -: objectNameNotifier(0) -{ -} - -QDeclarativeData::ExtendedData::~ExtendedData() -{ - ((QDeclarativeNotifier *)&objectNameNotifier)->~QDeclarativeNotifier(); -} - -QDeclarativeNotifier *QDeclarativeData::objectNameNotifier() const -{ - if (!extendedData) extendedData = new ExtendedData; - return (QDeclarativeNotifier *)&extendedData->objectNameNotifier; -} - -QHash<int, QObject *> *QDeclarativeData::attachedProperties() const -{ - if (!extendedData) extendedData = new ExtendedData; - return &extendedData->attachedProperties; -} - /*! Creates a QScriptValue allowing you to use \a object in QML script. \a engine is the QDeclarativeEngine it is to be created in. @@ -2225,8 +2233,9 @@ bool QDeclarative_isFileCaseCorrect(const QString &fileName) if (a != c) return false; } +#else + Q_UNUSED(fileName) #endif - return true; } diff --git a/src/declarative/qml/qdeclarativeimport.cpp b/src/declarative/qml/qdeclarativeimport.cpp index 6f5216a..acc13de 100644 --- a/src/declarative/qml/qdeclarativeimport.cpp +++ b/src/declarative/qml/qdeclarativeimport.cpp @@ -51,6 +51,10 @@ #include <private/qdeclarativetypenamecache_p.h> #include <private/qdeclarativeengine_p.h> +#ifdef Q_OS_SYMBIAN +#include "private/qcore_symbian_p.h" +#endif + QT_BEGIN_NAMESPACE DEFINE_BOOL_CONFIG_OPTION(qmlImportTrace, QML_IMPORT_TRACE) @@ -658,8 +662,32 @@ QDeclarativeImportDatabase::QDeclarativeImportDatabase(QDeclarativeEngine *e) // Search order is applicationDirPath(), $QML_IMPORT_PATH, QLibraryInfo::ImportsPath - addImportPath(QLibraryInfo::location(QLibraryInfo::ImportsPath)); + QString installImportsPath = QLibraryInfo::location(QLibraryInfo::ImportsPath); +#if defined(Q_OS_SYMBIAN) + // Append imports path for all available drives in Symbian + if (installImportsPath.at(1) != QChar(QLatin1Char(':'))) { + QString tempPath = installImportsPath; + if (tempPath.at(tempPath.length() - 1) != QDir::separator()) { + tempPath += QDir::separator(); + } + RFs& fs = qt_s60GetRFs(); + TPtrC tempPathPtr(reinterpret_cast<const TText*> (tempPath.constData())); + TFindFile finder(fs); + TInt err = finder.FindByDir(tempPathPtr, tempPathPtr); + while (err == KErrNone) { + QString foundDir(reinterpret_cast<const QChar *>(finder.File().Ptr()), + finder.File().Length()); + foundDir = QDir(foundDir).canonicalPath(); + addImportPath(foundDir); + err = finder.Find(); + } + } else { + addImportPath(installImportsPath); + } +#else + addImportPath(installImportsPath); +#endif // env import paths QByteArray envImportPath = qgetenv("QML_IMPORT_PATH"); if (!envImportPath.isEmpty()) { diff --git a/src/declarative/qml/qdeclarativeinstruction.cpp b/src/declarative/qml/qdeclarativeinstruction.cpp index 1767d2f..818c15d 100644 --- a/src/declarative/qml/qdeclarativeinstruction.cpp +++ b/src/declarative/qml/qdeclarativeinstruction.cpp @@ -63,7 +63,7 @@ void QDeclarativeCompiledData::dump(QDeclarativeInstruction *instr, int idx) qWarning().nospace() << idx << "\t\t" << line << "\t" << "INIT\t\t\t" << instr->init.bindingsSize << "\t" << instr->init.parserStatusSize << "\t" << instr->init.contextCache << "\t" << instr->init.compiledBinding; break; case QDeclarativeInstruction::CreateObject: - qWarning().nospace() << idx << "\t\t" << line << "\t" << "CREATE\t\t\t" << instr->create.type << "\t\t\t" << types.at(instr->create.type).className; + qWarning().nospace() << idx << "\t\t" << line << "\t" << "CREATE\t\t\t" << instr->create.type << "\t" << instr->create.bindingBits << "\t\t" << types.at(instr->create.type).className; break; case QDeclarativeInstruction::CreateSimpleObject: qWarning().nospace() << idx << "\t\t" << line << "\t" << "CREATE_SIMPLE\t\t" << instr->createSimple.typeSize; @@ -174,6 +174,9 @@ void QDeclarativeCompiledData::dump(QDeclarativeInstruction *instr, int idx) case QDeclarativeInstruction::StoreBinding: qWarning().nospace() << idx << "\t\t" << line << "\t" << "STORE_BINDING\t" << instr->assignBinding.property << "\t" << instr->assignBinding.value << "\t" << instr->assignBinding.context; break; + case QDeclarativeInstruction::StoreBindingOnAlias: + qWarning().nospace() << idx << "\t\t" << line << "\t" << "STORE_BINDING_ALIAS\t" << instr->assignBinding.property << "\t" << instr->assignBinding.value << "\t" << instr->assignBinding.context; + break; case QDeclarativeInstruction::StoreCompiledBinding: qWarning().nospace() << idx << "\t\t" << line << "\t" << "STORE_COMPILED_BINDING\t" << instr->assignBinding.property << "\t" << instr->assignBinding.value << "\t" << instr->assignBinding.context; break; @@ -203,7 +206,7 @@ void QDeclarativeCompiledData::dump(QDeclarativeInstruction *instr, int idx) qWarning().nospace() << idx << "\t\t" << line << "\t" << "FETCH\t\t\t" << instr->fetch.property; break; case QDeclarativeInstruction::FetchValueType: - qWarning().nospace() << idx << "\t\t" << line << "\t" << "FETCH_VALUE\t\t" << instr->fetchValue.property << "\t" << instr->fetchValue.type; + qWarning().nospace() << idx << "\t\t" << line << "\t" << "FETCH_VALUE\t\t" << instr->fetchValue.property << "\t" << instr->fetchValue.type << "\t" << instr->fetchValue.bindingSkipList; break; case QDeclarativeInstruction::PopFetchedObject: qWarning().nospace() << idx << "\t\t" << line << "\t" << "POP"; diff --git a/src/declarative/qml/qdeclarativeinstruction_p.h b/src/declarative/qml/qdeclarativeinstruction_p.h index f0b032c..94676fc 100644 --- a/src/declarative/qml/qdeclarativeinstruction_p.h +++ b/src/declarative/qml/qdeclarativeinstruction_p.h @@ -132,6 +132,7 @@ public: AssignCustomType, /* assignCustomType */ StoreBinding, /* assignBinding */ + StoreBindingOnAlias, /* assignBinding */ StoreCompiledBinding, /* assignBinding */ StoreValueSource, /* assignValueSource */ StoreValueInterceptor, /* assignValueInterceptor */ @@ -214,6 +215,7 @@ public: struct FetchValueInstruction { int property; int type; + quint32 bindingSkipList; }; struct FetchQmlListInstruction { int property; diff --git a/src/declarative/qml/qdeclarativeobjectscriptclass.cpp b/src/declarative/qml/qdeclarativeobjectscriptclass.cpp index eff59df..b0bc5bb 100644 --- a/src/declarative/qml/qdeclarativeobjectscriptclass.cpp +++ b/src/declarative/qml/qdeclarativeobjectscriptclass.cpp @@ -69,7 +69,7 @@ struct ObjectData : public QScriptDeclarativeClass::Object { virtual ~ObjectData() { if (object && !object->parent()) { QDeclarativeData *ddata = QDeclarativeData::get(object, false); - if (ddata && !ddata->indestructible && 0 == --ddata->objectDataRefCount) + if (ddata && !ddata->indestructible && 0 == --ddata->objectDataRefCount) object->deleteLater(); } } @@ -808,7 +808,14 @@ QScriptDeclarativeClass::Value MetaCallArgument::toValue(QDeclarativeEngine *e) } return QScriptDeclarativeClass::Value(engine, rv); } else if (type == -1 || type == qMetaTypeId<QVariant>()) { - return QScriptDeclarativeClass::Value(engine, QDeclarativeEnginePrivate::get(e)->scriptValueFromVariant(*((QVariant *)&data))); + QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(e); + QScriptValue rv = ep->scriptValueFromVariant(*((QVariant *)&data)); + if (rv.isQObject()) { + QObject *object = rv.toQObject(); + if (object) + QDeclarativeData::get(object, true)->setImplicitDestructible(); + } + return QScriptDeclarativeClass::Value(engine, rv); } else { return QScriptDeclarativeClass::Value(); } diff --git a/src/declarative/qml/qdeclarativeparser.cpp b/src/declarative/qml/qdeclarativeparser.cpp index 8d00ef8..effecb1 100644 --- a/src/declarative/qml/qdeclarativeparser.cpp +++ b/src/declarative/qml/qdeclarativeparser.cpp @@ -205,13 +205,13 @@ QDeclarativeParser::Object::DynamicSlot::DynamicSlot(const DynamicSlot &o) QDeclarativeParser::Property::Property() : parent(0), type(0), index(-1), value(0), isDefault(true), isDeferred(false), - isValueTypeSubProperty(false) + isValueTypeSubProperty(false), isAlias(false) { } QDeclarativeParser::Property::Property(const QByteArray &n) : parent(0), type(0), index(-1), value(0), name(n), isDefault(false), - isDeferred(false), isValueTypeSubProperty(false) + isDeferred(false), isValueTypeSubProperty(false), isAlias(false) { } diff --git a/src/declarative/qml/qdeclarativeparser_p.h b/src/declarative/qml/qdeclarativeparser_p.h index 77184c2..633847d 100644 --- a/src/declarative/qml/qdeclarativeparser_p.h +++ b/src/declarative/qml/qdeclarativeparser_p.h @@ -358,6 +358,9 @@ namespace QDeclarativeParser bool isDeferred; // True if this property is a value-type pseudo-property bool isValueTypeSubProperty; + // True if this property is a property alias. Set by the + // QDeclarativeCompiler + bool isAlias; LocationSpan location; LocationRange listValueRange; diff --git a/src/declarative/qml/qdeclarativeproperty.cpp b/src/declarative/qml/qdeclarativeproperty.cpp index 1395e97..df0917f 100644 --- a/src/declarative/qml/qdeclarativeproperty.cpp +++ b/src/declarative/qml/qdeclarativeproperty.cpp @@ -607,26 +607,7 @@ QDeclarativePropertyPrivate::binding(const QDeclarativeProperty &that) if (!that.isProperty() || !that.d->object) return 0; - QDeclarativeData *data = QDeclarativeData::get(that.d->object); - if (!data) - return 0; - - if (!data->hasBindingBit(that.d->core.coreIndex)) - return 0; - - QDeclarativeAbstractBinding *binding = data->bindings; - while (binding && binding->propertyIndex() != that.d->core.coreIndex) - binding = binding->m_nextBinding; - - if (binding && that.d->valueType.valueTypeCoreIdx != -1) { - if (binding->bindingType() == QDeclarativeAbstractBinding::ValueTypeProxy) { - QDeclarativeValueTypeProxyBinding *proxy = static_cast<QDeclarativeValueTypeProxyBinding *>(binding); - - binding = proxy->binding(bindingIndex(that)); - } - } - - return binding; + return binding(that.d->object, that.d->core.coreIndex, that.d->valueType.valueTypeCoreIdx); } /*! @@ -658,12 +639,106 @@ QDeclarativePropertyPrivate::setBinding(const QDeclarativeProperty &that, } QDeclarativeAbstractBinding * +QDeclarativePropertyPrivate::binding(QObject *object, int coreIndex, int valueTypeIndex) +{ + QDeclarativeData *data = QDeclarativeData::get(object); + if (!data) + return 0; + + QDeclarativePropertyCache::Data *propertyData = + data->propertyCache?data->propertyCache->property(coreIndex):0; + if (propertyData && propertyData->flags & QDeclarativePropertyCache::Data::IsAlias) { + const QDeclarativeVMEMetaObject *vme = + static_cast<const QDeclarativeVMEMetaObject *>(metaObjectForProperty(object->metaObject(), coreIndex)); + + QObject *aObject = 0; int aCoreIndex = -1; int aValueTypeIndex = -1; + if (!vme->aliasTarget(coreIndex, &aObject, &aCoreIndex, &aValueTypeIndex)) + return 0; + + // This will either be a value type sub-reference or an alias to a value-type sub-reference not both + Q_ASSERT(valueTypeIndex == -1 || aValueTypeIndex == -1); + return binding(aObject, aCoreIndex, (valueTypeIndex == -1)?aValueTypeIndex:valueTypeIndex); + } + + if (!data->hasBindingBit(coreIndex)) + return 0; + + QDeclarativeAbstractBinding *binding = data->bindings; + while (binding && binding->propertyIndex() != coreIndex) + binding = binding->m_nextBinding; + + if (binding && valueTypeIndex != -1) { + if (binding->bindingType() == QDeclarativeAbstractBinding::ValueTypeProxy) { + int index = coreIndex | (valueTypeIndex << 24); + binding = static_cast<QDeclarativeValueTypeProxyBinding *>(binding)->binding(index); + } + } + + return binding; +} + +void QDeclarativePropertyPrivate::findAliasTarget(QObject *object, int bindingIndex, + QObject **targetObject, int *targetBindingIndex) +{ + int coreIndex = bindingIndex & 0xFFFFFF; + int valueTypeIndex = bindingIndex >> 24; + if (valueTypeIndex == 0) valueTypeIndex = -1; + + QDeclarativeData *data = QDeclarativeData::get(object, false); + if (data) { + QDeclarativePropertyCache::Data *propertyData = + data->propertyCache?data->propertyCache->property(coreIndex):0; + if (propertyData && propertyData->flags & QDeclarativePropertyCache::Data::IsAlias) { + const QDeclarativeVMEMetaObject *vme = + static_cast<const QDeclarativeVMEMetaObject *>(metaObjectForProperty(object->metaObject(), coreIndex)); + QObject *aObject = 0; int aCoreIndex = -1; int aValueTypeIndex = -1; + if (vme->aliasTarget(coreIndex, &aObject, &aCoreIndex, &aValueTypeIndex)) { + // This will either be a value type sub-reference or an alias to a value-type sub-reference not both + Q_ASSERT(valueTypeIndex == -1 || aValueTypeIndex == -1); + + int aBindingIndex = aCoreIndex; + if (aValueTypeIndex != -1) + aBindingIndex |= aValueTypeIndex << 24; + else if (valueTypeIndex != -1) + aBindingIndex |= valueTypeIndex << 24; + + findAliasTarget(aObject, aBindingIndex, targetObject, targetBindingIndex); + return; + } + } + } + + *targetObject = object; + *targetBindingIndex = bindingIndex; +} + +QDeclarativeAbstractBinding * QDeclarativePropertyPrivate::setBinding(QObject *object, int coreIndex, int valueTypeIndex, QDeclarativeAbstractBinding *newBinding, WriteFlags flags) { QDeclarativeData *data = QDeclarativeData::get(object, 0 != newBinding); QDeclarativeAbstractBinding *binding = 0; + if (data) { + QDeclarativePropertyCache::Data *propertyData = + data->propertyCache?data->propertyCache->property(coreIndex):0; + if (propertyData && propertyData->flags & QDeclarativePropertyCache::Data::IsAlias) { + const QDeclarativeVMEMetaObject *vme = + static_cast<const QDeclarativeVMEMetaObject *>(metaObjectForProperty(object->metaObject(), coreIndex)); + + QObject *aObject = 0; int aCoreIndex = -1; int aValueTypeIndex = -1; + if (!vme->aliasTarget(coreIndex, &aObject, &aCoreIndex, &aValueTypeIndex)) { + if (newBinding) newBinding->destroy(); + return 0; + } + + // This will either be a value type sub-reference or an alias to a value-type sub-reference not both + Q_ASSERT(valueTypeIndex == -1 || aValueTypeIndex == -1); + return setBinding(aObject, aCoreIndex, (valueTypeIndex == -1)?aValueTypeIndex:valueTypeIndex, + newBinding, flags); + } + } + if (data && data->hasBindingBit(coreIndex)) { binding = data->bindings; @@ -671,16 +746,72 @@ QDeclarativePropertyPrivate::setBinding(QObject *object, int coreIndex, int valu binding = binding->m_nextBinding; } - if (binding && valueTypeIndex != -1 && binding->bindingType() == QDeclarativeAbstractBinding::ValueTypeProxy) { - int index = coreIndex | (valueTypeIndex << 24); + int index = coreIndex; + if (valueTypeIndex != -1) + index |= (valueTypeIndex << 24); + + if (binding && valueTypeIndex != -1 && binding->bindingType() == QDeclarativeAbstractBinding::ValueTypeProxy) binding = static_cast<QDeclarativeValueTypeProxyBinding *>(binding)->binding(index); + + if (binding) { + binding->removeFromObject(); + binding->setEnabled(false, 0); } + if (newBinding) { + newBinding->addToObject(object, index); + newBinding->setEnabled(true, flags); + } + + return binding; +} + +QDeclarativeAbstractBinding * +QDeclarativePropertyPrivate::setBindingNoEnable(QObject *object, int coreIndex, int valueTypeIndex, + QDeclarativeAbstractBinding *newBinding) +{ + QDeclarativeData *data = QDeclarativeData::get(object, 0 != newBinding); + QDeclarativeAbstractBinding *binding = 0; + + if (data) { + QDeclarativePropertyCache::Data *propertyData = + data->propertyCache?data->propertyCache->property(coreIndex):0; + if (propertyData && propertyData->flags & QDeclarativePropertyCache::Data::IsAlias) { + const QDeclarativeVMEMetaObject *vme = + static_cast<const QDeclarativeVMEMetaObject *>(metaObjectForProperty(object->metaObject(), coreIndex)); + + QObject *aObject = 0; int aCoreIndex = -1; int aValueTypeIndex = -1; + if (!vme->aliasTarget(coreIndex, &aObject, &aCoreIndex, &aValueTypeIndex)) { + if (newBinding) newBinding->destroy(); + return 0; + } + + // This will either be a value type sub-reference or an alias to a value-type sub-reference not both + Q_ASSERT(valueTypeIndex == -1 || aValueTypeIndex == -1); + return setBindingNoEnable(aObject, aCoreIndex, (valueTypeIndex == -1)?aValueTypeIndex:valueTypeIndex, + newBinding); + } + } + + if (data && data->hasBindingBit(coreIndex)) { + binding = data->bindings; + + while (binding && binding->propertyIndex() != coreIndex) + binding = binding->m_nextBinding; + } + + int index = coreIndex; + if (valueTypeIndex != -1) + index |= (valueTypeIndex << 24); + + if (binding && valueTypeIndex != -1 && binding->bindingType() == QDeclarativeAbstractBinding::ValueTypeProxy) + binding = static_cast<QDeclarativeValueTypeProxyBinding *>(binding)->binding(index); + if (binding) - binding->setEnabled(false); + binding->removeFromObject(); if (newBinding) - newBinding->setEnabled(true, flags); + newBinding->addToObject(object, index); return binding; } @@ -1392,11 +1523,26 @@ static inline int QMetaObject_methods(const QMetaObject *metaObject) int className; int classInfoCount, classInfoData; int methodCount, methodData; + int propertyCount, propertyData; }; return reinterpret_cast<const Private *>(metaObject->d.data)->methodCount; } +static inline int QMetaObject_properties(const QMetaObject *metaObject) +{ + struct Private + { + int revision; + int className; + int classInfoCount, classInfoData; + int methodCount, methodData; + int propertyCount, propertyData; + }; + + return reinterpret_cast<const Private *>(metaObject->d.data)->propertyCount; +} + static inline void flush_vme_signal(const QObject *object, int index) { QDeclarativeData *data = static_cast<QDeclarativeData *>(QObjectPrivate::get(const_cast<QObject *>(object))->declarativeData); @@ -1437,4 +1583,19 @@ bool QDeclarativePropertyPrivate::connect(const QObject *sender, int signal_inde return QMetaObject::connect(sender, signal_index, receiver, method_index, type, types); } +/*! +Return \a metaObject's [super] meta object that provides data for \a property. +*/ +const QMetaObject *QDeclarativePropertyPrivate::metaObjectForProperty(const QMetaObject *metaObject, int property) +{ + int propertyOffset = metaObject->propertyOffset(); + + while (propertyOffset > property) { + metaObject = metaObject->d.superdata; + propertyOffset -= QMetaObject_properties(metaObject); + } + + return metaObject; +} + QT_END_NAMESPACE diff --git a/src/declarative/qml/qdeclarativeproperty_p.h b/src/declarative/qml/qdeclarativeproperty_p.h index a9d6979..6392f88 100644 --- a/src/declarative/qml/qdeclarativeproperty_p.h +++ b/src/declarative/qml/qdeclarativeproperty_p.h @@ -68,7 +68,7 @@ class QDeclarativeExpression; class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativePropertyPrivate { public: - enum WriteFlag { BypassInterceptor = 0x01, DontRemoveBinding = 0x02 }; + enum WriteFlag { BypassInterceptor = 0x01, DontRemoveBinding = 0x02, RemoveBindingOnAliasWrite = 0x04 }; Q_DECLARE_FLAGS(WriteFlags, WriteFlag) QDeclarativePropertyPrivate() @@ -108,9 +108,13 @@ public: const QVariant &value, int flags); static bool write(QObject *, const QDeclarativePropertyCache::Data &, const QVariant &, QDeclarativeContextData *, WriteFlags flags = 0); + static void findAliasTarget(QObject *, int, QObject **, int *); static QDeclarativeAbstractBinding *setBinding(QObject *, int coreIndex, int valueTypeIndex /* -1 */, QDeclarativeAbstractBinding *, WriteFlags flags = DontRemoveBinding); + static QDeclarativeAbstractBinding *setBindingNoEnable(QObject *, int coreIndex, int valueTypeIndex /* -1 */, + QDeclarativeAbstractBinding *); + static QDeclarativeAbstractBinding *binding(QObject *, int coreIndex, int valueTypeIndex /* -1 */); static QByteArray saveValueType(const QMetaObject *, int, const QMetaObject *, int); @@ -120,7 +124,6 @@ public: static bool equal(const QMetaObject *, const QMetaObject *); static bool canConvert(const QMetaObject *from, const QMetaObject *to); - // "Public" (to QML) methods static QDeclarativeAbstractBinding *binding(const QDeclarativeProperty &that); static QDeclarativeAbstractBinding *setBinding(const QDeclarativeProperty &that, @@ -136,6 +139,7 @@ public: static bool connect(const QObject *sender, int signal_index, const QObject *receiver, int method_index, int type = 0, int *types = 0); + static const QMetaObject *metaObjectForProperty(const QMetaObject *, int); }; Q_DECLARE_OPERATORS_FOR_FLAGS(QDeclarativePropertyPrivate::WriteFlags) diff --git a/src/declarative/qml/qdeclarativepropertycache.cpp b/src/declarative/qml/qdeclarativepropertycache.cpp index 0adcdbd..dd9a224 100644 --- a/src/declarative/qml/qdeclarativepropertycache.cpp +++ b/src/declarative/qml/qdeclarativepropertycache.cpp @@ -320,7 +320,6 @@ void QDeclarativePropertyCache::update(QDeclarativeEngine *engine, const QMetaOb { Q_ASSERT(engine); Q_ASSERT(metaObject); - QDeclarativeEnginePrivate *enginePriv = QDeclarativeEnginePrivate::get(engine); clear(); diff --git a/src/declarative/qml/qdeclarativepropertycache_p.h b/src/declarative/qml/qdeclarativepropertycache_p.h index 922010d..f7c5daa 100644 --- a/src/declarative/qml/qdeclarativepropertycache_p.h +++ b/src/declarative/qml/qdeclarativepropertycache_p.h @@ -83,6 +83,7 @@ public: IsConstant = 0x00000001, IsWritable = 0x00000002, IsResettable = 0x00000004, + IsAlias = 0x00000008, // These are mutualy exclusive IsFunction = 0x00000010, diff --git a/src/declarative/qml/qdeclarativevaluetype.cpp b/src/declarative/qml/qdeclarativevaluetype.cpp index b9e9cec..5dc6ffd 100644 --- a/src/declarative/qml/qdeclarativevaluetype.cpp +++ b/src/declarative/qml/qdeclarativevaluetype.cpp @@ -109,36 +109,54 @@ void QDeclarativeValueTypeFactory::registerValueTypes() QDeclarativeValueType *QDeclarativeValueTypeFactory::valueType(int t) { + QDeclarativeValueType *rv = 0; + switch (t) { case QVariant::Point: - return new QDeclarativePointValueType; + rv = new QDeclarativePointValueType; + break; case QVariant::PointF: - return new QDeclarativePointFValueType; + rv = new QDeclarativePointFValueType; + break; case QVariant::Size: - return new QDeclarativeSizeValueType; + rv = new QDeclarativeSizeValueType; + break; case QVariant::SizeF: - return new QDeclarativeSizeFValueType; + rv = new QDeclarativeSizeFValueType; + break; case QVariant::Rect: - return new QDeclarativeRectValueType; + rv = new QDeclarativeRectValueType; + break; case QVariant::RectF: - return new QDeclarativeRectFValueType; + rv = new QDeclarativeRectFValueType; + break; case QVariant::Vector2D: - return new QDeclarativeVector2DValueType; + rv = new QDeclarativeVector2DValueType; + break; case QVariant::Vector3D: - return new QDeclarativeVector3DValueType; + rv = new QDeclarativeVector3DValueType; + break; case QVariant::Vector4D: - return new QDeclarativeVector4DValueType; + rv = new QDeclarativeVector4DValueType; + break; case QVariant::Quaternion: - return new QDeclarativeQuaternionValueType; + rv = new QDeclarativeQuaternionValueType; + break; case QVariant::Matrix4x4: - return new QDeclarativeMatrix4x4ValueType; + rv = new QDeclarativeMatrix4x4ValueType; + break; case QVariant::EasingCurve: - return new QDeclarativeEasingValueType; + rv = new QDeclarativeEasingValueType; + break; case QVariant::Font: - return new QDeclarativeFontValueType; + rv = new QDeclarativeFontValueType; + break; default: - return 0; + break; } + + Q_ASSERT(!rv || rv->metaObject()->propertyCount() < 32); + return rv; } QDeclarativeValueType::QDeclarativeValueType(QObject *parent) diff --git a/src/declarative/qml/qdeclarativevme.cpp b/src/declarative/qml/qdeclarativevme.cpp index db90aff..c742dec 100644 --- a/src/declarative/qml/qdeclarativevme.cpp +++ b/src/declarative/qml/qdeclarativevme.cpp @@ -154,7 +154,8 @@ QObject *QDeclarativeVME::run(QDeclarativeVMEStack<QObject *> &stack, QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(ctxt->engine); int status = -1; //for dbus - QDeclarativePropertyPrivate::WriteFlags flags = QDeclarativePropertyPrivate::BypassInterceptor; + QDeclarativePropertyPrivate::WriteFlags flags = QDeclarativePropertyPrivate::BypassInterceptor | + QDeclarativePropertyPrivate::RemoveBindingOnAliasWrite; for (int ii = start; !isError() && ii < (start + count); ++ii) { const QDeclarativeInstruction &instr = comp->bytecode.at(ii); @@ -664,6 +665,7 @@ QObject *QDeclarativeVME::run(QDeclarativeVMEStack<QObject *> &stack, break; case QDeclarativeInstruction::StoreBinding: + case QDeclarativeInstruction::StoreBindingOnAlias: { QObject *target = stack.at(stack.count() - 1 - instr.assignBinding.owner); @@ -675,14 +677,20 @@ QObject *QDeclarativeVME::run(QDeclarativeVMEStack<QObject *> &stack, int coreIndex = mp.index(); - if (stack.count() == 1 && bindingSkipList.testBit(coreIndex)) + if ((stack.count() - instr.assignBinding.owner) == 1 && bindingSkipList.testBit(coreIndex)) break; QDeclarativeBinding *bind = new QDeclarativeBinding((void *)datas.at(instr.assignBinding.value).constData(), comp, context, ctxt, comp->name, instr.line, 0); bindValues.append(bind); bind->m_mePtr = &bindValues.values[bindValues.count - 1]; bind->setTarget(mp); - bind->addToObject(target); + + if (instr.type == QDeclarativeInstruction::StoreBindingOnAlias) { + QDeclarativeAbstractBinding *old = QDeclarativePropertyPrivate::setBindingNoEnable(target, coreIndex, QDeclarativePropertyPrivate::valueTypeCoreIndex(mp), bind); + if (old) { old->destroy(); } + } else { + bind->addToObject(target, QDeclarativePropertyPrivate::bindingIndex(mp)); + } } break; @@ -701,7 +709,7 @@ QObject *QDeclarativeVME::run(QDeclarativeVMEStack<QObject *> &stack, ctxt->optimizedBindings->configBinding(instr.assignBinding.value, target, scope, property); bindValues.append(binding); binding->m_mePtr = &bindValues.values[bindValues.count - 1]; - binding->addToObject(target); + binding->addToObject(target, property); } break; @@ -874,8 +882,26 @@ QObject *QDeclarativeVME::run(QDeclarativeVMEStack<QObject *> &stack, case QDeclarativeInstruction::FetchValueType: { QObject *target = stack.top(); - QDeclarativeValueType *valueHandler = - ep->valueTypes[instr.fetchValue.type]; + + if (instr.fetchValue.bindingSkipList != 0) { + // Possibly need to clear bindings + QDeclarativeData *targetData = QDeclarativeData::get(target); + if (targetData) { + QDeclarativeAbstractBinding *binding = + QDeclarativePropertyPrivate::binding(target, instr.fetchValue.property, -1); + + if (binding && binding->bindingType() != QDeclarativeAbstractBinding::ValueTypeProxy) { + QDeclarativePropertyPrivate::setBinding(target, instr.fetchValue.property, -1, 0); + binding->destroy(); + } else if (binding) { + QDeclarativeValueTypeProxyBinding *proxy = + static_cast<QDeclarativeValueTypeProxyBinding *>(binding); + proxy->removeBindings(instr.fetchValue.bindingSkipList); + } + } + } + + QDeclarativeValueType *valueHandler = ep->valueTypes[instr.fetchValue.type]; valueHandler->read(target, instr.fetchValue.property); stack.push(valueHandler); } diff --git a/src/declarative/qml/qdeclarativevmemetaobject.cpp b/src/declarative/qml/qdeclarativevmemetaobject.cpp index e28062b..38c1709 100644 --- a/src/declarative/qml/qdeclarativevmemetaobject.cpp +++ b/src/declarative/qml/qdeclarativevmemetaobject.cpp @@ -46,6 +46,7 @@ #include "qdeclarativeexpression.h" #include "private/qdeclarativeexpression_p.h" #include "private/qdeclarativecontext_p.h" +#include "private/qdeclarativebinding_p.h" Q_DECLARE_METATYPE(QScriptValue); @@ -589,7 +590,21 @@ int QDeclarativeVMEMetaObject::metaCall(QMetaObject::Call c, int _id, void **a) if (d->isObjectAlias()) { *reinterpret_cast<QObject **>(a[0]) = target; return -1; - } else if (d->isValueTypeAlias()) { + } + + // Remove binding (if any) on write + if(c == QMetaObject::WriteProperty) { + int flags = *reinterpret_cast<int*>(a[3]); + if (flags & QDeclarativePropertyPrivate::RemoveBindingOnAliasWrite) { + QDeclarativeData *targetData = QDeclarativeData::get(target); + if (targetData && targetData->hasBindingBit(d->propertyIndex())) { + QDeclarativeAbstractBinding *binding = QDeclarativePropertyPrivate::setBinding(target, d->propertyIndex(), d->isValueTypeAlias()?d->valueTypeIndex():-1, 0); + if (binding) binding->destroy(); + } + } + } + + if (d->isValueTypeAlias()) { // Value type property QDeclarativeEnginePrivate *ep = QDeclarativeEnginePrivate::get(ctxt->engine); @@ -821,6 +836,36 @@ void QDeclarativeVMEMetaObject::setVMEProperty(int index, const QScriptValue &v) return writeVarProperty(index - propOffset, v); } +bool QDeclarativeVMEMetaObject::aliasTarget(int index, QObject **target, int *coreIndex, int *valueTypeIndex) const +{ + Q_ASSERT(index >= propOffset + metaData->propertyCount); + + *target = 0; + *coreIndex = -1; + *valueTypeIndex = -1; + + if (!ctxt) + return false; + + QDeclarativeVMEMetaData::AliasData *d = metaData->aliasData() + (index - propOffset - metaData->propertyCount); + QDeclarativeContext *context = ctxt->asQDeclarativeContext(); + QDeclarativeContextPrivate *ctxtPriv = QDeclarativeContextPrivate::get(context); + + *target = ctxtPriv->data->idValues[d->contextIdx].data(); + if (!*target) + return false; + + if (d->isObjectAlias()) { + } else if (d->isValueTypeAlias()) { + *coreIndex = d->propertyIndex(); + *valueTypeIndex = d->valueTypeIndex(); + } else { + *coreIndex = d->propertyIndex(); + } + + return true; +} + void QDeclarativeVMEMetaObject::connectAlias(int aliasId) { if (!aConnected.testBit(aliasId)) { diff --git a/src/declarative/qml/qdeclarativevmemetaobject_p.h b/src/declarative/qml/qdeclarativevmemetaobject_p.h index 5134763..7b6b410 100644 --- a/src/declarative/qml/qdeclarativevmemetaobject_p.h +++ b/src/declarative/qml/qdeclarativevmemetaobject_p.h @@ -138,6 +138,7 @@ public: QDeclarativeCompiledData *compiledData); ~QDeclarativeVMEMetaObject(); + bool aliasTarget(int index, QObject **target, int *coreIndex, int *valueTypeIndex) const; void registerInterceptor(int index, int valueIndex, QDeclarativePropertyValueInterceptor *interceptor); QScriptValue vmeMethod(int index); int vmeMethodLineNumber(int index); @@ -146,6 +147,7 @@ public: void setVMEProperty(int index, const QScriptValue &); void connectAliasSignal(int index); + protected: virtual int metaCall(QMetaObject::Call _c, int _id, void **_a); diff --git a/src/declarative/util/qdeclarativepixmapcache.cpp b/src/declarative/util/qdeclarativepixmapcache.cpp index a07b1bb..380d9bc 100644 --- a/src/declarative/util/qdeclarativepixmapcache.cpp +++ b/src/declarative/util/qdeclarativepixmapcache.cpp @@ -684,7 +684,7 @@ void QDeclarativePixmapStore::timerEvent(QTimerEvent *) } QDeclarativePixmapReply::QDeclarativePixmapReply(QDeclarativePixmapData *d) -: data(d), reader(0), loading(false), redirectCount(0), requestSize(d->requestSize) +: data(d), reader(0), requestSize(d->requestSize), loading(false), redirectCount(0) { if (finishedIndex == -1) { finishedIndex = QDeclarativePixmapReply::staticMetaObject.indexOfSignal("finished()"); diff --git a/src/gui/dialogs/qdialog.cpp b/src/gui/dialogs/qdialog.cpp index 6970b76..90a15b0 100644 --- a/src/gui/dialogs/qdialog.cpp +++ b/src/gui/dialogs/qdialog.cpp @@ -282,8 +282,8 @@ QDialog::QDialog(QWidget *parent, Qt::WindowFlags f) QDialog::QDialog(QWidget *parent, const char *name, bool modal, Qt::WindowFlags f) : QWidget(*new QDialogPrivate, parent, f - | QFlag(modal ? Qt::WShowModal : 0) - | QFlag((f & Qt::WindowType_Mask) == 0 ? Qt::Dialog : 0) + | QFlag(modal ? Qt::WShowModal : Qt::WindowType(0)) + | QFlag((f & Qt::WindowType_Mask) == 0 ? Qt::Dialog : Qt::WindowType(0)) ) { setObjectName(QString::fromAscii(name)); diff --git a/src/gui/egl/qegl_x11.cpp b/src/gui/egl/qegl_x11.cpp index 15cc109..29415ed 100644 --- a/src/gui/egl/qegl_x11.cpp +++ b/src/gui/egl/qegl_x11.cpp @@ -165,8 +165,10 @@ VisualID QEgl::getCompatibleVisualId(EGLConfig config) if (chosenVisualInfo) { // Skip size checks if implementation supports non-matching visual // and config (http://bugreports.qt.nokia.com/browse/QTBUG-9444). - if (QEgl::hasExtension("EGL_NV_post_convert_rounding")) + if (QEgl::hasExtension("EGL_NV_post_convert_rounding")) { + XFree(chosenVisualInfo); return visualId; + } int visualRedSize = countBits(chosenVisualInfo->red_mask); int visualGreenSize = countBits(chosenVisualInfo->green_mask); diff --git a/src/gui/image/qpnghandler.cpp b/src/gui/image/qpnghandler.cpp index ea62cf8..5ee59c8 100644 --- a/src/gui/image/qpnghandler.cpp +++ b/src/gui/image/qpnghandler.cpp @@ -82,6 +82,42 @@ QT_BEGIN_NAMESPACE Never to grayscale. */ +class QPngHandlerPrivate +{ +public: + enum State { + Ready, + ReadHeader, + ReadingEnd, + Error + }; + + QPngHandlerPrivate(QPngHandler *qq) + : gamma(0.0), quality(2), png_ptr(0), info_ptr(0), + end_info(0), row_pointers(0), state(Ready), q(qq) + { } + + float gamma; + int quality; + QString description; + QStringList readTexts; + + png_struct *png_ptr; + png_info *info_ptr; + png_info *end_info; + png_byte **row_pointers; + + bool readPngHeader(); + bool readPngImage(QImage *image); + + QImage::Format readImageFormat(); + + State state; + + QPngHandler *q; +}; + + #if defined(Q_C_CALLBACKS) extern "C" { #endif @@ -118,7 +154,16 @@ private: static void CALLBACK_CALL_TYPE iod_read_fn(png_structp png_ptr, png_bytep data, png_size_t length) { - QIODevice *in = (QIODevice *)png_get_io_ptr(png_ptr); + QPngHandlerPrivate *d = (QPngHandlerPrivate *)png_get_io_ptr(png_ptr); + QIODevice *in = d->q->device(); + + if (d->state == QPngHandlerPrivate::ReadingEnd && !in->isSequential() && (in->size() - in->pos()) < 4 && length == 4) { + // Workaround for certain malformed PNGs that lack the final crc bytes + uchar endcrc[4] = { 0xae, 0x42, 0x60, 0x82 }; + qMemCopy(data, endcrc, 4); + in->seek(in->size()); + return; + } while (length) { int nr = in->read((char*)data, length); @@ -314,40 +359,6 @@ static void CALLBACK_CALL_TYPE qt_png_warning(png_structp /*png_ptr*/, png_const } #endif -class QPngHandlerPrivate -{ -public: - enum State { - Ready, - ReadHeader, - Error - }; - - QPngHandlerPrivate(QPngHandler *qq) - : gamma(0.0), quality(2), png_ptr(0), info_ptr(0), - end_info(0), row_pointers(0), state(Ready), q(qq) - { } - - float gamma; - int quality; - QString description; - QStringList readTexts; - - png_struct *png_ptr; - png_info *info_ptr; - png_info *end_info; - png_byte **row_pointers; - - bool readPngHeader(); - bool readPngImage(QImage *image); - - QImage::Format readImageFormat(); - - State state; - - QPngHandler *q; -}; - /*! \internal */ @@ -380,7 +391,7 @@ bool Q_INTERNAL_WIN_NO_THROW QPngHandlerPrivate::readPngHeader() return false; } - png_set_read_fn(png_ptr, q->device(), iod_read_fn); + png_set_read_fn(png_ptr, this, iod_read_fn); png_read_info(png_ptr, info_ptr); #ifndef QT_NO_IMAGE_TEXT @@ -484,6 +495,7 @@ bool Q_INTERNAL_WIN_NO_THROW QPngHandlerPrivate::readPngImage(QImage *outImage) for (int i = 0; i < readTexts.size()-1; i+=2) outImage->setText(readTexts.at(i), readTexts.at(i+1)); + state = ReadingEnd; png_read_end(png_ptr, end_info); png_destroy_read_struct(&png_ptr, &info_ptr, &end_info); delete [] row_pointers; diff --git a/src/gui/itemviews/qabstractitemview.cpp b/src/gui/itemviews/qabstractitemview.cpp index f2d8303..f7122d6 100644 --- a/src/gui/itemviews/qabstractitemview.cpp +++ b/src/gui/itemviews/qabstractitemview.cpp @@ -862,7 +862,7 @@ QVariant QAbstractItemView::inputMethodQuery(Qt::InputMethodQuery query) const deleted. QAbstractItemView does not take ownership of \a delegate. \note If a delegate has been assigned to both a row and a column, the row - delegate (i.e., this delegate) will take presedence and manage the + delegate (i.e., this delegate) will take precedence and manage the intersecting cell index. \warning You should not share the same instance of a delegate between views. @@ -920,7 +920,7 @@ QAbstractItemDelegate *QAbstractItemView::itemDelegateForRow(int row) const deleted. QAbstractItemView does not take ownership of \a delegate. \note If a delegate has been assigned to both a row and a column, the row - delegate will take presedence and manage the intersecting cell index. + delegate will take precedence and manage the intersecting cell index. \warning You should not share the same instance of a delegate between views. Doing so can cause incorrect or unintuitive editing behavior since each diff --git a/src/gui/itemviews/qstandarditemmodel.cpp b/src/gui/itemviews/qstandarditemmodel.cpp index 767b5a9..7d20bbb 100644 --- a/src/gui/itemviews/qstandarditemmodel.cpp +++ b/src/gui/itemviews/qstandarditemmodel.cpp @@ -1130,7 +1130,7 @@ Qt::ItemFlags QStandardItem::flags() const meaning that the user can interact with the item; if \a enabled is false, the user cannot interact with the item. - This flag takes presedence over the other item flags; e.g. if an item is not + This flag takes precedence over the other item flags; e.g. if an item is not enabled, it cannot be selected by the user, even if the Qt::ItemIsSelectable flag has been set. diff --git a/src/gui/painting/qemulationpaintengine.cpp b/src/gui/painting/qemulationpaintengine.cpp index 0510b10..714d5de 100644 --- a/src/gui/painting/qemulationpaintengine.cpp +++ b/src/gui/painting/qemulationpaintengine.cpp @@ -268,6 +268,15 @@ void QEmulationPaintEngine::setState(QPainterState *s) real_engine->setState(s); } +void QEmulationPaintEngine::beginNativePainting() +{ + real_engine->beginNativePainting(); +} + +void QEmulationPaintEngine::endNativePainting() +{ + real_engine->endNativePainting(); +} void QEmulationPaintEngine::fillBGRect(const QRectF &r) { diff --git a/src/gui/painting/qemulationpaintengine_p.h b/src/gui/painting/qemulationpaintengine_p.h index 5835f10..e283645 100644 --- a/src/gui/painting/qemulationpaintengine_p.h +++ b/src/gui/painting/qemulationpaintengine_p.h @@ -93,6 +93,9 @@ public: virtual void setState(QPainterState *s); + virtual void beginNativePainting(); + virtual void endNativePainting(); + virtual uint flags() const {return QPaintEngineEx::IsEmulationEngine | QPaintEngineEx::DoNotEmulate;} inline QPainterState *state() { return (QPainterState *)QPaintEngine::state; } diff --git a/src/gui/painting/qpdf.cpp b/src/gui/painting/qpdf.cpp index 45af03a..f5f7c3c 100644 --- a/src/gui/painting/qpdf.cpp +++ b/src/gui/painting/qpdf.cpp @@ -1389,7 +1389,7 @@ int QPdfBaseEngine::metric(QPaintDevice::PaintDeviceMetric metricType) const void QPdfBaseEngine::setProperty(PrintEnginePropertyKey key, const QVariant &value) { Q_D(QPdfBaseEngine); - switch (key) { + switch (int(key)) { case PPK_CollateCopies: d->collate = value.toBool(); break; @@ -1479,7 +1479,7 @@ QVariant QPdfBaseEngine::property(PrintEnginePropertyKey key) const Q_D(const QPdfBaseEngine); QVariant ret; - switch (key) { + switch (int(key)) { case PPK_CollateCopies: ret = d->collate; break; diff --git a/src/gui/painting/qtextureglyphcache.cpp b/src/gui/painting/qtextureglyphcache.cpp index de59524..3cacc20 100644 --- a/src/gui/painting/qtextureglyphcache.cpp +++ b/src/gui/painting/qtextureglyphcache.cpp @@ -225,7 +225,7 @@ bool QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const // no room on the current line, start new glyph strip m_cx = 0; m_cy += m_currentRowHeight + paddingDoubled; - m_currentRowHeight = 0; // New row + m_currentRowHeight = c.h + margin * 2; // New row } } diff --git a/src/gui/styles/qs60style_s60.cpp b/src/gui/styles/qs60style_s60.cpp index 7b75d40..92f53ff 100644 --- a/src/gui/styles/qs60style_s60.cpp +++ b/src/gui/styles/qs60style_s60.cpp @@ -698,7 +698,7 @@ void QS60StylePrivate::deleteStoredSettings() { QSettings settings(QSettings::UserScope, QLatin1String("Trolltech")); settings.beginGroup(QLatin1String("QS60Style")); - settings.remove(""); + settings.remove(QString()); settings.endGroup(); } @@ -717,7 +717,6 @@ QColor QS60StylePrivate::colorFromFrameGraphics(SkinFrameElements frame) const QT_TRAP_THROWING( CRepository *themeRepository = CRepository::NewLC(personalisationUID); if (themeRepository) { - static const TInt KThemePkgIDDesSize = 23; //size of the stored theme package ID TBuf<32> value; //themeID is currently max of 8 + 1 + 8 characters, but lets have some extra space const TUint32 key = 0x00000002; //active theme key in the repository error = themeRepository->Get(key, value); @@ -747,7 +746,7 @@ QColor QS60StylePrivate::colorFromFrameGraphics(SkinFrameElements frame) const return storedColor; } } - settings.remove(""); //if color was invalid, or theme has been changed, just delete all stored settings + settings.remove(QString()); //if color was invalid, or theme has been changed, just delete all stored settings } } #endif diff --git a/src/gui/text/qtextformat.cpp b/src/gui/text/qtextformat.cpp index ffa0ebc..945b012 100644 --- a/src/gui/text/qtextformat.cpp +++ b/src/gui/text/qtextformat.cpp @@ -265,10 +265,18 @@ private: friend QDataStream &operator>>(QDataStream &, QTextFormat &); }; -// this is only safe if sizeof(int) == sizeof(float) +// this is only safe because sizeof(int) == sizeof(float) static inline uint hash(float d) { +#ifdef Q_CC_GNU + // this is a GCC extension and isn't guaranteed to work in other compilers + // the reinterpret_cast below generates a strict-aliasing warning with GCC + union { float f; uint u; } cvt; + cvt.f = d; + return cvt.u; +#else return reinterpret_cast<uint&>(d); +#endif } static inline uint hash(const QColor &color) diff --git a/src/imports/folderlistmodel/qdeclarativefolderlistmodel.cpp b/src/imports/folderlistmodel/qdeclarativefolderlistmodel.cpp index abab33c..9c71004 100644 --- a/src/imports/folderlistmodel/qdeclarativefolderlistmodel.cpp +++ b/src/imports/folderlistmodel/qdeclarativefolderlistmodel.cpp @@ -279,7 +279,7 @@ void QDeclarativeFolderListModel::classBegin() void QDeclarativeFolderListModel::componentComplete() { - if (!d->folder.isValid() || !QDir().exists(d->folder.toLocalFile())) + if (!d->folder.isValid() || d->folder.toLocalFile().isEmpty() || !QDir().exists(d->folder.toLocalFile())) setFolder(QUrl(QLatin1String("file://")+QDir::currentPath())); if (!d->folderIndex.isValid()) diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp index a1c7cf1..1d38690 100644 --- a/src/network/access/qhttpnetworkconnection.cpp +++ b/src/network/access/qhttpnetworkconnection.cpp @@ -855,12 +855,17 @@ QHttpNetworkReply* QHttpNetworkConnection::sendRequest(const QHttpNetworkRequest return d->queueRequest(request); } -bool QHttpNetworkConnection::isEncrypted() const +bool QHttpNetworkConnection::isSsl() const { Q_D(const QHttpNetworkConnection); return d->encrypt; } +QHttpNetworkConnectionChannel *QHttpNetworkConnection::channels() const +{ + return d_func()->channels; +} + #ifndef QT_NO_NETWORKPROXY void QHttpNetworkConnection::setCacheProxy(const QNetworkProxy &networkProxy) { diff --git a/src/network/access/qhttpnetworkconnection_p.h b/src/network/access/qhttpnetworkconnection_p.h index 8461426c..9f23cbf 100644 --- a/src/network/access/qhttpnetworkconnection_p.h +++ b/src/network/access/qhttpnetworkconnection_p.h @@ -108,7 +108,9 @@ public: QNetworkProxy transparentProxy() const; #endif - bool isEncrypted() const; + bool isSsl() const; + + QHttpNetworkConnectionChannel *channels() const; #ifndef QT_NO_OPENSSL void setSslConfiguration(const QSslConfiguration &config); diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp index fe5946a..dc0109d 100644 --- a/src/network/access/qhttpnetworkconnectionchannel.cpp +++ b/src/network/access/qhttpnetworkconnectionchannel.cpp @@ -179,7 +179,6 @@ bool QHttpNetworkConnectionChannel::sendRequest() replyPrivate->autoDecompress = request.d->autoDecompress; replyPrivate->pipeliningUsed = false; - pendingEncrypt = false; // if the url contains authentication parameters, use the new ones // both channels will use the new authentication parameters if (!request.url().userInfo().isEmpty() && request.withCredentials()) { @@ -1047,6 +1046,7 @@ void QHttpNetworkConnectionChannel::_q_encrypted() if (!socket) return; // ### error state = QHttpNetworkConnectionChannel::IdleState; + pendingEncrypt = false; sendRequest(); } diff --git a/src/network/access/qhttpnetworkconnectionchannel_p.h b/src/network/access/qhttpnetworkconnectionchannel_p.h index 07bb4a6..968dbd8 100644 --- a/src/network/access/qhttpnetworkconnectionchannel_p.h +++ b/src/network/access/qhttpnetworkconnectionchannel_p.h @@ -157,6 +157,8 @@ public: bool isSocketWaiting() const; bool isSocketReading() const; + friend class QNetworkAccessHttpBackend; + protected slots: void _q_receiveReply(); void _q_bytesWritten(qint64 bytes); // proceed sending diff --git a/src/network/access/qhttpnetworkreply.cpp b/src/network/access/qhttpnetworkreply.cpp index 3e98dcc..f57830d 100644 --- a/src/network/access/qhttpnetworkreply.cpp +++ b/src/network/access/qhttpnetworkreply.cpp @@ -189,6 +189,12 @@ QByteArray QHttpNetworkReply::readAny() return d->responseData.read(); } +QByteArray QHttpNetworkReply::readAll() +{ + Q_D(QHttpNetworkReply); + return d->responseData.readAll(); +} + void QHttpNetworkReply::setDownstreamLimited(bool dsl) { Q_D(QHttpNetworkReply); diff --git a/src/network/access/qhttpnetworkreply_p.h b/src/network/access/qhttpnetworkreply_p.h index 65d1887..555e5ab 100644 --- a/src/network/access/qhttpnetworkreply_p.h +++ b/src/network/access/qhttpnetworkreply_p.h @@ -126,6 +126,7 @@ public: qint64 bytesAvailable() const; qint64 bytesAvailableNextBlock() const; QByteArray readAny(); + QByteArray readAll(); void setDownstreamLimited(bool t); bool supportsUserProvidedDownloadBuffer(); diff --git a/src/network/access/qnetworkaccessbackend.cpp b/src/network/access/qnetworkaccessbackend.cpp index d4ecf43..d5fb753 100644 --- a/src/network/access/qnetworkaccessbackend.cpp +++ b/src/network/access/qnetworkaccessbackend.cpp @@ -142,6 +142,7 @@ void QNetworkAccessBackend::emitReplyUploadProgress(qint64 bytesSent, qint64 byt QNetworkAccessBackend::QNetworkAccessBackend() : manager(0) , reply(0) + , synchronous(false) { } diff --git a/src/network/access/qnetworkaccessbackend_p.h b/src/network/access/qnetworkaccessbackend_p.h index b9a832e..9ecc3ee 100644 --- a/src/network/access/qnetworkaccessbackend_p.h +++ b/src/network/access/qnetworkaccessbackend_p.h @@ -157,6 +157,9 @@ public: QVariant attribute(QNetworkRequest::Attribute code) const; void setAttribute(QNetworkRequest::Attribute code, const QVariant &value); + bool isSynchronous() { return synchronous; } + void setSynchronous(bool sync) { synchronous = sync; } + // return true if the QNonContiguousByteDevice of the upload // data needs to support reset(). Currently needed for HTTP. // This will possibly enable buffering of the upload data. @@ -166,6 +169,8 @@ public: virtual bool canResume() const { return false; } virtual void setResumeOffset(quint64 offset) { Q_UNUSED(offset); } + virtual bool processRequestSynchronously() { return false; } + protected: // Create the device used for reading the upload data QNonContiguousByteDevice* createUploadByteDevice(); @@ -204,6 +209,7 @@ private: friend class QNetworkReplyImplPrivate; QNetworkAccessManagerPrivate *manager; QNetworkReplyImplPrivate *reply; + bool synchronous; }; class QNetworkAccessBackendFactory diff --git a/src/network/access/qnetworkaccessdatabackend_p.h b/src/network/access/qnetworkaccessdatabackend_p.h index a7c63d5..0e5a494 100644 --- a/src/network/access/qnetworkaccessdatabackend_p.h +++ b/src/network/access/qnetworkaccessdatabackend_p.h @@ -68,6 +68,8 @@ public: virtual void closeUpstreamChannel(); virtual bool waitForDownstreamReadyRead(int msecs); virtual bool waitForUpstreamBytesWritten(int msecs); + + virtual bool processRequestSynchronously(); }; class QNetworkAccessDataBackendFactory: public QNetworkAccessBackendFactory diff --git a/src/network/access/qnetworkaccesshttpbackend.cpp b/src/network/access/qnetworkaccesshttpbackend.cpp index 3c41d85..ab2fd96 100644 --- a/src/network/access/qnetworkaccesshttpbackend.cpp +++ b/src/network/access/qnetworkaccesshttpbackend.cpp @@ -50,6 +50,7 @@ #include "qnetworkrequest_p.h" #include "qnetworkcookie_p.h" #include "QtCore/qdatetime.h" +#include "QtCore/qelapsedtimer.h" #include "QtNetwork/qsslconfiguration.h" #ifndef QT_NO_HTTP @@ -318,7 +319,10 @@ void QNetworkAccessHttpBackend::disconnectFromHttp() // Get the object cache that stores our QHttpNetworkConnection objects QNetworkAccessCache *cache = QNetworkAccessManagerPrivate::getObjectCache(this); - cache->releaseEntry(cacheKey); + + // synchronous calls are not put into the cache, so for them the key is empty + if (!cacheKey.isEmpty()) + cache->releaseEntry(cacheKey); } // This is abut disconnecting signals, not about disconnecting TCP connections @@ -643,34 +647,49 @@ void QNetworkAccessHttpBackend::open() if (transparentProxy.type() == QNetworkProxy::DefaultProxy && cacheProxy.type() == QNetworkProxy::DefaultProxy) { // unsuitable proxies - QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, - Q_ARG(QNetworkReply::NetworkError, QNetworkReply::ProxyNotFoundError), - Q_ARG(QString, tr("No suitable proxy found"))); - QMetaObject::invokeMethod(this, "finished", Qt::QueuedConnection); - return; + if (isSynchronous()) { + error(QNetworkReply::ProxyNotFoundError, tr("No suitable proxy found")); + finished(); + } else { + QMetaObject::invokeMethod(this, "error", Qt::QueuedConnection, + Q_ARG(QNetworkReply::NetworkError, QNetworkReply::ProxyNotFoundError), + Q_ARG(QString, tr("No suitable proxy found"))); + QMetaObject::invokeMethod(this, "finished", Qt::QueuedConnection); + } + return; } #endif - // check if we have an open connection to this host - cacheKey = makeCacheKey(this, theProxy); - QNetworkAccessCache *cache = QNetworkAccessManagerPrivate::getObjectCache(this); - // the http object is actually a QHttpNetworkConnection - http = static_cast<QNetworkAccessCachedHttpConnection *>(cache->requestEntryNow(cacheKey)); - if (http == 0) { - // no entry in cache; create an object - // the http object is actually a QHttpNetworkConnection - http = new QNetworkAccessCachedHttpConnection(url.host(), url.port(), encrypt); - + if (isSynchronous()) { + // for synchronous requests, we just create a new connection + http = new QHttpNetworkConnection(1, url.host(), url.port(), encrypt, this); #ifndef QT_NO_NETWORKPROXY http->setTransparentProxy(transparentProxy); http->setCacheProxy(cacheProxy); #endif + postRequest(); + processRequestSynchronously(); + } else { + // check if we have an open connection to this host + cacheKey = makeCacheKey(this, theProxy); + QNetworkAccessCache *cache = QNetworkAccessManagerPrivate::getObjectCache(this); + // the http object is actually a QHttpNetworkConnection + http = static_cast<QNetworkAccessCachedHttpConnection *>(cache->requestEntryNow(cacheKey)); + if (http == 0) { + // no entry in cache; create an object + // the http object is actually a QHttpNetworkConnection + http = new QNetworkAccessCachedHttpConnection(url.host(), url.port(), encrypt); - // cache the QHttpNetworkConnection corresponding to this cache key - cache->addEntry(cacheKey, http); - } +#ifndef QT_NO_NETWORKPROXY + http->setTransparentProxy(transparentProxy); + http->setCacheProxy(cacheProxy); +#endif - postRequest(); + // cache the QHttpNetworkConnection corresponding to this cache key + cache->addEntry(cacheKey, static_cast<QNetworkAccessCachedHttpConnection *>(http.data())); + } + postRequest(); + } } void QNetworkAccessHttpBackend::closeDownstreamChannel() @@ -1158,6 +1177,87 @@ void QNetworkAccessHttpBackend::setResumeOffset(quint64 offset) resumeOffset = offset; } +bool QNetworkAccessHttpBackend::processRequestSynchronously() +{ + QHttpNetworkConnectionChannel *channel = &http->channels()[0]; + + // Disconnect all socket signals. They will only confuse us when using waitFor* + QObject::disconnect(channel->socket, 0, 0, 0); + + qint64 timeout = 20*1000; // 20 sec + QElapsedTimer timeoutTimer; + + bool waitResult = channel->socket->waitForConnected(timeout); + timeoutTimer.start(); + + if (!waitResult || channel->socket->state() != QAbstractSocket::ConnectedState) { + error(QNetworkReply::UnknownNetworkError, QLatin1String("could not connect")); + return false; + } + channel->_q_connected(); // this will send the request (via sendRequest()) + +#ifndef QT_NO_OPENSSL + if (http->isSsl()) { + qint64 remainingTimeEncrypted = timeout - timeoutTimer.elapsed(); + if (!static_cast<QSslSocket *>(channel->socket)->waitForEncrypted(remainingTimeEncrypted)) { + error(QNetworkReply::SslHandshakeFailedError, + QLatin1String("could not encrypt or timeout while encrypting")); + return false; + } + channel->_q_encrypted(); + } +#endif + + // if we get a 401 or 407, we might need to send the request twice, see below + bool authenticating = false; + + do { + channel->sendRequest(); + + qint64 remainingTimeBytesWritten; + while(channel->socket->bytesToWrite() > 0 || + channel->state == QHttpNetworkConnectionChannel::WritingState) { + remainingTimeBytesWritten = timeout - timeoutTimer.elapsed(); + channel->sendRequest(); // triggers channel->socket->write() + if (!channel->socket->waitForBytesWritten(remainingTimeBytesWritten)) { + error(QNetworkReply::TimeoutError, + QLatin1String("could not write bytes to socket or timeout while writing")); + return false; + } + } + + qint64 remainingTimeBytesRead = timeout - timeoutTimer.elapsed(); + // Loop for at most remainingTime until either the socket disconnects + // or the reply is finished + do { + waitResult = channel->socket->waitForReadyRead(remainingTimeBytesRead); + remainingTimeBytesRead = timeout - timeoutTimer.elapsed(); + if (!waitResult || remainingTimeBytesRead <= 0 + || channel->socket->state() != QAbstractSocket::ConnectedState) { + error(QNetworkReply::TimeoutError, + QLatin1String("could not read from socket or timeout while reading")); + return false; + } + + if (channel->socket->bytesAvailable()) + channel->_q_readyRead(); + + if (!httpReply) + return false; // we got a 401 or 407 and cannot handle it (it might happen that + // disconnectFromHttp() was called, in that case the reply is zero) + // ### I am quite sure this does not work for NTLM + // ### how about uploading to an auth / proxyAuth site? + + authenticating = (httpReply->statusCode() == 401 || httpReply->statusCode() == 407); + + if (httpReply->isFinished()) + break; + } while (remainingTimeBytesRead > 0); + } while (authenticating); + + return true; +} + QT_END_NAMESPACE #endif // QT_NO_HTTP diff --git a/src/network/access/qnetworkaccesshttpbackend_p.h b/src/network/access/qnetworkaccesshttpbackend_p.h index fd3b2ec..462f435 100644 --- a/src/network/access/qnetworkaccesshttpbackend_p.h +++ b/src/network/access/qnetworkaccesshttpbackend_p.h @@ -99,6 +99,8 @@ public: bool canResume() const; void setResumeOffset(quint64 offset); + virtual bool processRequestSynchronously(); + private slots: void replyReadyRead(); void replyFinished(); @@ -112,7 +114,7 @@ private slots: private: QHttpNetworkReply *httpReply; - QPointer<QNetworkAccessCachedHttpConnection> http; + QPointer<QHttpNetworkConnection> http; QByteArray cacheKey; QNetworkAccessBackendUploadIODevice *uploadDevice; diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp index 97e7928..bec217b 100644 --- a/src/network/access/qnetworkaccessmanager.cpp +++ b/src/network/access/qnetworkaccessmanager.cpp @@ -1049,12 +1049,14 @@ QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Opera priv->backend->setParent(reply); priv->backend->reply = priv; } - // fourth step: setup the reply - priv->setup(op, request, outgoingData); #ifndef QT_NO_OPENSSL reply->setSslConfiguration(request.sslConfiguration()); #endif + + // fourth step: setup the reply + priv->setup(op, request, outgoingData); + return reply; } @@ -1130,6 +1132,11 @@ void QNetworkAccessManagerPrivate::authenticationRequired(QNetworkAccessBackend } } + // if we emit a signal here in synchronous mode, the user might spin + // an event loop, which might recurse and lead to problems + if (backend->isSynchronous()) + return; + backend->reply->urlForLastAuthentication = url; emit q->authenticationRequired(backend->reply->q_func(), authenticator); cacheCredentials(url, authenticator); @@ -1157,6 +1164,11 @@ void QNetworkAccessManagerPrivate::proxyAuthenticationRequired(QNetworkAccessBac } } + // if we emit a signal here in synchronous mode, the user might spin + // an event loop, which might recurse and lead to problems + if (backend->isSynchronous()) + return; + backend->reply->lastProxyAuthentication = proxy; emit q->proxyAuthenticationRequired(proxy, authenticator); cacheProxyCredentials(proxy, authenticator); diff --git a/src/network/access/qnetworkreplyimpl.cpp b/src/network/access/qnetworkreplyimpl.cpp index 010e904..feb869b 100644 --- a/src/network/access/qnetworkreplyimpl.cpp +++ b/src/network/access/qnetworkreplyimpl.cpp @@ -91,7 +91,7 @@ void QNetworkReplyImplPrivate::_q_startOperation() } #ifndef QT_NO_BEARERMANAGEMENT - if (!backend->start()) { + if (!backend->start()) { // ### we should call that method even if bearer is not used // backend failed to start because the session state is not Connected. // QNetworkAccessManager will call reply->backend->start() again for us when the session // state changes. @@ -115,11 +115,15 @@ void QNetworkReplyImplPrivate::_q_startOperation() } #endif - if (state != Finished) { - if (operation == QNetworkAccessManager::GetOperation) - pendingNotifications.append(NotifyDownstreamReadyWrite); + if (backend->isSynchronous()) { + state = Finished; + } else { + if (state != Finished) { + if (operation == QNetworkAccessManager::GetOperation) + pendingNotifications.append(NotifyDownstreamReadyWrite); - handleNotifications(); + handleNotifications(); + } } } @@ -297,7 +301,25 @@ void QNetworkReplyImplPrivate::setup(QNetworkAccessManager::Operation op, const url = request.url(); operation = op; - if (outgoingData && backend) { + q->QIODevice::open(QIODevice::ReadOnly); + // Internal code that does a HTTP reply for the synchronous Ajax + // in QtWebKit. + QVariant synchronousHttpAttribute = req.attribute( + static_cast<QNetworkRequest::Attribute>(QNetworkRequest::DownloadBufferAttribute + 1)); + if (synchronousHttpAttribute.toBool()) { + backend->setSynchronous(true); + if (outgoingData && outgoingData->isSequential()) { + outgoingDataBuffer = new QRingBuffer(); + QByteArray data; + do { + data = outgoingData->readAll(); + if (data.isEmpty()) + break; + outgoingDataBuffer->append(data); + } while (1); + } + } + if (outgoingData && backend && !backend->isSynchronous()) { // there is data to be uploaded, e.g. HTTP POST. if (!backend->needsResetableUploadData() || !outgoingData->isSequential()) { @@ -308,7 +330,7 @@ void QNetworkReplyImplPrivate::setup(QNetworkAccessManager::Operation op, const } else { bool bufferingDisallowed = req.attribute(QNetworkRequest::DoNotBufferUploadDataAttribute, - false).toBool(); + false).toBool(); if (bufferingDisallowed) { // if a valid content-length header for the request was supplied, we can disable buffering @@ -333,17 +355,18 @@ void QNetworkReplyImplPrivate::setup(QNetworkAccessManager::Operation op, const // for HTTP, we want to send out the request as fast as possible to the network, without // invoking methods in a QueuedConnection #ifndef QT_NO_HTTP - if (qobject_cast<QNetworkAccessHttpBackend *>(backend)) { + if (qobject_cast<QNetworkAccessHttpBackend *>(backend) || (backend && backend->isSynchronous())) { _q_startOperation(); } else { QMetaObject::invokeMethod(q, "_q_startOperation", Qt::QueuedConnection); } #else - QMetaObject::invokeMethod(q, "_q_startOperation", Qt::QueuedConnection); + if (backend->isSynchronous()) + _q_startOperation(); + else + QMetaObject::invokeMethod(q, "_q_startOperation", Qt::QueuedConnection); #endif // QT_NO_HTTP - } - - q->QIODevice::open(QIODevice::ReadOnly); + } } void QNetworkReplyImplPrivate::backendNotify(InternalNotifications notification) diff --git a/src/network/access/qnetworkrequest.h b/src/network/access/qnetworkrequest.h index cdadf0f..9bcc900 100644 --- a/src/network/access/qnetworkrequest.h +++ b/src/network/access/qnetworkrequest.h @@ -85,6 +85,9 @@ public: MaximumDownloadBufferSizeAttribute, // internal DownloadBufferAttribute, // internal + // (DownloadBufferAttribute + 1) is reserved internal for QSynchronousHttpNetworkReply + // add the enum in 4.8 + User = 1000, UserMax = 32767 }; diff --git a/src/network/socket/qlocalsocket_win.cpp b/src/network/socket/qlocalsocket_win.cpp index 1e0bced..5b42578 100644 --- a/src/network/socket/qlocalsocket_win.cpp +++ b/src/network/socket/qlocalsocket_win.cpp @@ -322,9 +322,9 @@ bool QLocalSocketPrivate::completeAsyncRead() // buffer. We will read the remaining data in the next call. break; case ERROR_PIPE_NOT_CONNECTED: - setErrorString(QLatin1String("QLocalSocketPrivate::completeAsyncRead")); - // fall through + return false; default: + setErrorString(QLatin1String("QLocalSocketPrivate::completeAsyncRead")); return false; } } diff --git a/src/network/ssl/qsslcertificate.cpp b/src/network/ssl/qsslcertificate.cpp index a3ea555..275c7be 100644 --- a/src/network/ssl/qsslcertificate.cpp +++ b/src/network/ssl/qsslcertificate.cpp @@ -716,7 +716,7 @@ QSslCertificate QSslCertificatePrivate::QSslCertificate_from_X509(X509 *x509) static bool matchLineFeed(const QByteArray &pem, int *offset) { - char ch; + char ch = 0; // ignore extra whitespace at the end of the line while (*offset < pem.size() && (ch = pem.at(*offset)) == ' ') diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp index dc7a333..8b31849 100644 --- a/src/opengl/qgl.cpp +++ b/src/opengl/qgl.cpp @@ -2125,7 +2125,9 @@ void QGLContextPrivate::cleanup() void QGLContextPrivate::setVertexAttribArrayEnabled(int arrayIndex, bool enabled) { Q_ASSERT(arrayIndex < QT_GL_VERTEX_ARRAY_TRACKED_COUNT); +#ifdef glEnableVertexAttribArray Q_ASSERT(glEnableVertexAttribArray); +#endif if (vertexAttributeArraysEnabledState[arrayIndex] && !enabled) glDisableVertexAttribArray(arrayIndex); @@ -2138,7 +2140,9 @@ void QGLContextPrivate::setVertexAttribArrayEnabled(int arrayIndex, bool enabled void QGLContextPrivate::syncGlState() { +#ifdef glEnableVertexAttribArray Q_ASSERT(glEnableVertexAttribArray); +#endif for (int i = 0; i < QT_GL_VERTEX_ARRAY_TRACKED_COUNT; ++i) { if (vertexAttributeArraysEnabledState[i]) glEnableVertexAttribArray(i); diff --git a/src/opengl/qgl_x11egl.cpp b/src/opengl/qgl_x11egl.cpp index 21b1ab6..b323d29 100644 --- a/src/opengl/qgl_x11egl.cpp +++ b/src/opengl/qgl_x11egl.cpp @@ -345,7 +345,7 @@ void QGLWidgetPrivate::recreateEglSurface() // old surface before re-creating a new one. Note: This should not be the case as the // surface should be deleted before the old window id. if (glcx->d_func()->eglSurface != EGL_NO_SURFACE && (currentId != eglSurfaceWindowId)) { - qWarning("EGL surface for deleted window %lx was not destroyed", eglSurfaceWindowId); + qWarning("EGL surface for deleted window %lx was not destroyed", uint(eglSurfaceWindowId)); glcx->d_func()->destroyEglSurfaceForDevice(); } diff --git a/src/opengl/qglpixelbuffer_egl.cpp b/src/opengl/qglpixelbuffer_egl.cpp index 0b94f5a..2d9f6f1 100644 --- a/src/opengl/qglpixelbuffer_egl.cpp +++ b/src/opengl/qglpixelbuffer_egl.cpp @@ -74,7 +74,6 @@ bool QGLPixelBufferPrivate::init(const QSize &size, const QGLFormat &f, QGLWidge // Use the same configuration as the widget we are sharing with. ctx->setConfig(shareContext->config()); #if QGL_RENDER_TEXTURE - EGLint value = EGL_FALSE; if (ctx->configAttrib(EGL_BIND_TO_TEXTURE_RGBA) == EGL_TRUE) textureFormat = EGL_TEXTURE_RGBA; else if (ctx->configAttrib(EGL_BIND_TO_TEXTURE_RGB) == EGL_TRUE) diff --git a/src/plugins/bearer/connman/qconnmanengine.cpp b/src/plugins/bearer/connman/qconnmanengine.cpp index 184ceb4..7f3501e 100644 --- a/src/plugins/bearer/connman/qconnmanengine.cpp +++ b/src/plugins/bearer/connman/qconnmanengine.cpp @@ -726,6 +726,7 @@ void QConnmanEngine::addNetworkConfiguration(const QString &networkPath) if(servicePath.isEmpty()) { id = QString::number(qHash(networkPath)); + serv = 0; } else { id = QString::number(qHash(servicePath)); serv = new QConnmanServiceInterface(servicePath,this); diff --git a/src/plugins/bearer/connman/qconnmanservice_linux.cpp b/src/plugins/bearer/connman/qconnmanservice_linux.cpp index b66298e..98b3663 100644 --- a/src/plugins/bearer/connman/qconnmanservice_linux.cpp +++ b/src/plugins/bearer/connman/qconnmanservice_linux.cpp @@ -216,7 +216,6 @@ void QConnmanManagerInterface::registerCounter(const QString &path, quint32 inte { QDBusReply<QList<QDBusObjectPath> > reply = this->call(QLatin1String("RegisterCounter"), QVariant::fromValue(path), QVariant::fromValue(interval)); - bool ok = true; if(reply.error().type() == QDBusError::InvalidArgs) { qWarning() << reply.error().message(); } @@ -225,7 +224,6 @@ void QConnmanManagerInterface::registerCounter(const QString &path, quint32 inte void QConnmanManagerInterface::unregisterCounter(const QString &path) { QDBusReply<QList<QDBusObjectPath> > reply = this->call(QLatin1String("UnregisterCounter"), QVariant::fromValue(path)); - bool ok = true; if(reply.error().type() == QDBusError::InvalidArgs) { qWarning() << reply.error().message(); } diff --git a/src/plugins/bearer/icd/proxyconf.cpp b/src/plugins/bearer/icd/proxyconf.cpp index e5c8f4e..37501fb 100644 --- a/src/plugins/bearer/icd/proxyconf.cpp +++ b/src/plugins/bearer/icd/proxyconf.cpp @@ -142,16 +142,23 @@ QHash<QString,QVariant> GConfItemFast::getEntries() const -class NetworkProxyFactory : QNetworkProxyFactory { +class NetworkProxyFactory : QNetworkProxyFactory +{ + ProxyConf proxy_conf; + bool proxy_data_read; + public: - NetworkProxyFactory() { } + NetworkProxyFactory() : proxy_data_read(false) { } QList<QNetworkProxy> queryProxy(const QNetworkProxyQuery &query = QNetworkProxyQuery()); }; QList<QNetworkProxy> NetworkProxyFactory::queryProxy(const QNetworkProxyQuery &query) { - ProxyConf proxy_conf; + if (proxy_data_read == false) { + proxy_data_read = true; + proxy_conf.readProxyData(); + } QList<QNetworkProxy> result = proxy_conf.flush(query); if (result.isEmpty()) @@ -377,10 +384,13 @@ ProxyConf::~ProxyConf() delete d_ptr; } +void ProxyConf::readProxyData() +{ + d_ptr->readProxyData(); +} QList<QNetworkProxy> ProxyConf::flush(const QNetworkProxyQuery &query) { - d_ptr->readProxyData(); return d_ptr->flush(query); } diff --git a/src/plugins/bearer/icd/proxyconf.h b/src/plugins/bearer/icd/proxyconf.h index 884cc5c..eedbbf2 100644 --- a/src/plugins/bearer/icd/proxyconf.h +++ b/src/plugins/bearer/icd/proxyconf.h @@ -58,6 +58,7 @@ public: virtual ~ProxyConf(); QList<QNetworkProxy> flush(const QNetworkProxyQuery &query = QNetworkProxyQuery()); // read the proxies from db + void readProxyData(); /* Note that for each update() call there should be corresponding * clear() call because the ProxyConf class implements a reference diff --git a/src/xmlpatterns/data/qatomicvalue.cpp b/src/xmlpatterns/data/qatomicvalue.cpp index 700f7ea..09b75f4 100644 --- a/src/xmlpatterns/data/qatomicvalue.cpp +++ b/src/xmlpatterns/data/qatomicvalue.cpp @@ -202,7 +202,7 @@ ItemType::Ptr AtomicValue::qtToXDMType(const QXmlItem &item) Q_ASSERT(item.isAtomicValue()); const QVariant v(item.toAtomicValue()); - switch(v.type()) + switch(int(v.type())) { case QVariant::Char: /* Fallthrough. */ diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/AliasBindingsAssignCorrectlyType.qml b/tests/auto/declarative/qdeclarativeecmascript/data/AliasBindingsAssignCorrectlyType.qml new file mode 100644 index 0000000..0eda67d --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/AliasBindingsAssignCorrectlyType.qml @@ -0,0 +1,9 @@ +import QtQuick 1.0 + +QtObject { + id: root + + property real realProperty + property alias aliasProperty: root.realProperty +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/AliasBindingsOverrideTargetType.qml b/tests/auto/declarative/qdeclarativeecmascript/data/AliasBindingsOverrideTargetType.qml new file mode 100644 index 0000000..f539fb6 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/AliasBindingsOverrideTargetType.qml @@ -0,0 +1,14 @@ +import QtQuick 1.0 +import Qt.test 1.0 + +MyTypeObject { + id: root + + property int data: 7 + + property int targetProperty: root.data * 43 - root.data + property alias aliasProperty: root.targetProperty + + pointProperty: Qt.point(data, data); + property alias pointAliasProperty: root.pointProperty +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/AliasBindingsOverrideTargetType3.qml b/tests/auto/declarative/qdeclarativeecmascript/data/AliasBindingsOverrideTargetType3.qml new file mode 100644 index 0000000..a4b0527 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/AliasBindingsOverrideTargetType3.qml @@ -0,0 +1,9 @@ +import QtQuick 1.0 + +QtObject { + id: root + + property int testProperty + property alias aliasProperty: root.testProperty +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsAssignCorrectly.qml b/tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsAssignCorrectly.qml new file mode 100644 index 0000000..f0808c4 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsAssignCorrectly.qml @@ -0,0 +1,59 @@ +import QtQuick 1.0 + +Item { + id: root + + property bool test: false + + property real testData: 9 + property real testData2: 9 + + states: State { + name: "change" + PropertyChanges { + target: myType + realProperty: if (testData2 > 3) 9; else 11; + } + } + + AliasBindingsAssignCorrectlyType { + id: myType + + aliasProperty: if (testData > 3) 14; else 12; + } + + Component.onCompleted: { + // Check original binding works + if (myType.aliasProperty != 14) return; + + testData = 2; + if (myType.aliasProperty != 12) return; + + // Change binding indirectly by modifying the "realProperty" + root.state = "change"; + if (myType.aliasProperty != 9) return; + + // Check the new binding works + testData2 = 1; + if (myType.aliasProperty != 11) return; + + // Try and trigger the old binding (that should have been removed) + testData = 6; + if (myType.aliasProperty != 11) return; + + // Restore the original binding + root.state = ""; + if (myType.aliasProperty != 14) return; + + // Test the restored binding works + testData = 0; + if (myType.aliasProperty != 12) return; + + // Test the old binding isn't somehow hanging around and still in effect + testData2 = 13; + if (myType.aliasProperty != 12) return; + + test = true; + } +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsOverrideTarget.2.qml b/tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsOverrideTarget.2.qml new file mode 100644 index 0000000..4f07cbf --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsOverrideTarget.2.qml @@ -0,0 +1,29 @@ +import QtQuick 1.0 + +Item { + id: me + property bool test: false + + property int value: 9 + + AliasBindingsOverrideTargetType { + id: aliasType + pointAliasProperty.x: me.value + } + + Component.onCompleted: { + if (aliasType.pointAliasProperty.x != 9) return; + + me.value = 11; + if (aliasType.pointAliasProperty.x != 11) return; + + aliasType.data = 8; + if (aliasType.pointAliasProperty.x != 11) return; + + me.value = 4; + if (aliasType.pointAliasProperty.x != 4) return; + + test = true; + } +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsOverrideTarget.3.qml b/tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsOverrideTarget.3.qml new file mode 100644 index 0000000..937ae91 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsOverrideTarget.3.qml @@ -0,0 +1,24 @@ +import QtQuick 1.0 + +Item { + id: root + property bool test: false; + + property int value1: 10 + property int value2: 11 + + AliasBindingsOverrideTargetType3 { + id: obj + + testProperty: root.value1 * 9 + aliasProperty: root.value2 * 10 + } + + Component.onCompleted: { + if (obj.testProperty != 110) return; + if (obj.aliasProperty != 110) return; + + test = true; + } +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsOverrideTarget.qml b/tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsOverrideTarget.qml new file mode 100644 index 0000000..a01dc5b --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/aliasBindingsOverrideTarget.qml @@ -0,0 +1,28 @@ +import QtQuick 1.0 + +Item { + id: me + property bool test: false + + property int value: 9 + + AliasBindingsOverrideTargetType { + id: aliasType + aliasProperty: me.value + } + + Component.onCompleted: { + if (aliasType.aliasProperty != 9) return; + + me.value = 11; + if (aliasType.aliasProperty != 11) return; + + aliasType.data = 8; + if (aliasType.aliasProperty != 11) return; + + me.value = 4; + if (aliasType.aliasProperty != 4) return; + + test = true; + } +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/aliasWritesOverrideBindings.2.qml b/tests/auto/declarative/qdeclarativeecmascript/data/aliasWritesOverrideBindings.2.qml new file mode 100644 index 0000000..5bf9f6a --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/aliasWritesOverrideBindings.2.qml @@ -0,0 +1,29 @@ +import QtQuick 1.0 + +Item { + id: me + property bool test: false + + property int value: 9 + + AliasBindingsOverrideTargetType { + id: aliasType + } + + Component.onCompleted: { + if (aliasType.aliasProperty != 294) return; + + aliasType.data = 8; + if (aliasType.aliasProperty != 336) return; + + aliasType.aliasProperty = 4; + if (aliasType.aliasProperty != 4) return; + + aliasType.data = 7; + if (aliasType.aliasProperty != 4) return; + + test = true; + } +} + + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/aliasWritesOverrideBindings.3.qml b/tests/auto/declarative/qdeclarativeecmascript/data/aliasWritesOverrideBindings.3.qml new file mode 100644 index 0000000..a23ad4a --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/aliasWritesOverrideBindings.3.qml @@ -0,0 +1,23 @@ +import QtQuick 1.0 + +Item { + id: me + property bool test: false + + property int value: 9 + + AliasBindingsOverrideTargetType { + id: aliasType + pointAliasProperty.x: 9 + } + + Component.onCompleted: { + if (aliasType.pointAliasProperty.x != 9) return; + + aliasType.data = 8; + if (aliasType.pointAliasProperty.x != 9) return; + + test = true; + } +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/aliasWritesOverrideBindings.qml b/tests/auto/declarative/qdeclarativeecmascript/data/aliasWritesOverrideBindings.qml new file mode 100644 index 0000000..ac20371 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/aliasWritesOverrideBindings.qml @@ -0,0 +1,23 @@ +import QtQuick 1.0 + +Item { + id: me + property bool test: false + + property int value: 9 + + AliasBindingsOverrideTargetType { + id: aliasType + aliasProperty: 11 + } + + Component.onCompleted: { + if (aliasType.aliasProperty != 11) return; + + aliasType.data = 8; + if (aliasType.aliasProperty != 11) return; + + test = true; + } +} + diff --git a/tests/auto/declarative/qdeclarativeecmascript/data/writeRemovesBinding.qml b/tests/auto/declarative/qdeclarativeecmascript/data/writeRemovesBinding.qml new file mode 100644 index 0000000..035f037 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeecmascript/data/writeRemovesBinding.qml @@ -0,0 +1,46 @@ +import QtQuick 1.0 + +QtObject { + id: root + + property bool test: false + + property real data: 9 + property real binding: data + + property alias aliasProperty: root.aliasBinding + property real aliasBinding: data + + Component.onCompleted: { + // Non-aliased properties + if (binding != 9) return; + + data = 11; + if (binding != 11) return; + + binding = 6; + if (binding != 6) return; + + data = 3; + if (binding != 6) return; + + + // Writing through an aliased property + if (aliasProperty != 3) return; + if (aliasBinding != 3) return; + + data = 4; + if (aliasProperty != 4) return; + if (aliasBinding != 4) return; + + aliasProperty = 19; + if (aliasProperty != 19) return; + if (aliasBinding != 19) return; + + data = 5; + if (aliasProperty != 19) return; + if (aliasBinding != 19) return; + + test = true; + } +} diff --git a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp index 652404c..77fab91 100644 --- a/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp +++ b/tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp @@ -135,6 +135,8 @@ private slots: void scriptConnect(); void scriptDisconnect(); void ownership(); + void cppOwnershipReturnValue(); + void ownershipCustomReturnValue(); void qlistqobjectMethods(); void strictlyEquals(); void compiled(); @@ -164,6 +166,10 @@ private slots: void in(); void sharedAttachedObject(); void objectName(); + void writeRemovesBinding(); + void aliasBindingsAssignCorrectly(); + void aliasBindingsOverrideTarget(); + void aliasWritesOverrideBindings(); void include(); @@ -741,11 +747,9 @@ void tst_qdeclarativeecmascript::constantsOverrideBindings() QVERIFY(object != 0); QCOMPARE(object->property("c1").toInt(), 0); - QEXPECT_FAIL("", "QTBUG-13719", Continue); QCOMPARE(object->property("c3").toInt(), 10); object->setProperty("c1", QVariant(9)); QCOMPARE(object->property("c1").toInt(), 9); - QEXPECT_FAIL("", "QTBUG-13719", Continue); QCOMPARE(object->property("c3").toInt(), 10); } } @@ -2098,6 +2102,87 @@ void tst_qdeclarativeecmascript::ownership() } } +class CppOwnershipReturnValue : public QObject +{ + Q_OBJECT +public: + CppOwnershipReturnValue() : value(0) {} + ~CppOwnershipReturnValue() { delete value; } + + Q_INVOKABLE QObject *create() { + Q_ASSERT(value == 0); + + value = new QObject; + QDeclarativeEngine::setObjectOwnership(value, QDeclarativeEngine::CppOwnership); + return value; + } + + Q_INVOKABLE MyQmlObject *createQmlObject() { + Q_ASSERT(value == 0); + + MyQmlObject *rv = new MyQmlObject; + value = rv; + return rv; + } + + QPointer<QObject> value; +}; + +// QTBUG-15695. +// Test setObjectOwnership(CppOwnership) works even when there is no QDeclarativeData +void tst_qdeclarativeecmascript::cppOwnershipReturnValue() +{ + CppOwnershipReturnValue source; + + { + QDeclarativeEngine engine; + engine.rootContext()->setContextProperty("source", &source); + + QVERIFY(source.value == 0); + + QDeclarativeComponent component(&engine); + component.setData("import QtQuick 1.0\nQtObject {\nComponent.onCompleted: { var a = source.create(); }\n}\n", QUrl()); + + QObject *object = component.create(); + + QVERIFY(object != 0); + QVERIFY(source.value != 0); + + delete object; + } + + QCoreApplication::instance()->processEvents(QEventLoop::DeferredDeletion); + + QVERIFY(source.value != 0); +} + +// QTBUG-15697 +void tst_qdeclarativeecmascript::ownershipCustomReturnValue() +{ + CppOwnershipReturnValue source; + + { + QDeclarativeEngine engine; + engine.rootContext()->setContextProperty("source", &source); + + QVERIFY(source.value == 0); + + QDeclarativeComponent component(&engine); + component.setData("import QtQuick 1.0\nQtObject {\nComponent.onCompleted: { var a = source.createQmlObject(); }\n}\n", QUrl()); + + QObject *object = component.create(); + + QVERIFY(object != 0); + QVERIFY(source.value != 0); + + delete object; + } + + QCoreApplication::instance()->processEvents(QEventLoop::DeferredDeletion); + + QVERIFY(source.value == 0); +} + class QListQObjectMethodsObject : public QObject { Q_OBJECT @@ -2671,6 +2756,97 @@ void tst_qdeclarativeecmascript::objectName() delete o; } +void tst_qdeclarativeecmascript::writeRemovesBinding() +{ + QDeclarativeComponent component(&engine, TEST_FILE("writeRemovesBinding.qml")); + QObject *o = component.create(); + QVERIFY(o != 0); + + QCOMPARE(o->property("test").toBool(), true); + + delete o; +} + +// Test bindings assigned to alias properties actually assign to the alias' target +void tst_qdeclarativeecmascript::aliasBindingsAssignCorrectly() +{ + QDeclarativeComponent component(&engine, TEST_FILE("aliasBindingsAssignCorrectly.qml")); + QObject *o = component.create(); + QVERIFY(o != 0); + + QCOMPARE(o->property("test").toBool(), true); + + delete o; +} + +// Test bindings assigned to alias properties override a binding on the target (QTBUG-13719) +void tst_qdeclarativeecmascript::aliasBindingsOverrideTarget() +{ + { + QDeclarativeComponent component(&engine, TEST_FILE("aliasBindingsOverrideTarget.qml")); + QObject *o = component.create(); + QVERIFY(o != 0); + + QCOMPARE(o->property("test").toBool(), true); + + delete o; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("aliasBindingsOverrideTarget.2.qml")); + QObject *o = component.create(); + QVERIFY(o != 0); + + QCOMPARE(o->property("test").toBool(), true); + + delete o; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("aliasBindingsOverrideTarget.3.qml")); + QObject *o = component.create(); + QVERIFY(o != 0); + + QCOMPARE(o->property("test").toBool(), true); + + delete o; + } +} + +// Test that writes to alias properties override bindings on the alias target (QTBUG-13719) +void tst_qdeclarativeecmascript::aliasWritesOverrideBindings() +{ + { + QDeclarativeComponent component(&engine, TEST_FILE("aliasWritesOverrideBindings.qml")); + QObject *o = component.create(); + QVERIFY(o != 0); + + QCOMPARE(o->property("test").toBool(), true); + + delete o; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("aliasWritesOverrideBindings.2.qml")); + QObject *o = component.create(); + QVERIFY(o != 0); + + QCOMPARE(o->property("test").toBool(), true); + + delete o; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("aliasWritesOverrideBindings.3.qml")); + QObject *o = component.create(); + QVERIFY(o != 0); + + QCOMPARE(o->property("test").toBool(), true); + + delete o; + } +} + QTEST_MAIN(tst_qdeclarativeecmascript) #include "tst_qdeclarativeecmascript.moc" diff --git a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp index 327bba2..7998e30 100644 --- a/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp +++ b/tests/auto/declarative/qdeclarativegridview/tst_qdeclarativegridview.cpp @@ -1263,7 +1263,7 @@ void tst_QDeclarativeGridView::header() QDeclarativeView *canvas = createView(); TestModel model; - for (int i = 0; i < 7; i++) + for (int i = 0; i < 30; i++) model.addItem("Item" + QString::number(i), ""); QDeclarativeContext *ctxt = canvas->rootContext(); diff --git a/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp b/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp index bf779ad..447210d 100644 --- a/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp +++ b/tests/auto/declarative/qdeclarativeimage/tst_qdeclarativeimage.cpp @@ -87,6 +87,7 @@ private slots: void noLoading(); void paintedWidthHeight(); void sourceSize_QTBUG_14303(); + void nullPixmapPaint(); private: template<typename T> @@ -540,6 +541,35 @@ void tst_qdeclarativeimage::sourceSize_QTBUG_14303() QTRY_COMPARE(sourceSizeSpy.count(), 2); } +static int numberOfWarnings = 0; +static void checkWarnings(QtMsgType, const char *) +{ + numberOfWarnings++; +} + +// QTBUG-15690 +void tst_qdeclarativeimage::nullPixmapPaint() +{ + QString componentStr = QString("import QtQuick 1.0\nImage { width: 10; height:10; fillMode: Image.PreserveAspectFit; source: \"") + + SERVER_ADDR + QString("/no-such-file.png\" }"); + QDeclarativeComponent component(&engine); + component.setData(componentStr.toLatin1(), QUrl::fromLocalFile("")); + QDeclarativeImage *image = qobject_cast<QDeclarativeImage*>(component.create()); + + QTRY_VERIFY(image != 0); + + QtMsgHandler previousMsgHandler = qInstallMsgHandler(checkWarnings); + + QPixmap pm(100, 100); + QPainter p(&pm); + + // used to print "QTransform::translate with NaN called" + image->paint(&p, 0, 0); + qInstallMsgHandler(previousMsgHandler); + QVERIFY(numberOfWarnings == 0); + delete image; +} + /* Find an item with the specified objectName. If index is supplied then the item must also evaluate the {index} expression equal to index diff --git a/tests/auto/declarative/qdeclarativeinstruction/tst_qdeclarativeinstruction.cpp b/tests/auto/declarative/qdeclarativeinstruction/tst_qdeclarativeinstruction.cpp index db1f191..4470d65 100644 --- a/tests/auto/declarative/qdeclarativeinstruction/tst_qdeclarativeinstruction.cpp +++ b/tests/auto/declarative/qdeclarativeinstruction/tst_qdeclarativeinstruction.cpp @@ -458,6 +458,7 @@ void tst_qdeclarativeinstruction::dump() i.type = QDeclarativeInstruction::FetchValueType; i.fetchValue.property = 34; i.fetchValue.type = 6; + i.fetchValue.bindingSkipList = 7; data->bytecode << i; } @@ -538,7 +539,7 @@ void tst_qdeclarativeinstruction::dump() << "Index\tLine\tOperation\t\tData1\tData2\tData3\tComments" << "-------------------------------------------------------------------------------" << "0\t\t0\tINIT\t\t\t0\t3\t-1\t-1" - << "1\t\t1\tCREATE\t\t\t0\t\t\t\"Test\"" + << "1\t\t1\tCREATE\t\t\t0\t-1\t\t\"Test\"" << "2\t\t2\tSETID\t\t\t0\t\t\t\"testId\"" << "3\t\t3\tSET_DEFAULT" << "4\t\t4\tCREATE_COMPONENT\t3" @@ -578,7 +579,7 @@ void tst_qdeclarativeinstruction::dump() << "38\t\t40\tFETCH_ATTACHED\t\t23" << "39\t\t42\tFETCH_QLIST\t\t32" << "40\t\t43\tFETCH\t\t\t33" - << "41\t\t44\tFETCH_VALUE\t\t34\t6" + << "41\t\t44\tFETCH_VALUE\t\t34\t6\t7" << "42\t\t45\tPOP" << "43\t\t46\tPOP_QLIST" << "44\t\t47\tPOP_VALUE\t\t35\t8" diff --git a/tests/auto/declarative/qdeclarativelistview/data/header.qml b/tests/auto/declarative/qdeclarativelistview/data/header.qml new file mode 100644 index 0000000..6da996e --- /dev/null +++ b/tests/auto/declarative/qdeclarativelistview/data/header.qml @@ -0,0 +1,31 @@ +import QtQuick 1.0 + +Rectangle { + width: 240 + height: 320 + color: "#ffffff" + Component { + id: myDelegate + Rectangle { + id: wrapper + objectName: "wrapper" + height: 30 + width: 240 + Text { + text: index + } + color: ListView.isCurrentItem ? "lightsteelblue" : "white" + } + } + ListView { + id: list + objectName: "list" + focus: true + width: 240 + height: 320 + snapMode: ListView.SnapToItem + model: testModel + delegate: myDelegate + header: Text { objectName: "header"; text: "Header"; height: 10 } + } +} diff --git a/tests/auto/declarative/qdeclarativelistview/data/header1.qml b/tests/auto/declarative/qdeclarativelistview/data/header1.qml new file mode 100644 index 0000000..f2ab4c1 --- /dev/null +++ b/tests/auto/declarative/qdeclarativelistview/data/header1.qml @@ -0,0 +1,33 @@ +import QtQuick 1.0 + +Rectangle { + width: 240 + height: 320 + color: "#ffffff" + + ListModel { id: testModel } + + ListView { + id: list + objectName: "list" + width: parent.width + anchors.top: parent.top + anchors.bottom: parent.bottom + model: testModel + delegate: Text { + objectName: "wrapper" + font.pointSize: 20 + text: index + } + footer: Rectangle { + width: parent.width + height: 40 + color: "green" + } + header: Text { objectName: "header"; text: "Header" } + } + + Component.onCompleted: { + for (var i=0; i<30; i++) testModel.append({"name" : i, "val": i}) + } +} diff --git a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp index 37d836d..759caf2 100644 --- a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp +++ b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp @@ -98,6 +98,7 @@ private slots: void QTBUG_9791(); void manualHighlight(); void QTBUG_11105(); + void header(); void footer(); void resizeView(); void sizeLessThan1(); @@ -1661,6 +1662,67 @@ void tst_QDeclarativeListView::QTBUG_11105() delete canvas; } +void tst_QDeclarativeListView::header() +{ + { + QDeclarativeView *canvas = createView(); + + TestModel model; + for (int i = 0; i < 30; i++) + model.addItem("Item" + QString::number(i), ""); + + QDeclarativeContext *ctxt = canvas->rootContext(); + ctxt->setContextProperty("testModel", &model); + + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/header.qml")); + qApp->processEvents(); + + QDeclarativeListView *listview = findItem<QDeclarativeListView>(canvas->rootObject(), "list"); + QTRY_VERIFY(listview != 0); + + QDeclarativeItem *contentItem = listview->contentItem(); + QTRY_VERIFY(contentItem != 0); + + QDeclarativeText *header = findItem<QDeclarativeText>(contentItem, "header"); + QVERIFY(header); + QCOMPARE(header->y(), 0.0); + + QCOMPARE(listview->contentY(), 0.0); + + model.clear(); + QTRY_COMPARE(header->y(), 0.0); + + delete canvas; + } + { + QDeclarativeView *canvas = createView(); + + TestModel model; + + QDeclarativeContext *ctxt = canvas->rootContext(); + + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/header1.qml")); + qApp->processEvents(); + + QDeclarativeListView *listview = findItem<QDeclarativeListView>(canvas->rootObject(), "list"); + QTRY_VERIFY(listview != 0); + + QDeclarativeItem *contentItem = listview->contentItem(); + QTRY_VERIFY(contentItem != 0); + + QDeclarativeText *header = findItem<QDeclarativeText>(contentItem, "header"); + QVERIFY(header); + QCOMPARE(header->y(), 0.0); + + QCOMPARE(listview->contentY(), 0.0); + + model.clear(); + QTRY_COMPARE(header->y(), 0.0); + + delete canvas; + } +} + void tst_QDeclarativeListView::footer() { QDeclarativeView *canvas = createView(); diff --git a/tests/auto/declarative/qdeclarativeproperty/data/aliasPropertyBindings.qml b/tests/auto/declarative/qdeclarativeproperty/data/aliasPropertyBindings.qml new file mode 100644 index 0000000..a253a58 --- /dev/null +++ b/tests/auto/declarative/qdeclarativeproperty/data/aliasPropertyBindings.qml @@ -0,0 +1,19 @@ +import QtQuick 1.0 + +Item { + id: root + + property real test: 9 + property real test2: 3 + + property real realProperty: test * test + test + property alias aliasProperty: root.realProperty + + states: State { + name: "switch" + PropertyChanges { + target: root + aliasProperty: 32 * test2 + } + } +} diff --git a/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp b/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp index 0ca0e03..3cc71bb 100644 --- a/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp +++ b/tests/auto/declarative/qdeclarativeproperty/tst_qdeclarativeproperty.cpp @@ -132,6 +132,7 @@ private slots: // Bugs void crashOnValueProperty(); + void aliasPropertyBindings(); void copy(); private: @@ -1308,6 +1309,74 @@ void tst_qdeclarativeproperty::crashOnValueProperty() QCOMPARE(p.read(), QVariant(20)); } +// QTBUG-13719 +void tst_qdeclarativeproperty::aliasPropertyBindings() +{ + QDeclarativeComponent component(&engine, TEST_FILE("aliasPropertyBindings.qml")); + + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("realProperty").toReal(), 90.); + QCOMPARE(object->property("aliasProperty").toReal(), 90.); + + object->setProperty("test", 10); + + QCOMPARE(object->property("realProperty").toReal(), 110.); + QCOMPARE(object->property("aliasProperty").toReal(), 110.); + + QDeclarativeProperty realProperty(object, QLatin1String("realProperty")); + QDeclarativeProperty aliasProperty(object, QLatin1String("aliasProperty")); + + // Check there is a binding on these two properties + QVERIFY(QDeclarativePropertyPrivate::binding(realProperty) != 0); + QVERIFY(QDeclarativePropertyPrivate::binding(aliasProperty) != 0); + + // Check that its the same binding on these two properties + QCOMPARE(QDeclarativePropertyPrivate::binding(realProperty), + QDeclarativePropertyPrivate::binding(aliasProperty)); + + // Change the binding + object->setProperty("state", QString("switch")); + + QVERIFY(QDeclarativePropertyPrivate::binding(realProperty) != 0); + QVERIFY(QDeclarativePropertyPrivate::binding(aliasProperty) != 0); + QCOMPARE(QDeclarativePropertyPrivate::binding(realProperty), + QDeclarativePropertyPrivate::binding(aliasProperty)); + + QCOMPARE(object->property("realProperty").toReal(), 96.); + QCOMPARE(object->property("aliasProperty").toReal(), 96.); + + // Check the old binding really has not effect any more + object->setProperty("test", 4); + + QCOMPARE(object->property("realProperty").toReal(), 96.); + QCOMPARE(object->property("aliasProperty").toReal(), 96.); + + object->setProperty("test2", 9); + + QCOMPARE(object->property("realProperty").toReal(), 288.); + QCOMPARE(object->property("aliasProperty").toReal(), 288.); + + // Revert + object->setProperty("state", QString("")); + + QVERIFY(QDeclarativePropertyPrivate::binding(realProperty) != 0); + QVERIFY(QDeclarativePropertyPrivate::binding(aliasProperty) != 0); + QCOMPARE(QDeclarativePropertyPrivate::binding(realProperty), + QDeclarativePropertyPrivate::binding(aliasProperty)); + + QCOMPARE(object->property("realProperty").toReal(), 20.); + QCOMPARE(object->property("aliasProperty").toReal(), 20.); + + object->setProperty("test2", 3); + + QCOMPARE(object->property("realProperty").toReal(), 20.); + QCOMPARE(object->property("aliasProperty").toReal(), 20.); + + delete object; +} + void tst_qdeclarativeproperty::copy() { PropertyObject object; diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/BindingsSpliceCorrectlyType.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/BindingsSpliceCorrectlyType.qml new file mode 100644 index 0000000..f625d08 --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/BindingsSpliceCorrectlyType.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyTypeObject { + property bool boldProperty: false + + font.bold: boldProperty +} diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/BindingsSpliceCorrectlyType4.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/BindingsSpliceCorrectlyType4.qml new file mode 100644 index 0000000..0bdccce --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/BindingsSpliceCorrectlyType4.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyTypeObject { + property int dataProperty: 7 + + point: Qt.point(dataProperty, dataProperty) +} diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/BindingsSpliceCorrectlyType5.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/BindingsSpliceCorrectlyType5.qml new file mode 100644 index 0000000..151c499 --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/BindingsSpliceCorrectlyType5.qml @@ -0,0 +1,7 @@ +import Test 1.0 + +MyTypeObject { + property int dataProperty: 7 + + point.x: dataProperty +} diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.1.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.1.qml new file mode 100644 index 0000000..7012143 --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.1.qml @@ -0,0 +1,29 @@ +import Test 1.0 +import QtQuick 1.0 + +BindingsSpliceCorrectlyType { + property bool test: false + + property bool italicProperty: false + + font.italic: italicProperty + + Component.onCompleted: { + // Test initial state + if (font.italic != false) return; + if (font.bold != false) return; + + // Test italic binding worked + italicProperty = true; + + if (font.italic != true) return; + if (font.bold != false) return; + + // Test bold binding worked + boldProperty = true; + if (font.italic != true) return; + if (font.bold != true) return; + + test = true; + } +} diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.2.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.2.qml new file mode 100644 index 0000000..69dbcab --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.2.qml @@ -0,0 +1,31 @@ +import Test 1.0 +import QtQuick 1.0 + +BindingsSpliceCorrectlyType { + property bool test: false + + property bool italicProperty: false + + font.italic: italicProperty + font.bold: false + + Component.onCompleted: { + // Test initial state + if (font.italic != false) return; + if (font.bold != false) return; + + // Test italic binding worked + italicProperty = true; + + if (font.italic != true) return; + if (font.bold != false) return; + + // Test bold binding was removed by constant write + boldProperty = true; + if (font.italic != true) return; + if (font.bold != false) return; + + test = true; + } +} + diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.3.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.3.qml new file mode 100644 index 0000000..669feb9 --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.3.qml @@ -0,0 +1,36 @@ +import Test 1.0 +import QtQuick 1.0 + +BindingsSpliceCorrectlyType { + property bool test: false + + property bool italicProperty: false + property bool boldProperty2: false + + font.italic: italicProperty + font.bold: boldProperty2 + + Component.onCompleted: { + // Test initial state + if (font.italic != false) return; + if (font.bold != false) return; + + // Test italic binding worked + italicProperty = true; + + if (font.italic != true) return; + if (font.bold != false) return; + + // Test bold binding was overridden + boldProperty = true; + if (font.italic != true) return; + if (font.bold != false) return; + + boldProperty2 = true; + if (font.italic != true) return; + if (font.bold != true) return; + + test = true; + } +} + diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.4.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.4.qml new file mode 100644 index 0000000..f28584f --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.4.qml @@ -0,0 +1,27 @@ +import Test 1.0 +import QtQuick 1.0 + +BindingsSpliceCorrectlyType4 { + property bool test: false + + property int dataProperty2: 8 + + point.x: dataProperty2 + + Component.onCompleted: { + if (point.x != 8) return; + if (point.y != 4) return; + + dataProperty = 9; + + if (point.x != 8) return; + if (point.y != 4) return; + + dataProperty2 = 13; + + if (point.x != 13) return; + if (point.y != 4) return; + + test = true; + } +} diff --git a/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.5.qml b/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.5.qml new file mode 100644 index 0000000..1214c83 --- /dev/null +++ b/tests/auto/declarative/qdeclarativevaluetypes/data/bindingsSpliceCorrectly.5.qml @@ -0,0 +1,27 @@ +import Test 1.0 +import QtQuick 1.0 + +BindingsSpliceCorrectlyType5 { + property bool test: false + + property int dataProperty2: 8 + + point: Qt.point(dataProperty2, dataProperty2); + + Component.onCompleted: { + if (point.x != 8) return; + if (point.y != 8) return; + + dataProperty = 9; + + if (point.x != 8) return; + if (point.y != 8) return; + + dataProperty2 = 13; + + if (point.x != 13) return; + if (point.y != 13) return; + + test = true; + } +} diff --git a/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp b/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp index a4819f3..c243a75 100644 --- a/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp +++ b/tests/auto/declarative/qdeclarativevaluetypes/tst_qdeclarativevaluetypes.cpp @@ -94,6 +94,7 @@ private slots: void conflictingBindings(); void returnValues(); void varAssignment(); + void bindingsSpliceCorrectly(); private: QDeclarativeEngine engine; @@ -942,6 +943,61 @@ void tst_qdeclarativevaluetypes::varAssignment() delete object; } +// Test bindings splice together correctly +void tst_qdeclarativevaluetypes::bindingsSpliceCorrectly() +{ + { + QDeclarativeComponent component(&engine, TEST_FILE("bindingsSpliceCorrectly.1.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toBool(), true); + + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("bindingsSpliceCorrectly.2.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toBool(), true); + + delete object; + } + + + { + QDeclarativeComponent component(&engine, TEST_FILE("bindingsSpliceCorrectly.3.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toBool(), true); + + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("bindingsSpliceCorrectly.4.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toBool(), true); + + delete object; + } + + { + QDeclarativeComponent component(&engine, TEST_FILE("bindingsSpliceCorrectly.5.qml")); + QObject *object = component.create(); + QVERIFY(object != 0); + + QCOMPARE(object->property("test").toBool(), true); + + delete object; + } +} + QTEST_MAIN(tst_qdeclarativevaluetypes) #include "tst_qdeclarativevaluetypes.moc" diff --git a/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp b/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp index 21c7197..f19eb03 100644 --- a/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp +++ b/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp @@ -238,13 +238,25 @@ void tst_QDeclarativeViewer::loading() delete viewer; } +static int numberOfWarnings = 0; +static void checkWarnings(QtMsgType, const char *) +{ + numberOfWarnings++; +} + void tst_QDeclarativeViewer::fileBrowser() { + QtMsgHandler previousMsgHandler = qInstallMsgHandler(checkWarnings); QDeclarativeViewer *viewer = new QDeclarativeViewer(); QVERIFY(viewer); viewer->setUseNativeFileBrowser(false); viewer->openFile(); viewer->show(); + QCoreApplication::processEvents(); + qInstallMsgHandler(previousMsgHandler); + + // QTBUG-15720 + QVERIFY(numberOfWarnings == 0); QApplication::setActiveWindow(viewer); QTest::qWaitForWindowShown(viewer); diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.5.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.5.png Binary files differindex d1f06fa..63a594e 100644 --- a/tests/auto/declarative/qmlvisual/ListView/data/listview.5.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.5.png diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.6.png b/tests/auto/declarative/qmlvisual/ListView/data/listview.6.png Binary files differindex 9e6e29c..05e24c6 100644 --- a/tests/auto/declarative/qmlvisual/ListView/data/listview.6.png +++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.6.png diff --git a/tests/auto/declarative/qmlvisual/ListView/data/listview.qml b/tests/auto/declarative/qmlvisual/ListView/data/listview.qml index b1ffe8f..059128d 100644 --- a/tests/auto/declarative/qmlvisual/ListView/data/listview.qml +++ b/tests/auto/declarative/qmlvisual/ListView/data/listview.qml @@ -1550,7 +1550,7 @@ VisualTest { } Frame { msec: 4240 - hash: "ad913e53e63c030ffdf4560766722760" + hash: "84b477b46c313d6dcb0a77628182905b" } Mouse { type: 5 @@ -1570,7 +1570,7 @@ VisualTest { } Frame { msec: 4256 - hash: "ef31f8a4d5bde5a2e308d19ee6d5e759" + hash: "281c0499db31ca78175ca7af6292b853" } Mouse { type: 5 @@ -1582,7 +1582,7 @@ VisualTest { } Frame { msec: 4272 - hash: "3ba07527f66e8bea5a8fb7647b0b4f3f" + hash: "5c29d61f037e4636988fdc99ee2ed8a4" } Mouse { type: 5 @@ -1594,7 +1594,7 @@ VisualTest { } Frame { msec: 4288 - hash: "70e5fe656f5fd843383964825690b678" + hash: "a18f5e9f7be932dcd1bcb4c7fe0797e8" } Mouse { type: 5 @@ -1614,7 +1614,7 @@ VisualTest { } Frame { msec: 4304 - hash: "b7d8738be4cd6caa63dbecdb0f810a2f" + hash: "85a4130b4a57ef79e90d350cf4816801" } Mouse { type: 5 @@ -1626,7 +1626,7 @@ VisualTest { } Frame { msec: 4320 - hash: "d6312191f9d7bbddc07f9253d8a93469" + hash: "364dd89fd6f96e1c77723436c7078a7b" } Mouse { type: 5 @@ -1638,7 +1638,7 @@ VisualTest { } Frame { msec: 4336 - hash: "b182da64886cf4f444296e5fde26701e" + hash: "3e37312c45aa92de34d9661f9b482c48" } Mouse { type: 5 @@ -1650,7 +1650,7 @@ VisualTest { } Frame { msec: 4352 - hash: "ebefef14b6fb990e0c6900884528bbd3" + hash: "dc2d63ad430ea6214f962629793925f3" } Mouse { type: 5 @@ -1662,7 +1662,7 @@ VisualTest { } Frame { msec: 4368 - hash: "9a3451ed091b1bb6b975a9c5506b1ea4" + hash: "188fe1e6af9d02b2680426127ef1d39e" } Mouse { type: 5 @@ -1674,7 +1674,7 @@ VisualTest { } Frame { msec: 4384 - hash: "04290d8d62436c8a812f886e0a56ec1b" + hash: "bdb784f5ccf428f8b8a9d29310069808" } Mouse { type: 5 @@ -1686,7 +1686,7 @@ VisualTest { } Frame { msec: 4400 - hash: "eaaf9ea1d7fcf4a2a9dd58b1b5bb3cae" + hash: "bb74813667f49b15978aa78843436205" } Mouse { type: 5 @@ -1698,7 +1698,7 @@ VisualTest { } Frame { msec: 4416 - hash: "7ca8e3d76cf913d85f84f0b96acde829" + hash: "8e88500470517ed1d7c3ca10edd4e230" } Mouse { type: 5 @@ -1710,7 +1710,7 @@ VisualTest { } Frame { msec: 4432 - hash: "7cfef56b24a552c6d4ecb3d0b88a1d08" + hash: "614dc45593db51f467adeda87d84f9a4" } Mouse { type: 5 @@ -1730,7 +1730,7 @@ VisualTest { } Frame { msec: 4448 - hash: "d032b257259810b4fe514c63ca5c9e4b" + hash: "b170583b9b284debdd04af643752aa6b" } Mouse { type: 5 @@ -1742,7 +1742,7 @@ VisualTest { } Frame { msec: 4464 - hash: "568f6a57e6f1644b0dc245d03a1d7b85" + hash: "dba0394b92f3ee166bc397439a86e6dc" } Mouse { type: 5 @@ -1754,87 +1754,87 @@ VisualTest { } Frame { msec: 4480 - hash: "5cb4cf2c527d821db2a5072dd3702653" + hash: "74b499d5d764bf53efbee8932bab3cc3" } Frame { msec: 4496 - hash: "5cb4cf2c527d821db2a5072dd3702653" + hash: "74b499d5d764bf53efbee8932bab3cc3" } Frame { msec: 4512 - hash: "5cb4cf2c527d821db2a5072dd3702653" + hash: "74b499d5d764bf53efbee8932bab3cc3" } Frame { msec: 4528 - hash: "5cb4cf2c527d821db2a5072dd3702653" + hash: "74b499d5d764bf53efbee8932bab3cc3" } Frame { msec: 4544 - hash: "5cb4cf2c527d821db2a5072dd3702653" + hash: "74b499d5d764bf53efbee8932bab3cc3" } Frame { msec: 4560 - hash: "5cb4cf2c527d821db2a5072dd3702653" + hash: "74b499d5d764bf53efbee8932bab3cc3" } Frame { msec: 4576 - hash: "5cb4cf2c527d821db2a5072dd3702653" + hash: "74b499d5d764bf53efbee8932bab3cc3" } Frame { msec: 4592 - hash: "5cb4cf2c527d821db2a5072dd3702653" + hash: "74b499d5d764bf53efbee8932bab3cc3" } Frame { msec: 4608 - hash: "5cb4cf2c527d821db2a5072dd3702653" + hash: "74b499d5d764bf53efbee8932bab3cc3" } Frame { msec: 4624 - hash: "5cb4cf2c527d821db2a5072dd3702653" + hash: "74b499d5d764bf53efbee8932bab3cc3" } Frame { msec: 4640 - hash: "5cb4cf2c527d821db2a5072dd3702653" + hash: "74b499d5d764bf53efbee8932bab3cc3" } Frame { msec: 4656 - hash: "5cb4cf2c527d821db2a5072dd3702653" + hash: "74b499d5d764bf53efbee8932bab3cc3" } Frame { msec: 4672 - hash: "5cb4cf2c527d821db2a5072dd3702653" + hash: "74b499d5d764bf53efbee8932bab3cc3" } Frame { msec: 4688 - hash: "5cb4cf2c527d821db2a5072dd3702653" + hash: "74b499d5d764bf53efbee8932bab3cc3" } Frame { msec: 4704 - hash: "5cb4cf2c527d821db2a5072dd3702653" + hash: "74b499d5d764bf53efbee8932bab3cc3" } Frame { msec: 4720 - hash: "5cb4cf2c527d821db2a5072dd3702653" + hash: "74b499d5d764bf53efbee8932bab3cc3" } Frame { msec: 4736 - hash: "5cb4cf2c527d821db2a5072dd3702653" + hash: "74b499d5d764bf53efbee8932bab3cc3" } Frame { msec: 4752 - hash: "5cb4cf2c527d821db2a5072dd3702653" + hash: "74b499d5d764bf53efbee8932bab3cc3" } Frame { msec: 4768 - hash: "5cb4cf2c527d821db2a5072dd3702653" + hash: "74b499d5d764bf53efbee8932bab3cc3" } Frame { msec: 4784 - hash: "5cb4cf2c527d821db2a5072dd3702653" + hash: "74b499d5d764bf53efbee8932bab3cc3" } Frame { msec: 4800 - hash: "5cb4cf2c527d821db2a5072dd3702653" + hash: "74b499d5d764bf53efbee8932bab3cc3" } Frame { msec: 4816 @@ -1842,11 +1842,11 @@ VisualTest { } Frame { msec: 4832 - hash: "5cb4cf2c527d821db2a5072dd3702653" + hash: "74b499d5d764bf53efbee8932bab3cc3" } Frame { msec: 4848 - hash: "5cb4cf2c527d821db2a5072dd3702653" + hash: "74b499d5d764bf53efbee8932bab3cc3" } Mouse { type: 5 @@ -1866,7 +1866,7 @@ VisualTest { } Frame { msec: 4864 - hash: "d48ecbd0661e08b2117fe2fd96ffeb2c" + hash: "95ab953fc04389396da9a38d97262d98" } Mouse { type: 5 @@ -1878,7 +1878,7 @@ VisualTest { } Frame { msec: 4880 - hash: "7cfef56b24a552c6d4ecb3d0b88a1d08" + hash: "614dc45593db51f467adeda87d84f9a4" } Mouse { type: 5 @@ -1890,7 +1890,7 @@ VisualTest { } Frame { msec: 4896 - hash: "5b12e9d17d9d464b055601db9cf0da44" + hash: "0d884cdb22e3668203d07c72055bcb85" } Mouse { type: 5 @@ -1902,7 +1902,7 @@ VisualTest { } Frame { msec: 4912 - hash: "25333e1f0cc9cfc664fd7369af544c06" + hash: "23bd71236829253fb3ef18ebc9dd3136" } Mouse { type: 5 @@ -1914,39 +1914,39 @@ VisualTest { } Frame { msec: 4928 - hash: "04290d8d62436c8a812f886e0a56ec1b" + hash: "bdb784f5ccf428f8b8a9d29310069808" } Frame { msec: 4944 - hash: "04290d8d62436c8a812f886e0a56ec1b" + hash: "bdb784f5ccf428f8b8a9d29310069808" } Frame { msec: 4960 - hash: "04290d8d62436c8a812f886e0a56ec1b" + hash: "bdb784f5ccf428f8b8a9d29310069808" } Frame { msec: 4976 - hash: "04290d8d62436c8a812f886e0a56ec1b" + hash: "bdb784f5ccf428f8b8a9d29310069808" } Frame { msec: 4992 - hash: "04290d8d62436c8a812f886e0a56ec1b" + hash: "bdb784f5ccf428f8b8a9d29310069808" } Frame { msec: 5008 - hash: "04290d8d62436c8a812f886e0a56ec1b" + hash: "bdb784f5ccf428f8b8a9d29310069808" } Frame { msec: 5024 - hash: "04290d8d62436c8a812f886e0a56ec1b" + hash: "bdb784f5ccf428f8b8a9d29310069808" } Frame { msec: 5040 - hash: "04290d8d62436c8a812f886e0a56ec1b" + hash: "bdb784f5ccf428f8b8a9d29310069808" } Frame { msec: 5056 - hash: "04290d8d62436c8a812f886e0a56ec1b" + hash: "bdb784f5ccf428f8b8a9d29310069808" } Mouse { type: 3 @@ -1958,179 +1958,179 @@ VisualTest { } Frame { msec: 5072 - hash: "04290d8d62436c8a812f886e0a56ec1b" + hash: "bdb784f5ccf428f8b8a9d29310069808" } Frame { msec: 5088 - hash: "04290d8d62436c8a812f886e0a56ec1b" + hash: "bdb784f5ccf428f8b8a9d29310069808" } Frame { msec: 5104 - hash: "04290d8d62436c8a812f886e0a56ec1b" + hash: "bdb784f5ccf428f8b8a9d29310069808" } Frame { msec: 5120 - hash: "04290d8d62436c8a812f886e0a56ec1b" + hash: "bdb784f5ccf428f8b8a9d29310069808" } Frame { msec: 5136 - hash: "04290d8d62436c8a812f886e0a56ec1b" + hash: "bdb784f5ccf428f8b8a9d29310069808" } Frame { msec: 5152 - hash: "04290d8d62436c8a812f886e0a56ec1b" + hash: "bdb784f5ccf428f8b8a9d29310069808" } Frame { msec: 5168 - hash: "04290d8d62436c8a812f886e0a56ec1b" + hash: "bdb784f5ccf428f8b8a9d29310069808" } Frame { msec: 5184 - hash: "04290d8d62436c8a812f886e0a56ec1b" + hash: "bdb784f5ccf428f8b8a9d29310069808" } Frame { msec: 5200 - hash: "04290d8d62436c8a812f886e0a56ec1b" + hash: "bdb784f5ccf428f8b8a9d29310069808" } Frame { msec: 5216 - hash: "04290d8d62436c8a812f886e0a56ec1b" + hash: "bdb784f5ccf428f8b8a9d29310069808" } Frame { msec: 5232 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5248 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5264 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5280 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5296 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5312 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5328 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5344 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5360 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5376 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5392 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5408 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5424 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5440 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5456 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5472 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5488 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5504 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5520 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5536 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5552 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5568 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5584 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5600 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5616 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5632 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5648 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5664 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5680 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5696 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5712 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5728 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5744 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5760 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5776 @@ -2138,90 +2138,90 @@ VisualTest { } Frame { msec: 5792 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5808 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5824 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5840 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5856 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5872 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5888 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5904 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5920 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5936 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5952 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5968 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 5984 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 6000 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 6016 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 6032 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 6048 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 6064 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 6080 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 6096 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 6112 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } Frame { msec: 6128 - hash: "dbd87bf02d698b7f053d307ef0c98452" + hash: "9ba43cbdd92c077f64e4a59c6c1c42ac" } } diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.0.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.0.png Binary files differnew file mode 100644 index 0000000..99748a7 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.0.png diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.1.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.1.png Binary files differnew file mode 100644 index 0000000..5393dd8 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.1.png diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.2.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.2.png Binary files differnew file mode 100644 index 0000000..8c17bf7 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.2.png diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.3.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.3.png Binary files differnew file mode 100644 index 0000000..1317eef --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.3.png diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.qml b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.qml new file mode 100644 index 0000000..930f08f --- /dev/null +++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.qml @@ -0,0 +1,951 @@ +import Qt.VisualTest 4.7 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + image: "colorAnimation-visual.0.png" + } + Frame { + msec: 32 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 48 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 64 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 80 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 96 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 112 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 128 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 144 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 160 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 176 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 192 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 208 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 224 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 240 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 256 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 272 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 288 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 304 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 320 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 336 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 352 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 368 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 384 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 400 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 416 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 432 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 448 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 464 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 480 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 496 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 512 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 93; y: 136 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 528 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 544 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 560 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 576 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 592 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 93; y: 136 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 608 + hash: "acc736435c9f84aa82941ba561bc5dbc" + } + Frame { + msec: 624 + hash: "e5bda0daf98288ce18db6ce06eda3ba0" + } + Frame { + msec: 640 + hash: "d35008f75b8c992f80fb16ba7203649d" + } + Frame { + msec: 656 + hash: "14f43e0784ddf42ea8550db88c501bf1" + } + Frame { + msec: 672 + hash: "02276e158b5391480b1bdeaadf1fb903" + } + Frame { + msec: 688 + hash: "35d9513eb97a2c482b7cd197de910934" + } + Frame { + msec: 704 + hash: "faf0fd681e60bb2489099f5df772b6cd" + } + Frame { + msec: 720 + hash: "a863d3e346f94785a3a392fdc91526eb" + } + Frame { + msec: 736 + hash: "fdf328d3f6eb8410da59a91345e41a44" + } + Frame { + msec: 752 + hash: "83514a3b10d5be8f6c3b128d0f3e0b1c" + } + Frame { + msec: 768 + hash: "ead0eae76cd00189075964671effbaea" + } + Frame { + msec: 784 + hash: "24d2457fcd51490fda23071bf9929d12" + } + Frame { + msec: 800 + hash: "1478683446cf543dacbe31d0b76a98a6" + } + Frame { + msec: 816 + hash: "99f7da1f31fe920f6c02add4042ae925" + } + Frame { + msec: 832 + hash: "22def892006cf66667770b0f17baf6c0" + } + Frame { + msec: 848 + hash: "6a36d5a77099bfd58baf285478ff04e4" + } + Frame { + msec: 864 + hash: "6258150666b59b20ab476724c07fc20c" + } + Frame { + msec: 880 + hash: "f1636315bc950a6dd400d9c7ed263b88" + } + Frame { + msec: 896 + hash: "18447ea8dc2e8da956788e5b3cf3790a" + } + Frame { + msec: 912 + hash: "1d2a6e65997a73e9e670356c8e8b63b2" + } + Frame { + msec: 928 + hash: "bed0242c0f9ef229d1392835286d5782" + } + Frame { + msec: 944 + hash: "88923c190e9e5beadef8a409c06df9d6" + } + Frame { + msec: 960 + hash: "2d133e7ee60c97386f57838b3f0976c7" + } + Frame { + msec: 976 + image: "colorAnimation-visual.1.png" + } + Frame { + msec: 992 + hash: "395195716d76bc0be7b2033ed37a7a1c" + } + Frame { + msec: 1008 + hash: "243dbffcf416926242bbcb7348974c4c" + } + Frame { + msec: 1024 + hash: "a755068679616d8ac65c2aa7431f2a19" + } + Frame { + msec: 1040 + hash: "e8249b35a47eb492cbdf2d91cc8426f0" + } + Frame { + msec: 1056 + hash: "15f3da1c0e6f0779b96859d51171dd27" + } + Frame { + msec: 1072 + hash: "258c0c756aac3de743b43051f2aace6b" + } + Frame { + msec: 1088 + hash: "a58b9fdf301d72b2cc5c93934cc8927b" + } + Frame { + msec: 1104 + hash: "a9181d30870d472521f8904818ce520f" + } + Frame { + msec: 1120 + hash: "7f9e94069ccf3897c26a71bd7becd903" + } + Frame { + msec: 1136 + hash: "bdf305c2f46cdb86dbf57b1e0cc5a65b" + } + Frame { + msec: 1152 + hash: "fe5b6865d7e4fc7d1d42c1e74f8666f7" + } + Frame { + msec: 1168 + hash: "734f0de45a6e34c9eab7ef606196f96a" + } + Frame { + msec: 1184 + hash: "02a361c4534fdf7f286dc3e6dc23275c" + } + Frame { + msec: 1200 + hash: "e649155ad69999c14b92f6561e4d1185" + } + Frame { + msec: 1216 + hash: "01af177084fab755d622973f64b92018" + } + Frame { + msec: 1232 + hash: "097cc4a082dfab995d213a3a73883c97" + } + Frame { + msec: 1248 + hash: "d7b4239a3280b1eb8e885e3f422df8e9" + } + Frame { + msec: 1264 + hash: "59893977994e34e83f91e7ce3ad65d6d" + } + Frame { + msec: 1280 + hash: "b68e3fbb5cdcd6bd96df7dec558db42b" + } + Frame { + msec: 1296 + hash: "94ad0580648f36a1e18a9ea7e249b04d" + } + Frame { + msec: 1312 + hash: "750a4c01d2f5806a89a1c6cc6a9b9a68" + } + Frame { + msec: 1328 + hash: "4f109f50f388f1bfa4bc6b03b3e6e514" + } + Frame { + msec: 1344 + hash: "c6168d5cf27a533e8ee636637667be47" + } + Frame { + msec: 1360 + hash: "f8120547bed987aa34c00da5a01a4d1e" + } + Frame { + msec: 1376 + hash: "cbff526136fa2c128c8b898fbbef9e5c" + } + Frame { + msec: 1392 + hash: "f29e52398fab1a239a63df4c32f2fc69" + } + Frame { + msec: 1408 + hash: "7178bfe86fd2fd513218b33760460f8d" + } + Frame { + msec: 1424 + hash: "ca83285bc8ac633403896fe976896eb0" + } + Frame { + msec: 1440 + hash: "96ba486c09cc69d5aa38c46c00df1181" + } + Frame { + msec: 1456 + hash: "b88eab335842787869f4a14824c19dd8" + } + Frame { + msec: 1472 + hash: "065aa59012729e1e1a246a2083142690" + } + Frame { + msec: 1488 + hash: "dd0e98c8398861002c5f178c5f9f612d" + } + Frame { + msec: 1504 + hash: "04192c2b545948048eccf4d81bbde198" + } + Frame { + msec: 1520 + hash: "bb7502c7208281ef9fd41714ab88a1a8" + } + Frame { + msec: 1536 + hash: "5397195471890d08b703dca101e5bc7c" + } + Frame { + msec: 1552 + hash: "4c678cdbebb2ffd2cbf012ca77800cde" + } + Frame { + msec: 1568 + hash: "0d7a34ecd0c7f52b2c015037bf1902c6" + } + Frame { + msec: 1584 + hash: "fd9d5048be749ac4369fda2d018b43ae" + } + Frame { + msec: 1600 + hash: "93ee03795cd57ae6f7fe3a020b039ad4" + } + Frame { + msec: 1616 + hash: "5e1118963f219c39761ca7fbf564a9ca" + } + Frame { + msec: 1632 + hash: "8f40038741903150136170503649d941" + } + Frame { + msec: 1648 + hash: "b087b7d0aa6224821f8e18718ff5e77d" + } + Frame { + msec: 1664 + hash: "aa46b04a3c67dc772265ed2901955565" + } + Frame { + msec: 1680 + hash: "ac024bf2aeb4becdf31a09fe0a6db8f3" + } + Frame { + msec: 1696 + hash: "13745a174e4d06e2108a5bf125ba50cc" + } + Frame { + msec: 1712 + hash: "bd972f0d8e230eca0b3fea1b8c960c08" + } + Frame { + msec: 1728 + hash: "cbdbec802a58e7ced0cf45b3ab0bc0ba" + } + Frame { + msec: 1744 + hash: "5128584c50305c7d218b81b8367fa3d5" + } + Frame { + msec: 1760 + hash: "a71461d3593f3685620668916de870bd" + } + Frame { + msec: 1776 + hash: "74ebac8f32cf044b58d9883dbcd9a722" + } + Frame { + msec: 1792 + hash: "fedc5b638f339b90fe59b478721e65b7" + } + Frame { + msec: 1808 + hash: "8593a81be812edf54ec94da8ae9c1314" + } + Frame { + msec: 1824 + hash: "4e9b083075bc5e9287a8abc982778b56" + } + Frame { + msec: 1840 + hash: "1d6f02aa99afa47d77fc49ab894b365a" + } + Frame { + msec: 1856 + hash: "a204feec783b3b05de4c209c21745826" + } + Frame { + msec: 1872 + hash: "665a2a8ff00b9663157802767f504754" + } + Frame { + msec: 1888 + hash: "624fb09ebe60cb87d767faf8d2420b1e" + } + Frame { + msec: 1904 + hash: "e5af0cdc33f3275a25abb09e9165f310" + } + Frame { + msec: 1920 + hash: "02bafb5a81ca66f7670ac93de5123860" + } + Frame { + msec: 1936 + image: "colorAnimation-visual.2.png" + } + Frame { + msec: 1952 + hash: "b5abd0dff1ab076faac7cc226e83f5d0" + } + Frame { + msec: 1968 + hash: "b759acc35bccff8efc2e6fe276ddc0f7" + } + Frame { + msec: 1984 + hash: "ce52e18c1f7732768779863b45314ff5" + } + Frame { + msec: 2000 + hash: "99d30652559dd6931e0c95543eeaa149" + } + Frame { + msec: 2016 + hash: "ffbd9a00e05e085b89296d19d5caec57" + } + Frame { + msec: 2032 + hash: "9c9d658b9c25602816b8066bf19105db" + } + Frame { + msec: 2048 + hash: "2b7fd058e6601e22a30bb7106b1c683b" + } + Frame { + msec: 2064 + hash: "f4c7e26b19ee0a3e7c9688685eb7bd05" + } + Frame { + msec: 2080 + hash: "0dc6d593bceff56b7f81f2a49d37fefb" + } + Frame { + msec: 2096 + hash: "9bfd7ad5091ccbdde43c593e133a7b10" + } + Frame { + msec: 2112 + hash: "2703b617937914a90ea42ebf249d79ee" + } + Frame { + msec: 2128 + hash: "b77e2983138254016c4cca53100f46fa" + } + Frame { + msec: 2144 + hash: "60c4dd24187d1281081479e586f02b37" + } + Frame { + msec: 2160 + hash: "62f2511abd99ef1231c9fa4b91d4abfe" + } + Frame { + msec: 2176 + hash: "e309b3353fd174e883d309571caddc98" + } + Frame { + msec: 2192 + hash: "1e2d6a134c7b12dde551b148ef4f088c" + } + Frame { + msec: 2208 + hash: "e5dc5450604a491cc24a0dcf5c278b58" + } + Frame { + msec: 2224 + hash: "c8dae97c10e1962c1e6a51ab3ab8579e" + } + Frame { + msec: 2240 + hash: "4e1b7e06f55fb084080689b474f1fe1d" + } + Frame { + msec: 2256 + hash: "b4639c907fa937bf15fac62421170cd8" + } + Frame { + msec: 2272 + hash: "c250208a0caeb5f6cb4d3aac3d7d350b" + } + Frame { + msec: 2288 + hash: "a73351eabecf0d71149efe31f197413e" + } + Frame { + msec: 2304 + hash: "479425f1b7aff79e4dfb7fca534af018" + } + Frame { + msec: 2320 + hash: "046d0f0040a52d1f26ba9f7c5de06ef4" + } + Frame { + msec: 2336 + hash: "655778bf13c6080903150b0eb43a7edc" + } + Frame { + msec: 2352 + hash: "72da0bbe81514870655fdd3354adac60" + } + Frame { + msec: 2368 + hash: "defe0bdf675c65fff55aaaced1e4dae7" + } + Frame { + msec: 2384 + hash: "c988628b6c3d3780e9a865c7694926cd" + } + Frame { + msec: 2400 + hash: "5ab17563655231089edd986ff13d6012" + } + Frame { + msec: 2416 + hash: "c1adff1d2e5800ed466d1691d3b17382" + } + Frame { + msec: 2432 + hash: "70129ba01fbb19592b9dc0d0a3b3e7df" + } + Frame { + msec: 2448 + hash: "0000829ef7ed908bf430d42904d59cc2" + } + Frame { + msec: 2464 + hash: "843d2927f50ab87b4a86b7a6aaeed91f" + } + Frame { + msec: 2480 + hash: "da86d21756025e7de8050586d5e2a1f8" + } + Frame { + msec: 2496 + hash: "48dd1bd6580133b0793fee327ea4f1e6" + } + Frame { + msec: 2512 + hash: "f0618193dcd0ba2837249515a1898b1c" + } + Frame { + msec: 2528 + hash: "a530184e57251065286c0cbba7301e9c" + } + Frame { + msec: 2544 + hash: "64a1d7203973d65dd342793007a61c58" + } + Frame { + msec: 2560 + hash: "5b830dfc6ba442772de87d75d5a578de" + } + Frame { + msec: 2576 + hash: "5563b056b0409b65f60dd16dd0dd890e" + } + Frame { + msec: 2592 + hash: "b8bcf9ad2ca8720c11563a23d8280804" + } + Frame { + msec: 2608 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2624 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2640 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2656 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2672 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2688 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2704 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2720 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2736 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2752 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2768 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2784 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2800 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2816 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2832 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2848 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2864 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2880 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2896 + image: "colorAnimation-visual.3.png" + } + Frame { + msec: 2912 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2928 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2944 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2960 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2976 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 2992 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3008 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3024 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3040 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3056 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3072 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3088 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3104 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3120 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3136 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3152 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3168 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3184 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3200 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3216 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3232 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3248 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3264 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3280 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3296 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3312 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3328 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3344 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3360 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3376 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3392 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3408 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3424 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3440 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3456 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3472 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3488 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3504 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3520 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3536 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3552 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3568 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3584 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3600 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3616 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3632 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Key { + type: 6 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 3648 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3664 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } + Frame { + msec: 3680 + hash: "8c0fcda4f8956394c53fc4ba18caa850" + } +} diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test2.0.png b/tests/auto/declarative/qmlvisual/focusscope/data/test2.0.png Binary files differindex 22d7496..396bf2d 100644 --- a/tests/auto/declarative/qmlvisual/focusscope/data/test2.0.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data/test2.0.png diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test2.1.png b/tests/auto/declarative/qmlvisual/focusscope/data/test2.1.png Binary files differindex 22d7496..396bf2d 100644 --- a/tests/auto/declarative/qmlvisual/focusscope/data/test2.1.png +++ b/tests/auto/declarative/qmlvisual/focusscope/data/test2.1.png diff --git a/tests/auto/declarative/qmlvisual/focusscope/data/test2.qml b/tests/auto/declarative/qmlvisual/focusscope/data/test2.qml index 62eff17..8669071 100644 --- a/tests/auto/declarative/qmlvisual/focusscope/data/test2.qml +++ b/tests/auto/declarative/qmlvisual/focusscope/data/test2.qml @@ -10,239 +10,239 @@ VisualTest { } Frame { msec: 32 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 48 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 64 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 80 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 96 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 112 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 128 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 144 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 160 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 176 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 192 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 208 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 224 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 240 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 256 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 272 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 288 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 304 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 320 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 336 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 352 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 368 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 384 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 400 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 416 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 432 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 448 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 464 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 480 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 496 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 512 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 528 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 544 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 560 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 576 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 592 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 608 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 624 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 640 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 656 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 672 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 688 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 704 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 720 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 736 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 752 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 768 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 784 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 800 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 816 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 832 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 848 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 864 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 880 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 896 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 912 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 928 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 944 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 960 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 976 @@ -250,74 +250,74 @@ VisualTest { } Frame { msec: 992 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 1008 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 1024 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 1040 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 1056 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 1072 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 1088 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 1104 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 1120 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 1136 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 1152 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 1168 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 1184 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 1200 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 1216 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 1232 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 1248 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } Frame { msec: 1264 - hash: "4823f4520db0c1f64d887f172b3efa17" + hash: "f4041fcc91346361df95e344a0ee8e2d" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.0.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.0.png Binary files differnew file mode 100644 index 0000000..9a81b29 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.1.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.1.png Binary files differnew file mode 100644 index 0000000..2d9c4fd --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.2.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.2.png Binary files differnew file mode 100644 index 0000000..2bb0cb0 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.2.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.3.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.3.png Binary files differnew file mode 100644 index 0000000..8260a65 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.3.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.4.png b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.4.png Binary files differnew file mode 100644 index 0000000..0abcbc2 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.4.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.qml b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.qml new file mode 100644 index 0000000..f1bb428 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data-MAC/flickable-horizontal.qml @@ -0,0 +1,1575 @@ +import Qt.VisualTest 4.7 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + image: "flickable-horizontal.0.png" + } + Frame { + msec: 32 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 48 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 64 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 80 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 96 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 112 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 128 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 144 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 160 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 176 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 192 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 208 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 224 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 240 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 256 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 272 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 288 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 304 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 320 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 336 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 352 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 368 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 384 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 400 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 416 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 432 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 448 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 464 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 480 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 496 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 512 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 528 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 544 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 560 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 576 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 592 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 608 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 624 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 640 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 656 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 672 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 688 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 704 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 720 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 447; y: 145 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 736 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 752 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 768 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 446; y: 145 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 784 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 440; y: 146 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 800 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 425; y: 151 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 407; y: 157 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 816 + hash: "c92e345e4ffdb30c28d9d5aa5400bd30" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 359; y: 169 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 832 + hash: "90f94986ab44ab59618e9a5da17b8cc9" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 309; y: 181 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 848 + hash: "0154a65f8693b98576101ac1c2fc8761" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 282; y: 187 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 282; y: 187 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 864 + hash: "792c1b5267f14c891dae2348a8188a92" + } + Frame { + msec: 880 + hash: "15ce9e88d4ad2e698bf167d1432c0b8a" + } + Frame { + msec: 896 + hash: "8f4109ef4c24d286d73f689565a0d056" + } + Frame { + msec: 912 + hash: "f5728190bf5c94742686f063b4a4b09b" + } + Frame { + msec: 928 + hash: "a38c7527a9a818b7bc25466b0e4939f9" + } + Frame { + msec: 944 + hash: "ed3902455fc31a4e3232308b815a4daa" + } + Frame { + msec: 960 + hash: "a2093589363ac2d50491412e99e0193a" + } + Frame { + msec: 976 + image: "flickable-horizontal.1.png" + } + Frame { + msec: 992 + hash: "c32349580e3a9586cc1133c935607cf0" + } + Frame { + msec: 1008 + hash: "cd2068492e346eb20d50aee69e3a3559" + } + Frame { + msec: 1024 + hash: "f43a1a38894b8ffad009ba995d84b0ee" + } + Frame { + msec: 1040 + hash: "2d5c4a73df2a054801571f1ce119e31f" + } + Frame { + msec: 1056 + hash: "b8825cc6bdca8102a655d797ea41b5b1" + } + Frame { + msec: 1072 + hash: "3f0be15b85220743d004f2d54b6e137c" + } + Frame { + msec: 1088 + hash: "4b0952d33149b44ffa0a06723a4116c7" + } + Frame { + msec: 1104 + hash: "9056bda43259e92cfe56fdf394e2ca54" + } + Frame { + msec: 1120 + hash: "82ec9f09d2303e5b0b9c05b9a10a84db" + } + Frame { + msec: 1136 + hash: "751a9b3054c09d900364d7c9cac8bc2b" + } + Frame { + msec: 1152 + hash: "17dfdfef20f9da7e8b6f16df974baea9" + } + Frame { + msec: 1168 + hash: "108e6d9a5a81df32823bfd7a90a000a7" + } + Frame { + msec: 1184 + hash: "71dd0d55a3e837d3a8e4b4e318579ade" + } + Frame { + msec: 1200 + hash: "8013cdb2615bca89134ea040409af509" + } + Frame { + msec: 1216 + hash: "4b2826ad4c755690bd837994133f5fac" + } + Frame { + msec: 1232 + hash: "52d0da7f138bd37ac587a448d6402aca" + } + Frame { + msec: 1248 + hash: "e634724c5bb294d338210845bf64d2cf" + } + Frame { + msec: 1264 + hash: "59bc5f0d057ee431f289806377f19213" + } + Frame { + msec: 1280 + hash: "6ef2c5f7766c2cc77b30d636bfaa4422" + } + Frame { + msec: 1296 + hash: "578d056c3db094420dbaa51bd08ced20" + } + Frame { + msec: 1312 + hash: "14c6f7a04a52caffefa07af556ccb262" + } + Frame { + msec: 1328 + hash: "7cb63d56fec144d0509ce219fc6fe459" + } + Frame { + msec: 1344 + hash: "462dafa7f6427aecf6c28a5dcf5a10cc" + } + Frame { + msec: 1360 + hash: "45360814f985ed780a443568a91fc170" + } + Frame { + msec: 1376 + hash: "0d18ceb2436e4f7eb56a3443fab706e6" + } + Frame { + msec: 1392 + hash: "1d83f367ba9f7f1d4496208271e925ed" + } + Frame { + msec: 1408 + hash: "fdbd00ee4c122aef779df42ea53f403a" + } + Frame { + msec: 1424 + hash: "bedd1cb304efd4851813b39a746198a4" + } + Frame { + msec: 1440 + hash: "9aa7bed86efa9634466736f20ee0ab5b" + } + Frame { + msec: 1456 + hash: "00fc8186a7ae44e10195a7b13defa0d2" + } + Frame { + msec: 1472 + hash: "42d6e8e0bbed879ed63644c83e61e7bd" + } + Frame { + msec: 1488 + hash: "df074f8c210249e5ef652349479b6325" + } + Frame { + msec: 1504 + hash: "4f94020437e35cf44dd3576997990ab7" + } + Frame { + msec: 1520 + hash: "8ca6c3b4fa3be73ac35073356b680a35" + } + Frame { + msec: 1536 + hash: "c25eee1c5791383ebc59974e7754eacb" + } + Frame { + msec: 1552 + hash: "f4917ada78942428cc6b9aa5e56c013d" + } + Frame { + msec: 1568 + hash: "23e1e607101fc7260a4ac841344f5fe0" + } + Frame { + msec: 1584 + hash: "2dcc7d187d8e0493e5766efbf09ef37c" + } + Frame { + msec: 1600 + hash: "c1e5602753e80cf44d7b330140c6912e" + } + Frame { + msec: 1616 + hash: "febaf72d01a3763461b4b7d2ddd7a23e" + } + Frame { + msec: 1632 + hash: "071262b911b61576f451be25691a57cf" + } + Frame { + msec: 1648 + hash: "44705db9289fd8753b9d63e8bc963b38" + } + Frame { + msec: 1664 + hash: "0c41d7b7d36bd083abfc0b83b862cad9" + } + Frame { + msec: 1680 + hash: "0c41d7b7d36bd083abfc0b83b862cad9" + } + Frame { + msec: 1696 + hash: "071262b911b61576f451be25691a57cf" + } + Frame { + msec: 1712 + hash: "a00aa90e894b48203b0446ca287ee712" + } + Frame { + msec: 1728 + hash: "26c9ca53ee4b084c6595ad65bf4880df" + } + Frame { + msec: 1744 + hash: "f4917ada78942428cc6b9aa5e56c013d" + } + Frame { + msec: 1760 + hash: "ffedee7bf2d8099e361b8b1706b03f88" + } + Frame { + msec: 1776 + hash: "1778ef1629ce977015b641448b46634f" + } + Frame { + msec: 1792 + hash: "42d6e8e0bbed879ed63644c83e61e7bd" + } + Frame { + msec: 1808 + hash: "99e843ec69b79b79b0792e0a2f28cd1b" + } + Frame { + msec: 1824 + hash: "8b3ebca70b50a6a93823e015ea80f0f9" + } + Frame { + msec: 1840 + hash: "8eaa7f076064ce55051237b04861e408" + } + Frame { + msec: 1856 + hash: "6acc0ca5e5808d911287edfa78c8ac02" + } + Frame { + msec: 1872 + hash: "e9f05899e0b53c21f6efe834095a3ea4" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 91; y: 208 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 93; y: 209 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1888 + hash: "e9f05899e0b53c21f6efe834095a3ea4" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 99; y: 210 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 108; y: 210 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1904 + hash: "d2dece405f5f6ed1de2acb6615a931de" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 142; y: 214 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1920 + hash: "21e0f21edc77424e8327c9a3350ecc1d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 198; y: 216 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1936 + image: "flickable-horizontal.2.png" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 229; y: 218 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 266; y: 220 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1952 + hash: "c10c8b0c94f899414d8b3ef0b7c97646" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 322; y: 223 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 322; y: 223 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1968 + hash: "807aff4e6c96a9d0de7fa55e233446b1" + } + Frame { + msec: 1984 + hash: "dbd02848cefacbb26f4bcb7d8f073d6c" + } + Frame { + msec: 2000 + hash: "9a60608d8ea1b39fa2d3851873f2f08e" + } + Frame { + msec: 2016 + hash: "e7b3e3a40281f63889808211d6746374" + } + Frame { + msec: 2032 + hash: "188c225c46ec00105df230bfeea09974" + } + Frame { + msec: 2048 + hash: "e2e977b42e91d8c5dee57fd8245692eb" + } + Frame { + msec: 2064 + hash: "ca2f12fb173c405f95e608858ab982ad" + } + Frame { + msec: 2080 + hash: "fa86ee5f25fa425cf2569c8ef570b9d8" + } + Frame { + msec: 2096 + hash: "9b74656866fb8c7394bbbecec6414aca" + } + Frame { + msec: 2112 + hash: "87147326d1baab174c0f9a5ccdc2cb84" + } + Frame { + msec: 2128 + hash: "c0d00f98c71bf3f8e5954b45fbab95a8" + } + Frame { + msec: 2144 + hash: "c087d1d62e56e573b55c1d8599bba8a6" + } + Frame { + msec: 2160 + hash: "dd5a94c6febdee58e8f115cb75131aaa" + } + Frame { + msec: 2176 + hash: "a7465d6137f865f512ce65ceb29533b4" + } + Frame { + msec: 2192 + hash: "409086f6bb661aab8b548fea56d7e6b1" + } + Frame { + msec: 2208 + hash: "6a22911e0fb58df31271baa463ff599d" + } + Frame { + msec: 2224 + hash: "c4f6dd30d5fdfcf91a8b29cf5c622423" + } + Frame { + msec: 2240 + hash: "5a95b83f237c7243a198a43e9a587179" + } + Frame { + msec: 2256 + hash: "d79ed290efc6dbd976d574bf0b14a6a3" + } + Frame { + msec: 2272 + hash: "a7bcb436e96d7c981852239462573495" + } + Frame { + msec: 2288 + hash: "f63cc82e351daab503e316f8b516990f" + } + Frame { + msec: 2304 + hash: "4ea63cd25a1424042ffc60549a78563c" + } + Frame { + msec: 2320 + hash: "ef0fb776012575b3b0dbf6e5f4dee571" + } + Frame { + msec: 2336 + hash: "e2508faec7737be2666d87ad715b5f74" + } + Frame { + msec: 2352 + hash: "9fe4e897c6b853f774d11817a0eb53bf" + } + Frame { + msec: 2368 + hash: "c122ce2e73cbfedcc99d649c21d91f9d" + } + Frame { + msec: 2384 + hash: "883b8b180853f1f432ae98ddfe1b6ce3" + } + Frame { + msec: 2400 + hash: "d0808284e431da60f61d571c257a3011" + } + Frame { + msec: 2416 + hash: "df90f19450bf4d9496aab987a89e3a02" + } + Frame { + msec: 2432 + hash: "5640c1e64556b90e7fbd4448fa9db462" + } + Frame { + msec: 2448 + hash: "6d9b5c2f7d0dedbbc444e69bb39fed08" + } + Frame { + msec: 2464 + hash: "485c4a8049068cf73bf22db5fd3618be" + } + Frame { + msec: 2480 + hash: "9e25da59c9e7e4cf7796902e8e2ff92a" + } + Frame { + msec: 2496 + hash: "bd45e8f2442d7c1a1b16a762bc29e7cf" + } + Frame { + msec: 2512 + hash: "ec1013d23e581dbb39b1549d2e1b3b32" + } + Frame { + msec: 2528 + hash: "1ea3c2fde8ee3a14406e027f2124d793" + } + Frame { + msec: 2544 + hash: "3c3f31a05fb2f32538872c9fa158aaab" + } + Frame { + msec: 2560 + hash: "05a84d9c55e634ec01edd2a63e13613b" + } + Frame { + msec: 2576 + hash: "0f7ccd2da58e2e73b0ab18bb681dafd5" + } + Frame { + msec: 2592 + hash: "e481ff78029f8bc4bf7c697db6824f6a" + } + Frame { + msec: 2608 + hash: "efb92b8b7a90acabeb4a8d5cae52fe3c" + } + Frame { + msec: 2624 + hash: "4728dd0fac4edf40cfd5ef5a422b4ed9" + } + Frame { + msec: 2640 + hash: "27641dcd772c979ae22d12bfbadbb67f" + } + Frame { + msec: 2656 + hash: "26268714105bc4832d336a38a859fc50" + } + Frame { + msec: 2672 + hash: "caf0d351d3b6914ca52853a30643ea48" + } + Frame { + msec: 2688 + hash: "319824b1143925162f04aaddcfaa65d9" + } + Frame { + msec: 2704 + hash: "73aa36815f34bf5e005000e7da38555e" + } + Frame { + msec: 2720 + hash: "73aa36815f34bf5e005000e7da38555e" + } + Frame { + msec: 2736 + hash: "319824b1143925162f04aaddcfaa65d9" + } + Frame { + msec: 2752 + hash: "caf0d351d3b6914ca52853a30643ea48" + } + Frame { + msec: 2768 + hash: "6608412ee80d14e13a1a05fb4716e719" + } + Frame { + msec: 2784 + hash: "f4f6f002fb76407a5120329972285dc4" + } + Frame { + msec: 2800 + hash: "474d8b566b9e4ef7dc125a8df30ccbb1" + } + Frame { + msec: 2816 + hash: "0133138f30be4ffc7f3af3d9f477c4b4" + } + Frame { + msec: 2832 + hash: "e9ee9d7d0ab9dcea3f28ae71ee19270f" + } + Frame { + msec: 2848 + hash: "9fd9eb665a42b48583bc28c6c0118799" + } + Frame { + msec: 2864 + hash: "94231107bc4a7e900fe5f4eb823bd9bf" + } + Frame { + msec: 2880 + hash: "6011b10728fb1c83f10d3c27366ea3a5" + } + Frame { + msec: 2896 + image: "flickable-horizontal.3.png" + } + Frame { + msec: 2912 + hash: "e456c5fddb5fbcb02662716f19755622" + } + Frame { + msec: 2928 + hash: "88cef15940302e2b8b43e73234fd7b9c" + } + Frame { + msec: 2944 + hash: "041aecec2b0b0d59a56e1dd26b45cab1" + } + Frame { + msec: 2960 + hash: "0d519463c713f3da46ecacd155e1a0f3" + } + Frame { + msec: 2976 + hash: "5dd0c855b97d298244fb599c9f781651" + } + Frame { + msec: 2992 + hash: "8677cec5e559e51095d89abfeda8e542" + } + Frame { + msec: 3008 + hash: "b05fb6e798ab3fed940b5ac4d88ca378" + } + Frame { + msec: 3024 + hash: "6bc9cc0d3b11ea91856296b0ec934a8b" + } + Frame { + msec: 3040 + hash: "f4e63f3af69dacbf2d1d719d4d03a266" + } + Frame { + msec: 3056 + hash: "31ab08997eb86fab062a3128aecbccb5" + } + Frame { + msec: 3072 + hash: "90736b240ba1e634bd0ea86423908e16" + } + Frame { + msec: 3088 + hash: "90736b240ba1e634bd0ea86423908e16" + } + Frame { + msec: 3104 + hash: "e74982557dc06aac572078840c7e889a" + } + Frame { + msec: 3120 + hash: "e74982557dc06aac572078840c7e889a" + } + Frame { + msec: 3136 + hash: "ca30c14c7344d1711a35c707f8804f6e" + } + Frame { + msec: 3152 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 3168 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 3184 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 3200 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 412; y: 214 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3216 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 3232 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 3248 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 408; y: 214 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 407; y: 214 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3264 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 403; y: 214 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3280 + hash: "1991cbb0fb053937f922731d5716032c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 398; y: 214 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3296 + hash: "df447575a4734bb5bd9badc6e27d98e4" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 391; y: 214 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3312 + hash: "0fbfe1e0d7fb54450188398aa40690cd" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 383; y: 214 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3328 + hash: "cb62e60296046c73d301d7186e14faed" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 369; y: 213 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3344 + hash: "909cbd1292476584554e22232cb43639" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 352; y: 211 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3360 + hash: "e63b7e502dfb2834c06a969b683b9bd3" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 331; y: 210 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3376 + hash: "4ea63cd25a1424042ffc60549a78563c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 314; y: 210 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3392 + hash: "77e39d2d4bfcacecdae4f014e4506d71" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 300; y: 210 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3408 + hash: "db576eca8bad67cb8b994f12fc448969" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 288; y: 210 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3424 + hash: "efeb3f616da9d78505c3c82fc34ee31c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 278; y: 210 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3440 + hash: "e4f8bb02f8ac6bc40e1801cc8f360078" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 266; y: 210 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3456 + hash: "82118ef71809e3867717232c4d9c5518" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 252; y: 208 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3472 + hash: "5363451c696f6c6eb792b23d086243d7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 238; y: 208 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3488 + hash: "fe6afe8ae8a7c216a1cffc5515f273d5" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 227; y: 206 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3504 + hash: "9b165741d86c70380c15e15cff3fabb6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 224; y: 206 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3520 + hash: "f5e176355468f4fa224d4dfcdd7525a3" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 222; y: 206 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3536 + hash: "8c5a14a76e052cc6503a3e78245d1da3" + } + Frame { + msec: 3552 + hash: "8c5a14a76e052cc6503a3e78245d1da3" + } + Frame { + msec: 3568 + hash: "8c5a14a76e052cc6503a3e78245d1da3" + } + Frame { + msec: 3584 + hash: "8c5a14a76e052cc6503a3e78245d1da3" + } + Frame { + msec: 3600 + hash: "8c5a14a76e052cc6503a3e78245d1da3" + } + Frame { + msec: 3616 + hash: "8c5a14a76e052cc6503a3e78245d1da3" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 224; y: 206 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3632 + hash: "f5e176355468f4fa224d4dfcdd7525a3" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 232; y: 204 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3648 + hash: "acf538fce5f1b90b83474d9898b7cdd7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 246; y: 203 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3664 + hash: "5a0ee016b8732fbc36064e8a35d91215" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 265; y: 203 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3680 + hash: "8fd06a14c1de175813845ce8f07db6ec" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 292; y: 201 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3696 + hash: "26b0ff6ffda0725e0800f7ea3af510ef" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 310; y: 201 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3712 + hash: "80443f134511be0356a687c9b542b3e7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 321; y: 199 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3728 + hash: "3eeb98a829d29b3dc52f3d145ac49d58" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 323; y: 199 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3744 + hash: "f4d43069b16f41a30e5549aae911d4cd" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 324; y: 199 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3760 + hash: "661c89fa832f0abdcf4ae0c9e8e2d18f" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 324; y: 199 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3776 + hash: "661c89fa832f0abdcf4ae0c9e8e2d18f" + } + Frame { + msec: 3792 + hash: "1520f54b6c8606b9e8372c5c06180453" + } + Frame { + msec: 3808 + hash: "0fcf5e2ce47348cbb5bb485f101fe5ac" + } + Frame { + msec: 3824 + hash: "2eb070e69de07c89830543e0475fc110" + } + Frame { + msec: 3840 + hash: "d73c1059219c0655968af268d22e2c18" + } + Frame { + msec: 3856 + image: "flickable-horizontal.4.png" + } + Frame { + msec: 3872 + hash: "cc969b2c64839ca6d3b5069c0ed938d0" + } + Frame { + msec: 3888 + hash: "1f819e18d1297a1c7eeebb7b040bdef8" + } + Frame { + msec: 3904 + hash: "3643b99afbd8af0953cb39b2c8c04b9f" + } + Frame { + msec: 3920 + hash: "713fd2e2fa38ab27604cb9cae59f1777" + } + Frame { + msec: 3936 + hash: "e2508faec7737be2666d87ad715b5f74" + } + Frame { + msec: 3952 + hash: "fc33b1c7479caeff676ffd885a18d618" + } + Frame { + msec: 3968 + hash: "aca01143db4f870a56bb7546e84cbc5e" + } + Frame { + msec: 3984 + hash: "442b58c39fd3745c61a1eb5043fcbb53" + } + Frame { + msec: 4000 + hash: "7983d7183cc11d6819fa0a006c2d67b4" + } + Frame { + msec: 4016 + hash: "9fe4e897c6b853f774d11817a0eb53bf" + } + Frame { + msec: 4032 + hash: "43f528c81ccfa5b9921dfa3564a24c68" + } + Frame { + msec: 4048 + hash: "dfe04ff0b3ccf205bb38beeab58a4411" + } + Frame { + msec: 4064 + hash: "32ff30b50b500e9feb51e8eef205783c" + } + Frame { + msec: 4080 + hash: "7d83ab4c336b05bcf2cde4e7d8031f6c" + } + Frame { + msec: 4096 + hash: "c92e345e4ffdb30c28d9d5aa5400bd30" + } + Frame { + msec: 4112 + hash: "02eec604d0c00965aae4ac61b91bdc22" + } + Frame { + msec: 4128 + hash: "df447575a4734bb5bd9badc6e27d98e4" + } + Frame { + msec: 4144 + hash: "bac10d8f94a39573313b3b8b2f871c49" + } + Frame { + msec: 4160 + hash: "e5944c5dc6dec8f0c28b7ec3cd58723d" + } + Frame { + msec: 4176 + hash: "1991cbb0fb053937f922731d5716032c" + } + Frame { + msec: 4192 + hash: "50d6538bcaffc343f6626635a3e5899c" + } + Frame { + msec: 4208 + hash: "f3613f57cdb9ed38d8e3fa636962aa99" + } + Frame { + msec: 4224 + hash: "10a89da9887cb4bbd812c090a8a56797" + } + Frame { + msec: 4240 + hash: "89ba74d46970ad2edff701475c059ec8" + } + Frame { + msec: 4256 + hash: "6e8b84c70e81578a2216e9e975b35434" + } + Frame { + msec: 4272 + hash: "6e8b84c70e81578a2216e9e975b35434" + } + Frame { + msec: 4288 + hash: "883b8b180853f1f432ae98ddfe1b6ce3" + } + Frame { + msec: 4304 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4320 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4336 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 4352 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 4368 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 4384 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 4400 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 4416 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 4432 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 4448 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 4464 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 4480 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 4496 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 4512 + hash: "e616110d39009f0d636b816828cc0ccb" + } + Frame { + msec: 4528 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4544 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4560 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4576 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4592 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4608 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4624 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4640 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4656 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4672 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4688 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } + Frame { + msec: 4704 + hash: "244c12e82ee0b2528a0dbb02a8b8134a" + } +} diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.qml b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.qml index 5cb4f78..a94aca8 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-horizontal.qml @@ -994,7 +994,7 @@ VisualTest { } Frame { msec: 3264 - hash: "10a89da9887cb4bbd812c090a8a56797" + hash: "244c12e82ee0b2528a0dbb02a8b8134a" } Mouse { type: 5 diff --git a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.qml b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.qml index 8c746bf..920a48f 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativeflickable/data/flickable-vertical.qml @@ -1922,7 +1922,7 @@ VisualTest { } Frame { msec: 4480 - hash: "155a834ddaa7128b6f5a2a406b340315" + hash: "16b99c9cf5297a5251869a3935084cf7" } Mouse { type: 5 @@ -2106,7 +2106,7 @@ VisualTest { } Frame { msec: 4768 - hash: "155a834ddaa7128b6f5a2a406b340315" + hash: "d315f82e175361fed83193ce550cb6e9" } Mouse { type: 5 diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.0.png b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.0.png Binary files differindex 75a6c49..0efb20a 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.qml b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.qml index 3365d40..365c25f 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativepositioners/data/usingRepeater.qml @@ -10,126 +10,126 @@ VisualTest { } Frame { msec: 32 - hash: "1a396cf01a6c31155609532654653599" + hash: "e76f50af76d6ee5925b183f9e2316b78" } Frame { msec: 48 - hash: "1a396cf01a6c31155609532654653599" + hash: "e76f50af76d6ee5925b183f9e2316b78" } Frame { msec: 64 - hash: "1a396cf01a6c31155609532654653599" + hash: "e76f50af76d6ee5925b183f9e2316b78" } Frame { msec: 80 - hash: "1a396cf01a6c31155609532654653599" + hash: "e76f50af76d6ee5925b183f9e2316b78" } Frame { msec: 96 - hash: "1a396cf01a6c31155609532654653599" + hash: "e76f50af76d6ee5925b183f9e2316b78" } Frame { msec: 112 - hash: "1a396cf01a6c31155609532654653599" + hash: "e76f50af76d6ee5925b183f9e2316b78" } Frame { msec: 128 - hash: "1a396cf01a6c31155609532654653599" + hash: "e76f50af76d6ee5925b183f9e2316b78" } Frame { msec: 144 - hash: "1a396cf01a6c31155609532654653599" + hash: "e76f50af76d6ee5925b183f9e2316b78" } Frame { msec: 160 - hash: "1a396cf01a6c31155609532654653599" + hash: "e76f50af76d6ee5925b183f9e2316b78" } Frame { msec: 176 - hash: "1a396cf01a6c31155609532654653599" + hash: "e76f50af76d6ee5925b183f9e2316b78" } Frame { msec: 192 - hash: "1a396cf01a6c31155609532654653599" + hash: "e76f50af76d6ee5925b183f9e2316b78" } Frame { msec: 208 - hash: "1a396cf01a6c31155609532654653599" + hash: "e76f50af76d6ee5925b183f9e2316b78" } Frame { msec: 224 - hash: "1a396cf01a6c31155609532654653599" + hash: "e76f50af76d6ee5925b183f9e2316b78" } Frame { msec: 240 - hash: "1a396cf01a6c31155609532654653599" + hash: "e76f50af76d6ee5925b183f9e2316b78" } Frame { msec: 256 - hash: "1a396cf01a6c31155609532654653599" + hash: "e76f50af76d6ee5925b183f9e2316b78" } Frame { msec: 272 - hash: "8a4565aee33d40840bda26b65b6a0d90" + hash: "c98a904eb5da750f4cabf787e253b2ec" } Frame { msec: 288 - hash: "8a4565aee33d40840bda26b65b6a0d90" + hash: "c98a904eb5da750f4cabf787e253b2ec" } Frame { msec: 304 - hash: "8a4565aee33d40840bda26b65b6a0d90" + hash: "c98a904eb5da750f4cabf787e253b2ec" } Frame { msec: 320 - hash: "8a4565aee33d40840bda26b65b6a0d90" + hash: "c98a904eb5da750f4cabf787e253b2ec" } Frame { msec: 336 - hash: "8a4565aee33d40840bda26b65b6a0d90" + hash: "c98a904eb5da750f4cabf787e253b2ec" } Frame { msec: 352 - hash: "8a4565aee33d40840bda26b65b6a0d90" + hash: "c98a904eb5da750f4cabf787e253b2ec" } Frame { msec: 368 - hash: "8a4565aee33d40840bda26b65b6a0d90" + hash: "c98a904eb5da750f4cabf787e253b2ec" } Frame { msec: 384 - hash: "8a4565aee33d40840bda26b65b6a0d90" + hash: "c98a904eb5da750f4cabf787e253b2ec" } Frame { msec: 400 - hash: "8a4565aee33d40840bda26b65b6a0d90" + hash: "c98a904eb5da750f4cabf787e253b2ec" } Frame { msec: 416 - hash: "8a4565aee33d40840bda26b65b6a0d90" + hash: "c98a904eb5da750f4cabf787e253b2ec" } Frame { msec: 432 - hash: "8a4565aee33d40840bda26b65b6a0d90" + hash: "c98a904eb5da750f4cabf787e253b2ec" } Frame { msec: 448 - hash: "8a4565aee33d40840bda26b65b6a0d90" + hash: "c98a904eb5da750f4cabf787e253b2ec" } Frame { msec: 464 - hash: "8a4565aee33d40840bda26b65b6a0d90" + hash: "c98a904eb5da750f4cabf787e253b2ec" } Frame { msec: 480 - hash: "8a4565aee33d40840bda26b65b6a0d90" + hash: "c98a904eb5da750f4cabf787e253b2ec" } Frame { msec: 496 - hash: "8a4565aee33d40840bda26b65b6a0d90" + hash: "c98a904eb5da750f4cabf787e253b2ec" } Frame { msec: 512 - hash: "8a4565aee33d40840bda26b65b6a0d90" + hash: "c98a904eb5da750f4cabf787e253b2ec" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.0.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.0.png Binary files differnew file mode 100644 index 0000000..8714f58 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.1.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.1.png Binary files differnew file mode 100644 index 0000000..05e4a98 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.2.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.2.png Binary files differnew file mode 100644 index 0000000..29df073 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.2.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.3.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.3.png Binary files differnew file mode 100644 index 0000000..b38486e --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.3.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.4.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.4.png Binary files differnew file mode 100644 index 0000000..4de915b --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.4.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.5.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.5.png Binary files differnew file mode 100644 index 0000000..61a4684 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.5.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.6.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.6.png Binary files differnew file mode 100644 index 0000000..4ce5e30 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.6.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.7.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.7.png Binary files differnew file mode 100644 index 0000000..2376b13 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.7.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.qml new file mode 100644 index 0000000..893355b --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data-MAC/follow.qml @@ -0,0 +1,1763 @@ +import Qt.VisualTest 4.7 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + image: "follow.0.png" + } + Frame { + msec: 32 + hash: "e94ba580322887dbbbf9cb6309e39c23" + } + Frame { + msec: 48 + hash: "787a59cda2c0b27d8959026e6d1b9427" + } + Frame { + msec: 64 + hash: "9ca724d4b31aa16015b5cbb50eea0c3a" + } + Frame { + msec: 80 + hash: "8a2c62a0190da1b7c1bade243baea6b8" + } + Frame { + msec: 96 + hash: "e129bebca7ad348c3134569d8eee4efc" + } + Frame { + msec: 112 + hash: "fd6387415e1c02fe6d17d9c3aa1d1ed8" + } + Frame { + msec: 128 + hash: "a82a4042fdca7c30facd2c4740c455f7" + } + Frame { + msec: 144 + hash: "62195722eb3acbfbad137ec71fd50bfe" + } + Frame { + msec: 160 + hash: "449819cdc880d59650732b5447ec6237" + } + Frame { + msec: 176 + hash: "552a838ebcacc0e08fa93b64a2433831" + } + Frame { + msec: 192 + hash: "3984992606d54f05eb31dd0974af2183" + } + Frame { + msec: 208 + hash: "3fd7225bbb0215ca8b6397580f2352a5" + } + Frame { + msec: 224 + hash: "0fd8f26f40a9049de1cf2a9493d579d1" + } + Frame { + msec: 240 + hash: "d08f0c57f071dc42e79fc5e0e3c32eeb" + } + Frame { + msec: 256 + hash: "084c2db330ee82cd032df248ecc9629d" + } + Frame { + msec: 272 + hash: "98da0d7f280d7fc4579c970c9a173b51" + } + Frame { + msec: 288 + hash: "4c819c54ced1b6ef0574417a7e11f2e7" + } + Frame { + msec: 304 + hash: "3dc5f7b412cb176c3b23d37cda3ef87c" + } + Frame { + msec: 320 + hash: "c368a01b43d94205c03f9c750c37f330" + } + Frame { + msec: 336 + hash: "8842bd0c8b17cac4fc9df84835999174" + } + Frame { + msec: 352 + hash: "26829e9c7ca44dfcb0c03852f4158a18" + } + Frame { + msec: 368 + hash: "ecffdb0888f1721e27b163e1f29a1950" + } + Frame { + msec: 384 + hash: "eaead96f2683c464a12df8aadba20691" + } + Frame { + msec: 400 + hash: "1e931963925bd208dce1ec9011372a3b" + } + Frame { + msec: 416 + hash: "1c3fd049001c1e883f21d0d1e0e32cba" + } + Frame { + msec: 432 + hash: "e8c3422ca637750ac52565594737d092" + } + Frame { + msec: 448 + hash: "b1c36322cf89e15a80af7c43f2aebca1" + } + Frame { + msec: 464 + hash: "f676c3171495f7bb2cb1812cfebaa17a" + } + Frame { + msec: 480 + hash: "255119e2efa99c8e31fee611aaaa5137" + } + Frame { + msec: 496 + hash: "e0bd32e3d44cfc2351db105f4595f18a" + } + Frame { + msec: 512 + hash: "b7f23b8f3769f929b42491efda7ebe19" + } + Frame { + msec: 528 + hash: "718cee11d869a8a8c5191cc0c09f2d30" + } + Frame { + msec: 544 + hash: "fbdbf92f8c5f507605ff50abc594682b" + } + Frame { + msec: 560 + hash: "c07fdc69c72b40d3c8dd1cc499008888" + } + Frame { + msec: 576 + hash: "38e17ecd537dc0f51211ad672a2ebb21" + } + Frame { + msec: 592 + hash: "2cbdc8728ef779c62f9938672986658a" + } + Frame { + msec: 608 + hash: "7fb66509d5d1df34861e9c70f9a579f0" + } + Frame { + msec: 624 + hash: "410b89392e859058718a08b79ec3d8fa" + } + Frame { + msec: 640 + hash: "9bd90f80700217d08dafed93b81ee9cf" + } + Frame { + msec: 656 + hash: "6d83671504a4274887b4e0d9bd2b24e7" + } + Frame { + msec: 672 + hash: "51ff7bd3fd4a776af33fce7b935b145c" + } + Frame { + msec: 688 + hash: "20f27392368b63b248bcd455cf3c9106" + } + Frame { + msec: 704 + hash: "1a5ab296bd55aa215c9b04a7ff6c73a1" + } + Frame { + msec: 720 + hash: "020fd7b14e8662fc006b0c39adca7c6a" + } + Frame { + msec: 736 + hash: "2619120bdb25a153963bdf05c4a16d44" + } + Frame { + msec: 752 + hash: "fd321314031efeb9ce71146764289d9f" + } + Frame { + msec: 768 + hash: "378a71f09445dfff284db919787cbf87" + } + Frame { + msec: 784 + hash: "d59eefe82ab8a00c903141dd9ea767ef" + } + Frame { + msec: 800 + hash: "0a65004d69a4567f2a5c7e84dab3a905" + } + Frame { + msec: 816 + hash: "92a4631716a51ff484ca14d9cfe05b2e" + } + Frame { + msec: 832 + hash: "87203f627cf410cad56d6ba38a140efa" + } + Frame { + msec: 848 + hash: "054cc085998cc059a6b7b4a7300dd36b" + } + Frame { + msec: 864 + hash: "af3fefeb908a0485c723d36f61eff0a4" + } + Frame { + msec: 880 + hash: "3f905d1e1ea79858b5a9bbfeab4eb255" + } + Frame { + msec: 896 + hash: "f935f1fc5f26a201098d894fca9a4d1f" + } + Frame { + msec: 912 + hash: "42b003dbb531da514716b9c32bdd3614" + } + Frame { + msec: 928 + hash: "a82fed83ee4efee7896b639c7691b13a" + } + Frame { + msec: 944 + hash: "31ad8cbf875233ea495330b0d3d4d2dd" + } + Frame { + msec: 960 + hash: "00586f2f1d49fa81f90f7b06614311b4" + } + Frame { + msec: 976 + image: "follow.1.png" + } + Frame { + msec: 992 + hash: "5d71ff48b865ad4266eb8292f981b04e" + } + Frame { + msec: 1008 + hash: "df599d934d131c92b209284277009efb" + } + Frame { + msec: 1024 + hash: "5aaf33d11eb70ffdfe89246c637caed7" + } + Frame { + msec: 1040 + hash: "9648cf623a66ded145c4fd23a42917b3" + } + Frame { + msec: 1056 + hash: "9d33c2cc44ceac5a527ddcf809a51df6" + } + Frame { + msec: 1072 + hash: "6d0ad2e0d012e53a03e246e6d5e49e13" + } + Frame { + msec: 1088 + hash: "d33fa68796e38b19f44571d11c1bcd33" + } + Frame { + msec: 1104 + hash: "636680f49bbf30b0fac31a6c581f18dd" + } + Frame { + msec: 1120 + hash: "66801dbc39301e6b46b244fe502e0340" + } + Frame { + msec: 1136 + hash: "f8fa6a033483279e78636f26493b10ac" + } + Frame { + msec: 1152 + hash: "11b46611550173df42986dee4339d907" + } + Frame { + msec: 1168 + hash: "5c9afdb519006079ee8d28b2b60d0b76" + } + Frame { + msec: 1184 + hash: "9a55c38b2cd8abf25fbe448c7ef80971" + } + Frame { + msec: 1200 + hash: "27ebdf1424e892b35c93ec009d942407" + } + Frame { + msec: 1216 + hash: "2d9e3f0ae56f7337012b51c4dd173108" + } + Frame { + msec: 1232 + hash: "e6f89ca892131d68ff1f4ca95c95d807" + } + Frame { + msec: 1248 + hash: "f75791f1b12a217d37acb09bdb114cc5" + } + Frame { + msec: 1264 + hash: "94c5ab1460fb1b0f957a9718b45bca36" + } + Frame { + msec: 1280 + hash: "e246c8a0ec3d01ea20258b24a5673fe1" + } + Frame { + msec: 1296 + hash: "529de7735e73409dff266d8c1275215c" + } + Frame { + msec: 1312 + hash: "330400763a670580570cb62241ebec62" + } + Frame { + msec: 1328 + hash: "ae444d1de9c509fc6f74136ca90f927a" + } + Frame { + msec: 1344 + hash: "c43631ca8ee90ea5dc7664be5bc45429" + } + Frame { + msec: 1360 + hash: "b366ac4a5b66c331a7667e9df0fc4eda" + } + Frame { + msec: 1376 + hash: "1c7f4c47a9c57a34787cc9703e99bff1" + } + Frame { + msec: 1392 + hash: "5555535609d512e8d34549b6624f74b8" + } + Frame { + msec: 1408 + hash: "be59df714541923494b59f31f57e310e" + } + Frame { + msec: 1424 + hash: "63e434f053032e54298f6e61c8d4da7d" + } + Frame { + msec: 1440 + hash: "b0bb838637eceb6f8993ebc5b887afed" + } + Frame { + msec: 1456 + hash: "fc39f33add4ebcaf578558ecd4aea281" + } + Frame { + msec: 1472 + hash: "3f36faa7cc1e5898d4d5890c47633ff3" + } + Frame { + msec: 1488 + hash: "4b328002b4461869b1f7de48e7291902" + } + Frame { + msec: 1504 + hash: "26252c63924d2abcaebea2c7caf1d7aa" + } + Frame { + msec: 1520 + hash: "a9a6023484ae439be86b2c2ff59dc40b" + } + Frame { + msec: 1536 + hash: "620dab11bd4aab84cc0d949c48dd9a5d" + } + Frame { + msec: 1552 + hash: "3b45ef80ee3e6fbbd3533bfa0d666e2f" + } + Frame { + msec: 1568 + hash: "b33306abcb6a8402e491b7216495c778" + } + Frame { + msec: 1584 + hash: "3cc52e8649a02e87785f1dc63f5c1efd" + } + Frame { + msec: 1600 + hash: "fe21141f48da685213ed9d7641b2e7a0" + } + Frame { + msec: 1616 + hash: "205aac4e822e20bd32f637256250f3c8" + } + Frame { + msec: 1632 + hash: "124df0948f36aaf6151556d301f4b930" + } + Frame { + msec: 1648 + hash: "c1701edd5eaf143fd1dbdc4a5324b48a" + } + Frame { + msec: 1664 + hash: "117402df55367c918a3835958f4ab1d6" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 195; y: 95 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1680 + hash: "73e3b86a1da28490cae4b03fdceefe19" + } + Frame { + msec: 1696 + hash: "172e329fb47d6db0180242990a84fe3b" + } + Frame { + msec: 1712 + hash: "82cf704cdfd406bab22689bc888ddc8d" + } + Frame { + msec: 1728 + hash: "4c288f198a06d1b2815d34c3c8f97051" + } + Frame { + msec: 1744 + hash: "6404d81456bb95a6b1c1ae55a181e40e" + } + Frame { + msec: 1760 + hash: "6c11b9f079936ea08d11aa1172bfd954" + } + Frame { + msec: 1776 + hash: "95388037c1f79a9dab951031f1d7c307" + } + Frame { + msec: 1792 + hash: "c4ee57d9bffbb5f0ff173db48eadf2e3" + } + Frame { + msec: 1808 + hash: "703ac9672a9c55cf08e6381ef76ac13c" + } + Frame { + msec: 1824 + hash: "ea7726d2a2923290398262c8f70d511e" + } + Frame { + msec: 1840 + hash: "9897c12603326a30c62381015c9adae3" + } + Frame { + msec: 1856 + hash: "a52aa37b10a05382f1b136896b7e00e8" + } + Frame { + msec: 1872 + hash: "a5acc1a45c95a67725e5e15084b7be18" + } + Frame { + msec: 1888 + hash: "c9fac8b5a4110493958d49b073ea96ed" + } + Frame { + msec: 1904 + hash: "6fca3a5c6d1cfbf1b905aca25b7785c5" + } + Frame { + msec: 1920 + hash: "a40e5e2744d1d84c8b9a45525801a745" + } + Frame { + msec: 1936 + image: "follow.2.png" + } + Frame { + msec: 1952 + hash: "b2f980ab19d44ee98ab3e82a19adfe2d" + } + Frame { + msec: 1968 + hash: "e01732623930aebefd76ab62c81dc722" + } + Frame { + msec: 1984 + hash: "3a59c6851bc89eb31100092b1ceddbd9" + } + Frame { + msec: 2000 + hash: "2949de19eacb9f35816aa7ba69614f2c" + } + Frame { + msec: 2016 + hash: "f2c4c1f4429cbb6bd10f2318b2cb6904" + } + Frame { + msec: 2032 + hash: "2c48af64162e7e028cd536dba03eab71" + } + Frame { + msec: 2048 + hash: "7fe13b8f9253f720b6591b396cfba2d1" + } + Frame { + msec: 2064 + hash: "559947a03e650575a764801366cc504b" + } + Frame { + msec: 2080 + hash: "a8d09f6c862fd5ec2dcf34f06d1ef744" + } + Frame { + msec: 2096 + hash: "e3bb4b62209631ff84134f2243bfdb42" + } + Frame { + msec: 2112 + hash: "a1956a9d1939bc154ea0c88d596948cc" + } + Frame { + msec: 2128 + hash: "c98a375727860da1e827d4dd74af8f63" + } + Frame { + msec: 2144 + hash: "df4edcbb2ef5348341ff55c808609b6c" + } + Frame { + msec: 2160 + hash: "6287564be85b7cbadc6bb6f0232bc837" + } + Frame { + msec: 2176 + hash: "9826fdb48f7ea770fa5f198ec49d7cb7" + } + Frame { + msec: 2192 + hash: "56f82641a5591df9bb929cc0d32eb95d" + } + Frame { + msec: 2208 + hash: "526c55e555fb2e58796561efa3568c50" + } + Frame { + msec: 2224 + hash: "6b4b74613421c1841a17c369cb316754" + } + Frame { + msec: 2240 + hash: "37f785c30947d5eec113dcf6af649abf" + } + Frame { + msec: 2256 + hash: "5ff2c975dd9e261c764537c836627c4d" + } + Frame { + msec: 2272 + hash: "efe554981583749c3d09988bce7fed02" + } + Frame { + msec: 2288 + hash: "0f7204b4afb0ea5d58e49650e8027c0c" + } + Frame { + msec: 2304 + hash: "817291f91f4b309710ad3aed53a7d47a" + } + Frame { + msec: 2320 + hash: "c15c9cd03089090cf8a777c1f0d88de7" + } + Frame { + msec: 2336 + hash: "05f45cb8d0856dcc81091351615e35d6" + } + Frame { + msec: 2352 + hash: "99785a16fed6d6409b4b47ec55afb56b" + } + Frame { + msec: 2368 + hash: "39032cb4432ee9536af500673fccf526" + } + Frame { + msec: 2384 + hash: "9057653e3cd6042831037d3590e7595b" + } + Frame { + msec: 2400 + hash: "76c772eb2ab8f117c260c9c96bc99e1d" + } + Frame { + msec: 2416 + hash: "b6474665b8f8bcdd76d1a38efecad889" + } + Frame { + msec: 2432 + hash: "106c2d2efafad0181e3ded3a6805f2c6" + } + Frame { + msec: 2448 + hash: "5275fa4ffef6c1909f9d03bb1e7b9cae" + } + Frame { + msec: 2464 + hash: "0c1043c0087d60000dc7259d4ac03618" + } + Frame { + msec: 2480 + hash: "645748569b4f5cb9b206b0808bb7d23d" + } + Frame { + msec: 2496 + hash: "dd95dfa80e1b3ff511e7c75efd0d87ce" + } + Frame { + msec: 2512 + hash: "86b3dd03b04d7610837cdc67cad07e0a" + } + Frame { + msec: 2528 + hash: "8264f67ac92e4ebcfe4cc8e954f8c5d2" + } + Frame { + msec: 2544 + hash: "6bf52377d822b09eb28a1ec36d3a36a9" + } + Frame { + msec: 2560 + hash: "7ae1d65cdaf7fa71eb4ec318b37bb0aa" + } + Frame { + msec: 2576 + hash: "860f5ce9844c90cf9e6a6d383ff0972f" + } + Frame { + msec: 2592 + hash: "5502229c038dfc59d966f69ae6ed8957" + } + Frame { + msec: 2608 + hash: "21843c027bc1434ae60b3bb0fced2c54" + } + Frame { + msec: 2624 + hash: "962df45680949c3eb6c968f98cd76b20" + } + Frame { + msec: 2640 + hash: "f313c26fa76a0edce61244bdf92528e4" + } + Frame { + msec: 2656 + hash: "b7bbde239e98cbd66b1e51b54b747f51" + } + Frame { + msec: 2672 + hash: "62340707fbc832fcb805c8f80ab353d1" + } + Frame { + msec: 2688 + hash: "d008a3f7af1810ff70b68b38a4cd0f0d" + } + Frame { + msec: 2704 + hash: "e651dd628af24faf34d716beb392b052" + } + Frame { + msec: 2720 + hash: "a97733963c7a7616b25741545b07ffba" + } + Frame { + msec: 2736 + hash: "3e017cc1db720cf16521bd17308e4f44" + } + Frame { + msec: 2752 + hash: "13652ebaa610cca71486517e2eed21a5" + } + Frame { + msec: 2768 + hash: "09f0f500c6f7d11be39c31f9e589b38a" + } + Frame { + msec: 2784 + hash: "b87968cbc60ddc6a5f5699e830410eab" + } + Frame { + msec: 2800 + hash: "50e65b043d1f07a321a08ee4c25204f6" + } + Frame { + msec: 2816 + hash: "122d1ffa1510468e8c4067e0f511588f" + } + Frame { + msec: 2832 + hash: "585f6c25caaafb99a22a23d8a998d202" + } + Frame { + msec: 2848 + hash: "9b245a00ad576666c10f509d8a80a61e" + } + Frame { + msec: 2864 + hash: "9b245a00ad576666c10f509d8a80a61e" + } + Frame { + msec: 2880 + hash: "3c5d3d10bacc093afc6a9c0b5aa4cddc" + } + Frame { + msec: 2896 + image: "follow.3.png" + } + Frame { + msec: 2912 + hash: "31926d69c2309fdf13fbd7f0e9868c3d" + } + Frame { + msec: 2928 + hash: "eb3acacce5dd31b0e94b59b9e546ccae" + } + Frame { + msec: 2944 + hash: "9a51cff3276d75803a0a6e480f7ecb70" + } + Frame { + msec: 2960 + hash: "fbbd8b9d519993a699815d935bcd2b9f" + } + Frame { + msec: 2976 + hash: "0314190c6de73f9f374a4eaed0709645" + } + Frame { + msec: 2992 + hash: "8ca1a203bdb5446094eb948aeb0a333e" + } + Frame { + msec: 3008 + hash: "301e1b86ce38e11ad9d0d7aba0909985" + } + Frame { + msec: 3024 + hash: "922095867d0a91b73ab7a63df2041279" + } + Frame { + msec: 3040 + hash: "ba8275f3ba4633bf64a1f81f630c90f1" + } + Frame { + msec: 3056 + hash: "efe39545279a7bd015d2de75d2b9d8b1" + } + Frame { + msec: 3072 + hash: "78926c3c0c6fcf89b9291f9902710964" + } + Frame { + msec: 3088 + hash: "ea63dcb7f00d3ddede0d8be59ad9d6bc" + } + Frame { + msec: 3104 + hash: "286ad493301b713a49e378f123482a53" + } + Frame { + msec: 3120 + hash: "a4bbbb8bb88188d3e99996502e3eebd1" + } + Frame { + msec: 3136 + hash: "a6100e79f3dc5af594e86ab6cd8dfb76" + } + Frame { + msec: 3152 + hash: "d9e3f777dc89bcf1b7f712206db768e2" + } + Frame { + msec: 3168 + hash: "768045c600c0aa0b1e9e6f012733c600" + } + Frame { + msec: 3184 + hash: "d8b4caa641ddee786f7898359efe9d07" + } + Frame { + msec: 3200 + hash: "f7c3b76d5bb7c263ac9447eaad685158" + } + Frame { + msec: 3216 + hash: "f7f97db815d653ec29fa31b87f72af2a" + } + Frame { + msec: 3232 + hash: "18524623762487b60943312cd8bd4388" + } + Frame { + msec: 3248 + hash: "5823dee5dd56e9f7515601f9629ccbae" + } + Frame { + msec: 3264 + hash: "5823dee5dd56e9f7515601f9629ccbae" + } + Frame { + msec: 3280 + hash: "5823dee5dd56e9f7515601f9629ccbae" + } + Frame { + msec: 3296 + hash: "5823dee5dd56e9f7515601f9629ccbae" + } + Frame { + msec: 3312 + hash: "18524623762487b60943312cd8bd4388" + } + Frame { + msec: 3328 + hash: "430995770b655054aaeda383df8e27f7" + } + Frame { + msec: 3344 + hash: "16a3a00f2b89aed676f80d63c4933ec3" + } + Frame { + msec: 3360 + hash: "6c55aa62079ec546522edbf69c37b270" + } + Frame { + msec: 3376 + hash: "0d68ca3ccecdd831013950cc7405e46e" + } + Frame { + msec: 3392 + hash: "9da2511bc8b434218695fa74ed543439" + } + Frame { + msec: 3408 + hash: "05afdd0b99dab81a500cdc2b2f0786fe" + } + Frame { + msec: 3424 + hash: "e6f8882d146ae60bcc6ea47ff41a637b" + } + Frame { + msec: 3440 + hash: "154542ed0e88321294f382501819aefc" + } + Frame { + msec: 3456 + hash: "8f47b6980c387c5020145bf04645fd2d" + } + Frame { + msec: 3472 + hash: "b34b055c7602f1f4e1cde875b258120c" + } + Frame { + msec: 3488 + hash: "5a697f675575f05e297d4877604b9a47" + } + Frame { + msec: 3504 + hash: "729dff1d1b357d19fc81804ec8940d0e" + } + Frame { + msec: 3520 + hash: "c6f3fee46baa94a6139d2ee40254b160" + } + Frame { + msec: 3536 + hash: "af0e700bb8ae34834510830f8b44afdb" + } + Frame { + msec: 3552 + hash: "9c87bb54c2dfe58c2da9194dae6f7502" + } + Frame { + msec: 3568 + hash: "2132356a92c75d725f9feafb8201b142" + } + Frame { + msec: 3584 + hash: "50d855d2595eeae2bfd6aaa8c2fa0454" + } + Frame { + msec: 3600 + hash: "5fde3c62d6e53a9056e3586f9dcda59e" + } + Frame { + msec: 3616 + hash: "8f04460254a1e9fb949d5165894cd92a" + } + Frame { + msec: 3632 + hash: "2b514c5e3b20d30f9c7e71092c69f081" + } + Frame { + msec: 3648 + hash: "2c1ba6224037790e15f5c0f2864ace4d" + } + Frame { + msec: 3664 + hash: "0d5b8e7bd5f560888aacaf2b3c6827a8" + } + Frame { + msec: 3680 + hash: "ae25004530e7df134414018e4a34780e" + } + Frame { + msec: 3696 + hash: "1a8fd9eaf9a91f1b42924f8986fbed9a" + } + Frame { + msec: 3712 + hash: "2ea6de2025d40ed5beeff12a5b70ccc9" + } + Frame { + msec: 3728 + hash: "624e417718d3cac1e4b7e4ce258ce6ea" + } + Frame { + msec: 3744 + hash: "8b56d29391257c7be8966af6be26ea9f" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 195; y: 95 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3760 + hash: "5c0d977d8b446d9191bde57335cf1062" + } + Frame { + msec: 3776 + hash: "100be2b21d069e3a5dbb694a90da4d4f" + } + Frame { + msec: 3792 + hash: "caab03f6c81080dd8fdbedb4e94ae4a5" + } + Frame { + msec: 3808 + hash: "3328a4d06f2f80a7e9ccf2ff21522fca" + } + Frame { + msec: 3824 + hash: "a534e6cc28daf3eff6a9cf8379bd6375" + } + Frame { + msec: 3840 + hash: "6686f9c1a814c6a6b785b70f94937b68" + } + Frame { + msec: 3856 + image: "follow.4.png" + } + Frame { + msec: 3872 + hash: "d3f1c3593375ca5c022a1361a7ec70bd" + } + Frame { + msec: 3888 + hash: "67843e6192e2ecaa3820c37dc2f93106" + } + Frame { + msec: 3904 + hash: "19a022f678e5b8f4ebdff936162323dc" + } + Frame { + msec: 3920 + hash: "34e55ae70c9e156db339ae15642359c3" + } + Frame { + msec: 3936 + hash: "3784778c817f9d9bb73d990cfe12685a" + } + Frame { + msec: 3952 + hash: "0403fdf79e3ba339c7e3786db0c9c0f0" + } + Frame { + msec: 3968 + hash: "93e4a0d5645d1cfc916f1e8422655555" + } + Frame { + msec: 3984 + hash: "29080bfabb87160b7c51385fb36b474b" + } + Frame { + msec: 4000 + hash: "9da2d83edc9d35f00fb8a159e79de4d9" + } + Frame { + msec: 4016 + hash: "5505a42d4788f00cfc7499fbfda851ce" + } + Frame { + msec: 4032 + hash: "bdd3040ab16fa9ffdd2fbc66b06699f8" + } + Frame { + msec: 4048 + hash: "2a347e30a20c693a9440caa60ade0a0f" + } + Frame { + msec: 4064 + hash: "0307f1857c091a639d47f112ce1a2f5a" + } + Frame { + msec: 4080 + hash: "778d18e539bbd562ebe39283a6315df1" + } + Frame { + msec: 4096 + hash: "0369cf6c3d1f5db2e92ee1f7c5d3b8ed" + } + Frame { + msec: 4112 + hash: "9f7413587ab50f1abf776bf180ec2d6f" + } + Frame { + msec: 4128 + hash: "7d04a27236485808e571e8a39f23ea17" + } + Frame { + msec: 4144 + hash: "a1dff63b723473d5a4c9c59975a2fb81" + } + Frame { + msec: 4160 + hash: "9795ea70a3b9d3b7805221a58c19e5da" + } + Frame { + msec: 4176 + hash: "f1392c489e21107136eb8e0d1e8b427e" + } + Frame { + msec: 4192 + hash: "95c225ef07171a96335e99078195b06a" + } + Frame { + msec: 4208 + hash: "d46ef3e7f9cec06e8c18afc0d07be4f3" + } + Frame { + msec: 4224 + hash: "b017f5b51d423bb0fca0d6df3aaded8b" + } + Frame { + msec: 4240 + hash: "60584d085b0cd6fbc436773be678597e" + } + Frame { + msec: 4256 + hash: "117951465dfd5c386826b295560d2dec" + } + Frame { + msec: 4272 + hash: "1b70137da5f4e024593999e93121fe8b" + } + Frame { + msec: 4288 + hash: "bd50dffd41941fef127f39b55c4748e0" + } + Frame { + msec: 4304 + hash: "8eec34d8e1d2e22d11b85a671cd4d3aa" + } + Frame { + msec: 4320 + hash: "9e3c97cfad5002ef5f3fcc365aeb7bd0" + } + Frame { + msec: 4336 + hash: "28e1cf1ee033915ea2ee39c9ab00a73d" + } + Frame { + msec: 4352 + hash: "99101a156a553f441f00221f6facbf1f" + } + Frame { + msec: 4368 + hash: "419023e5d59d16c26b35bee7d3cea559" + } + Frame { + msec: 4384 + hash: "485d23519293975b04031fe4baa5c276" + } + Frame { + msec: 4400 + hash: "c8bc60735e0ede26dbaf228294853f9a" + } + Frame { + msec: 4416 + hash: "ada3680b807d59843e3adf6640704066" + } + Frame { + msec: 4432 + hash: "3e28f3adf9241512cd0d6918d81ffffb" + } + Frame { + msec: 4448 + hash: "8f339acc33cbc89ae1c62391ce021bb3" + } + Frame { + msec: 4464 + hash: "d303960c0853a90557d64a04b8283c94" + } + Frame { + msec: 4480 + hash: "f907dbdacf2cfa9fdf8f9c8dead5b4c4" + } + Frame { + msec: 4496 + hash: "30c6e6f283f4a3f538cdda9c2e92de8c" + } + Frame { + msec: 4512 + hash: "04d2ac55774b43107a43a7d33764199b" + } + Frame { + msec: 4528 + hash: "cddf3e111cbc59e721725daa1d8a0c31" + } + Frame { + msec: 4544 + hash: "15b1b63cd1695207ebf9f04387be0739" + } + Frame { + msec: 4560 + hash: "690769b9bbe86a3c5b1fbdee39615fbd" + } + Frame { + msec: 4576 + hash: "2bd640d8ddbf878d808f22656fef1ed9" + } + Frame { + msec: 4592 + hash: "a654f1e4519bf883d554276ebbe96323" + } + Frame { + msec: 4608 + hash: "68f0313cfc3f51a0bb9b47c5407c19b6" + } + Frame { + msec: 4624 + hash: "77f29806b084de4cabf7ab9bf1a93d5e" + } + Frame { + msec: 4640 + hash: "f9991189e3282d107b98fb0ae5f5ef00" + } + Frame { + msec: 4656 + hash: "0cd1f2f6e347d48feea1b26a4968dec7" + } + Frame { + msec: 4672 + hash: "e75a6f6a088e2289042572a161ffb0e9" + } + Frame { + msec: 4688 + hash: "5a541081444c0a71128223a4c4c3144c" + } + Frame { + msec: 4704 + hash: "6813d442cc610f346a5441ed0cd723e5" + } + Frame { + msec: 4720 + hash: "24ec539bc57899819915f833f26deacd" + } + Frame { + msec: 4736 + hash: "3a7ed1b4b533b817674aa141c420cd61" + } + Frame { + msec: 4752 + hash: "d0a643fae97bb152e97ca60e96299003" + } + Frame { + msec: 4768 + hash: "c84093931520f4661eff6645091a294b" + } + Frame { + msec: 4784 + hash: "81e7ceaece82505a4a16ead195a66162" + } + Frame { + msec: 4800 + hash: "315764d20b647f6ab1ba30239a69bf72" + } + Frame { + msec: 4816 + image: "follow.5.png" + } + Frame { + msec: 4832 + hash: "d1824ced8af34ad9edb36a58ae9aa7f5" + } + Frame { + msec: 4848 + hash: "167b9a49fbb94908e09e7e9c9147cd8b" + } + Frame { + msec: 4864 + hash: "442d5f0906840de526d59a80ada322c0" + } + Frame { + msec: 4880 + hash: "78206c4d4d23c7c1ba888b9062b09432" + } + Frame { + msec: 4896 + hash: "e898202cfebbff1952efc6e01254d855" + } + Frame { + msec: 4912 + hash: "ab31dc7bbad2b0552359866bb8d92f0c" + } + Frame { + msec: 4928 + hash: "f093304e88964376baf9721d53d4fb49" + } + Frame { + msec: 4944 + hash: "3ef76f3e1c44d13c3a469bd192ff7b5d" + } + Frame { + msec: 4960 + hash: "5d3b6d0d91f8cc5b89e39407bc3b5a15" + } + Frame { + msec: 4976 + hash: "3c73573f12f49b34e1d990a55ad913fa" + } + Frame { + msec: 4992 + hash: "d1bac071b01a1c6fddab90cdc435fad4" + } + Frame { + msec: 5008 + hash: "36a219aadec910f1dbef616c641e1d2b" + } + Frame { + msec: 5024 + hash: "5871fc67d361cc988551592ee21dfb23" + } + Frame { + msec: 5040 + hash: "6e65ee6c814b9a9da205c36925e663bf" + } + Frame { + msec: 5056 + hash: "290b20fa8e91d34000d7c2d81745f6d2" + } + Frame { + msec: 5072 + hash: "19e7405a9083a8143f7bb040f8837b29" + } + Frame { + msec: 5088 + hash: "c0a0fa2b4c1ceb6c70594994a1ac8713" + } + Frame { + msec: 5104 + hash: "c236224c16743fb606deb78bcb8afc8d" + } + Frame { + msec: 5120 + hash: "7d44db15eb300b4338ffc26e9bcfce20" + } + Frame { + msec: 5136 + hash: "067a79148a194c45c6f32d85316a1e11" + } + Frame { + msec: 5152 + hash: "9075c379044476994a87f0fdcce8e332" + } + Frame { + msec: 5168 + hash: "b2316988fbd51096a4f512e71fe7d0a2" + } + Frame { + msec: 5184 + hash: "280f70877d93af5f84e178aad6a102d8" + } + Frame { + msec: 5200 + hash: "3eef4ae7e43a8cf1cd9dd562237296f8" + } + Frame { + msec: 5216 + hash: "e3184f77ce3a47ca4dca6386f42d7fec" + } + Frame { + msec: 5232 + hash: "a2a5df66fe4808ea8d466cac84ba910c" + } + Frame { + msec: 5248 + hash: "9f8a0e54788112d6c30482e840504f35" + } + Frame { + msec: 5264 + hash: "ae69cf84798844f9f360c86790feaecd" + } + Frame { + msec: 5280 + hash: "0244526572acb6266db5b7eb9d29c6fc" + } + Frame { + msec: 5296 + hash: "8fb53d60b95ddb5aef27442934ea9983" + } + Frame { + msec: 5312 + hash: "930fcfde491b4f5681e3861764003895" + } + Frame { + msec: 5328 + hash: "bcdcd0a637112d113ebe11dc18823237" + } + Frame { + msec: 5344 + hash: "65a564d5a5afbc14c0cdad4d52753507" + } + Frame { + msec: 5360 + hash: "0c5056d438d2d54938f31ef5f996673a" + } + Frame { + msec: 5376 + hash: "11c157ad2236fc390ffbdf339366cbc1" + } + Frame { + msec: 5392 + hash: "6cb341b1f281a97a35c2e41bfd4c4d9d" + } + Frame { + msec: 5408 + hash: "553a945f7f19f70ddae4ebe88e52a79b" + } + Frame { + msec: 5424 + hash: "d10b42b4095a2474e66a5a322f72e936" + } + Frame { + msec: 5440 + hash: "0f943d61e8072d70eddee8aa1ba0de5a" + } + Frame { + msec: 5456 + hash: "3df18e237b666e78d57857739b759e6d" + } + Frame { + msec: 5472 + hash: "1ddc0bfdb2ca7b6dee63f1024e62f26e" + } + Frame { + msec: 5488 + hash: "aaa397714528f41238059e3a88833abc" + } + Frame { + msec: 5504 + hash: "c94bd69f925c782656afc5f9618180a6" + } + Frame { + msec: 5520 + hash: "824ff8c0e1ab43e3c0eaa79b7cc19b9c" + } + Frame { + msec: 5536 + hash: "6c440a0b2293811335bdbf2c4f25f47d" + } + Frame { + msec: 5552 + hash: "bfc7936cdf833d5b720ec9baca740112" + } + Frame { + msec: 5568 + hash: "375fa305dbae2872dc9b20e59381cc0c" + } + Frame { + msec: 5584 + hash: "fffd6173aa49e74164dc17a238bcd830" + } + Frame { + msec: 5600 + hash: "44d9007e00fab161fd393b653255d7f4" + } + Frame { + msec: 5616 + hash: "f669ee25c58b4fa20a01705d334f0065" + } + Frame { + msec: 5632 + hash: "2dbb7d57711b67d5d9e1b81f70e22d34" + } + Frame { + msec: 5648 + hash: "19351b91448265cb95c1670ee283c611" + } + Frame { + msec: 5664 + hash: "19351b91448265cb95c1670ee283c611" + } + Frame { + msec: 5680 + hash: "3a24b99d048348a21f4e4bd69393de89" + } + Frame { + msec: 5696 + hash: "35a6fe955a52950bbfa954a453e4008e" + } + Frame { + msec: 5712 + hash: "896f4ec28c976237b34fb2725a44460e" + } + Frame { + msec: 5728 + hash: "ed3008ea950ec84c57518e573ea36d15" + } + Frame { + msec: 5744 + hash: "3447c7be992759f772c1db2033eead99" + } + Frame { + msec: 5760 + hash: "b7133225daa03563d3f5b1dac5f56a23" + } + Frame { + msec: 5776 + image: "follow.6.png" + } + Frame { + msec: 5792 + hash: "adc55f2fcf312a90b025a75fa80aa079" + } + Frame { + msec: 5808 + hash: "3ac85cad400d2b8e4f33798f4f6b7b42" + } + Frame { + msec: 5824 + hash: "1c115efd84ccbe489d24c3c521c4a61c" + } + Frame { + msec: 5840 + hash: "39518f1bbc0c4aba6ff517bc3dc7c279" + } + Frame { + msec: 5856 + hash: "7bd28d32996f4de61c415d3217da16d0" + } + Frame { + msec: 5872 + hash: "f5d06e25d775bf8db07e95625a712733" + } + Frame { + msec: 5888 + hash: "4820ea6ea3be88af2f86111c547a19d7" + } + Frame { + msec: 5904 + hash: "fa6e681c368118b7f135a47ae8fc12ff" + } + Frame { + msec: 5920 + hash: "f6b30e618aeeb837d2b3eca270b0a060" + } + Frame { + msec: 5936 + hash: "ac8504bde8d3063a8bf02b9d4b69d755" + } + Frame { + msec: 5952 + hash: "9670537bb77caa8e23fda7bbfa96ca60" + } + Frame { + msec: 5968 + hash: "8cd292865ce5c1d240e9ddc93881a0ed" + } + Frame { + msec: 5984 + hash: "de112013e526203d151c46e6cfba9f92" + } + Frame { + msec: 6000 + hash: "cd61066e697de8c055aaa168791c2d8c" + } + Frame { + msec: 6016 + hash: "cd61066e697de8c055aaa168791c2d8c" + } + Frame { + msec: 6032 + hash: "e68b27ff14aac03c827fd43ac488d23e" + } + Frame { + msec: 6048 + hash: "e68b27ff14aac03c827fd43ac488d23e" + } + Frame { + msec: 6064 + hash: "1f61d857a8c26587fbda5895c603441a" + } + Frame { + msec: 6080 + hash: "1e0dffdd02e05ade1ae444427d4aa345" + } + Frame { + msec: 6096 + hash: "9a416ee7a1de9ac45ab2d609233c9520" + } + Frame { + msec: 6112 + hash: "dfa35bf1cd908011c3214a506bcbdcb8" + } + Frame { + msec: 6128 + hash: "bd502dc72dce4af3036f7af9ed7cf9e9" + } + Frame { + msec: 6144 + hash: "c77280527612408daa3037aab45da59d" + } + Frame { + msec: 6160 + hash: "a38ed1532a40210ad7da4c0d4d1a7195" + } + Frame { + msec: 6176 + hash: "8ac8a8df937da526bbffb9a3590d89ac" + } + Frame { + msec: 6192 + hash: "07527cb9a4494e11f4c9f99eb72598b9" + } + Frame { + msec: 6208 + hash: "655b0327ef0f8711810714ba50f2f8cc" + } + Frame { + msec: 6224 + hash: "549fd25292012a2be1f78118998ca892" + } + Frame { + msec: 6240 + hash: "7a382ae4e6a48826eaa2c83ee7a73fb2" + } + Frame { + msec: 6256 + hash: "5acd5f250c5b32d9006ed68dfecbfa1c" + } + Frame { + msec: 6272 + hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1" + } + Frame { + msec: 6288 + hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1" + } + Frame { + msec: 6304 + hash: "07e5f1277558bfe7638b00cf9d967baf" + } + Frame { + msec: 6320 + hash: "07e5f1277558bfe7638b00cf9d967baf" + } + Frame { + msec: 6336 + hash: "07e5f1277558bfe7638b00cf9d967baf" + } + Frame { + msec: 6352 + hash: "07e5f1277558bfe7638b00cf9d967baf" + } + Frame { + msec: 6368 + hash: "07e5f1277558bfe7638b00cf9d967baf" + } + Frame { + msec: 6384 + hash: "877aca1c64e588845329ca8a38222604" + } + Frame { + msec: 6400 + hash: "877aca1c64e588845329ca8a38222604" + } + Frame { + msec: 6416 + hash: "877aca1c64e588845329ca8a38222604" + } + Frame { + msec: 6432 + hash: "877aca1c64e588845329ca8a38222604" + } + Frame { + msec: 6448 + hash: "877aca1c64e588845329ca8a38222604" + } + Frame { + msec: 6464 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6480 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6496 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6512 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6528 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6544 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6560 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6576 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6592 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6608 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6624 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6640 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6656 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6672 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6688 + hash: "b0f28e923f93dcdcea8460ca9d8cd674" + } + Frame { + msec: 6704 + hash: "228920e994ebf71d542c71ce8263614e" + } + Frame { + msec: 6720 + hash: "228920e994ebf71d542c71ce8263614e" + } + Frame { + msec: 6736 + image: "follow.7.png" + } + Frame { + msec: 6752 + hash: "228920e994ebf71d542c71ce8263614e" + } + Frame { + msec: 6768 + hash: "228920e994ebf71d542c71ce8263614e" + } + Frame { + msec: 6784 + hash: "228920e994ebf71d542c71ce8263614e" + } + Frame { + msec: 6800 + hash: "228920e994ebf71d542c71ce8263614e" + } + Frame { + msec: 6816 + hash: "228920e994ebf71d542c71ce8263614e" + } + Frame { + msec: 6832 + hash: "07e5f1277558bfe7638b00cf9d967baf" + } + Key { + type: 6 + key: 16777249 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6848 + hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1" + } + Frame { + msec: 6864 + hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1" + } + Frame { + msec: 6880 + hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1" + } + Frame { + msec: 6896 + hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1" + } + Frame { + msec: 6912 + hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1" + } + Frame { + msec: 6928 + hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1" + } +} diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.0.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.0.png Binary files differindex ae89849..6525dbb 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.1.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.1.png Binary files differindex 7b7db05..5b8d209 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.2.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.2.png Binary files differindex 7c1442f..cf012ba 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.2.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.3.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.3.png Binary files differindex c01c980..57e77a4 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.3.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.4.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.4.png Binary files differindex 8806e4c..24d26bd 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.4.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.5.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.5.png Binary files differindex b331119..a540734 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.5.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.5.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.6.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.6.png Binary files differindex 76e3c6f..17da643 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.6.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.6.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.7.png b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.7.png Binary files differindex 141753c..e03cfe4 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.7.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.7.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.qml b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.qml index 4548e5b..2cbd278 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativespringanimation/data/follow.qml @@ -10,239 +10,239 @@ VisualTest { } Frame { msec: 32 - hash: "e94ba580322887dbbbf9cb6309e39c23" + hash: "2ddcb50f5d285eb80a8136f0cf4cf85a" } Frame { msec: 48 - hash: "787a59cda2c0b27d8959026e6d1b9427" + hash: "519d93a844e05f8215139d91c9aef58b" } Frame { msec: 64 - hash: "9ca724d4b31aa16015b5cbb50eea0c3a" + hash: "9f075a5547e4dc67cbe2ace2766395bb" } Frame { msec: 80 - hash: "8a2c62a0190da1b7c1bade243baea6b8" + hash: "8fc48f74a51d45b4ea1fb7bd1d48002f" } Frame { msec: 96 - hash: "e129bebca7ad348c3134569d8eee4efc" + hash: "a28fc4be5a5bb9ff36f796d9b071f02c" } Frame { msec: 112 - hash: "fd6387415e1c02fe6d17d9c3aa1d1ed8" + hash: "ebc14c2905f3596ec451dd96409e6001" } Frame { msec: 128 - hash: "a82a4042fdca7c30facd2c4740c455f7" + hash: "4f270bdcff44006a56055edb1cda522a" } Frame { msec: 144 - hash: "62195722eb3acbfbad137ec71fd50bfe" + hash: "571f347e764bf38985768c85c2a13ba1" } Frame { msec: 160 - hash: "449819cdc880d59650732b5447ec6237" + hash: "b1aa23268167b7e2a1190288926f52c0" } Frame { msec: 176 - hash: "552a838ebcacc0e08fa93b64a2433831" + hash: "06d548aef9a678edbf3ab4d3ce62a647" } Frame { msec: 192 - hash: "3984992606d54f05eb31dd0974af2183" + hash: "daf6af0ae78f39566913c656450a66e5" } Frame { msec: 208 - hash: "3fd7225bbb0215ca8b6397580f2352a5" + hash: "f101cd0c026ee0ed6ccef7a4aed302a0" } Frame { msec: 224 - hash: "0fd8f26f40a9049de1cf2a9493d579d1" + hash: "b3caa673f072c53d31d71109c9b33357" } Frame { msec: 240 - hash: "d08f0c57f071dc42e79fc5e0e3c32eeb" + hash: "8596f1d305d6b8f97b9feda9e69bdefe" } Frame { msec: 256 - hash: "084c2db330ee82cd032df248ecc9629d" + hash: "23c23df2c130aafb2092fe47a958a4cd" } Frame { msec: 272 - hash: "98da0d7f280d7fc4579c970c9a173b51" + hash: "66a4f2d8213264437a5f4d6cf10cd442" } Frame { msec: 288 - hash: "4c819c54ced1b6ef0574417a7e11f2e7" + hash: "6392490111813bad0a9467cc0c1746ed" } Frame { msec: 304 - hash: "3dc5f7b412cb176c3b23d37cda3ef87c" + hash: "c115a47e0ecab63b881e2ec492d24e68" } Frame { msec: 320 - hash: "c368a01b43d94205c03f9c750c37f330" + hash: "c2a2b57e6f9ea2975c0846124d2dbc66" } Frame { msec: 336 - hash: "8842bd0c8b17cac4fc9df84835999174" + hash: "8286c315dfda4241607b2de1154f869d" } Frame { msec: 352 - hash: "26829e9c7ca44dfcb0c03852f4158a18" + hash: "3f0f7cae80357176892ff7628ec3153a" } Frame { msec: 368 - hash: "ecffdb0888f1721e27b163e1f29a1950" + hash: "d13bde4a5b5ed8202f92ae33913166c9" } Frame { msec: 384 - hash: "eaead96f2683c464a12df8aadba20691" + hash: "b70cc32134b1b0d31a5e7f145af09495" } Frame { msec: 400 - hash: "1e931963925bd208dce1ec9011372a3b" + hash: "03ebc2ff317ac840f4508e8701d66955" } Frame { msec: 416 - hash: "1c3fd049001c1e883f21d0d1e0e32cba" + hash: "8dff08e72365e8e2fee8088c386dedca" } Frame { msec: 432 - hash: "e8c3422ca637750ac52565594737d092" + hash: "720f3bbaf3fa3e3a064747d5689e47a0" } Frame { msec: 448 - hash: "b1c36322cf89e15a80af7c43f2aebca1" + hash: "350e3ebfcfef96969ef5b8d5944f7e62" } Frame { msec: 464 - hash: "f676c3171495f7bb2cb1812cfebaa17a" + hash: "1e4e6e68b3a8eac0c5cd039164eec166" } Frame { msec: 480 - hash: "255119e2efa99c8e31fee611aaaa5137" + hash: "62a10c4250ad025139a3f9e72109e8e1" } Frame { msec: 496 - hash: "e0bd32e3d44cfc2351db105f4595f18a" + hash: "23cfd643adfc98f6a06c7e7b15dac954" } Frame { msec: 512 - hash: "b7f23b8f3769f929b42491efda7ebe19" + hash: "3a78930d5b86b886723fad85e77dd075" } Frame { msec: 528 - hash: "718cee11d869a8a8c5191cc0c09f2d30" + hash: "64dc878e2f527e80403c766e61fe14a6" } Frame { msec: 544 - hash: "fbdbf92f8c5f507605ff50abc594682b" + hash: "d79160989d2584044042271e79a88e69" } Frame { msec: 560 - hash: "c07fdc69c72b40d3c8dd1cc499008888" + hash: "22cbaea4affc88433834c7d0dc1f1644" } Frame { msec: 576 - hash: "38e17ecd537dc0f51211ad672a2ebb21" + hash: "77cb616902257e1f239a0e6bfaabb33c" } Frame { msec: 592 - hash: "2cbdc8728ef779c62f9938672986658a" + hash: "a2fe73dced03b23c4acb9aae9b774b41" } Frame { msec: 608 - hash: "7fb66509d5d1df34861e9c70f9a579f0" + hash: "230e21d3a9ed0e185593677233af1275" } Frame { msec: 624 - hash: "410b89392e859058718a08b79ec3d8fa" + hash: "4e10ecffac4e06d624855d3f8917f76c" } Frame { msec: 640 - hash: "9bd90f80700217d08dafed93b81ee9cf" + hash: "84f49d56baace4a02e50d3eafaea04ec" } Frame { msec: 656 - hash: "6d83671504a4274887b4e0d9bd2b24e7" + hash: "e3cd0b334551a9f91723eb2c876d335a" } Frame { msec: 672 - hash: "51ff7bd3fd4a776af33fce7b935b145c" + hash: "259330f3ec390c9926d9c2ddc2d77319" } Frame { msec: 688 - hash: "20f27392368b63b248bcd455cf3c9106" + hash: "cc659623bfa385d282d608684d7cdc2b" } Frame { msec: 704 - hash: "1a5ab296bd55aa215c9b04a7ff6c73a1" + hash: "47ed75d077143a6bfa0e10158550c542" } Frame { msec: 720 - hash: "020fd7b14e8662fc006b0c39adca7c6a" + hash: "0de93bbd9f9ee63e97968089321003e1" } Frame { msec: 736 - hash: "2619120bdb25a153963bdf05c4a16d44" + hash: "b33d867d4399879256a01344ce0b81f2" } Frame { msec: 752 - hash: "fd321314031efeb9ce71146764289d9f" + hash: "97c31fce937d11f62bebc6169b464a42" } Frame { msec: 768 - hash: "378a71f09445dfff284db919787cbf87" + hash: "ea4166b8a4001bca3f27af30f251267f" } Frame { msec: 784 - hash: "d59eefe82ab8a00c903141dd9ea767ef" + hash: "b56d270b7893565f8d7ed2a0bfe10d60" } Frame { msec: 800 - hash: "0a65004d69a4567f2a5c7e84dab3a905" + hash: "88a42559fe22b45cff379258dd40ced9" } Frame { msec: 816 - hash: "92a4631716a51ff484ca14d9cfe05b2e" + hash: "4ee1a711cb8d26087e1b75a3166ca5f0" } Frame { msec: 832 - hash: "87203f627cf410cad56d6ba38a140efa" + hash: "9b88a00d041092e79b4a08bccbaca0e1" } Frame { msec: 848 - hash: "054cc085998cc059a6b7b4a7300dd36b" + hash: "afea397b3d740dc42f0313624fc10efd" } Frame { msec: 864 - hash: "af3fefeb908a0485c723d36f61eff0a4" + hash: "39fd8e4cefbd9fed283d62a7aecded22" } Frame { msec: 880 - hash: "3f905d1e1ea79858b5a9bbfeab4eb255" + hash: "916b783d2379ac054c749e7b6eae7ddf" } Frame { msec: 896 - hash: "f935f1fc5f26a201098d894fca9a4d1f" + hash: "fccd44740ff7ffb0f2adccf00a7588bd" } Frame { msec: 912 - hash: "42b003dbb531da514716b9c32bdd3614" + hash: "c064f20703a13543e8273d251fd645fe" } Frame { msec: 928 - hash: "a82fed83ee4efee7896b639c7691b13a" + hash: "1b9b0755101841e3d1cbe208d81575d5" } Frame { msec: 944 - hash: "31ad8cbf875233ea495330b0d3d4d2dd" + hash: "1eb5e4a301b565012bc8f6af8e879eb9" } Frame { msec: 960 - hash: "00586f2f1d49fa81f90f7b06614311b4" + hash: "032db65eb5c405e433f88df3975c322b" } Frame { msec: 976 @@ -250,175 +250,175 @@ VisualTest { } Frame { msec: 992 - hash: "5d71ff48b865ad4266eb8292f981b04e" + hash: "fdb67e11d7cc767b2389a8bbef752c7e" } Frame { msec: 1008 - hash: "df599d934d131c92b209284277009efb" + hash: "ed89cb161336c61b13e3514fdf816023" } Frame { msec: 1024 - hash: "5aaf33d11eb70ffdfe89246c637caed7" + hash: "331b873c5367e0aaa62af85cb54a6a96" } Frame { msec: 1040 - hash: "9648cf623a66ded145c4fd23a42917b3" + hash: "cde4503f02f0c3732e310a7d0418cd1e" } Frame { msec: 1056 - hash: "9d33c2cc44ceac5a527ddcf809a51df6" + hash: "f8c028c591fc1495d5bec8763da6f011" } Frame { msec: 1072 - hash: "6d0ad2e0d012e53a03e246e6d5e49e13" + hash: "9dc68483218335afe41aa3cd052a98b5" } Frame { msec: 1088 - hash: "d33fa68796e38b19f44571d11c1bcd33" + hash: "31105c455418a3284700cf9c88571507" } Frame { msec: 1104 - hash: "636680f49bbf30b0fac31a6c581f18dd" + hash: "72724947167a1ac600aaa1d7f331f7ec" } Frame { msec: 1120 - hash: "66801dbc39301e6b46b244fe502e0340" + hash: "a4a1243326de6b9e93948fcb22fecac4" } Frame { msec: 1136 - hash: "f8fa6a033483279e78636f26493b10ac" + hash: "c3e26e62f12dd658f21a0330fefb0533" } Frame { msec: 1152 - hash: "11b46611550173df42986dee4339d907" + hash: "15d85b4a9ad761a911bbaa3e0c4b2b61" } Frame { msec: 1168 - hash: "5c9afdb519006079ee8d28b2b60d0b76" + hash: "bce1400b437cc43b8ff57b1a5fbc9551" } Frame { msec: 1184 - hash: "9a55c38b2cd8abf25fbe448c7ef80971" + hash: "5d05848afcd8f697c1b3762f00a759f6" } Frame { msec: 1200 - hash: "27ebdf1424e892b35c93ec009d942407" + hash: "6c83f68ea72cd54793149f4c9e759d44" } Frame { msec: 1216 - hash: "2d9e3f0ae56f7337012b51c4dd173108" + hash: "5206b93666e51cee3e25a7a85e27b5b8" } Frame { msec: 1232 - hash: "e6f89ca892131d68ff1f4ca95c95d807" + hash: "a3ef5c76efece4455e5ad12bcc8bd8f5" } Frame { msec: 1248 - hash: "f75791f1b12a217d37acb09bdb114cc5" + hash: "c36c6ee7b6c8074f5dc1af7446fad1ad" } Frame { msec: 1264 - hash: "94c5ab1460fb1b0f957a9718b45bca36" + hash: "bb0887f1f10548bb53f0dc1ffeec25ee" } Frame { msec: 1280 - hash: "e246c8a0ec3d01ea20258b24a5673fe1" + hash: "ebffe547a7c3528e5deddc590510506d" } Frame { msec: 1296 - hash: "529de7735e73409dff266d8c1275215c" + hash: "18962faef1a1a1207a3c6783116154a2" } Frame { msec: 1312 - hash: "330400763a670580570cb62241ebec62" + hash: "8aaa876e4a6c4de04e557f35ddd4fb61" } Frame { msec: 1328 - hash: "ae444d1de9c509fc6f74136ca90f927a" + hash: "c66123bb4e01ce267629f5b50d147db1" } Frame { msec: 1344 - hash: "c43631ca8ee90ea5dc7664be5bc45429" + hash: "334e5acf84d90e70ca3085b9d5e057a7" } Frame { msec: 1360 - hash: "b366ac4a5b66c331a7667e9df0fc4eda" + hash: "9bb49ddcc775307c3c1159908323e010" } Frame { msec: 1376 - hash: "1c7f4c47a9c57a34787cc9703e99bff1" + hash: "1b3cfb8b6b6c39a34ea86a66ea1cc6b1" } Frame { msec: 1392 - hash: "5555535609d512e8d34549b6624f74b8" + hash: "d2a68c6eb2b05390ab1049137f96f227" } Frame { msec: 1408 - hash: "be59df714541923494b59f31f57e310e" + hash: "91e254fd2376ba35a283b18b947ca1a8" } Frame { msec: 1424 - hash: "63e434f053032e54298f6e61c8d4da7d" + hash: "fe94e2e8b4978390e9e8cbfe77dfc241" } Frame { msec: 1440 - hash: "b0bb838637eceb6f8993ebc5b887afed" + hash: "e3d32b73c5c50e7aa59f4e4725de170e" } Frame { msec: 1456 - hash: "fc39f33add4ebcaf578558ecd4aea281" + hash: "a73b90254d7da5557cc3941db0017a65" } Frame { msec: 1472 - hash: "3f36faa7cc1e5898d4d5890c47633ff3" + hash: "9aa49cce5d63f8dd6409995ac6d91d63" } Frame { msec: 1488 - hash: "4b328002b4461869b1f7de48e7291902" + hash: "0ba674df46accec28a3c1b81e656adc7" } Frame { msec: 1504 - hash: "26252c63924d2abcaebea2c7caf1d7aa" + hash: "025a45417b8c75d47b5dac6c5ef913e9" } Frame { msec: 1520 - hash: "a9a6023484ae439be86b2c2ff59dc40b" + hash: "742527b97c7f580b0b7ff9d6aa105d31" } Frame { msec: 1536 - hash: "620dab11bd4aab84cc0d949c48dd9a5d" + hash: "965ec8315d45894e704fcc5a3efc8c55" } Frame { msec: 1552 - hash: "3b45ef80ee3e6fbbd3533bfa0d666e2f" + hash: "6abdd59e6bd2c31124eab254418a5322" } Frame { msec: 1568 - hash: "b33306abcb6a8402e491b7216495c778" + hash: "9f6d06b176c55fa292e7f0ef4b5cd1cb" } Frame { msec: 1584 - hash: "3cc52e8649a02e87785f1dc63f5c1efd" + hash: "05eba8c6e02c0d4af49e59b3346c9e68" } Frame { msec: 1600 - hash: "fe21141f48da685213ed9d7641b2e7a0" + hash: "3c4215f6253aba836516cd51368bc471" } Frame { msec: 1616 - hash: "205aac4e822e20bd32f637256250f3c8" + hash: "c6339a290007c0106cb18ecef5b7392b" } Frame { msec: 1632 - hash: "124df0948f36aaf6151556d301f4b930" + hash: "39a4bcd2ce84035f9db70f196ca00971" } Frame { msec: 1648 - hash: "c1701edd5eaf143fd1dbdc4a5324b48a" + hash: "b75a4be472583c3b893fc894ebe7d4d8" } Frame { msec: 1664 - hash: "117402df55367c918a3835958f4ab1d6" + hash: "d1efebbe748c43b3c1241753612e100d" } Mouse { type: 2 @@ -430,67 +430,67 @@ VisualTest { } Frame { msec: 1680 - hash: "73e3b86a1da28490cae4b03fdceefe19" + hash: "f6f3ad64fb71ffb68a5ea0375cc94bae" } Frame { msec: 1696 - hash: "172e329fb47d6db0180242990a84fe3b" + hash: "778ecbafb5d235edde1683cabe3c3cfe" } Frame { msec: 1712 - hash: "82cf704cdfd406bab22689bc888ddc8d" + hash: "5a41b9196fe4a97e6ba2400806299bd8" } Frame { msec: 1728 - hash: "4c288f198a06d1b2815d34c3c8f97051" + hash: "1c8ddbc5910e35be389a1cb34fab9dec" } Frame { msec: 1744 - hash: "6404d81456bb95a6b1c1ae55a181e40e" + hash: "5e8b236c00087a067d366afde67184f3" } Frame { msec: 1760 - hash: "b2b4b3de77e2b7fd58d3da1ad52355a9" + hash: "72fe42361833054cd9388bb98ac9b150" } Frame { msec: 1776 - hash: "95388037c1f79a9dab951031f1d7c307" + hash: "bbe9f0b030efa716f34a05f0af929c66" } Frame { msec: 1792 - hash: "c4ee57d9bffbb5f0ff173db48eadf2e3" + hash: "cd393fc19a30d896bfe62aa0000308f8" } Frame { msec: 1808 - hash: "703ac9672a9c55cf08e6381ef76ac13c" + hash: "c390f5b1bcff54de203490d8f2616fcd" } Frame { msec: 1824 - hash: "ea7726d2a2923290398262c8f70d511e" + hash: "b5da2ea467c334dd13c75b811b94efb1" } Frame { msec: 1840 - hash: "5d1af6cbdb4ee5b00045751204408632" + hash: "49887c9312c3a4dfc2d9719f47c83a15" } Frame { msec: 1856 - hash: "a52aa37b10a05382f1b136896b7e00e8" + hash: "7f077703e49f154d01c12a44f53469c5" } Frame { msec: 1872 - hash: "a5acc1a45c95a67725e5e15084b7be18" + hash: "7be4130ed767f0e0bf41c3bebf050cac" } Frame { msec: 1888 - hash: "c9fac8b5a4110493958d49b073ea96ed" + hash: "cc1590486c172000557b76c6eadb51e0" } Frame { msec: 1904 - hash: "6fca3a5c6d1cfbf1b905aca25b7785c5" + hash: "7ccd05236d9c1f8af0e9645404326122" } Frame { msec: 1920 - hash: "a40e5e2744d1d84c8b9a45525801a745" + hash: "2da165bf7e868b53b85bb630649ddc3e" } Frame { msec: 1936 @@ -498,239 +498,239 @@ VisualTest { } Frame { msec: 1952 - hash: "b2f980ab19d44ee98ab3e82a19adfe2d" + hash: "2b6a24b6ceeaa956527c872af70fb5f9" } Frame { msec: 1968 - hash: "e01732623930aebefd76ab62c81dc722" + hash: "8c882de21f4ed0fb68433c19b114c3f8" } Frame { msec: 1984 - hash: "3a59c6851bc89eb31100092b1ceddbd9" + hash: "f75226c58726a687079d0d24e865ee6f" } Frame { msec: 2000 - hash: "2949de19eacb9f35816aa7ba69614f2c" + hash: "2fa9b69fe85b4e1361ba260545c10e06" } Frame { msec: 2016 - hash: "f2c4c1f4429cbb6bd10f2318b2cb6904" + hash: "6d513bc03f2798fbce1a0790969da6b5" } Frame { msec: 2032 - hash: "2c48af64162e7e028cd536dba03eab71" + hash: "7e359e605483493e9a865f6eb912c394" } Frame { msec: 2048 - hash: "7fe13b8f9253f720b6591b396cfba2d1" + hash: "497c7c82c24408dcaff5ec981d3d4f35" } Frame { msec: 2064 - hash: "559947a03e650575a764801366cc504b" + hash: "8738b024cf75ef970ffe20166e85141c" } Frame { msec: 2080 - hash: "a8d09f6c862fd5ec2dcf34f06d1ef744" + hash: "014b805eb1ecf2ea1cd61727bfd1ca08" } Frame { msec: 2096 - hash: "e3bb4b62209631ff84134f2243bfdb42" + hash: "a81cde60979300f397054ea017382114" } Frame { msec: 2112 - hash: "a1956a9d1939bc154ea0c88d596948cc" + hash: "c46183b5224e762335eea98d9da65465" } Frame { msec: 2128 - hash: "c98a375727860da1e827d4dd74af8f63" + hash: "11afbb88994f298a1fed6575fae3d7fd" } Frame { msec: 2144 - hash: "df4edcbb2ef5348341ff55c808609b6c" + hash: "0195fa503143561d9ae3ffe68739ca3f" } Frame { msec: 2160 - hash: "6287564be85b7cbadc6bb6f0232bc837" + hash: "6d298df37d2116eb9a62b58853cb3344" } Frame { msec: 2176 - hash: "9826fdb48f7ea770fa5f198ec49d7cb7" + hash: "1660865f00ea9adf94c8e56c7a8a73b2" } Frame { msec: 2192 - hash: "56f82641a5591df9bb929cc0d32eb95d" + hash: "9835b5527b84e8e8a8fea2bdf9653a99" } Frame { msec: 2208 - hash: "526c55e555fb2e58796561efa3568c50" + hash: "ec1158b83daa9e98437abc9ce90b70f0" } Frame { msec: 2224 - hash: "6b4b74613421c1841a17c369cb316754" + hash: "11ce5e37747e05ff5f5071b13324ce9e" } Frame { msec: 2240 - hash: "37f785c30947d5eec113dcf6af649abf" + hash: "6d7d427d5a15a31fd395f26c94ea455e" } Frame { msec: 2256 - hash: "5ff2c975dd9e261c764537c836627c4d" + hash: "828949e0fbdb7c79719fb533febb5b35" } Frame { msec: 2272 - hash: "efe554981583749c3d09988bce7fed02" + hash: "7ef7f73ef6a59c9210cfa37df3894cb1" } Frame { msec: 2288 - hash: "0f7204b4afb0ea5d58e49650e8027c0c" + hash: "e74bec397b32ba2934ffdde23a3d60c6" } Frame { msec: 2304 - hash: "817291f91f4b309710ad3aed53a7d47a" + hash: "09c2ca9c22e9b77bc166b4567b29bca7" } Frame { msec: 2320 - hash: "c15c9cd03089090cf8a777c1f0d88de7" + hash: "44d87983f33c4e03f4be70b406bb9bd9" } Frame { msec: 2336 - hash: "05f45cb8d0856dcc81091351615e35d6" + hash: "92844b36c2f30e618f04bfbc5cfbcad6" } Frame { msec: 2352 - hash: "99785a16fed6d6409b4b47ec55afb56b" + hash: "0245f39a8966c4addb3f8dbcee93cd3f" } Frame { msec: 2368 - hash: "39032cb4432ee9536af500673fccf526" + hash: "eb1e81cfa29295d4b1522c69d4501f51" } Frame { msec: 2384 - hash: "9057653e3cd6042831037d3590e7595b" + hash: "2af9c3bea11b25c0f6c2b780d533a968" } Frame { msec: 2400 - hash: "76c772eb2ab8f117c260c9c96bc99e1d" + hash: "5062e9ab29c4a7a9657a4d29249ca822" } Frame { msec: 2416 - hash: "b6474665b8f8bcdd76d1a38efecad889" + hash: "d7652ddc85d3be3bb3a2fc268ae9bc29" } Frame { msec: 2432 - hash: "106c2d2efafad0181e3ded3a6805f2c6" + hash: "7c924bf2ad6167db439723679b373a3a" } Frame { msec: 2448 - hash: "5275fa4ffef6c1909f9d03bb1e7b9cae" + hash: "a93b61dd26a2ca72100b747ac3ed81b6" } Frame { msec: 2464 - hash: "0c1043c0087d60000dc7259d4ac03618" + hash: "5fedc849d3d21e0acf0ab4a4815a1285" } Frame { msec: 2480 - hash: "645748569b4f5cb9b206b0808bb7d23d" + hash: "4313d2458f4bede8d3b02ac60135e728" } Frame { msec: 2496 - hash: "dd95dfa80e1b3ff511e7c75efd0d87ce" + hash: "0f09e81d89262b569c56a9c876f3898d" } Frame { msec: 2512 - hash: "86b3dd03b04d7610837cdc67cad07e0a" + hash: "ea932789ded14fc5c8bae565b67d004c" } Frame { msec: 2528 - hash: "8264f67ac92e4ebcfe4cc8e954f8c5d2" + hash: "fd1f7b9b51f1284fee4d777ef83bba3f" } Frame { msec: 2544 - hash: "6bf52377d822b09eb28a1ec36d3a36a9" + hash: "e98b884a1ec8ce4b4dc20749b85b571e" } Frame { msec: 2560 - hash: "7ae1d65cdaf7fa71eb4ec318b37bb0aa" + hash: "d144072bb87bb88750b9df9cd92f7a4b" } Frame { msec: 2576 - hash: "860f5ce9844c90cf9e6a6d383ff0972f" + hash: "9d8ad80d3367292d7e89d67cf49862b8" } Frame { msec: 2592 - hash: "5502229c038dfc59d966f69ae6ed8957" + hash: "c09b89e71e862da15d2b9edb0e00aa7b" } Frame { msec: 2608 - hash: "21843c027bc1434ae60b3bb0fced2c54" + hash: "551277add3f8f09951d9c8f55ccd40f7" } Frame { msec: 2624 - hash: "962df45680949c3eb6c968f98cd76b20" + hash: "1d0be0e7108516869374a9b985fd7543" } Frame { msec: 2640 - hash: "f313c26fa76a0edce61244bdf92528e4" + hash: "12e7cfb6c4a26af54c4b35182294a7b7" } Frame { msec: 2656 - hash: "b7bbde239e98cbd66b1e51b54b747f51" + hash: "a666a5a59d5854973668798eb8d508ba" } Frame { msec: 2672 - hash: "62340707fbc832fcb805c8f80ab353d1" + hash: "420d2e21461dc45f134b7dfa11d04d25" } Frame { msec: 2688 - hash: "d008a3f7af1810ff70b68b38a4cd0f0d" + hash: "95f848874899fb58a81c62b5921cf857" } Frame { msec: 2704 - hash: "e651dd628af24faf34d716beb392b052" + hash: "fa3ea7a0f90ca549cc9a857f0647b061" } Frame { msec: 2720 - hash: "a97733963c7a7616b25741545b07ffba" + hash: "cbc5338de6157cd5dad511b246f5093b" } Frame { msec: 2736 - hash: "3e017cc1db720cf16521bd17308e4f44" + hash: "e26b43c83197abab3746830bbfacc0f4" } Frame { msec: 2752 - hash: "13652ebaa610cca71486517e2eed21a5" + hash: "5225e854ff2763e562dee2810331d560" } Frame { msec: 2768 - hash: "09f0f500c6f7d11be39c31f9e589b38a" + hash: "a1d114ea67233ac4c6351e18e3afa64e" } Frame { msec: 2784 - hash: "b87968cbc60ddc6a5f5699e830410eab" + hash: "bc9f12af2d0816bb84fd5040ed29bdad" } Frame { msec: 2800 - hash: "50e65b043d1f07a321a08ee4c25204f6" + hash: "d9337da38caa4ad3385249602a830df3" } Frame { msec: 2816 - hash: "122d1ffa1510468e8c4067e0f511588f" + hash: "6ce20e0c89181b0f11e609b248da71d7" } Frame { msec: 2832 - hash: "585f6c25caaafb99a22a23d8a998d202" + hash: "bbc8337950a78c7bfa48aab2635120a8" } Frame { msec: 2848 - hash: "9b245a00ad576666c10f509d8a80a61e" + hash: "0e28ade7f52f3c27e1dbdd6e98be8c7d" } Frame { msec: 2864 - hash: "9b245a00ad576666c10f509d8a80a61e" + hash: "0e28ade7f52f3c27e1dbdd6e98be8c7d" } Frame { msec: 2880 - hash: "3c5d3d10bacc093afc6a9c0b5aa4cddc" + hash: "b496af17513d60d4028bd7402fbfba93" } Frame { msec: 2896 @@ -738,215 +738,215 @@ VisualTest { } Frame { msec: 2912 - hash: "31926d69c2309fdf13fbd7f0e9868c3d" + hash: "29aa7ce0fb1aa350753d3ec6da05bdf9" } Frame { msec: 2928 - hash: "eb3acacce5dd31b0e94b59b9e546ccae" + hash: "fde474797d8105d9d004a7020e010fa4" } Frame { msec: 2944 - hash: "9a51cff3276d75803a0a6e480f7ecb70" + hash: "5a553d9a4bd2ef5d86f5eb37a863d28f" } Frame { msec: 2960 - hash: "fbbd8b9d519993a699815d935bcd2b9f" + hash: "2dcbf6c84abd49529f0b5d85bfb74808" } Frame { msec: 2976 - hash: "0314190c6de73f9f374a4eaed0709645" + hash: "e96ec3b7d37bbf4c9ca297ad5afde31c" } Frame { msec: 2992 - hash: "8ca1a203bdb5446094eb948aeb0a333e" + hash: "9d824068affe32c143226b0b530206fc" } Frame { msec: 3008 - hash: "301e1b86ce38e11ad9d0d7aba0909985" + hash: "3e85f0ace68cffed47f4c9b00145f0f0" } Frame { msec: 3024 - hash: "922095867d0a91b73ab7a63df2041279" + hash: "540b8e1e2bee7d2ba5e29fd3b1086cd1" } Frame { msec: 3040 - hash: "ba8275f3ba4633bf64a1f81f630c90f1" + hash: "0786585d11934c5e4a7e965eaac9a152" } Frame { msec: 3056 - hash: "efe39545279a7bd015d2de75d2b9d8b1" + hash: "8271705df2ca697f4343007a7810d4ac" } Frame { msec: 3072 - hash: "78926c3c0c6fcf89b9291f9902710964" + hash: "b98e1cd20ab2e4239f35d04df5e5175a" } Frame { msec: 3088 - hash: "ea63dcb7f00d3ddede0d8be59ad9d6bc" + hash: "ab1a7eaa5c5d919ee76cba405d0dd4cd" } Frame { msec: 3104 - hash: "286ad493301b713a49e378f123482a53" + hash: "52682386448379a395dc6c541224b7d4" } Frame { msec: 3120 - hash: "a4bbbb8bb88188d3e99996502e3eebd1" + hash: "31dffcb9da94dfc085ab8c561404c248" } Frame { msec: 3136 - hash: "a6100e79f3dc5af594e86ab6cd8dfb76" + hash: "f3703eed8ebf9ece776ebe51e4c60ae6" } Frame { msec: 3152 - hash: "d9e3f777dc89bcf1b7f712206db768e2" + hash: "1126b90345bb42691cd17f37ecec6bdb" } Frame { msec: 3168 - hash: "768045c600c0aa0b1e9e6f012733c600" + hash: "7a63ab96d1c8d4992c03a6f59bba4e7e" } Frame { msec: 3184 - hash: "d8b4caa641ddee786f7898359efe9d07" + hash: "91f4a00c9a7ea6164b334aa4b90da862" } Frame { msec: 3200 - hash: "f7c3b76d5bb7c263ac9447eaad685158" + hash: "485471140f6a5336837377612e7a85bf" } Frame { msec: 3216 - hash: "f7f97db815d653ec29fa31b87f72af2a" + hash: "96881b4021aff05020e0a9342fbae75d" } Frame { msec: 3232 - hash: "18524623762487b60943312cd8bd4388" + hash: "9891326646c3da4ff250aab69c862f96" } Frame { msec: 3248 - hash: "5823dee5dd56e9f7515601f9629ccbae" + hash: "f00f36bbb5a828824c596ee6f85bec2f" } Frame { msec: 3264 - hash: "5823dee5dd56e9f7515601f9629ccbae" + hash: "f00f36bbb5a828824c596ee6f85bec2f" } Frame { msec: 3280 - hash: "5823dee5dd56e9f7515601f9629ccbae" + hash: "f00f36bbb5a828824c596ee6f85bec2f" } Frame { msec: 3296 - hash: "5823dee5dd56e9f7515601f9629ccbae" + hash: "f00f36bbb5a828824c596ee6f85bec2f" } Frame { msec: 3312 - hash: "18524623762487b60943312cd8bd4388" + hash: "9891326646c3da4ff250aab69c862f96" } Frame { msec: 3328 - hash: "430995770b655054aaeda383df8e27f7" + hash: "c766238db55f4704c2f29a6be6ee6907" } Frame { msec: 3344 - hash: "16a3a00f2b89aed676f80d63c4933ec3" + hash: "0254665427dcbd1c155bc954cc7aa7cd" } Frame { msec: 3360 - hash: "6c55aa62079ec546522edbf69c37b270" + hash: "33ae1012816b997ef5c61c03ccfcc590" } Frame { msec: 3376 - hash: "0d68ca3ccecdd831013950cc7405e46e" + hash: "4c7857bbbcb9aa812fc2503af2b395cf" } Frame { msec: 3392 - hash: "9da2511bc8b434218695fa74ed543439" + hash: "3a570e4af992d35e55923cea23c3c11b" } Frame { msec: 3408 - hash: "05afdd0b99dab81a500cdc2b2f0786fe" + hash: "533ef554538005512ce37c73c6def722" } Frame { msec: 3424 - hash: "e6f8882d146ae60bcc6ea47ff41a637b" + hash: "f863fa215d0642708bfa82780c766dc4" } Frame { msec: 3440 - hash: "154542ed0e88321294f382501819aefc" + hash: "fcca3ec34521c4b9087a102ba1e47293" } Frame { msec: 3456 - hash: "8f47b6980c387c5020145bf04645fd2d" + hash: "47d67cd74cb96b12801842b288a8b9ff" } Frame { msec: 3472 - hash: "b34b055c7602f1f4e1cde875b258120c" + hash: "34c5ea76f297ec68cba70521caa468e4" } Frame { msec: 3488 - hash: "5a697f675575f05e297d4877604b9a47" + hash: "7be247cc7a4032ff0478fca1a2aace8a" } Frame { msec: 3504 - hash: "729dff1d1b357d19fc81804ec8940d0e" + hash: "3ade2a1a48edef15f522b9fc016e137e" } Frame { msec: 3520 - hash: "c6f3fee46baa94a6139d2ee40254b160" + hash: "8b37b9d123504931d82bb06f6981bade" } Frame { msec: 3536 - hash: "af0e700bb8ae34834510830f8b44afdb" + hash: "5eb39825003f405f353f629e236b3395" } Frame { msec: 3552 - hash: "9c87bb54c2dfe58c2da9194dae6f7502" + hash: "c4550722260c4a30ab1176c7e5cb62bf" } Frame { msec: 3568 - hash: "2132356a92c75d725f9feafb8201b142" + hash: "bd33e3ecd4b59cd659588c0298b61095" } Frame { msec: 3584 - hash: "50d855d2595eeae2bfd6aaa8c2fa0454" + hash: "4b3a62bff0019df7412aa2e1c07c0a23" } Frame { msec: 3600 - hash: "5fde3c62d6e53a9056e3586f9dcda59e" + hash: "a9b98adcc3350febbb89dbf725b81436" } Frame { msec: 3616 - hash: "8f04460254a1e9fb949d5165894cd92a" + hash: "66eb8c84e75141d1575caf7d3cbc1ceb" } Frame { msec: 3632 - hash: "2b514c5e3b20d30f9c7e71092c69f081" + hash: "238f2b1dc5bf5b65e827c860f9ee76b5" } Frame { msec: 3648 - hash: "2c1ba6224037790e15f5c0f2864ace4d" + hash: "6d1fed0697370b2a2163c369fe559739" } Frame { msec: 3664 - hash: "0d5b8e7bd5f560888aacaf2b3c6827a8" + hash: "04ea478c785586d900bbe3472371bbc7" } Frame { msec: 3680 - hash: "ae25004530e7df134414018e4a34780e" + hash: "ba429e711c9363eebfb20e641fa44c84" } Frame { msec: 3696 - hash: "1a8fd9eaf9a91f1b42924f8986fbed9a" + hash: "0129dfba166ffcbaa15087467c864068" } Frame { msec: 3712 - hash: "2ea6de2025d40ed5beeff12a5b70ccc9" + hash: "3fb340c874eee94e8baa1453b37c3fb5" } Frame { msec: 3728 - hash: "624e417718d3cac1e4b7e4ce258ce6ea" + hash: "068c51d99c458f3edefe3371f46de260" } Frame { msec: 3744 - hash: "8b56d29391257c7be8966af6be26ea9f" + hash: "dd1e04ed3d610c2712158d73ee2c5b9d" } Mouse { type: 3 @@ -958,27 +958,27 @@ VisualTest { } Frame { msec: 3760 - hash: "5c0d977d8b446d9191bde57335cf1062" + hash: "840154afb9e7e0c859c66667bb6944b6" } Frame { msec: 3776 - hash: "100be2b21d069e3a5dbb694a90da4d4f" + hash: "239c2e33800e386b468a95341d0e23f4" } Frame { msec: 3792 - hash: "caab03f6c81080dd8fdbedb4e94ae4a5" + hash: "0a00515f2d297362862c1a5cf6519845" } Frame { msec: 3808 - hash: "3328a4d06f2f80a7e9ccf2ff21522fca" + hash: "f855df3495e44291aed8f085163c804b" } Frame { msec: 3824 - hash: "a534e6cc28daf3eff6a9cf8379bd6375" + hash: "b4eb31e48c65550bb78d175b48e0e9fb" } Frame { msec: 3840 - hash: "6686f9c1a814c6a6b785b70f94937b68" + hash: "70243664f9db83614e5972fc18ee81a1" } Frame { msec: 3856 @@ -986,239 +986,239 @@ VisualTest { } Frame { msec: 3872 - hash: "d3f1c3593375ca5c022a1361a7ec70bd" + hash: "c48ce2a4cf28ab706b9c097bddc74c27" } Frame { msec: 3888 - hash: "67843e6192e2ecaa3820c37dc2f93106" + hash: "754a957e0df02839dd2fe33fefb7a721" } Frame { msec: 3904 - hash: "19a022f678e5b8f4ebdff936162323dc" + hash: "ec3ebe7b941af9bf2163634d7f15e8aa" } Frame { msec: 3920 - hash: "34e55ae70c9e156db339ae15642359c3" + hash: "a76423ff2184cd9dac47abf7ae52ce5a" } Frame { msec: 3936 - hash: "3784778c817f9d9bb73d990cfe12685a" + hash: "559bec54f51c36c6e90004ca5e77c23c" } Frame { msec: 3952 - hash: "0403fdf79e3ba339c7e3786db0c9c0f0" + hash: "dc6fdd6a867a675afcb58f7052605614" } Frame { msec: 3968 - hash: "93e4a0d5645d1cfc916f1e8422655555" + hash: "b2fb0dbbec01490243f37fe5f80ab6c7" } Frame { msec: 3984 - hash: "29080bfabb87160b7c51385fb36b474b" + hash: "2bc1df7a913b1948ee7bb77eeaa55aa2" } Frame { msec: 4000 - hash: "9da2d83edc9d35f00fb8a159e79de4d9" + hash: "82c6430d85c6a94c4b55a9529d2bc78f" } Frame { msec: 4016 - hash: "5505a42d4788f00cfc7499fbfda851ce" + hash: "463e70dc9a9bdabdc158199bdcd7d2fa" } Frame { msec: 4032 - hash: "bdd3040ab16fa9ffdd2fbc66b06699f8" + hash: "c1e9553327f060b70caa713bf3015342" } Frame { msec: 4048 - hash: "2a347e30a20c693a9440caa60ade0a0f" + hash: "42f7f505d4e5ef316240e4f287a039bf" } Frame { msec: 4064 - hash: "0307f1857c091a639d47f112ce1a2f5a" + hash: "200500f600ffe43c5ad4d057bcfc0831" } Frame { msec: 4080 - hash: "778d18e539bbd562ebe39283a6315df1" + hash: "22e78edb813f7830776b2603b0aaae5c" } Frame { msec: 4096 - hash: "0369cf6c3d1f5db2e92ee1f7c5d3b8ed" + hash: "32ebf3490832fd0693b1b922b4501251" } Frame { msec: 4112 - hash: "9f7413587ab50f1abf776bf180ec2d6f" + hash: "1be622caa5ef94f87e2ec8297b6e1caa" } Frame { msec: 4128 - hash: "7d04a27236485808e571e8a39f23ea17" + hash: "d1480529e0cb94c51c412109663e5fab" } Frame { msec: 4144 - hash: "a1dff63b723473d5a4c9c59975a2fb81" + hash: "e55e627d6d13b647f35233f18f0cbe89" } Frame { msec: 4160 - hash: "9795ea70a3b9d3b7805221a58c19e5da" + hash: "87d7b349cd2898de7686e5f1a14f6338" } Frame { msec: 4176 - hash: "f1392c489e21107136eb8e0d1e8b427e" + hash: "2ac974836ee5e6092b55fcda20d7c35d" } Frame { msec: 4192 - hash: "95c225ef07171a96335e99078195b06a" + hash: "53867256c1dac4de2f02af1ae000b49f" } Frame { msec: 4208 - hash: "d46ef3e7f9cec06e8c18afc0d07be4f3" + hash: "08623509e9e5089fdaa1af2bf9a77eb1" } Frame { msec: 4224 - hash: "b017f5b51d423bb0fca0d6df3aaded8b" + hash: "e4692f42c12593ee865048aef00cbeb2" } Frame { msec: 4240 - hash: "60584d085b0cd6fbc436773be678597e" + hash: "981ad6459e3e7483bb323ab4bc514630" } Frame { msec: 4256 - hash: "117951465dfd5c386826b295560d2dec" + hash: "79e8adfcdc9d6dae0d2b6a69e8e322fa" } Frame { msec: 4272 - hash: "1b70137da5f4e024593999e93121fe8b" + hash: "58f967a607972faa9daa13402eeb9912" } Frame { msec: 4288 - hash: "bd50dffd41941fef127f39b55c4748e0" + hash: "1fd5b002b049132565b6a963fb7b3bb6" } Frame { msec: 4304 - hash: "8eec34d8e1d2e22d11b85a671cd4d3aa" + hash: "a16c96598f47404ec5f4ef55e87a1e70" } Frame { msec: 4320 - hash: "9e3c97cfad5002ef5f3fcc365aeb7bd0" + hash: "3c632899804812c93c7edd3e3f3d2bac" } Frame { msec: 4336 - hash: "28e1cf1ee033915ea2ee39c9ab00a73d" + hash: "af0eb810e0273f9bacb082d9f90612df" } Frame { msec: 4352 - hash: "99101a156a553f441f00221f6facbf1f" + hash: "728d7ac4a5410482c7d86d03c2d8a996" } Frame { msec: 4368 - hash: "419023e5d59d16c26b35bee7d3cea559" + hash: "416e76064f2be71a03eddddf61a33cb0" } Frame { msec: 4384 - hash: "485d23519293975b04031fe4baa5c276" + hash: "c41f20b4ac9a7b34eefd066f77ea351a" } Frame { msec: 4400 - hash: "c8bc60735e0ede26dbaf228294853f9a" + hash: "821d51db415a210b09ebdf8d861aadf2" } Frame { msec: 4416 - hash: "ada3680b807d59843e3adf6640704066" + hash: "9394266815a52f1779858bb088d557dc" } Frame { msec: 4432 - hash: "3e28f3adf9241512cd0d6918d81ffffb" + hash: "cc475d1589665414e5aef051ec237ef4" } Frame { msec: 4448 - hash: "8f339acc33cbc89ae1c62391ce021bb3" + hash: "a95f3b8128faa7820f36391fa9bd579f" } Frame { msec: 4464 - hash: "d303960c0853a90557d64a04b8283c94" + hash: "d52687293a11891c364de52525039203" } Frame { msec: 4480 - hash: "f907dbdacf2cfa9fdf8f9c8dead5b4c4" + hash: "5333dc4f65b2f1e066edcd23f7621bd7" } Frame { msec: 4496 - hash: "30c6e6f283f4a3f538cdda9c2e92de8c" + hash: "797bb5e27b2fe2b733a54402433901b4" } Frame { msec: 4512 - hash: "04d2ac55774b43107a43a7d33764199b" + hash: "84c610cdff7f8b04a34977216e37847d" } Frame { msec: 4528 - hash: "cddf3e111cbc59e721725daa1d8a0c31" + hash: "0317f0406a566b2851c8bda62900e40c" } Frame { msec: 4544 - hash: "15b1b63cd1695207ebf9f04387be0739" + hash: "6538ecd7abd35234c5cc5c2a17249fc1" } Frame { msec: 4560 - hash: "690769b9bbe86a3c5b1fbdee39615fbd" + hash: "f9019150a132eb5f5cfafcd5337aff7a" } Frame { msec: 4576 - hash: "2bd640d8ddbf878d808f22656fef1ed9" + hash: "0f0136fffbc65c02cee249ece4c8c0ef" } Frame { msec: 4592 - hash: "a654f1e4519bf883d554276ebbe96323" + hash: "0027e0d236b8b33a451a0cc35e81b4ce" } Frame { msec: 4608 - hash: "68f0313cfc3f51a0bb9b47c5407c19b6" + hash: "ac2f86b2d4f29f223fb78440d67ccd31" } Frame { msec: 4624 - hash: "77f29806b084de4cabf7ab9bf1a93d5e" + hash: "a6eb112a10c849e337f816ee408f22a6" } Frame { msec: 4640 - hash: "f9991189e3282d107b98fb0ae5f5ef00" + hash: "dafbb01f2615a2513310478ebe484a05" } Frame { msec: 4656 - hash: "0cd1f2f6e347d48feea1b26a4968dec7" + hash: "17c400c4c29652dc278980ab578b75b3" } Frame { msec: 4672 - hash: "e75a6f6a088e2289042572a161ffb0e9" + hash: "48696c02a2a4839b893a4c0b431b78a3" } Frame { msec: 4688 - hash: "5a541081444c0a71128223a4c4c3144c" + hash: "04e05c7e722e53299d24cd0f1b7d17ee" } Frame { msec: 4704 - hash: "6813d442cc610f346a5441ed0cd723e5" + hash: "55d158f13ffc7ccde5ee368656d2830b" } Frame { msec: 4720 - hash: "24ec539bc57899819915f833f26deacd" + hash: "fa478e1575acedae023322a520171a5b" } Frame { msec: 4736 - hash: "3a7ed1b4b533b817674aa141c420cd61" + hash: "e2147ddd6e19fde80bb76da24011400c" } Frame { msec: 4752 - hash: "d0a643fae97bb152e97ca60e96299003" + hash: "44ee0144db4c55aa90d2a931d83a895e" } Frame { msec: 4768 - hash: "c84093931520f4661eff6645091a294b" + hash: "552e87bbce4ad48006c899052a2c8cad" } Frame { msec: 4784 - hash: "81e7ceaece82505a4a16ead195a66162" + hash: "3b6efe225303566f751c3f884ac8c069" } Frame { msec: 4800 - hash: "315764d20b647f6ab1ba30239a69bf72" + hash: "3a7175916d1dc103506061607b910550" } Frame { msec: 4816 @@ -1226,239 +1226,239 @@ VisualTest { } Frame { msec: 4832 - hash: "d1824ced8af34ad9edb36a58ae9aa7f5" + hash: "b2e5d5c14b02a13bca62673f87e85627" } Frame { msec: 4848 - hash: "167b9a49fbb94908e09e7e9c9147cd8b" + hash: "bd89a911d6fb13e4e841f8ee5b8b42af" } Frame { msec: 4864 - hash: "442d5f0906840de526d59a80ada322c0" + hash: "89795784185e83d0299e656f2eec73c8" } Frame { msec: 4880 - hash: "78206c4d4d23c7c1ba888b9062b09432" + hash: "5b6d6fe78f341bdf0eb4bedfe3d975d0" } Frame { msec: 4896 - hash: "e898202cfebbff1952efc6e01254d855" + hash: "e246bc451ee48e16ef6dee20d6256e9c" } Frame { msec: 4912 - hash: "ab31dc7bbad2b0552359866bb8d92f0c" + hash: "8c1bc37b1b268743aa314247ea949ef5" } Frame { msec: 4928 - hash: "f093304e88964376baf9721d53d4fb49" + hash: "04f34203c34dc87efc708bfb232663df" } Frame { msec: 4944 - hash: "3ef76f3e1c44d13c3a469bd192ff7b5d" + hash: "d37a48545e81970d16951e3388f0ff8c" } Frame { msec: 4960 - hash: "5d3b6d0d91f8cc5b89e39407bc3b5a15" + hash: "9411e846c9f59cc915288efb59d4c9de" } Frame { msec: 4976 - hash: "3c73573f12f49b34e1d990a55ad913fa" + hash: "6ee179741ac74837708afb55943f15bd" } Frame { msec: 4992 - hash: "d1bac071b01a1c6fddab90cdc435fad4" + hash: "f626fc3166bd5b01171271ae9bfa9b22" } Frame { msec: 5008 - hash: "36a219aadec910f1dbef616c641e1d2b" + hash: "e22898b2c0c566bbf531223234f98327" } Frame { msec: 5024 - hash: "5871fc67d361cc988551592ee21dfb23" + hash: "1343d90c5eae70713cd49110fe61237b" } Frame { msec: 5040 - hash: "6e65ee6c814b9a9da205c36925e663bf" + hash: "493d9322da6d01979a3f1a120c265f8c" } Frame { msec: 5056 - hash: "290b20fa8e91d34000d7c2d81745f6d2" + hash: "defccc76caf3a7c7c67e8abf5ccc2def" } Frame { msec: 5072 - hash: "19e7405a9083a8143f7bb040f8837b29" + hash: "fe3cad9227fcfa7ba2238465078f2ac7" } Frame { msec: 5088 - hash: "c0a0fa2b4c1ceb6c70594994a1ac8713" + hash: "66ebfeee3a63323c7d8b949db9aafd7e" } Frame { msec: 5104 - hash: "c236224c16743fb606deb78bcb8afc8d" + hash: "805820b382d005894f9a615004b97b0d" } Frame { msec: 5120 - hash: "7d44db15eb300b4338ffc26e9bcfce20" + hash: "eee1620f47bb071de8a9c788d1fd258e" } Frame { msec: 5136 - hash: "067a79148a194c45c6f32d85316a1e11" + hash: "f5a7d9a81fcfc8cfb9e7cc8ead0f1ff8" } Frame { msec: 5152 - hash: "9075c379044476994a87f0fdcce8e332" + hash: "249903ee123090b27019350f120c8b79" } Frame { msec: 5168 - hash: "b2316988fbd51096a4f512e71fe7d0a2" + hash: "019793a363c905809af32bf34ef52ec0" } Frame { msec: 5184 - hash: "280f70877d93af5f84e178aad6a102d8" + hash: "4f5ad5a3ebb6eca73dd7567199d07b08" } Frame { msec: 5200 - hash: "3eef4ae7e43a8cf1cd9dd562237296f8" + hash: "fdc1b42d50c7a5c45458498788ff0abd" } Frame { msec: 5216 - hash: "e3184f77ce3a47ca4dca6386f42d7fec" + hash: "cc091469598cad28d0a00690f1acb412" } Frame { msec: 5232 - hash: "a2a5df66fe4808ea8d466cac84ba910c" + hash: "5c8757e1f8f34a31d8b3717b64b84c07" } Frame { msec: 5248 - hash: "9f8a0e54788112d6c30482e840504f35" + hash: "5da75559f60eac1b9f518ed55a174e5b" } Frame { msec: 5264 - hash: "ae69cf84798844f9f360c86790feaecd" + hash: "1214c08daec4dcfb27690fdc18f2ac28" } Frame { msec: 5280 - hash: "0244526572acb6266db5b7eb9d29c6fc" + hash: "87d92c1ba694d0cf187d8616b0f622f0" } Frame { msec: 5296 - hash: "8fb53d60b95ddb5aef27442934ea9983" + hash: "d4af63638fe69b6c4f087a935351057e" } Frame { msec: 5312 - hash: "930fcfde491b4f5681e3861764003895" + hash: "0573c41f34c2c117cada987e4ee813a5" } Frame { msec: 5328 - hash: "bcdcd0a637112d113ebe11dc18823237" + hash: "f179ef4b7bf0f915e25ffd8168a9126f" } Frame { msec: 5344 - hash: "65a564d5a5afbc14c0cdad4d52753507" + hash: "1618bf7c94e7898392eb5ffbf44b8aff" } Frame { msec: 5360 - hash: "0c5056d438d2d54938f31ef5f996673a" + hash: "5af24b902e3729d544f70c77e189b8a7" } Frame { msec: 5376 - hash: "11c157ad2236fc390ffbdf339366cbc1" + hash: "4e5789404e58113cc2d8aa737a03ab58" } Frame { msec: 5392 - hash: "6cb341b1f281a97a35c2e41bfd4c4d9d" + hash: "e4bf91a249e47597e959bbaf25f0724d" } Frame { msec: 5408 - hash: "553a945f7f19f70ddae4ebe88e52a79b" + hash: "39a3e3d6269522ed57a0e37319ab94d5" } Frame { msec: 5424 - hash: "d10b42b4095a2474e66a5a322f72e936" + hash: "f2e2e47922e7e058e14537a0455cd77f" } Frame { msec: 5440 - hash: "0f943d61e8072d70eddee8aa1ba0de5a" + hash: "64abb3f2c9e05fd1dd7490d11c74f06a" } Frame { msec: 5456 - hash: "3df18e237b666e78d57857739b759e6d" + hash: "a9bf45c29536ca34c42aa916747b485b" } Frame { msec: 5472 - hash: "1ddc0bfdb2ca7b6dee63f1024e62f26e" + hash: "da21839b6635e5c4e0a589d163e62752" } Frame { msec: 5488 - hash: "aaa397714528f41238059e3a88833abc" + hash: "f31e49258bcbb2a144daa320e4567df1" } Frame { msec: 5504 - hash: "c94bd69f925c782656afc5f9618180a6" + hash: "f96c5b39f94bf2ac1e3f4de96767d720" } Frame { msec: 5520 - hash: "824ff8c0e1ab43e3c0eaa79b7cc19b9c" + hash: "281b90d1056803093cc37f30465f0e73" } Frame { msec: 5536 - hash: "6c440a0b2293811335bdbf2c4f25f47d" + hash: "d63a2424e1947328957ad8f5f0bec043" } Frame { msec: 5552 - hash: "bfc7936cdf833d5b720ec9baca740112" + hash: "bd510a0de7df02b1b5741824b6f90944" } Frame { msec: 5568 - hash: "375fa305dbae2872dc9b20e59381cc0c" + hash: "47dc4e5ff91cb84c89dd0fc0459f75f2" } Frame { msec: 5584 - hash: "fffd6173aa49e74164dc17a238bcd830" + hash: "4bc46b5e116dd30e1db4d4bb650ed6ed" } Frame { msec: 5600 - hash: "44d9007e00fab161fd393b653255d7f4" + hash: "c6964b89f1962f120028057d1c588694" } Frame { msec: 5616 - hash: "f669ee25c58b4fa20a01705d334f0065" + hash: "39a77544a1c88b68cb63da9a8910a35e" } Frame { msec: 5632 - hash: "2dbb7d57711b67d5d9e1b81f70e22d34" + hash: "bd8ac21d7a507a8e195437ccac254ecc" } Frame { msec: 5648 - hash: "19351b91448265cb95c1670ee283c611" + hash: "7b39b2667a8f8efae20ec8696e35dbc4" } Frame { msec: 5664 - hash: "19351b91448265cb95c1670ee283c611" + hash: "7b39b2667a8f8efae20ec8696e35dbc4" } Frame { msec: 5680 - hash: "3a24b99d048348a21f4e4bd69393de89" + hash: "8628f4f24670d17965fec40a02e0196f" } Frame { msec: 5696 - hash: "35a6fe955a52950bbfa954a453e4008e" + hash: "515903d9896a853cb18cc7b7c45c1cce" } Frame { msec: 5712 - hash: "896f4ec28c976237b34fb2725a44460e" + hash: "b7a3f70bedcb3f90a2e294b447e05f70" } Frame { msec: 5728 - hash: "ed3008ea950ec84c57518e573ea36d15" + hash: "8e8b104ef82b1e219021aa38276f8b45" } Frame { msec: 5744 - hash: "3447c7be992759f772c1db2033eead99" + hash: "70abe79da860bebd2d17a8c7abb20b4e" } Frame { msec: 5760 - hash: "b7133225daa03563d3f5b1dac5f56a23" + hash: "d99af176fb6cf9d9cbcf7cf4286a165c" } Frame { msec: 5776 @@ -1466,239 +1466,239 @@ VisualTest { } Frame { msec: 5792 - hash: "adc55f2fcf312a90b025a75fa80aa079" + hash: "67809c7daad6716d0a664c52de9906ce" } Frame { msec: 5808 - hash: "3ac85cad400d2b8e4f33798f4f6b7b42" + hash: "29a27fd59b7316ce305803482686ea58" } Frame { msec: 5824 - hash: "1c115efd84ccbe489d24c3c521c4a61c" + hash: "25b9ca40d1d6208d026e5c965923f8fb" } Frame { msec: 5840 - hash: "39518f1bbc0c4aba6ff517bc3dc7c279" + hash: "126b1542415aea11dbb35492be4f66aa" } Frame { msec: 5856 - hash: "7bd28d32996f4de61c415d3217da16d0" + hash: "26ca7034536e0e690236797df740f19a" } Frame { msec: 5872 - hash: "f5d06e25d775bf8db07e95625a712733" + hash: "fec9db60af63a4712b0da037cf1d89cd" } Frame { msec: 5888 - hash: "4820ea6ea3be88af2f86111c547a19d7" + hash: "d9b7e2729c75ca0c0f33b542525c4880" } Frame { msec: 5904 - hash: "fa6e681c368118b7f135a47ae8fc12ff" + hash: "89149d16b893ea432b6d0fb05ead48cb" } Frame { msec: 5920 - hash: "f6b30e618aeeb837d2b3eca270b0a060" + hash: "8e389d2ca706277ce06e1da557e2e6c1" } Frame { msec: 5936 - hash: "ac8504bde8d3063a8bf02b9d4b69d755" + hash: "fc5c74473410da1ddd451c5901572172" } Frame { msec: 5952 - hash: "9670537bb77caa8e23fda7bbfa96ca60" + hash: "54514970eadff9362d31499a737e4c95" } Frame { msec: 5968 - hash: "8cd292865ce5c1d240e9ddc93881a0ed" + hash: "d5953bc29532ec49c20ee552c8756ba1" } Frame { msec: 5984 - hash: "de112013e526203d151c46e6cfba9f92" + hash: "5f03be3ed5824e6a6f8f371ce6a47997" } Frame { msec: 6000 - hash: "cd61066e697de8c055aaa168791c2d8c" + hash: "0431e2ec4765167d0099c59df400f3fd" } Frame { msec: 6016 - hash: "cd61066e697de8c055aaa168791c2d8c" + hash: "0431e2ec4765167d0099c59df400f3fd" } Frame { msec: 6032 - hash: "e68b27ff14aac03c827fd43ac488d23e" + hash: "403e1f235770f2b7c8b1b2e86aea69a5" } Frame { msec: 6048 - hash: "e68b27ff14aac03c827fd43ac488d23e" + hash: "403e1f235770f2b7c8b1b2e86aea69a5" } Frame { msec: 6064 - hash: "1f61d857a8c26587fbda5895c603441a" + hash: "32ff9f959598972f5a264418587dca1f" } Frame { msec: 6080 - hash: "1e0dffdd02e05ade1ae444427d4aa345" + hash: "b4c7c07e52a684f7ce21e47a4d66356a" } Frame { msec: 6096 - hash: "9a416ee7a1de9ac45ab2d609233c9520" + hash: "e0f214bed2c3a31f473952929b8f3ea9" } Frame { msec: 6112 - hash: "dfa35bf1cd908011c3214a506bcbdcb8" + hash: "15328b8a205965f3f29fc63a6a8ac8ed" } Frame { msec: 6128 - hash: "bd502dc72dce4af3036f7af9ed7cf9e9" + hash: "72c46ed63633e6879373f4783df25d8b" } Frame { msec: 6144 - hash: "8cd5edce652013a2ed4bf95693259538" + hash: "ae73e0adbdaacc648c2e97840cef4194" } Frame { msec: 6160 - hash: "a38ed1532a40210ad7da4c0d4d1a7195" + hash: "df9451c6634d72e6f794e962b3591086" } Frame { msec: 6176 - hash: "8ac8a8df937da526bbffb9a3590d89ac" + hash: "773e10bbd133e64457e7ddbc73a10fc2" } Frame { msec: 6192 - hash: "07527cb9a4494e11f4c9f99eb72598b9" + hash: "c79abb97eb86761b69053d77156dffd4" } Frame { msec: 6208 - hash: "655b0327ef0f8711810714ba50f2f8cc" + hash: "d927934b19ffd55ea7cea1916983351a" } Frame { msec: 6224 - hash: "4c1ce8b4eb16c69614e2560c04ad48cf" + hash: "ae5058d935c1e44d103be66921b19e77" } Frame { msec: 6240 - hash: "7a382ae4e6a48826eaa2c83ee7a73fb2" + hash: "b6a1446b6be054d5785ba52ac23f8aa8" } Frame { msec: 6256 - hash: "5acd5f250c5b32d9006ed68dfecbfa1c" + hash: "3dffbffded44249fdbe58aecd24ab97f" } Frame { msec: 6272 - hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1" + hash: "56445ab8554a23a786b70e4fd9f40451" } Frame { msec: 6288 - hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1" + hash: "56445ab8554a23a786b70e4fd9f40451" } Frame { msec: 6304 - hash: "07e5f1277558bfe7638b00cf9d967baf" + hash: "257ce16f529b99f28beb2e57625f52ee" } Frame { msec: 6320 - hash: "07e5f1277558bfe7638b00cf9d967baf" + hash: "257ce16f529b99f28beb2e57625f52ee" } Frame { msec: 6336 - hash: "07e5f1277558bfe7638b00cf9d967baf" + hash: "257ce16f529b99f28beb2e57625f52ee" } Frame { msec: 6352 - hash: "07e5f1277558bfe7638b00cf9d967baf" + hash: "257ce16f529b99f28beb2e57625f52ee" } Frame { msec: 6368 - hash: "07e5f1277558bfe7638b00cf9d967baf" + hash: "257ce16f529b99f28beb2e57625f52ee" } Frame { msec: 6384 - hash: "877aca1c64e588845329ca8a38222604" + hash: "cb2b0ddbc7b8485fbf32a537e5a98d0e" } Frame { msec: 6400 - hash: "877aca1c64e588845329ca8a38222604" + hash: "cb2b0ddbc7b8485fbf32a537e5a98d0e" } Frame { msec: 6416 - hash: "877aca1c64e588845329ca8a38222604" + hash: "cb2b0ddbc7b8485fbf32a537e5a98d0e" } Frame { msec: 6432 - hash: "877aca1c64e588845329ca8a38222604" + hash: "cb2b0ddbc7b8485fbf32a537e5a98d0e" } Frame { msec: 6448 - hash: "877aca1c64e588845329ca8a38222604" + hash: "cb2b0ddbc7b8485fbf32a537e5a98d0e" } Frame { msec: 6464 - hash: "b0f28e923f93dcdcea8460ca9d8cd674" + hash: "fa87436d5e51122022a005d815f97c32" } Frame { msec: 6480 - hash: "b0f28e923f93dcdcea8460ca9d8cd674" + hash: "fa87436d5e51122022a005d815f97c32" } Frame { msec: 6496 - hash: "b0f28e923f93dcdcea8460ca9d8cd674" + hash: "fa87436d5e51122022a005d815f97c32" } Frame { msec: 6512 - hash: "b0f28e923f93dcdcea8460ca9d8cd674" + hash: "fa87436d5e51122022a005d815f97c32" } Frame { msec: 6528 - hash: "b0f28e923f93dcdcea8460ca9d8cd674" + hash: "fa87436d5e51122022a005d815f97c32" } Frame { msec: 6544 - hash: "b0f28e923f93dcdcea8460ca9d8cd674" + hash: "fa87436d5e51122022a005d815f97c32" } Frame { msec: 6560 - hash: "b0f28e923f93dcdcea8460ca9d8cd674" + hash: "fa87436d5e51122022a005d815f97c32" } Frame { msec: 6576 - hash: "b0f28e923f93dcdcea8460ca9d8cd674" + hash: "fa87436d5e51122022a005d815f97c32" } Frame { msec: 6592 - hash: "b0f28e923f93dcdcea8460ca9d8cd674" + hash: "fa87436d5e51122022a005d815f97c32" } Frame { msec: 6608 - hash: "b0f28e923f93dcdcea8460ca9d8cd674" + hash: "fa87436d5e51122022a005d815f97c32" } Frame { msec: 6624 - hash: "b0f28e923f93dcdcea8460ca9d8cd674" + hash: "fa87436d5e51122022a005d815f97c32" } Frame { msec: 6640 - hash: "b0f28e923f93dcdcea8460ca9d8cd674" + hash: "fa87436d5e51122022a005d815f97c32" } Frame { msec: 6656 - hash: "b0f28e923f93dcdcea8460ca9d8cd674" + hash: "fa87436d5e51122022a005d815f97c32" } Frame { msec: 6672 - hash: "b0f28e923f93dcdcea8460ca9d8cd674" + hash: "fa87436d5e51122022a005d815f97c32" } Frame { msec: 6688 - hash: "b0f28e923f93dcdcea8460ca9d8cd674" + hash: "fa87436d5e51122022a005d815f97c32" } Frame { msec: 6704 - hash: "228920e994ebf71d542c71ce8263614e" + hash: "da52e87ccd157c0330c07e480b8b0c06" } Frame { msec: 6720 - hash: "228920e994ebf71d542c71ce8263614e" + hash: "da52e87ccd157c0330c07e480b8b0c06" } Frame { msec: 6736 @@ -1706,58 +1706,58 @@ VisualTest { } Frame { msec: 6752 - hash: "228920e994ebf71d542c71ce8263614e" + hash: "da52e87ccd157c0330c07e480b8b0c06" } Frame { msec: 6768 - hash: "228920e994ebf71d542c71ce8263614e" + hash: "da52e87ccd157c0330c07e480b8b0c06" } Frame { msec: 6784 - hash: "228920e994ebf71d542c71ce8263614e" + hash: "da52e87ccd157c0330c07e480b8b0c06" } Frame { msec: 6800 - hash: "228920e994ebf71d542c71ce8263614e" + hash: "da52e87ccd157c0330c07e480b8b0c06" } Frame { msec: 6816 - hash: "228920e994ebf71d542c71ce8263614e" + hash: "da52e87ccd157c0330c07e480b8b0c06" } Frame { msec: 6832 - hash: "07e5f1277558bfe7638b00cf9d967baf" + hash: "257ce16f529b99f28beb2e57625f52ee" } Key { type: 6 key: 16777249 - modifiers: 67108864 + modifiers: 0 text: "" autorep: false count: 1 } Frame { msec: 6848 - hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1" + hash: "56445ab8554a23a786b70e4fd9f40451" } Frame { msec: 6864 - hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1" + hash: "56445ab8554a23a786b70e4fd9f40451" } Frame { msec: 6880 - hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1" + hash: "56445ab8554a23a786b70e4fd9f40451" } Frame { msec: 6896 - hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1" + hash: "56445ab8554a23a786b70e4fd9f40451" } Frame { msec: 6912 - hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1" + hash: "56445ab8554a23a786b70e4fd9f40451" } Frame { msec: 6928 - hash: "3189e5a89d7b2ba1e6a06f6e3070e8c1" + hash: "56445ab8554a23a786b70e4fd9f40451" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.0.png Binary files differindex 87bc640..1b808ef 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml index f56f498..5485174 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml @@ -10,238 +10,238 @@ VisualTest { } Frame { msec: 32 - hash: "7fb2062f5786da9323db4286688682a0" + hash: "3fc7ab44f913d350f7aef342b958e56d" } Frame { msec: 48 - hash: "7fb2062f5786da9323db4286688682a0" + hash: "3fc7ab44f913d350f7aef342b958e56d" } Frame { msec: 64 - hash: "7fb2062f5786da9323db4286688682a0" + hash: "3fc7ab44f913d350f7aef342b958e56d" } Frame { msec: 80 - hash: "7fb2062f5786da9323db4286688682a0" + hash: "3fc7ab44f913d350f7aef342b958e56d" } Frame { msec: 96 - hash: "7fb2062f5786da9323db4286688682a0" + hash: "3fc7ab44f913d350f7aef342b958e56d" } Frame { msec: 112 - hash: "7fb2062f5786da9323db4286688682a0" + hash: "3fc7ab44f913d350f7aef342b958e56d" } Frame { msec: 128 - hash: "7fb2062f5786da9323db4286688682a0" + hash: "3fc7ab44f913d350f7aef342b958e56d" } Frame { msec: 144 - hash: "7fb2062f5786da9323db4286688682a0" + hash: "3fc7ab44f913d350f7aef342b958e56d" } Frame { msec: 160 - hash: "7fb2062f5786da9323db4286688682a0" + hash: "3fc7ab44f913d350f7aef342b958e56d" } Frame { msec: 176 - hash: "c67a5ae840827487ab618ff2d4e9a056" + hash: "a495a8a95c8aa82ac437c2f2970bd42d" } Frame { msec: 192 - hash: "c67a5ae840827487ab618ff2d4e9a056" + hash: "a495a8a95c8aa82ac437c2f2970bd42d" } Frame { msec: 208 - hash: "c67a5ae840827487ab618ff2d4e9a056" + hash: "a495a8a95c8aa82ac437c2f2970bd42d" } Frame { msec: 224 - hash: "c67a5ae840827487ab618ff2d4e9a056" + hash: "a495a8a95c8aa82ac437c2f2970bd42d" } Frame { msec: 240 - hash: "c67a5ae840827487ab618ff2d4e9a056" + hash: "a495a8a95c8aa82ac437c2f2970bd42d" } Frame { msec: 256 - hash: "c67a5ae840827487ab618ff2d4e9a056" + hash: "a495a8a95c8aa82ac437c2f2970bd42d" } Frame { msec: 272 - hash: "c67a5ae840827487ab618ff2d4e9a056" + hash: "a495a8a95c8aa82ac437c2f2970bd42d" } Frame { msec: 288 - hash: "c67a5ae840827487ab618ff2d4e9a056" + hash: "a495a8a95c8aa82ac437c2f2970bd42d" } Frame { msec: 304 - hash: "c67a5ae840827487ab618ff2d4e9a056" + hash: "a495a8a95c8aa82ac437c2f2970bd42d" } Frame { msec: 320 - hash: "c67a5ae840827487ab618ff2d4e9a056" + hash: "a495a8a95c8aa82ac437c2f2970bd42d" } Frame { msec: 336 - hash: "c7986aca05835e238ee95be063bdd032" + hash: "e2d2a6e60537b9a434d0029ef5ff26dc" } Frame { msec: 352 - hash: "c7986aca05835e238ee95be063bdd032" + hash: "e2d2a6e60537b9a434d0029ef5ff26dc" } Frame { msec: 368 - hash: "c7986aca05835e238ee95be063bdd032" + hash: "e2d2a6e60537b9a434d0029ef5ff26dc" } Frame { msec: 384 - hash: "c7986aca05835e238ee95be063bdd032" + hash: "e2d2a6e60537b9a434d0029ef5ff26dc" } Frame { msec: 400 - hash: "c7986aca05835e238ee95be063bdd032" + hash: "e2d2a6e60537b9a434d0029ef5ff26dc" } Frame { msec: 416 - hash: "c7986aca05835e238ee95be063bdd032" + hash: "e2d2a6e60537b9a434d0029ef5ff26dc" } Frame { msec: 432 - hash: "c7986aca05835e238ee95be063bdd032" + hash: "e2d2a6e60537b9a434d0029ef5ff26dc" } Frame { msec: 448 - hash: "c7986aca05835e238ee95be063bdd032" + hash: "e2d2a6e60537b9a434d0029ef5ff26dc" } Frame { msec: 464 - hash: "c7986aca05835e238ee95be063bdd032" + hash: "e2d2a6e60537b9a434d0029ef5ff26dc" } Frame { msec: 480 - hash: "c7986aca05835e238ee95be063bdd032" + hash: "e2d2a6e60537b9a434d0029ef5ff26dc" } Frame { msec: 496 - hash: "dd8ee9c060450beef6cc2494fa463e0a" + hash: "00cba961e67c2124ace75dddb657cd6c" } Frame { msec: 512 - hash: "dd8ee9c060450beef6cc2494fa463e0a" + hash: "00cba961e67c2124ace75dddb657cd6c" } Frame { msec: 528 - hash: "dd8ee9c060450beef6cc2494fa463e0a" + hash: "00cba961e67c2124ace75dddb657cd6c" } Frame { msec: 544 - hash: "dd8ee9c060450beef6cc2494fa463e0a" + hash: "00cba961e67c2124ace75dddb657cd6c" } Frame { msec: 560 - hash: "dd8ee9c060450beef6cc2494fa463e0a" + hash: "00cba961e67c2124ace75dddb657cd6c" } Frame { msec: 576 - hash: "dd8ee9c060450beef6cc2494fa463e0a" + hash: "00cba961e67c2124ace75dddb657cd6c" } Frame { msec: 592 - hash: "dd8ee9c060450beef6cc2494fa463e0a" + hash: "00cba961e67c2124ace75dddb657cd6c" } Frame { msec: 608 - hash: "dd8ee9c060450beef6cc2494fa463e0a" + hash: "00cba961e67c2124ace75dddb657cd6c" } Frame { msec: 624 - hash: "dd8ee9c060450beef6cc2494fa463e0a" + hash: "00cba961e67c2124ace75dddb657cd6c" } Frame { msec: 640 - hash: "dd8ee9c060450beef6cc2494fa463e0a" + hash: "00cba961e67c2124ace75dddb657cd6c" } Frame { msec: 656 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 672 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 688 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 704 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 720 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 736 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 752 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 768 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 784 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 800 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 816 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 832 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 848 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 864 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 880 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 896 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 912 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 928 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 944 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } Frame { msec: 960 - hash: "f55ebe08f1b538d085cda157f566859e" + hash: "31d518de83e195def2d957b7d86b98e5" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-X11/multilineAlign.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-X11/multilineAlign.0.png Binary files differindex 38f2051..666d272 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-X11/multilineAlign.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-X11/multilineAlign.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-X11/multilineAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-X11/multilineAlign.qml index d431bb8..75e6859 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-X11/multilineAlign.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-X11/multilineAlign.qml @@ -10,238 +10,238 @@ VisualTest { } Frame { msec: 32 - hash: "d80fd046c582a26230e547471f290f12" + hash: "377fd9e347a2e6e0930d1422ce744c5c" } Frame { msec: 48 - hash: "d80fd046c582a26230e547471f290f12" + hash: "377fd9e347a2e6e0930d1422ce744c5c" } Frame { msec: 64 - hash: "d80fd046c582a26230e547471f290f12" + hash: "377fd9e347a2e6e0930d1422ce744c5c" } Frame { msec: 80 - hash: "d80fd046c582a26230e547471f290f12" + hash: "377fd9e347a2e6e0930d1422ce744c5c" } Frame { msec: 96 - hash: "d80fd046c582a26230e547471f290f12" + hash: "377fd9e347a2e6e0930d1422ce744c5c" } Frame { msec: 112 - hash: "d80fd046c582a26230e547471f290f12" + hash: "377fd9e347a2e6e0930d1422ce744c5c" } Frame { msec: 128 - hash: "d80fd046c582a26230e547471f290f12" + hash: "377fd9e347a2e6e0930d1422ce744c5c" } Frame { msec: 144 - hash: "d80fd046c582a26230e547471f290f12" + hash: "377fd9e347a2e6e0930d1422ce744c5c" } Frame { msec: 160 - hash: "d80fd046c582a26230e547471f290f12" + hash: "377fd9e347a2e6e0930d1422ce744c5c" } Frame { msec: 176 - hash: "f9e466557e920150c638621536d94e5b" + hash: "36106ba13106d262c02c67e82bba1443" } Frame { msec: 192 - hash: "f9e466557e920150c638621536d94e5b" + hash: "36106ba13106d262c02c67e82bba1443" } Frame { msec: 208 - hash: "f9e466557e920150c638621536d94e5b" + hash: "36106ba13106d262c02c67e82bba1443" } Frame { msec: 224 - hash: "f9e466557e920150c638621536d94e5b" + hash: "36106ba13106d262c02c67e82bba1443" } Frame { msec: 240 - hash: "f9e466557e920150c638621536d94e5b" + hash: "36106ba13106d262c02c67e82bba1443" } Frame { msec: 256 - hash: "f9e466557e920150c638621536d94e5b" + hash: "36106ba13106d262c02c67e82bba1443" } Frame { msec: 272 - hash: "f9e466557e920150c638621536d94e5b" + hash: "36106ba13106d262c02c67e82bba1443" } Frame { msec: 288 - hash: "f9e466557e920150c638621536d94e5b" + hash: "36106ba13106d262c02c67e82bba1443" } Frame { msec: 304 - hash: "f9e466557e920150c638621536d94e5b" + hash: "36106ba13106d262c02c67e82bba1443" } Frame { msec: 320 - hash: "f9e466557e920150c638621536d94e5b" + hash: "36106ba13106d262c02c67e82bba1443" } Frame { msec: 336 - hash: "40b5718a9370c332f254a3ead05dfe5b" + hash: "509d31a486ae2f83055b52ec12f33e76" } Frame { msec: 352 - hash: "40b5718a9370c332f254a3ead05dfe5b" + hash: "509d31a486ae2f83055b52ec12f33e76" } Frame { msec: 368 - hash: "40b5718a9370c332f254a3ead05dfe5b" + hash: "509d31a486ae2f83055b52ec12f33e76" } Frame { msec: 384 - hash: "40b5718a9370c332f254a3ead05dfe5b" + hash: "509d31a486ae2f83055b52ec12f33e76" } Frame { msec: 400 - hash: "40b5718a9370c332f254a3ead05dfe5b" + hash: "509d31a486ae2f83055b52ec12f33e76" } Frame { msec: 416 - hash: "40b5718a9370c332f254a3ead05dfe5b" + hash: "509d31a486ae2f83055b52ec12f33e76" } Frame { msec: 432 - hash: "40b5718a9370c332f254a3ead05dfe5b" + hash: "509d31a486ae2f83055b52ec12f33e76" } Frame { msec: 448 - hash: "40b5718a9370c332f254a3ead05dfe5b" + hash: "509d31a486ae2f83055b52ec12f33e76" } Frame { msec: 464 - hash: "40b5718a9370c332f254a3ead05dfe5b" + hash: "509d31a486ae2f83055b52ec12f33e76" } Frame { msec: 480 - hash: "40b5718a9370c332f254a3ead05dfe5b" + hash: "509d31a486ae2f83055b52ec12f33e76" } Frame { msec: 496 - hash: "3249c560c69e915020f9632acd1c5eca" + hash: "09b9249750ba637ef659cbc7b9a6055f" } Frame { msec: 512 - hash: "3249c560c69e915020f9632acd1c5eca" + hash: "09b9249750ba637ef659cbc7b9a6055f" } Frame { msec: 528 - hash: "3249c560c69e915020f9632acd1c5eca" + hash: "09b9249750ba637ef659cbc7b9a6055f" } Frame { msec: 544 - hash: "3249c560c69e915020f9632acd1c5eca" + hash: "09b9249750ba637ef659cbc7b9a6055f" } Frame { msec: 560 - hash: "3249c560c69e915020f9632acd1c5eca" + hash: "09b9249750ba637ef659cbc7b9a6055f" } Frame { msec: 576 - hash: "3249c560c69e915020f9632acd1c5eca" + hash: "09b9249750ba637ef659cbc7b9a6055f" } Frame { msec: 592 - hash: "3249c560c69e915020f9632acd1c5eca" + hash: "09b9249750ba637ef659cbc7b9a6055f" } Frame { msec: 608 - hash: "3249c560c69e915020f9632acd1c5eca" + hash: "09b9249750ba637ef659cbc7b9a6055f" } Frame { msec: 624 - hash: "3249c560c69e915020f9632acd1c5eca" + hash: "09b9249750ba637ef659cbc7b9a6055f" } Frame { msec: 640 - hash: "3249c560c69e915020f9632acd1c5eca" + hash: "09b9249750ba637ef659cbc7b9a6055f" } Frame { msec: 656 - hash: "2df61c56ba08ef258a0d493760127a8d" + hash: "1ac7017fcf7c9775b66ed1fb78930a45" } Frame { msec: 672 - hash: "2df61c56ba08ef258a0d493760127a8d" + hash: "1ac7017fcf7c9775b66ed1fb78930a45" } Frame { msec: 688 - hash: "2df61c56ba08ef258a0d493760127a8d" + hash: "1ac7017fcf7c9775b66ed1fb78930a45" } Frame { msec: 704 - hash: "2df61c56ba08ef258a0d493760127a8d" + hash: "1ac7017fcf7c9775b66ed1fb78930a45" } Frame { msec: 720 - hash: "2df61c56ba08ef258a0d493760127a8d" + hash: "1ac7017fcf7c9775b66ed1fb78930a45" } Frame { msec: 736 - hash: "2df61c56ba08ef258a0d493760127a8d" + hash: "1ac7017fcf7c9775b66ed1fb78930a45" } Frame { msec: 752 - hash: "2df61c56ba08ef258a0d493760127a8d" + hash: "1ac7017fcf7c9775b66ed1fb78930a45" } Frame { msec: 768 - hash: "2df61c56ba08ef258a0d493760127a8d" + hash: "1ac7017fcf7c9775b66ed1fb78930a45" } Frame { msec: 784 - hash: "2df61c56ba08ef258a0d493760127a8d" + hash: "1ac7017fcf7c9775b66ed1fb78930a45" } Frame { msec: 800 - hash: "2df61c56ba08ef258a0d493760127a8d" + hash: "1ac7017fcf7c9775b66ed1fb78930a45" } Frame { msec: 816 - hash: "2df61c56ba08ef258a0d493760127a8d" + hash: "1ac7017fcf7c9775b66ed1fb78930a45" } Frame { msec: 832 - hash: "2df61c56ba08ef258a0d493760127a8d" + hash: "1ac7017fcf7c9775b66ed1fb78930a45" } Frame { msec: 848 - hash: "2df61c56ba08ef258a0d493760127a8d" + hash: "1ac7017fcf7c9775b66ed1fb78930a45" } Frame { msec: 864 - hash: "2df61c56ba08ef258a0d493760127a8d" + hash: "1ac7017fcf7c9775b66ed1fb78930a45" } Frame { msec: 880 - hash: "2df61c56ba08ef258a0d493760127a8d" + hash: "1ac7017fcf7c9775b66ed1fb78930a45" } Frame { msec: 896 - hash: "2df61c56ba08ef258a0d493760127a8d" + hash: "1ac7017fcf7c9775b66ed1fb78930a45" } Frame { msec: 912 - hash: "2df61c56ba08ef258a0d493760127a8d" + hash: "1ac7017fcf7c9775b66ed1fb78930a45" } Frame { msec: 928 - hash: "2df61c56ba08ef258a0d493760127a8d" + hash: "1ac7017fcf7c9775b66ed1fb78930a45" } Frame { msec: 944 - hash: "2df61c56ba08ef258a0d493760127a8d" + hash: "1ac7017fcf7c9775b66ed1fb78930a45" } Frame { msec: 960 - hash: "2df61c56ba08ef258a0d493760127a8d" + hash: "1ac7017fcf7c9775b66ed1fb78930a45" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.0.png Binary files differindex 4b78165..1fd0213 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.qml index 7c557e0..c5a5a76 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.qml @@ -10,122 +10,122 @@ VisualTest { } Frame { msec: 32 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 48 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 64 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 80 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 96 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 112 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 128 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 144 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 160 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 176 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 192 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 208 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 224 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 240 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 256 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 272 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 288 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 304 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 320 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 336 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 352 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 368 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 384 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 400 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 416 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 432 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 448 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 464 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 480 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } Frame { msec: 496 - hash: "455caf06270992e3367c2a5a4371b6ac" + hash: "f45eda9414f7db5ed1f97a8275459abd" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-X11/parentanchor.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-X11/parentanchor.0.png Binary files differindex d85498b..823199c 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-X11/parentanchor.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-X11/parentanchor.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-X11/parentanchor.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-X11/parentanchor.qml index 26cd97b..4bf0697 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-X11/parentanchor.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-X11/parentanchor.qml @@ -10,122 +10,122 @@ VisualTest { } Frame { msec: 32 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 48 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 64 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 80 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 96 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 112 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 128 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 144 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 160 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 176 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 192 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 208 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 224 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 240 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 256 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 272 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 288 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 304 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 320 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 336 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 352 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 368 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 384 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 400 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 416 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 432 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 448 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 464 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 480 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } Frame { msec: 496 - hash: "8e36621abce059cb8579dd04b28e8d58" + hash: "7e082fa05e000cc20fcda7cb61d98edd" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.0.png Binary files differnew file mode 100644 index 0000000..4d6bf55 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.1.png Binary files differnew file mode 100644 index 0000000..a75da16 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.qml new file mode 100644 index 0000000..002e1c8 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/bugs/data-MAC/QTBUG-14469.qml @@ -0,0 +1,475 @@ +import Qt.VisualTest 4.7 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + image: "QTBUG-14469.0.png" + } + Frame { + msec: 32 + hash: "fab978e1e0ee5140d8131320ff2322e9" + } + Frame { + msec: 48 + hash: "fab978e1e0ee5140d8131320ff2322e9" + } + Frame { + msec: 64 + hash: "fab978e1e0ee5140d8131320ff2322e9" + } + Frame { + msec: 80 + hash: "fab978e1e0ee5140d8131320ff2322e9" + } + Frame { + msec: 96 + hash: "fab978e1e0ee5140d8131320ff2322e9" + } + Frame { + msec: 112 + hash: "fab978e1e0ee5140d8131320ff2322e9" + } + Frame { + msec: 128 + hash: "cf74324c2a0c8f45c728d42390aac1e0" + } + Frame { + msec: 144 + hash: "cf74324c2a0c8f45c728d42390aac1e0" + } + Frame { + msec: 160 + hash: "cf74324c2a0c8f45c728d42390aac1e0" + } + Frame { + msec: 176 + hash: "cf74324c2a0c8f45c728d42390aac1e0" + } + Frame { + msec: 192 + hash: "cf74324c2a0c8f45c728d42390aac1e0" + } + Frame { + msec: 208 + hash: "cf74324c2a0c8f45c728d42390aac1e0" + } + Frame { + msec: 224 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 240 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 256 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 272 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 288 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 304 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 320 + hash: "7b585eb6226e6ce2de355f9730dba377" + } + Frame { + msec: 336 + hash: "7b585eb6226e6ce2de355f9730dba377" + } + Frame { + msec: 352 + hash: "7b585eb6226e6ce2de355f9730dba377" + } + Frame { + msec: 368 + hash: "7b585eb6226e6ce2de355f9730dba377" + } + Frame { + msec: 384 + hash: "7b585eb6226e6ce2de355f9730dba377" + } + Frame { + msec: 400 + hash: "7b585eb6226e6ce2de355f9730dba377" + } + Frame { + msec: 416 + hash: "a7817a7d902ab2fe2875183feb6513dd" + } + Frame { + msec: 432 + hash: "a7817a7d902ab2fe2875183feb6513dd" + } + Frame { + msec: 448 + hash: "a7817a7d902ab2fe2875183feb6513dd" + } + Frame { + msec: 464 + hash: "a7817a7d902ab2fe2875183feb6513dd" + } + Frame { + msec: 480 + hash: "a7817a7d902ab2fe2875183feb6513dd" + } + Frame { + msec: 496 + hash: "a7817a7d902ab2fe2875183feb6513dd" + } + Frame { + msec: 512 + hash: "a7817a7d902ab2fe2875183feb6513dd" + } + Frame { + msec: 528 + hash: "067dfe70eca44e2157b723858897c90e" + } + Frame { + msec: 544 + hash: "067dfe70eca44e2157b723858897c90e" + } + Frame { + msec: 560 + hash: "067dfe70eca44e2157b723858897c90e" + } + Frame { + msec: 576 + hash: "067dfe70eca44e2157b723858897c90e" + } + Frame { + msec: 592 + hash: "067dfe70eca44e2157b723858897c90e" + } + Frame { + msec: 608 + hash: "067dfe70eca44e2157b723858897c90e" + } + Frame { + msec: 624 + hash: "b1ac0015f173bf5789daa5d45d04dadd" + } + Frame { + msec: 640 + hash: "b1ac0015f173bf5789daa5d45d04dadd" + } + Frame { + msec: 656 + hash: "b1ac0015f173bf5789daa5d45d04dadd" + } + Frame { + msec: 672 + hash: "b1ac0015f173bf5789daa5d45d04dadd" + } + Frame { + msec: 688 + hash: "b1ac0015f173bf5789daa5d45d04dadd" + } + Frame { + msec: 704 + hash: "b1ac0015f173bf5789daa5d45d04dadd" + } + Frame { + msec: 720 + hash: "431cb09ccdcfab7c3ff7d498aa1f0816" + } + Frame { + msec: 736 + hash: "431cb09ccdcfab7c3ff7d498aa1f0816" + } + Frame { + msec: 752 + hash: "431cb09ccdcfab7c3ff7d498aa1f0816" + } + Frame { + msec: 768 + hash: "431cb09ccdcfab7c3ff7d498aa1f0816" + } + Frame { + msec: 784 + hash: "431cb09ccdcfab7c3ff7d498aa1f0816" + } + Frame { + msec: 800 + hash: "431cb09ccdcfab7c3ff7d498aa1f0816" + } + Frame { + msec: 816 + hash: "533b23f29fe5f9dc85a6ca390c6dd023" + } + Frame { + msec: 832 + hash: "533b23f29fe5f9dc85a6ca390c6dd023" + } + Frame { + msec: 848 + hash: "533b23f29fe5f9dc85a6ca390c6dd023" + } + Frame { + msec: 864 + hash: "533b23f29fe5f9dc85a6ca390c6dd023" + } + Frame { + msec: 880 + hash: "533b23f29fe5f9dc85a6ca390c6dd023" + } + Frame { + msec: 896 + hash: "533b23f29fe5f9dc85a6ca390c6dd023" + } + Frame { + msec: 912 + hash: "533b23f29fe5f9dc85a6ca390c6dd023" + } + Frame { + msec: 928 + hash: "cd397908009ddf16ec3101efb0d7468e" + } + Frame { + msec: 944 + hash: "cd397908009ddf16ec3101efb0d7468e" + } + Frame { + msec: 960 + hash: "cd397908009ddf16ec3101efb0d7468e" + } + Frame { + msec: 976 + image: "QTBUG-14469.1.png" + } + Frame { + msec: 992 + hash: "cd397908009ddf16ec3101efb0d7468e" + } + Frame { + msec: 1008 + hash: "cd397908009ddf16ec3101efb0d7468e" + } + Frame { + msec: 1024 + hash: "a1eebf1a97314851b5154802f05abe8d" + } + Frame { + msec: 1040 + hash: "a1eebf1a97314851b5154802f05abe8d" + } + Frame { + msec: 1056 + hash: "a1eebf1a97314851b5154802f05abe8d" + } + Frame { + msec: 1072 + hash: "a1eebf1a97314851b5154802f05abe8d" + } + Frame { + msec: 1088 + hash: "a1eebf1a97314851b5154802f05abe8d" + } + Frame { + msec: 1104 + hash: "a1eebf1a97314851b5154802f05abe8d" + } + Frame { + msec: 1120 + hash: "71d91d85b9c555eb9b39dac79b35dd46" + } + Frame { + msec: 1136 + hash: "71d91d85b9c555eb9b39dac79b35dd46" + } + Frame { + msec: 1152 + hash: "71d91d85b9c555eb9b39dac79b35dd46" + } + Frame { + msec: 1168 + hash: "71d91d85b9c555eb9b39dac79b35dd46" + } + Frame { + msec: 1184 + hash: "71d91d85b9c555eb9b39dac79b35dd46" + } + Frame { + msec: 1200 + hash: "71d91d85b9c555eb9b39dac79b35dd46" + } + Frame { + msec: 1216 + hash: "b1da2d1f4aad2a197a80788607bd867d" + } + Frame { + msec: 1232 + hash: "b1da2d1f4aad2a197a80788607bd867d" + } + Frame { + msec: 1248 + hash: "b1da2d1f4aad2a197a80788607bd867d" + } + Frame { + msec: 1264 + hash: "b1da2d1f4aad2a197a80788607bd867d" + } + Frame { + msec: 1280 + hash: "b1da2d1f4aad2a197a80788607bd867d" + } + Frame { + msec: 1296 + hash: "b1da2d1f4aad2a197a80788607bd867d" + } + Frame { + msec: 1312 + hash: "b1da2d1f4aad2a197a80788607bd867d" + } + Frame { + msec: 1328 + hash: "df14e9cfeba3850bae7cad111fdbc8df" + } + Frame { + msec: 1344 + hash: "df14e9cfeba3850bae7cad111fdbc8df" + } + Frame { + msec: 1360 + hash: "df14e9cfeba3850bae7cad111fdbc8df" + } + Frame { + msec: 1376 + hash: "df14e9cfeba3850bae7cad111fdbc8df" + } + Frame { + msec: 1392 + hash: "df14e9cfeba3850bae7cad111fdbc8df" + } + Frame { + msec: 1408 + hash: "df14e9cfeba3850bae7cad111fdbc8df" + } + Frame { + msec: 1424 + hash: "fab978e1e0ee5140d8131320ff2322e9" + } + Frame { + msec: 1440 + hash: "fab978e1e0ee5140d8131320ff2322e9" + } + Frame { + msec: 1456 + hash: "fab978e1e0ee5140d8131320ff2322e9" + } + Frame { + msec: 1472 + hash: "fab978e1e0ee5140d8131320ff2322e9" + } + Frame { + msec: 1488 + hash: "fab978e1e0ee5140d8131320ff2322e9" + } + Frame { + msec: 1504 + hash: "fab978e1e0ee5140d8131320ff2322e9" + } + Frame { + msec: 1520 + hash: "cf74324c2a0c8f45c728d42390aac1e0" + } + Frame { + msec: 1536 + hash: "cf74324c2a0c8f45c728d42390aac1e0" + } + Frame { + msec: 1552 + hash: "cf74324c2a0c8f45c728d42390aac1e0" + } + Frame { + msec: 1568 + hash: "cf74324c2a0c8f45c728d42390aac1e0" + } + Frame { + msec: 1584 + hash: "cf74324c2a0c8f45c728d42390aac1e0" + } + Frame { + msec: 1600 + hash: "cf74324c2a0c8f45c728d42390aac1e0" + } + Frame { + msec: 1616 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 1632 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 1648 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 1664 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 1680 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 1696 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 1712 + hash: "07c938ac9ff9f591e84fc553291c7c49" + } + Frame { + msec: 1728 + hash: "7b585eb6226e6ce2de355f9730dba377" + } + Frame { + msec: 1744 + hash: "7b585eb6226e6ce2de355f9730dba377" + } + Frame { + msec: 1760 + hash: "7b585eb6226e6ce2de355f9730dba377" + } + Frame { + msec: 1776 + hash: "7b585eb6226e6ce2de355f9730dba377" + } + Frame { + msec: 1792 + hash: "7b585eb6226e6ce2de355f9730dba377" + } + Frame { + msec: 1808 + hash: "7b585eb6226e6ce2de355f9730dba377" + } + Frame { + msec: 1824 + hash: "a7817a7d902ab2fe2875183feb6513dd" + } + Frame { + msec: 1840 + hash: "a7817a7d902ab2fe2875183feb6513dd" + } + Frame { + msec: 1856 + hash: "a7817a7d902ab2fe2875183feb6513dd" + } + Frame { + msec: 1872 + hash: "a7817a7d902ab2fe2875183feb6513dd" + } +} diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.0.png Binary files differindex 804a443..7e84164 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.1.png Binary files differindex 804a443..7e84164 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.qml index efdb916..d6d8c2a 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.qml @@ -10,239 +10,239 @@ VisualTest { } Frame { msec: 32 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 48 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 64 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 80 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 96 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 112 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 128 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 144 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 160 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 176 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 192 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 208 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 224 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 240 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 256 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 272 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 288 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 304 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 320 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 336 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 352 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 368 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 384 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 400 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 416 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 432 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 448 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 464 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 480 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 496 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 512 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 528 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 544 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 560 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 576 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 592 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 608 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 624 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 640 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 656 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 672 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 688 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 704 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 720 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 736 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 752 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 768 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 784 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 800 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 816 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 832 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 848 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 864 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 880 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 896 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 912 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 928 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 944 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 960 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 976 @@ -250,11 +250,11 @@ VisualTest { } Frame { msec: 992 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 1008 - hash: "9886d2b883d236bd0a346c6763c1f245" + hash: "212d34fa7425fe24398c9de6d4f10422" } Frame { msec: 1024 diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.0.png Binary files differindex 026d06c..6119f92 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.1.png Binary files differindex 026d06c..6119f92 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.qml index 26d0656..481c9aa 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-X11/qtbug_14865.qml @@ -10,239 +10,239 @@ VisualTest { } Frame { msec: 32 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 48 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 64 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 80 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 96 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 112 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 128 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 144 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 160 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 176 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 192 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 208 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 224 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 240 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 256 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 272 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 288 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 304 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 320 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 336 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 352 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 368 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 384 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 400 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 416 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 432 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 448 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 464 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 480 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 496 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 512 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 528 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 544 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 560 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 576 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 592 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 608 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 624 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 640 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 656 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 672 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 688 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 704 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 720 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 736 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 752 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 768 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 784 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 800 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 816 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 832 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 848 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 864 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 880 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 896 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 912 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 928 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 944 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 960 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 976 @@ -250,198 +250,198 @@ VisualTest { } Frame { msec: 992 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 1008 - hash: "4235bd6abcbdf6621c4c41153fbaada5" + hash: "bd09363ea401e07a38d216bf29806592" } Frame { msec: 1024 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1040 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1056 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1072 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1088 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1104 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1120 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1136 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1152 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1168 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1184 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1200 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1216 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1232 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1248 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1264 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1280 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1296 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1312 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1328 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1344 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1360 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1376 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1392 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1408 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1424 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1440 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1456 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1472 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1488 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1504 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1520 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1536 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1552 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1568 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1584 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1600 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1616 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1632 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1648 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1664 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1680 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1696 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1712 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1728 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1744 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } Frame { msec: 1760 - hash: "3ccd3d26158a50d8f0567bafd7a23e06" + hash: "a3e4ab9c6151c9acb4c9dd41c9c2c596" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.png Binary files differindex 99f0eb7..749a9c5 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.1.png Binary files differindex 99f0eb7..749a9c5 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml index 6dc7f4f..fbb542e 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml @@ -10,239 +10,239 @@ VisualTest { } Frame { msec: 32 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 48 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 64 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 80 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 96 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 112 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 128 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 144 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 160 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 176 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 192 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 208 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 224 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 240 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 256 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 272 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 288 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 304 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 320 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 336 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 352 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 368 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 384 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 400 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 416 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 432 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 448 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 464 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 480 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 496 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 512 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 528 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 544 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 560 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 576 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 592 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 608 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 624 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 640 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 656 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 672 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 688 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 704 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 720 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 736 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 752 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 768 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 784 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 800 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 816 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 832 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 848 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 864 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 880 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 896 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 912 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 928 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 944 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 960 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 976 @@ -251,29 +251,29 @@ VisualTest { Key { type: 6 key: 16777249 - modifiers: 67108864 + modifiers: 0 text: "" autorep: false count: 1 } Frame { msec: 992 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 1008 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 1024 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 1040 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } Frame { msec: 1056 - hash: "8401ef19b1e07ca917b8b061888d4e70" + hash: "4d49ec1a14a321ea9c0d506663df55c2" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.png Binary files differindex 0b08fba..b84b8a9 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.png Binary files differindex dbf8cd3..dbae0ce 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.png Binary files differindex 09646f8..bf56c80 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.2.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png Binary files differindex b6734b4..c4f6e18 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.3.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.4.png Binary files differindex 861f6b0..ea86925 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.4.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml index 026f880..e780ea6 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml @@ -10,239 +10,239 @@ VisualTest { } Frame { msec: 32 - hash: "d482dd54c0f3876a11d80979ada91fa9" + hash: "1c45bbf4494aeb017d7ad53c5e29cbc0" } Frame { msec: 48 - hash: "d482dd54c0f3876a11d80979ada91fa9" + hash: "1c45bbf4494aeb017d7ad53c5e29cbc0" } Frame { msec: 64 - hash: "d482dd54c0f3876a11d80979ada91fa9" + hash: "1c45bbf4494aeb017d7ad53c5e29cbc0" } Frame { msec: 80 - hash: "d482dd54c0f3876a11d80979ada91fa9" + hash: "1c45bbf4494aeb017d7ad53c5e29cbc0" } Frame { msec: 96 - hash: "d482dd54c0f3876a11d80979ada91fa9" + hash: "1c45bbf4494aeb017d7ad53c5e29cbc0" } Frame { msec: 112 - hash: "3eb1cc8fa11ae88a3bf5004263805264" + hash: "452d8e4da326413e4961f20a0d24d0f0" } Frame { msec: 128 - hash: "3eb1cc8fa11ae88a3bf5004263805264" + hash: "452d8e4da326413e4961f20a0d24d0f0" } Frame { msec: 144 - hash: "3eb1cc8fa11ae88a3bf5004263805264" + hash: "452d8e4da326413e4961f20a0d24d0f0" } Frame { msec: 160 - hash: "3eb1cc8fa11ae88a3bf5004263805264" + hash: "452d8e4da326413e4961f20a0d24d0f0" } Frame { msec: 176 - hash: "3eb1cc8fa11ae88a3bf5004263805264" + hash: "452d8e4da326413e4961f20a0d24d0f0" } Frame { msec: 192 - hash: "b169f3828fafa79245bd5886d94a33b2" + hash: "8dc43f316fd36a877c773c10c23b5703" } Frame { msec: 208 - hash: "b169f3828fafa79245bd5886d94a33b2" + hash: "8dc43f316fd36a877c773c10c23b5703" } Frame { msec: 224 - hash: "b169f3828fafa79245bd5886d94a33b2" + hash: "8dc43f316fd36a877c773c10c23b5703" } Frame { msec: 240 - hash: "b169f3828fafa79245bd5886d94a33b2" + hash: "8dc43f316fd36a877c773c10c23b5703" } Frame { msec: 256 - hash: "c9a22f77cce333ea041730bc76d9bb96" + hash: "b7e055ce8d510c5ec66e71fa5a78fddf" } Frame { msec: 272 - hash: "c9a22f77cce333ea041730bc76d9bb96" + hash: "b7e055ce8d510c5ec66e71fa5a78fddf" } Frame { msec: 288 - hash: "c9a22f77cce333ea041730bc76d9bb96" + hash: "b7e055ce8d510c5ec66e71fa5a78fddf" } Frame { msec: 304 - hash: "c9a22f77cce333ea041730bc76d9bb96" + hash: "b7e055ce8d510c5ec66e71fa5a78fddf" } Frame { msec: 320 - hash: "958e5805b2bc2ffeaf8a6c8c24721dd5" + hash: "e9b0abe5719027348cd267eb4823fc5f" } Frame { msec: 336 - hash: "958e5805b2bc2ffeaf8a6c8c24721dd5" + hash: "e9b0abe5719027348cd267eb4823fc5f" } Frame { msec: 352 - hash: "958e5805b2bc2ffeaf8a6c8c24721dd5" + hash: "e9b0abe5719027348cd267eb4823fc5f" } Frame { msec: 368 - hash: "958e5805b2bc2ffeaf8a6c8c24721dd5" + hash: "e9b0abe5719027348cd267eb4823fc5f" } Frame { msec: 384 - hash: "958e5805b2bc2ffeaf8a6c8c24721dd5" + hash: "e9b0abe5719027348cd267eb4823fc5f" } Frame { msec: 400 - hash: "ed14c796dc2980f7a1bdedb15698ae01" + hash: "441102f2f69e9f4e10335c1746d47bd3" } Frame { msec: 416 - hash: "ed14c796dc2980f7a1bdedb15698ae01" + hash: "441102f2f69e9f4e10335c1746d47bd3" } Frame { msec: 432 - hash: "ed14c796dc2980f7a1bdedb15698ae01" + hash: "441102f2f69e9f4e10335c1746d47bd3" } Frame { msec: 448 - hash: "ed14c796dc2980f7a1bdedb15698ae01" + hash: "441102f2f69e9f4e10335c1746d47bd3" } Frame { msec: 464 - hash: "ed14c796dc2980f7a1bdedb15698ae01" + hash: "441102f2f69e9f4e10335c1746d47bd3" } Frame { msec: 480 - hash: "24d811c9b98b0cb140e7e82090e793ab" + hash: "95668288170720989adde2a0b41d5ee8" } Frame { msec: 496 - hash: "24d811c9b98b0cb140e7e82090e793ab" + hash: "95668288170720989adde2a0b41d5ee8" } Frame { msec: 512 - hash: "24d811c9b98b0cb140e7e82090e793ab" + hash: "95668288170720989adde2a0b41d5ee8" } Frame { msec: 528 - hash: "24d811c9b98b0cb140e7e82090e793ab" + hash: "95668288170720989adde2a0b41d5ee8" } Frame { msec: 544 - hash: "afa28a6a682128b1b44df31c78b63b04" + hash: "16bba6b72993e474b4c302af3f682834" } Frame { msec: 560 - hash: "afa28a6a682128b1b44df31c78b63b04" + hash: "16bba6b72993e474b4c302af3f682834" } Frame { msec: 576 - hash: "afa28a6a682128b1b44df31c78b63b04" + hash: "16bba6b72993e474b4c302af3f682834" } Frame { msec: 592 - hash: "afa28a6a682128b1b44df31c78b63b04" + hash: "16bba6b72993e474b4c302af3f682834" } Frame { msec: 608 - hash: "c43bba2d3406fabdafac344102d7d72c" + hash: "86c4d8bd1b19116411b6a6e450547425" } Frame { msec: 624 - hash: "c43bba2d3406fabdafac344102d7d72c" + hash: "86c4d8bd1b19116411b6a6e450547425" } Frame { msec: 640 - hash: "c43bba2d3406fabdafac344102d7d72c" + hash: "86c4d8bd1b19116411b6a6e450547425" } Frame { msec: 656 - hash: "c43bba2d3406fabdafac344102d7d72c" + hash: "86c4d8bd1b19116411b6a6e450547425" } Frame { msec: 672 - hash: "c43bba2d3406fabdafac344102d7d72c" + hash: "86c4d8bd1b19116411b6a6e450547425" } Frame { msec: 688 - hash: "0e1fb18acb72ca1da6fd619e31dd2c86" + hash: "d0d3cfa922ebca20c590ab7e59985268" } Frame { msec: 704 - hash: "0e1fb18acb72ca1da6fd619e31dd2c86" + hash: "d0d3cfa922ebca20c590ab7e59985268" } Frame { msec: 720 - hash: "0e1fb18acb72ca1da6fd619e31dd2c86" + hash: "d0d3cfa922ebca20c590ab7e59985268" } Frame { msec: 736 - hash: "0e1fb18acb72ca1da6fd619e31dd2c86" + hash: "d0d3cfa922ebca20c590ab7e59985268" } Frame { msec: 752 - hash: "0e1fb18acb72ca1da6fd619e31dd2c86" + hash: "d0d3cfa922ebca20c590ab7e59985268" } Frame { msec: 768 - hash: "d5780e5b30828f33d18c1f4e32ba8c3f" + hash: "397d72a090171090f897283729b19bc8" } Frame { msec: 784 - hash: "d5780e5b30828f33d18c1f4e32ba8c3f" + hash: "397d72a090171090f897283729b19bc8" } Frame { msec: 800 - hash: "d5780e5b30828f33d18c1f4e32ba8c3f" + hash: "397d72a090171090f897283729b19bc8" } Frame { msec: 816 - hash: "d5780e5b30828f33d18c1f4e32ba8c3f" + hash: "397d72a090171090f897283729b19bc8" } Frame { msec: 832 - hash: "28bdd1ab1c1af1b39a2f9d11be456682" + hash: "2b038e59289d2e3cef02245d2d128271" } Frame { msec: 848 - hash: "28bdd1ab1c1af1b39a2f9d11be456682" + hash: "2b038e59289d2e3cef02245d2d128271" } Frame { msec: 864 - hash: "28bdd1ab1c1af1b39a2f9d11be456682" + hash: "2b038e59289d2e3cef02245d2d128271" } Frame { msec: 880 - hash: "28bdd1ab1c1af1b39a2f9d11be456682" + hash: "2b038e59289d2e3cef02245d2d128271" } Frame { msec: 896 - hash: "28bdd1ab1c1af1b39a2f9d11be456682" + hash: "2b038e59289d2e3cef02245d2d128271" } Frame { msec: 912 - hash: "e34a9080716cebc0260e682960cc7c6e" + hash: "5f64aa763acdd8f5d6cc249be36e226a" } Frame { msec: 928 - hash: "e34a9080716cebc0260e682960cc7c6e" + hash: "5f64aa763acdd8f5d6cc249be36e226a" } Frame { msec: 944 - hash: "e34a9080716cebc0260e682960cc7c6e" + hash: "5f64aa763acdd8f5d6cc249be36e226a" } Frame { msec: 960 - hash: "e34a9080716cebc0260e682960cc7c6e" + hash: "5f64aa763acdd8f5d6cc249be36e226a" } Frame { msec: 976 @@ -250,247 +250,247 @@ VisualTest { } Frame { msec: 992 - hash: "61959fc3d6f84a9fe88ec1a2979da9af" + hash: "4f8c81adc72fce17c7e54f4d45ec08e4" } Frame { msec: 1008 - hash: "61959fc3d6f84a9fe88ec1a2979da9af" + hash: "4f8c81adc72fce17c7e54f4d45ec08e4" } Frame { msec: 1024 - hash: "61959fc3d6f84a9fe88ec1a2979da9af" + hash: "4f8c81adc72fce17c7e54f4d45ec08e4" } Frame { msec: 1040 - hash: "47794b18771d6d558ebbca881de92377" + hash: "91a7a0c0f686975d0087ee0e066911eb" } Frame { msec: 1056 - hash: "47794b18771d6d558ebbca881de92377" + hash: "91a7a0c0f686975d0087ee0e066911eb" } Frame { msec: 1072 - hash: "47794b18771d6d558ebbca881de92377" + hash: "91a7a0c0f686975d0087ee0e066911eb" } Frame { msec: 1088 - hash: "47794b18771d6d558ebbca881de92377" + hash: "91a7a0c0f686975d0087ee0e066911eb" } Frame { msec: 1104 - hash: "47794b18771d6d558ebbca881de92377" + hash: "91a7a0c0f686975d0087ee0e066911eb" } Frame { msec: 1120 - hash: "ba34b024ddb4e701d1d7f0c19e24d6cf" + hash: "b19f6b8b4dc9d2a2d9aba82983e41889" } Frame { msec: 1136 - hash: "ba34b024ddb4e701d1d7f0c19e24d6cf" + hash: "b19f6b8b4dc9d2a2d9aba82983e41889" } Frame { msec: 1152 - hash: "ba34b024ddb4e701d1d7f0c19e24d6cf" + hash: "b19f6b8b4dc9d2a2d9aba82983e41889" } Frame { msec: 1168 - hash: "ba34b024ddb4e701d1d7f0c19e24d6cf" + hash: "b19f6b8b4dc9d2a2d9aba82983e41889" } Frame { msec: 1184 - hash: "ba34b024ddb4e701d1d7f0c19e24d6cf" + hash: "b19f6b8b4dc9d2a2d9aba82983e41889" } Frame { msec: 1200 - hash: "e94344268d2a118053ecc3aef278d91d" + hash: "456542b672303ddae500b96e9b66a558" } Frame { msec: 1216 - hash: "e94344268d2a118053ecc3aef278d91d" + hash: "456542b672303ddae500b96e9b66a558" } Frame { msec: 1232 - hash: "e94344268d2a118053ecc3aef278d91d" + hash: "456542b672303ddae500b96e9b66a558" } Frame { msec: 1248 - hash: "e94344268d2a118053ecc3aef278d91d" + hash: "456542b672303ddae500b96e9b66a558" } Frame { msec: 1264 - hash: "df1959605d3bd74e84e51cbd4d322235" + hash: "8ec69f05d929c3b397dc721198ccacd4" } Frame { msec: 1280 - hash: "df1959605d3bd74e84e51cbd4d322235" + hash: "8ec69f05d929c3b397dc721198ccacd4" } Frame { msec: 1296 - hash: "df1959605d3bd74e84e51cbd4d322235" + hash: "8ec69f05d929c3b397dc721198ccacd4" } Frame { msec: 1312 - hash: "df1959605d3bd74e84e51cbd4d322235" + hash: "8ec69f05d929c3b397dc721198ccacd4" } Frame { msec: 1328 - hash: "26e1c8d13f0dd3713dce24211a8d26c1" + hash: "2d63fd91f4b01f6b178c795838e78990" } Frame { msec: 1344 - hash: "26e1c8d13f0dd3713dce24211a8d26c1" + hash: "2d63fd91f4b01f6b178c795838e78990" } Frame { msec: 1360 - hash: "26e1c8d13f0dd3713dce24211a8d26c1" + hash: "2d63fd91f4b01f6b178c795838e78990" } Frame { msec: 1376 - hash: "26e1c8d13f0dd3713dce24211a8d26c1" + hash: "2d63fd91f4b01f6b178c795838e78990" } Frame { msec: 1392 - hash: "26e1c8d13f0dd3713dce24211a8d26c1" + hash: "2d63fd91f4b01f6b178c795838e78990" } Frame { msec: 1408 - hash: "fd1344db48093182eb2c2872ceb887df" + hash: "c7c1d2c288653b414fe534ff6fab3381" } Frame { msec: 1424 - hash: "fd1344db48093182eb2c2872ceb887df" + hash: "c7c1d2c288653b414fe534ff6fab3381" } Frame { msec: 1440 - hash: "fd1344db48093182eb2c2872ceb887df" + hash: "c7c1d2c288653b414fe534ff6fab3381" } Frame { msec: 1456 - hash: "fd1344db48093182eb2c2872ceb887df" + hash: "c7c1d2c288653b414fe534ff6fab3381" } Frame { msec: 1472 - hash: "fd1344db48093182eb2c2872ceb887df" + hash: "c7c1d2c288653b414fe534ff6fab3381" } Frame { msec: 1488 - hash: "a4bf54bbb5bcbf54de6a7a2be9b73b81" + hash: "23188e926a855a7a06211783ee51d22a" } Frame { msec: 1504 - hash: "a4bf54bbb5bcbf54de6a7a2be9b73b81" + hash: "23188e926a855a7a06211783ee51d22a" } Frame { msec: 1520 - hash: "a4bf54bbb5bcbf54de6a7a2be9b73b81" + hash: "23188e926a855a7a06211783ee51d22a" } Frame { msec: 1536 - hash: "a4bf54bbb5bcbf54de6a7a2be9b73b81" + hash: "23188e926a855a7a06211783ee51d22a" } Frame { msec: 1552 - hash: "072a6c0e64853f57487845f2ff376c12" + hash: "cfc64d8876d59e0d75f079c2e08cea5f" } Frame { msec: 1568 - hash: "072a6c0e64853f57487845f2ff376c12" + hash: "cfc64d8876d59e0d75f079c2e08cea5f" } Frame { msec: 1584 - hash: "072a6c0e64853f57487845f2ff376c12" + hash: "cfc64d8876d59e0d75f079c2e08cea5f" } Frame { msec: 1600 - hash: "072a6c0e64853f57487845f2ff376c12" + hash: "cfc64d8876d59e0d75f079c2e08cea5f" } Frame { msec: 1616 - hash: "072a6c0e64853f57487845f2ff376c12" + hash: "cfc64d8876d59e0d75f079c2e08cea5f" } Frame { msec: 1632 - hash: "d4183aba9cd5607ea1ff1572c78d33cc" + hash: "766c679eaec4bd28dc92cb3642d5be83" } Frame { msec: 1648 - hash: "d4183aba9cd5607ea1ff1572c78d33cc" + hash: "766c679eaec4bd28dc92cb3642d5be83" } Frame { msec: 1664 - hash: "d4183aba9cd5607ea1ff1572c78d33cc" + hash: "766c679eaec4bd28dc92cb3642d5be83" } Frame { msec: 1680 - hash: "d4183aba9cd5607ea1ff1572c78d33cc" + hash: "766c679eaec4bd28dc92cb3642d5be83" } Frame { msec: 1696 - hash: "31cb8e151b34187f712b269b38a317a7" + hash: "a86ba05a854fde208e6cf7849327d5d0" } Frame { msec: 1712 - hash: "31cb8e151b34187f712b269b38a317a7" + hash: "a86ba05a854fde208e6cf7849327d5d0" } Frame { msec: 1728 - hash: "31cb8e151b34187f712b269b38a317a7" + hash: "a86ba05a854fde208e6cf7849327d5d0" } Frame { msec: 1744 - hash: "31cb8e151b34187f712b269b38a317a7" + hash: "a86ba05a854fde208e6cf7849327d5d0" } Key { type: 6 key: 16777249 - modifiers: 67108864 + modifiers: 0 text: "" autorep: false count: 1 } Frame { msec: 1760 - hash: "31cb8e151b34187f712b269b38a317a7" + hash: "a86ba05a854fde208e6cf7849327d5d0" } Frame { msec: 1776 - hash: "e24ad0aed6a071d6da9f51af00c69300" + hash: "23b60817be2a741cada2af663b0d7f54" } Frame { msec: 1792 - hash: "e24ad0aed6a071d6da9f51af00c69300" + hash: "23b60817be2a741cada2af663b0d7f54" } Frame { msec: 1808 - hash: "e24ad0aed6a071d6da9f51af00c69300" + hash: "23b60817be2a741cada2af663b0d7f54" } Frame { msec: 1824 - hash: "e24ad0aed6a071d6da9f51af00c69300" + hash: "23b60817be2a741cada2af663b0d7f54" } Frame { msec: 1840 - hash: "760eea420a5eb52ccd1f6a29d6701338" + hash: "c098c1c0d5239c59735a5c9450e9d531" } Frame { msec: 1856 - hash: "760eea420a5eb52ccd1f6a29d6701338" + hash: "c098c1c0d5239c59735a5c9450e9d531" } Frame { msec: 1872 - hash: "760eea420a5eb52ccd1f6a29d6701338" + hash: "c098c1c0d5239c59735a5c9450e9d531" } Frame { msec: 1888 - hash: "760eea420a5eb52ccd1f6a29d6701338" + hash: "c098c1c0d5239c59735a5c9450e9d531" } Frame { msec: 1904 - hash: "760eea420a5eb52ccd1f6a29d6701338" + hash: "c098c1c0d5239c59735a5c9450e9d531" } Frame { msec: 1920 - hash: "07cdcdb9b551750c4a742ee6dff9f3f9" + hash: "09f6ee218d314d3a405ae43e32588c07" } Frame { msec: 1936 @@ -498,239 +498,239 @@ VisualTest { } Frame { msec: 1952 - hash: "07cdcdb9b551750c4a742ee6dff9f3f9" + hash: "09f6ee218d314d3a405ae43e32588c07" } Frame { msec: 1968 - hash: "07cdcdb9b551750c4a742ee6dff9f3f9" + hash: "09f6ee218d314d3a405ae43e32588c07" } Frame { msec: 1984 - hash: "ec4dada16fb19fb4cf24367c9f25f161" + hash: "6ee480e7d8b0abe295ae12a660119102" } Frame { msec: 2000 - hash: "ec4dada16fb19fb4cf24367c9f25f161" + hash: "6ee480e7d8b0abe295ae12a660119102" } Frame { msec: 2016 - hash: "ec4dada16fb19fb4cf24367c9f25f161" + hash: "6ee480e7d8b0abe295ae12a660119102" } Frame { msec: 2032 - hash: "ec4dada16fb19fb4cf24367c9f25f161" + hash: "6ee480e7d8b0abe295ae12a660119102" } Frame { msec: 2048 - hash: "ec4dada16fb19fb4cf24367c9f25f161" + hash: "6ee480e7d8b0abe295ae12a660119102" } Frame { msec: 2064 - hash: "f5ef19dc69f8b6060056f7005f613ca3" + hash: "b43ca0ea75f4c17c09248f78170d3839" } Frame { msec: 2080 - hash: "f5ef19dc69f8b6060056f7005f613ca3" + hash: "b43ca0ea75f4c17c09248f78170d3839" } Frame { msec: 2096 - hash: "f5ef19dc69f8b6060056f7005f613ca3" + hash: "b43ca0ea75f4c17c09248f78170d3839" } Frame { msec: 2112 - hash: "f5ef19dc69f8b6060056f7005f613ca3" + hash: "b43ca0ea75f4c17c09248f78170d3839" } Frame { msec: 2128 - hash: "6bd00519ea14f0dd34d45de4deaaa65e" + hash: "92e0ee1174ffcb710403bb831aeec353" } Frame { msec: 2144 - hash: "6bd00519ea14f0dd34d45de4deaaa65e" + hash: "92e0ee1174ffcb710403bb831aeec353" } Frame { msec: 2160 - hash: "6bd00519ea14f0dd34d45de4deaaa65e" + hash: "92e0ee1174ffcb710403bb831aeec353" } Frame { msec: 2176 - hash: "6bd00519ea14f0dd34d45de4deaaa65e" + hash: "92e0ee1174ffcb710403bb831aeec353" } Frame { msec: 2192 - hash: "6bd00519ea14f0dd34d45de4deaaa65e" + hash: "92e0ee1174ffcb710403bb831aeec353" } Frame { msec: 2208 - hash: "1c3e491e889e408f705477f060103243" + hash: "bba79ad6f3630b7aa382541cc2d3a2cd" } Frame { msec: 2224 - hash: "1c3e491e889e408f705477f060103243" + hash: "bba79ad6f3630b7aa382541cc2d3a2cd" } Frame { msec: 2240 - hash: "1c3e491e889e408f705477f060103243" + hash: "bba79ad6f3630b7aa382541cc2d3a2cd" } Frame { msec: 2256 - hash: "1c3e491e889e408f705477f060103243" + hash: "bba79ad6f3630b7aa382541cc2d3a2cd" } Frame { msec: 2272 - hash: "80bc59211ffab64820e306e6eb13d2fc" + hash: "7efeb1565125f25252ce3f03dadc3bea" } Frame { msec: 2288 - hash: "80bc59211ffab64820e306e6eb13d2fc" + hash: "7efeb1565125f25252ce3f03dadc3bea" } Frame { msec: 2304 - hash: "80bc59211ffab64820e306e6eb13d2fc" + hash: "7efeb1565125f25252ce3f03dadc3bea" } Frame { msec: 2320 - hash: "80bc59211ffab64820e306e6eb13d2fc" + hash: "7efeb1565125f25252ce3f03dadc3bea" } Frame { msec: 2336 - hash: "80bc59211ffab64820e306e6eb13d2fc" + hash: "7efeb1565125f25252ce3f03dadc3bea" } Frame { msec: 2352 - hash: "7765c76dd2ef99e4d7286fcb3a172a07" + hash: "9086d24dff90f8c9e4543c6b14c99bf6" } Frame { msec: 2368 - hash: "7765c76dd2ef99e4d7286fcb3a172a07" + hash: "9086d24dff90f8c9e4543c6b14c99bf6" } Frame { msec: 2384 - hash: "7765c76dd2ef99e4d7286fcb3a172a07" + hash: "9086d24dff90f8c9e4543c6b14c99bf6" } Frame { msec: 2400 - hash: "7765c76dd2ef99e4d7286fcb3a172a07" + hash: "9086d24dff90f8c9e4543c6b14c99bf6" } Frame { msec: 2416 - hash: "7765c76dd2ef99e4d7286fcb3a172a07" + hash: "9086d24dff90f8c9e4543c6b14c99bf6" } Frame { msec: 2432 - hash: "8fedc4d5d4161922c1d9d50adcf67e4a" + hash: "15d8e99a0676e0a1588dfddc00ab0d16" } Frame { msec: 2448 - hash: "8fedc4d5d4161922c1d9d50adcf67e4a" + hash: "15d8e99a0676e0a1588dfddc00ab0d16" } Frame { msec: 2464 - hash: "8fedc4d5d4161922c1d9d50adcf67e4a" + hash: "15d8e99a0676e0a1588dfddc00ab0d16" } Frame { msec: 2480 - hash: "8fedc4d5d4161922c1d9d50adcf67e4a" + hash: "15d8e99a0676e0a1588dfddc00ab0d16" } Frame { msec: 2496 - hash: "4f26d7ab05e6d39a869be1259e33c739" + hash: "ecc25b88c29dc9d6c70df6e36a91f95c" } Frame { msec: 2512 - hash: "4f26d7ab05e6d39a869be1259e33c739" + hash: "ecc25b88c29dc9d6c70df6e36a91f95c" } Frame { msec: 2528 - hash: "4f26d7ab05e6d39a869be1259e33c739" + hash: "ecc25b88c29dc9d6c70df6e36a91f95c" } Frame { msec: 2544 - hash: "4f26d7ab05e6d39a869be1259e33c739" + hash: "ecc25b88c29dc9d6c70df6e36a91f95c" } Frame { msec: 2560 - hash: "d4ead42bcc2e283e513f1ab4f8a89f27" + hash: "905c81686d8d2ecdde513622c35c0ea6" } Frame { msec: 2576 - hash: "d4ead42bcc2e283e513f1ab4f8a89f27" + hash: "905c81686d8d2ecdde513622c35c0ea6" } Frame { msec: 2592 - hash: "d4ead42bcc2e283e513f1ab4f8a89f27" + hash: "905c81686d8d2ecdde513622c35c0ea6" } Frame { msec: 2608 - hash: "d4ead42bcc2e283e513f1ab4f8a89f27" + hash: "905c81686d8d2ecdde513622c35c0ea6" } Frame { msec: 2624 - hash: "d4ead42bcc2e283e513f1ab4f8a89f27" + hash: "905c81686d8d2ecdde513622c35c0ea6" } Frame { msec: 2640 - hash: "6d91b100f369381b24052e5a4466e24d" + hash: "537a2cf41a5e15220d2ca2218ac49a5a" } Frame { msec: 2656 - hash: "6d91b100f369381b24052e5a4466e24d" + hash: "537a2cf41a5e15220d2ca2218ac49a5a" } Frame { msec: 2672 - hash: "6d91b100f369381b24052e5a4466e24d" + hash: "537a2cf41a5e15220d2ca2218ac49a5a" } Frame { msec: 2688 - hash: "6d91b100f369381b24052e5a4466e24d" + hash: "537a2cf41a5e15220d2ca2218ac49a5a" } Frame { msec: 2704 - hash: "2d6082b41e3cfdc3be9c130311ac854a" + hash: "53325ce7d011eeb72369463721f15e87" } Frame { msec: 2720 - hash: "2d6082b41e3cfdc3be9c130311ac854a" + hash: "53325ce7d011eeb72369463721f15e87" } Frame { msec: 2736 - hash: "2d6082b41e3cfdc3be9c130311ac854a" + hash: "53325ce7d011eeb72369463721f15e87" } Frame { msec: 2752 - hash: "2d6082b41e3cfdc3be9c130311ac854a" + hash: "53325ce7d011eeb72369463721f15e87" } Frame { msec: 2768 - hash: "2d6082b41e3cfdc3be9c130311ac854a" + hash: "53325ce7d011eeb72369463721f15e87" } Frame { msec: 2784 - hash: "78732b58812f202768fa224aefce187d" + hash: "9ad2565cc95647a83d3ce3acc106485a" } Frame { msec: 2800 - hash: "78732b58812f202768fa224aefce187d" + hash: "9ad2565cc95647a83d3ce3acc106485a" } Frame { msec: 2816 - hash: "78732b58812f202768fa224aefce187d" + hash: "9ad2565cc95647a83d3ce3acc106485a" } Frame { msec: 2832 - hash: "78732b58812f202768fa224aefce187d" + hash: "9ad2565cc95647a83d3ce3acc106485a" } Frame { msec: 2848 - hash: "54d728d677cf3a07c4da7727a75e6c59" + hash: "de7b66581e0743385a984f76c993b01b" } Frame { msec: 2864 - hash: "54d728d677cf3a07c4da7727a75e6c59" + hash: "de7b66581e0743385a984f76c993b01b" } Frame { msec: 2880 - hash: "54d728d677cf3a07c4da7727a75e6c59" + hash: "de7b66581e0743385a984f76c993b01b" } Frame { msec: 2896 @@ -738,239 +738,239 @@ VisualTest { } Frame { msec: 2912 - hash: "54d728d677cf3a07c4da7727a75e6c59" + hash: "de7b66581e0743385a984f76c993b01b" } Frame { msec: 2928 - hash: "45ec3534077f6fa66d7710010cceb332" + hash: "f66852df1738e4fe29ac1f6938d814c2" } Frame { msec: 2944 - hash: "45ec3534077f6fa66d7710010cceb332" + hash: "f66852df1738e4fe29ac1f6938d814c2" } Frame { msec: 2960 - hash: "45ec3534077f6fa66d7710010cceb332" + hash: "f66852df1738e4fe29ac1f6938d814c2" } Frame { msec: 2976 - hash: "45ec3534077f6fa66d7710010cceb332" + hash: "f66852df1738e4fe29ac1f6938d814c2" } Frame { msec: 2992 - hash: "ef909728fa59292ffed1d047835439d6" + hash: "cf6dde6c590879a9e905a0f559f089ca" } Frame { msec: 3008 - hash: "ef909728fa59292ffed1d047835439d6" + hash: "cf6dde6c590879a9e905a0f559f089ca" } Frame { msec: 3024 - hash: "ef909728fa59292ffed1d047835439d6" + hash: "cf6dde6c590879a9e905a0f559f089ca" } Frame { msec: 3040 - hash: "ef909728fa59292ffed1d047835439d6" + hash: "cf6dde6c590879a9e905a0f559f089ca" } Frame { msec: 3056 - hash: "ef909728fa59292ffed1d047835439d6" + hash: "cf6dde6c590879a9e905a0f559f089ca" } Frame { msec: 3072 - hash: "454741313d087e5d13ddeaf02663746f" + hash: "bd63e4df280010ed9f67fc7976b86cb5" } Frame { msec: 3088 - hash: "454741313d087e5d13ddeaf02663746f" + hash: "bd63e4df280010ed9f67fc7976b86cb5" } Frame { msec: 3104 - hash: "454741313d087e5d13ddeaf02663746f" + hash: "bd63e4df280010ed9f67fc7976b86cb5" } Frame { msec: 3120 - hash: "454741313d087e5d13ddeaf02663746f" + hash: "bd63e4df280010ed9f67fc7976b86cb5" } Frame { msec: 3136 - hash: "454741313d087e5d13ddeaf02663746f" + hash: "bd63e4df280010ed9f67fc7976b86cb5" } Frame { msec: 3152 - hash: "02928f0a8f8f1011028114487b8dccf8" + hash: "065d3d370faa58aed9899cae0f86f032" } Frame { msec: 3168 - hash: "02928f0a8f8f1011028114487b8dccf8" + hash: "065d3d370faa58aed9899cae0f86f032" } Frame { msec: 3184 - hash: "02928f0a8f8f1011028114487b8dccf8" + hash: "065d3d370faa58aed9899cae0f86f032" } Frame { msec: 3200 - hash: "02928f0a8f8f1011028114487b8dccf8" + hash: "065d3d370faa58aed9899cae0f86f032" } Frame { msec: 3216 - hash: "e0fca67bb095c9891831cd9355b4880d" + hash: "b5623d05c578a6f09bcfacd4d3163b09" } Frame { msec: 3232 - hash: "e0fca67bb095c9891831cd9355b4880d" + hash: "b5623d05c578a6f09bcfacd4d3163b09" } Frame { msec: 3248 - hash: "e0fca67bb095c9891831cd9355b4880d" + hash: "b5623d05c578a6f09bcfacd4d3163b09" } Frame { msec: 3264 - hash: "e0fca67bb095c9891831cd9355b4880d" + hash: "b5623d05c578a6f09bcfacd4d3163b09" } Frame { msec: 3280 - hash: "f5ae54931d953fc95cfbdbde1993bebe" + hash: "83c70529d05911ea26a5cbbab5aa20f2" } Frame { msec: 3296 - hash: "f5ae54931d953fc95cfbdbde1993bebe" + hash: "83c70529d05911ea26a5cbbab5aa20f2" } Frame { msec: 3312 - hash: "f5ae54931d953fc95cfbdbde1993bebe" + hash: "83c70529d05911ea26a5cbbab5aa20f2" } Frame { msec: 3328 - hash: "f5ae54931d953fc95cfbdbde1993bebe" + hash: "83c70529d05911ea26a5cbbab5aa20f2" } Frame { msec: 3344 - hash: "f5ae54931d953fc95cfbdbde1993bebe" + hash: "83c70529d05911ea26a5cbbab5aa20f2" } Frame { msec: 3360 - hash: "9afb0b2a185e2f825e9fad1c3644f6cb" + hash: "17927c706da1bc222ba5462af66a9d2f" } Frame { msec: 3376 - hash: "9afb0b2a185e2f825e9fad1c3644f6cb" + hash: "17927c706da1bc222ba5462af66a9d2f" } Frame { msec: 3392 - hash: "9afb0b2a185e2f825e9fad1c3644f6cb" + hash: "17927c706da1bc222ba5462af66a9d2f" } Frame { msec: 3408 - hash: "9afb0b2a185e2f825e9fad1c3644f6cb" + hash: "17927c706da1bc222ba5462af66a9d2f" } Frame { msec: 3424 - hash: "9afb0b2a185e2f825e9fad1c3644f6cb" + hash: "17927c706da1bc222ba5462af66a9d2f" } Frame { msec: 3440 - hash: "f3f5a81d3b5f644a00cea6203f38994c" + hash: "f49627ba8d3e257e0e94404da24d12dc" } Frame { msec: 3456 - hash: "f3f5a81d3b5f644a00cea6203f38994c" + hash: "f49627ba8d3e257e0e94404da24d12dc" } Frame { msec: 3472 - hash: "f3f5a81d3b5f644a00cea6203f38994c" + hash: "f49627ba8d3e257e0e94404da24d12dc" } Frame { msec: 3488 - hash: "f3f5a81d3b5f644a00cea6203f38994c" + hash: "f49627ba8d3e257e0e94404da24d12dc" } Frame { msec: 3504 - hash: "bd9884712fd5afe67a3622c809bf4e76" + hash: "37a0c9dc20431c8398409d4522a0fdd3" } Frame { msec: 3520 - hash: "bd9884712fd5afe67a3622c809bf4e76" + hash: "37a0c9dc20431c8398409d4522a0fdd3" } Frame { msec: 3536 - hash: "bd9884712fd5afe67a3622c809bf4e76" + hash: "37a0c9dc20431c8398409d4522a0fdd3" } Frame { msec: 3552 - hash: "bd9884712fd5afe67a3622c809bf4e76" + hash: "37a0c9dc20431c8398409d4522a0fdd3" } Frame { msec: 3568 - hash: "c9324386954380a72ef4084d13e623b5" + hash: "67bebfe9fb5ac745f40040ff8083e999" } Frame { msec: 3584 - hash: "c9324386954380a72ef4084d13e623b5" + hash: "67bebfe9fb5ac745f40040ff8083e999" } Frame { msec: 3600 - hash: "c9324386954380a72ef4084d13e623b5" + hash: "67bebfe9fb5ac745f40040ff8083e999" } Frame { msec: 3616 - hash: "c9324386954380a72ef4084d13e623b5" + hash: "67bebfe9fb5ac745f40040ff8083e999" } Frame { msec: 3632 - hash: "c9324386954380a72ef4084d13e623b5" + hash: "67bebfe9fb5ac745f40040ff8083e999" } Frame { msec: 3648 - hash: "6d05fd8e8690e44293af1809f359aa72" + hash: "84f8b27b83b566c99e65ea39b29772c1" } Frame { msec: 3664 - hash: "6d05fd8e8690e44293af1809f359aa72" + hash: "84f8b27b83b566c99e65ea39b29772c1" } Frame { msec: 3680 - hash: "6d05fd8e8690e44293af1809f359aa72" + hash: "84f8b27b83b566c99e65ea39b29772c1" } Frame { msec: 3696 - hash: "6d05fd8e8690e44293af1809f359aa72" + hash: "84f8b27b83b566c99e65ea39b29772c1" } Frame { msec: 3712 - hash: "6d05fd8e8690e44293af1809f359aa72" + hash: "84f8b27b83b566c99e65ea39b29772c1" } Frame { msec: 3728 - hash: "2d7350a79f5a68d3e3dfc994c6e002ed" + hash: "c6ba663536f19b9f291ef35b7a70e490" } Frame { msec: 3744 - hash: "2d7350a79f5a68d3e3dfc994c6e002ed" + hash: "c6ba663536f19b9f291ef35b7a70e490" } Frame { msec: 3760 - hash: "2d7350a79f5a68d3e3dfc994c6e002ed" + hash: "c6ba663536f19b9f291ef35b7a70e490" } Frame { msec: 3776 - hash: "2d7350a79f5a68d3e3dfc994c6e002ed" + hash: "c6ba663536f19b9f291ef35b7a70e490" } Frame { msec: 3792 - hash: "edb5d50f23a293a7791122fc159aaaa0" + hash: "65f22784730aa27b2628d015a1cc4abe" } Frame { msec: 3808 - hash: "edb5d50f23a293a7791122fc159aaaa0" + hash: "65f22784730aa27b2628d015a1cc4abe" } Frame { msec: 3824 - hash: "edb5d50f23a293a7791122fc159aaaa0" + hash: "65f22784730aa27b2628d015a1cc4abe" } Frame { msec: 3840 - hash: "edb5d50f23a293a7791122fc159aaaa0" + hash: "65f22784730aa27b2628d015a1cc4abe" } Frame { msec: 3856 @@ -978,14 +978,14 @@ VisualTest { } Frame { msec: 3872 - hash: "a863480fec9abf817752c5eb62a2ddf4" + hash: "b11a511d80de87329501b9c11aebbc58" } Frame { msec: 3888 - hash: "a863480fec9abf817752c5eb62a2ddf4" + hash: "b11a511d80de87329501b9c11aebbc58" } Frame { msec: 3904 - hash: "a863480fec9abf817752c5eb62a2ddf4" + hash: "b11a511d80de87329501b9c11aebbc58" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png Binary files differindex e1d3b75..3861b4f 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.1.png Binary files differindex 8013dc9..ce166f1 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml index 77a7b2f..84778ac 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml @@ -10,239 +10,239 @@ VisualTest { } Frame { msec: 32 - hash: "ef2b4cc93e5bf5e64d3338921fe36336" + hash: "58d757783e6d57c5ac2596219dfd37be" } Frame { msec: 48 - hash: "3ddbd1a53a36b0f8b36d87e742f3b1bd" + hash: "e76b3b98f447b706c59ba0c175e1829d" } Frame { msec: 64 - hash: "f7acfdaf29a3d7bd179b30db784ca01b" + hash: "f0dbb0b55d1d27bf7c0260db5b5782a2" } Frame { msec: 80 - hash: "b5277d02ed63180e845c60e1dd4da7d0" + hash: "00845517336befd7ead0141312ea38ce" } Frame { msec: 96 - hash: "a7964577d77943d5a62c02ea1e689eb7" + hash: "99723ae092407e5291ed3a13f5a7be61" } Frame { msec: 112 - hash: "fc597a07209bfea49227ec491b033af1" + hash: "2d531f1dd1545a4e2f8ca4c65338e0c3" } Frame { msec: 128 - hash: "429a7dd5a23a5012f1985bcddd27ba0c" + hash: "9f273323f48a70be279302b194203a36" } Frame { msec: 144 - hash: "fbf845e137e0b389babdcd71a95c3060" + hash: "7de4bd5f82369953c2a4a990ddaf4339" } Frame { msec: 160 - hash: "1d1272df3a53cb9860d23be3343a143e" + hash: "96c5f74c01723a15a57db161604bc245" } Frame { msec: 176 - hash: "cef05f6564b21fd2cbd02f6def604c0b" + hash: "df2eac6300919044cfe2a2f591c3bd99" } Frame { msec: 192 - hash: "be0ca54bc7aa23c2b9c56e3a0444197a" + hash: "a153904cdfa0be697a25bebc4ce1fbca" } Frame { msec: 208 - hash: "5372a7052d10b8c6c2204efdc88c2f48" + hash: "de243731b92ac1cac05e194aed0acd1e" } Frame { msec: 224 - hash: "43b775c558843c1334e86ca4fcf07ae2" + hash: "f6ccc0f127bfc6212885c3c6470639ed" } Frame { msec: 240 - hash: "10daf71511454ef4db3692a19ecbcbaa" + hash: "a2d56227aebedb9590a1124e44fe8e84" } Frame { msec: 256 - hash: "5c545ecb0ddfaa5d6cde266be6fae35c" + hash: "5f8c0a42a231580dcfff6a534e77bef8" } Frame { msec: 272 - hash: "1a3c05b189c3adf87710eeb03296aec2" + hash: "e631663ac692ab097cb28095b45e8563" } Frame { msec: 288 - hash: "de2c6f4d3bf4d245e45e47a743808f5d" + hash: "2a03f6ba3c67a9e9732cc1f5cdc42c23" } Frame { msec: 304 - hash: "7c71dcbd8e2be19ac2d090ab3e012a62" + hash: "26b85080d624b232e5209aa082fc11b1" } Frame { msec: 320 - hash: "3bd42257fe4a5d941a8755e66db94870" + hash: "1c027f4a0114bb9050a3a8d9de2b8a56" } Frame { msec: 336 - hash: "d52f57a1f289d2c697fd1db2086a4df3" + hash: "788e6ad3cb5f6e120e40fd3dc6ac8483" } Frame { msec: 352 - hash: "5d9e22ca6b6f8e4805a49fcf9c6a4dd6" + hash: "7e1b0fb71528dfa17a87950c0ff86111" } Frame { msec: 368 - hash: "cbafada44b434ac7fe64fdebef7a816e" + hash: "e1878e6e8ba14d8945e1f71ac8d42c1e" } Frame { msec: 384 - hash: "4ac900c005cfedb9e3367a4612334cc1" + hash: "556f42297eb1e57d6a8af0946651a75e" } Frame { msec: 400 - hash: "3dbe30edac497ca316bf39e55ff9580a" + hash: "73df08e7e3391b339cea9f5f082fd83a" } Frame { msec: 416 - hash: "e892891c063172d513f4f8c0a0b2644f" + hash: "de3bd8a12c2a448738ce77036b97bda7" } Frame { msec: 432 - hash: "7c214a442c8f37d22f74343fdb7f7faa" + hash: "0ab187aa7a478dbf005f35416a93c456" } Frame { msec: 448 - hash: "c4461c6c26eb9689e640149b7755bf14" + hash: "e5baf64ccafa6a4d2bf74aacf52019c6" } Frame { msec: 464 - hash: "e7be611f007716a80698558d0600f5b6" + hash: "0ed2ee4a773ade712ef207549006aa7b" } Frame { msec: 480 - hash: "5a3abaa7b36fcd7e2279318671597386" + hash: "b23dd49bdfe8fb155e2055262e6a1478" } Frame { msec: 496 - hash: "2dba1fcba5bdce948fa56ffc02a7f80c" + hash: "871f82636a03d6fa8cbfb580038bd0b7" } Frame { msec: 512 - hash: "55043bcce83e4f8899b1a692fe30fa67" + hash: "463cdc2cbde034d7d7a5061338b319c7" } Frame { msec: 528 - hash: "f92df1fb28a7da39ed907dd2bc177ab8" + hash: "22ff8e25136877fd6f5dce1b01e65c08" } Frame { msec: 544 - hash: "7dcf90cd5f81999359ed389c7050d934" + hash: "97d4e49622d877e9e1e0102786e1ee55" } Frame { msec: 560 - hash: "021014366809103b76bd5d472c43b062" + hash: "ebf5304185abe4bc33be44c3df09a93a" } Frame { msec: 576 - hash: "fff5b2c8d63083d132c0f106fad84fa1" + hash: "307887d9973e807c52b2143cdfe438ad" } Frame { msec: 592 - hash: "ab3a6a6c646d31be97884484a6647330" + hash: "d89547539741f387fdd6aa80ef239fbd" } Frame { msec: 608 - hash: "d46a168f89d94a32496b75ee5d3794e4" + hash: "b818215b4cdd6e811057f1a0f5eb1a5a" } Frame { msec: 624 - hash: "f7b62e86595a4d2c7f5a2cd52e0938b9" + hash: "84f7e523c0f21236ff8aad1333470d11" } Frame { msec: 640 - hash: "df95a29a101889c50537cfb1b027f9a6" + hash: "7f974663c7add6d10ebdd401794e087a" } Frame { msec: 656 - hash: "4c6691ef37222260dce72868ae809d68" + hash: "4c824dc01e8fead2706608ca68293d11" } Frame { msec: 672 - hash: "ad816534dcf446a1456894ff2b1afa33" + hash: "86b0f617eb3bfff944c3b670b3b51c71" } Frame { msec: 688 - hash: "bfa9f9f833f38aedf766e061f3a18c48" + hash: "86c5660c22003099cc4121381c11de85" } Frame { msec: 704 - hash: "f4a6786e9db58cf3fd3f3b896d3cf84f" + hash: "3c2bd08ea17aaa920949239f06b255cf" } Frame { msec: 720 - hash: "e51e8b766e5d4a0f061dc6885fcf8eb3" + hash: "2380278cc065a3ac5355127d9873796c" } Frame { msec: 736 - hash: "eab6d261429c36c4e37005f37b7823d5" + hash: "e5d8624e841476926b3e2a5ebca8c65f" } Frame { msec: 752 - hash: "3cc5db209a98daef06127bae53b1929d" + hash: "eab70f5005a6b39e3ead6e4452df1a54" } Frame { msec: 768 - hash: "230cd6e6ca18a921a21379dd85e24822" + hash: "46acef023d154bad3f91e0267996421b" } Frame { msec: 784 - hash: "e3a877e8f01bf17fe6ea8b9fbb780f14" + hash: "26ba9f30a4bfd72c9b6dae2a25660ea9" } Frame { msec: 800 - hash: "a19f504a81409dea775481f21f992ba6" + hash: "9fabdd5cf1190fb34bdc7834eba01cd3" } Frame { msec: 816 - hash: "e77cc3ab14551638e704a1493189d5d1" + hash: "b1e7af47d4ee706374365fdd4b4d52be" } Frame { msec: 832 - hash: "613bdf9d32358ab0db310ae1e2246d52" + hash: "86fa2e142e75d9d2a074a5376992f139" } Frame { msec: 848 - hash: "d4fab0193f567cce4ad1e1cf6b156ce5" + hash: "a3dea2bf8f84743d35070e82ec585c9a" } Frame { msec: 864 - hash: "03ce3083411d10b14ac0bb85b22bfbd1" + hash: "ab649fbbe0ca508812de9839d14b3f8c" } Frame { msec: 880 - hash: "4be10fb14abf82705d8071cf75956ece" + hash: "08f8a334e121d4edb0ca1617353bfebc" } Frame { msec: 896 - hash: "4c1f150fb5ba1194ad198eb32f705af6" + hash: "bb7997c1e18b90cfaad4c3e4ec44356e" } Frame { msec: 912 - hash: "5ddfd98c8a49eefe08ae33d0c0ea52ff" + hash: "31a7e5d71c28eebfcd29e9ea4950ad17" } Frame { msec: 928 - hash: "f2018d16f38e113c9477c19431e3d1e4" + hash: "2b759276e03c2884bff7ed863c032dfc" } Frame { msec: 944 - hash: "9fe6406d65978dba74716f1ba02bdf76" + hash: "aa0868f006097a435c46368ea9e3ba36" } Frame { msec: 960 - hash: "265d92edca113f465e624079c266b213" + hash: "6454753699c21589d2523a83da0aaa34" } Frame { msec: 976 @@ -250,54 +250,54 @@ VisualTest { } Frame { msec: 992 - hash: "6beb60f7645be5f1d07449610b5e13b0" + hash: "ac26abff68fbc1cf89dc5efc4a714a04" } Frame { msec: 1008 - hash: "55c34cb290732a1fa94b5037477fd882" + hash: "d3f9dc8cb653d996fb57652f85abcbc1" } Frame { msec: 1024 - hash: "4d6ed8044e3ac5da61cf61f4d08c5a19" + hash: "002a94f067eef532f63b6ef916977c2c" } Frame { msec: 1040 - hash: "83657cfa447060a01d5fbdb890ad3fb9" + hash: "f7935d01ee9b497034cc1d8f007a0fdf" } Frame { msec: 1056 - hash: "b04b6cb7e5e464ecee15a2c9803a857f" + hash: "4a1bfdcc85e5444c1bd836399e86ee05" } Frame { msec: 1072 - hash: "ea4f1707e49527f6cae0a3df1b75137b" + hash: "1b86514f3c85a8438ef183cc4772e997" } Frame { msec: 1088 - hash: "ae4893aca919be2d89f1107185b5fe9a" + hash: "7bf4c1ca946288e9d1a7ad055d8cacaa" } Frame { msec: 1104 - hash: "d991c469947a94ffcfb63716226fa912" + hash: "b3a00861967157786a80c80030d5495b" } Frame { msec: 1120 - hash: "df63c1dba0399d1fe5e7b9c9c794b598" + hash: "b9c6195d3336d7519cc72b16e75d00f6" } Frame { msec: 1136 - hash: "305d263f68b4ccd78bffccd887870f97" + hash: "6dba6d030a5ff6a92a57f0bdcf0fe781" } Frame { msec: 1152 - hash: "f4d1f7245b519d623defdc12e76285d2" + hash: "cc97a2721f4339094819c8b7aec6d74c" } Frame { msec: 1168 - hash: "5a47e6498ddf8a02cb1df7a3510bac37" + hash: "190f67abce51f58fdd1591651633d67e" } Frame { msec: 1184 - hash: "358b9b6be7f8379815d8ee828eed3e43" + hash: "b255f75cfc4918663b8bd47c887cfb3c" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.0.png Binary files differindex 16202c4..f2e6117 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.1.png Binary files differindex 16202c4..f2e6117 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.qml index c911b0a9..f306f5c 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide.qml @@ -10,239 +10,239 @@ VisualTest { } Frame { msec: 32 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 48 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 64 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 80 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 96 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 112 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 128 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 144 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 160 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 176 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 192 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 208 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 224 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 240 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 256 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 272 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 288 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 304 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 320 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 336 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 352 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 368 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 384 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 400 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 416 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 432 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 448 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 464 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 480 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 496 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 512 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 528 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 544 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 560 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 576 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 592 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 608 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 624 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 640 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 656 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 672 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 688 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 704 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 720 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 736 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 752 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 768 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 784 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 800 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 816 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 832 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 848 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 864 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 880 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 896 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 912 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 928 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 944 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 960 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 976 @@ -251,29 +251,29 @@ VisualTest { Key { type: 6 key: 16777249 - modifiers: 67108864 + modifiers: 0 text: "" autorep: false count: 1 } Frame { msec: 992 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 1008 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 1024 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 1040 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } Frame { msec: 1056 - hash: "bfcbea92ed5278c01642fd3cd6d3175c" + hash: "a2003f5b238564e9b68b38db156431d2" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.0.png Binary files differindex 38b9668..2f4c84a 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.1.png Binary files differindex 801ec2b..ae786a2 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.qml index 5275c05..6e9057c 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/elide2.qml @@ -10,239 +10,239 @@ VisualTest { } Frame { msec: 32 - hash: "0922fd48af050774d53e0b3815d57d8e" + hash: "716f5d150bd8757952d7b4ba327fb8bd" } Frame { msec: 48 - hash: "0922fd48af050774d53e0b3815d57d8e" + hash: "716f5d150bd8757952d7b4ba327fb8bd" } Frame { msec: 64 - hash: "0922fd48af050774d53e0b3815d57d8e" + hash: "716f5d150bd8757952d7b4ba327fb8bd" } Frame { msec: 80 - hash: "0922fd48af050774d53e0b3815d57d8e" + hash: "716f5d150bd8757952d7b4ba327fb8bd" } Frame { msec: 96 - hash: "0922fd48af050774d53e0b3815d57d8e" + hash: "716f5d150bd8757952d7b4ba327fb8bd" } Frame { msec: 112 - hash: "0922fd48af050774d53e0b3815d57d8e" + hash: "716f5d150bd8757952d7b4ba327fb8bd" } Frame { msec: 128 - hash: "6ed734d7092a34e440628dc70db97ac5" + hash: "8ec55fba2017a56c641c7baca5345b8b" } Frame { msec: 144 - hash: "6ed734d7092a34e440628dc70db97ac5" + hash: "8ec55fba2017a56c641c7baca5345b8b" } Frame { msec: 160 - hash: "6ed734d7092a34e440628dc70db97ac5" + hash: "8ec55fba2017a56c641c7baca5345b8b" } Frame { msec: 176 - hash: "6ed734d7092a34e440628dc70db97ac5" + hash: "8ec55fba2017a56c641c7baca5345b8b" } Frame { msec: 192 - hash: "a74b735016141dccf2c84fe9ee1e3ab2" + hash: "79dc1645a5486ddfa3d957f3bd4ffbda" } Frame { msec: 208 - hash: "a74b735016141dccf2c84fe9ee1e3ab2" + hash: "79dc1645a5486ddfa3d957f3bd4ffbda" } Frame { msec: 224 - hash: "a74b735016141dccf2c84fe9ee1e3ab2" + hash: "79dc1645a5486ddfa3d957f3bd4ffbda" } Frame { msec: 240 - hash: "a74b735016141dccf2c84fe9ee1e3ab2" + hash: "79dc1645a5486ddfa3d957f3bd4ffbda" } Frame { msec: 256 - hash: "047416b9368fb352b7da1e073d863e96" + hash: "476eae8ca9f6698cf67e2d20c5c24b66" } Frame { msec: 272 - hash: "047416b9368fb352b7da1e073d863e96" + hash: "476eae8ca9f6698cf67e2d20c5c24b66" } Frame { msec: 288 - hash: "047416b9368fb352b7da1e073d863e96" + hash: "476eae8ca9f6698cf67e2d20c5c24b66" } Frame { msec: 304 - hash: "047416b9368fb352b7da1e073d863e96" + hash: "476eae8ca9f6698cf67e2d20c5c24b66" } Frame { msec: 320 - hash: "f2d62e8675b8bba924b27db689c9cd7f" + hash: "bef1a9585daf30f1739a190ffa2e4b46" } Frame { msec: 336 - hash: "f2d62e8675b8bba924b27db689c9cd7f" + hash: "bef1a9585daf30f1739a190ffa2e4b46" } Frame { msec: 352 - hash: "f2d62e8675b8bba924b27db689c9cd7f" + hash: "bef1a9585daf30f1739a190ffa2e4b46" } Frame { msec: 368 - hash: "f2d62e8675b8bba924b27db689c9cd7f" + hash: "bef1a9585daf30f1739a190ffa2e4b46" } Frame { msec: 384 - hash: "f2d62e8675b8bba924b27db689c9cd7f" + hash: "bef1a9585daf30f1739a190ffa2e4b46" } Frame { msec: 400 - hash: "9498a80d60ab24d82ffb935979e1cf1b" + hash: "156dfc4e9fbc1af5e8c6c48ecd2afe8f" } Frame { msec: 416 - hash: "9498a80d60ab24d82ffb935979e1cf1b" + hash: "156dfc4e9fbc1af5e8c6c48ecd2afe8f" } Frame { msec: 432 - hash: "9498a80d60ab24d82ffb935979e1cf1b" + hash: "156dfc4e9fbc1af5e8c6c48ecd2afe8f" } Frame { msec: 448 - hash: "9498a80d60ab24d82ffb935979e1cf1b" + hash: "156dfc4e9fbc1af5e8c6c48ecd2afe8f" } Frame { msec: 464 - hash: "ee3cb45a15460f4235fc22ca97e0303d" + hash: "2fe675a360e61452c31dda42070c137f" } Frame { msec: 480 - hash: "ee3cb45a15460f4235fc22ca97e0303d" + hash: "2fe675a360e61452c31dda42070c137f" } Frame { msec: 496 - hash: "ee3cb45a15460f4235fc22ca97e0303d" + hash: "2fe675a360e61452c31dda42070c137f" } Frame { msec: 512 - hash: "ee3cb45a15460f4235fc22ca97e0303d" + hash: "2fe675a360e61452c31dda42070c137f" } Frame { msec: 528 - hash: "94464db418aec12b451e9dc106deec73" + hash: "0f1bac7c35b9f5bdbce10fb577c9cf28" } Frame { msec: 544 - hash: "94464db418aec12b451e9dc106deec73" + hash: "0f1bac7c35b9f5bdbce10fb577c9cf28" } Frame { msec: 560 - hash: "94464db418aec12b451e9dc106deec73" + hash: "0f1bac7c35b9f5bdbce10fb577c9cf28" } Frame { msec: 576 - hash: "94464db418aec12b451e9dc106deec73" + hash: "0f1bac7c35b9f5bdbce10fb577c9cf28" } Frame { msec: 592 - hash: "94464db418aec12b451e9dc106deec73" + hash: "0f1bac7c35b9f5bdbce10fb577c9cf28" } Frame { msec: 608 - hash: "22b23a55986e912cf38239d5e68f0c4a" + hash: "c79f68e9481f91f6f6a6816a655efc24" } Frame { msec: 624 - hash: "22b23a55986e912cf38239d5e68f0c4a" + hash: "c79f68e9481f91f6f6a6816a655efc24" } Frame { msec: 640 - hash: "22b23a55986e912cf38239d5e68f0c4a" + hash: "c79f68e9481f91f6f6a6816a655efc24" } Frame { msec: 656 - hash: "22b23a55986e912cf38239d5e68f0c4a" + hash: "c79f68e9481f91f6f6a6816a655efc24" } Frame { msec: 672 - hash: "3836d0aaf354d147dc6ffe3ace184ba5" + hash: "9a189e9d9249fb04fd98c4e91aba1cb5" } Frame { msec: 688 - hash: "3836d0aaf354d147dc6ffe3ace184ba5" + hash: "9a189e9d9249fb04fd98c4e91aba1cb5" } Frame { msec: 704 - hash: "3836d0aaf354d147dc6ffe3ace184ba5" + hash: "9a189e9d9249fb04fd98c4e91aba1cb5" } Frame { msec: 720 - hash: "3836d0aaf354d147dc6ffe3ace184ba5" + hash: "9a189e9d9249fb04fd98c4e91aba1cb5" } Frame { msec: 736 - hash: "3836d0aaf354d147dc6ffe3ace184ba5" + hash: "9a189e9d9249fb04fd98c4e91aba1cb5" } Frame { msec: 752 - hash: "20ccea5bc4c15401a7c660b1801488dd" + hash: "42c1ac48858ab5901601dc5a950a398f" } Frame { msec: 768 - hash: "20ccea5bc4c15401a7c660b1801488dd" + hash: "42c1ac48858ab5901601dc5a950a398f" } Frame { msec: 784 - hash: "20ccea5bc4c15401a7c660b1801488dd" + hash: "42c1ac48858ab5901601dc5a950a398f" } Frame { msec: 800 - hash: "20ccea5bc4c15401a7c660b1801488dd" + hash: "42c1ac48858ab5901601dc5a950a398f" } Frame { msec: 816 - hash: "31ffa9cfd6f60a33ed3b052e45ee5080" + hash: "f05bf4e3cc562c5a900fb389a7c093de" } Frame { msec: 832 - hash: "31ffa9cfd6f60a33ed3b052e45ee5080" + hash: "f05bf4e3cc562c5a900fb389a7c093de" } Frame { msec: 848 - hash: "31ffa9cfd6f60a33ed3b052e45ee5080" + hash: "f05bf4e3cc562c5a900fb389a7c093de" } Frame { msec: 864 - hash: "31ffa9cfd6f60a33ed3b052e45ee5080" + hash: "f05bf4e3cc562c5a900fb389a7c093de" } Frame { msec: 880 - hash: "7138b38fcff27e85aaf3179c6e81ac69" + hash: "1b5d1234aa02009ec447ac8fefc403bb" } Frame { msec: 896 - hash: "7138b38fcff27e85aaf3179c6e81ac69" + hash: "1b5d1234aa02009ec447ac8fefc403bb" } Frame { msec: 912 - hash: "7138b38fcff27e85aaf3179c6e81ac69" + hash: "1b5d1234aa02009ec447ac8fefc403bb" } Frame { msec: 928 - hash: "7138b38fcff27e85aaf3179c6e81ac69" + hash: "1b5d1234aa02009ec447ac8fefc403bb" } Frame { msec: 944 - hash: "7138b38fcff27e85aaf3179c6e81ac69" + hash: "1b5d1234aa02009ec447ac8fefc403bb" } Frame { msec: 960 - hash: "78854022288d4cd50bb9141896403d35" + hash: "ec7cfc539d7bde448c631da211de8f44" } Frame { msec: 976 @@ -250,151 +250,151 @@ VisualTest { } Frame { msec: 992 - hash: "78854022288d4cd50bb9141896403d35" + hash: "ec7cfc539d7bde448c631da211de8f44" } Frame { msec: 1008 - hash: "78854022288d4cd50bb9141896403d35" + hash: "ec7cfc539d7bde448c631da211de8f44" } Frame { msec: 1024 - hash: "8730d8adb4029b157e39b90e3cb2b879" + hash: "646394dd534a32bc3a066e606cc485f3" } Frame { msec: 1040 - hash: "8730d8adb4029b157e39b90e3cb2b879" + hash: "646394dd534a32bc3a066e606cc485f3" } Frame { msec: 1056 - hash: "8730d8adb4029b157e39b90e3cb2b879" + hash: "646394dd534a32bc3a066e606cc485f3" } Frame { msec: 1072 - hash: "8730d8adb4029b157e39b90e3cb2b879" + hash: "646394dd534a32bc3a066e606cc485f3" } Frame { msec: 1088 - hash: "9edb542976d1acd86be3d516276dee1f" + hash: "6b66b968aaed1896e2e9fafe27bba50f" } Frame { msec: 1104 - hash: "9edb542976d1acd86be3d516276dee1f" + hash: "6b66b968aaed1896e2e9fafe27bba50f" } Frame { msec: 1120 - hash: "9edb542976d1acd86be3d516276dee1f" + hash: "6b66b968aaed1896e2e9fafe27bba50f" } Frame { msec: 1136 - hash: "9edb542976d1acd86be3d516276dee1f" + hash: "6b66b968aaed1896e2e9fafe27bba50f" } Frame { msec: 1152 - hash: "9edb542976d1acd86be3d516276dee1f" + hash: "6b66b968aaed1896e2e9fafe27bba50f" } Frame { msec: 1168 - hash: "1a394542b01712fbd67b78a69733b324" + hash: "869f75182b9a4b452da1689a5921085f" } Frame { msec: 1184 - hash: "1a394542b01712fbd67b78a69733b324" + hash: "869f75182b9a4b452da1689a5921085f" } Frame { msec: 1200 - hash: "1a394542b01712fbd67b78a69733b324" + hash: "869f75182b9a4b452da1689a5921085f" } Frame { msec: 1216 - hash: "1a394542b01712fbd67b78a69733b324" + hash: "869f75182b9a4b452da1689a5921085f" } Frame { msec: 1232 - hash: "4825f9a6679fdee8efe89507d384c07c" + hash: "b2017890ac543b9224e85a44157d9fbb" } Frame { msec: 1248 - hash: "4825f9a6679fdee8efe89507d384c07c" + hash: "b2017890ac543b9224e85a44157d9fbb" } Frame { msec: 1264 - hash: "4825f9a6679fdee8efe89507d384c07c" + hash: "b2017890ac543b9224e85a44157d9fbb" } Frame { msec: 1280 - hash: "4825f9a6679fdee8efe89507d384c07c" + hash: "b2017890ac543b9224e85a44157d9fbb" } Frame { msec: 1296 - hash: "4825f9a6679fdee8efe89507d384c07c" + hash: "b2017890ac543b9224e85a44157d9fbb" } Frame { msec: 1312 - hash: "0ed5382fd2e370bad934647d7abf293f" + hash: "acac3eb92619e01b3470511cef1a91c8" } Frame { msec: 1328 - hash: "0ed5382fd2e370bad934647d7abf293f" + hash: "acac3eb92619e01b3470511cef1a91c8" } Frame { msec: 1344 - hash: "0ed5382fd2e370bad934647d7abf293f" + hash: "acac3eb92619e01b3470511cef1a91c8" } Frame { msec: 1360 - hash: "0ed5382fd2e370bad934647d7abf293f" + hash: "acac3eb92619e01b3470511cef1a91c8" } Frame { msec: 1376 - hash: "6206435ab4d05d5d5f84b362d45c30f9" + hash: "7f6d45b22e5cb86a7fb45d3f9bcebfc1" } Frame { msec: 1392 - hash: "6206435ab4d05d5d5f84b362d45c30f9" + hash: "7f6d45b22e5cb86a7fb45d3f9bcebfc1" } Frame { msec: 1408 - hash: "6206435ab4d05d5d5f84b362d45c30f9" + hash: "7f6d45b22e5cb86a7fb45d3f9bcebfc1" } Frame { msec: 1424 - hash: "6206435ab4d05d5d5f84b362d45c30f9" + hash: "7f6d45b22e5cb86a7fb45d3f9bcebfc1" } Frame { msec: 1440 - hash: "b0eb92df767e7cb61cc69d7363041263" + hash: "481f661e2613242d253498e467c91105" } Frame { msec: 1456 - hash: "b0eb92df767e7cb61cc69d7363041263" + hash: "481f661e2613242d253498e467c91105" } Frame { msec: 1472 - hash: "b0eb92df767e7cb61cc69d7363041263" + hash: "481f661e2613242d253498e467c91105" } Frame { msec: 1488 - hash: "b0eb92df767e7cb61cc69d7363041263" + hash: "481f661e2613242d253498e467c91105" } Frame { msec: 1504 - hash: "b0eb92df767e7cb61cc69d7363041263" + hash: "481f661e2613242d253498e467c91105" } Frame { msec: 1520 - hash: "0306262c9594536e0eecf3d67e5910cf" + hash: "4c342918351f0165ce63129afbd60074" } Frame { msec: 1536 - hash: "0306262c9594536e0eecf3d67e5910cf" + hash: "4c342918351f0165ce63129afbd60074" } Frame { msec: 1552 - hash: "0306262c9594536e0eecf3d67e5910cf" + hash: "4c342918351f0165ce63129afbd60074" } Frame { msec: 1568 - hash: "0306262c9594536e0eecf3d67e5910cf" + hash: "4c342918351f0165ce63129afbd60074" } Frame { msec: 1584 @@ -443,7 +443,7 @@ VisualTest { Key { type: 6 key: 16777249 - modifiers: 0 + modifiers: 67108864 text: "" autorep: false count: 1 diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.0.png Binary files differindex 730925e..f71c1ac 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.1.png Binary files differindex ddd6cc5..93c16dc 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.2.png Binary files differindex 4679774..acec1ee 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.2.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.3.png Binary files differindex 51018b4..f380c08 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.3.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.4.png Binary files differindex f5ed905..18142dd 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.4.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.5.png Binary files differindex 5005724..c7f59b8 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.5.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.5.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.qml index faf7240..6e802f4 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-X11/multilength.qml @@ -10,239 +10,239 @@ VisualTest { } Frame { msec: 32 - hash: "12cd5401549bc43283d6c46964528b9b" + hash: "fde26fa3d17fb92d676afe61ca6a2170" } Frame { msec: 48 - hash: "ae042a0f3c6e32550288a9b0e6a0ce0d" + hash: "54c7a0ea10fa212959dc4f7606c31f3c" } Frame { msec: 64 - hash: "9124b4e5f5dd374e44f3f57fe3d6809b" + hash: "e73c4521144b2c810f15239e6d8fa468" } Frame { msec: 80 - hash: "54dabe45069a00c8759bb5560c9b269f" + hash: "31a68bfd57846795db57bb30d1d60341" } Frame { msec: 96 - hash: "0d908ef6e3ea15455e35a9ebbc90c735" + hash: "55edcaeed37c1390eee2619d52a2eb03" } Frame { msec: 112 - hash: "de5fcf719cd096b99a531e7af9b26e35" + hash: "2c27d9c3dc215c68630495e255c1670e" } Frame { msec: 128 - hash: "d48ccb7c22c2606ef814cd5abd3888f3" + hash: "b27dd9260f6da3ab414076e83bf5a2bd" } Frame { msec: 144 - hash: "2ec7418477158ee60afe123fa2b7ce4b" + hash: "bfcbba7e970af922ee87fbbe936eaa84" } Frame { msec: 160 - hash: "418d6d46726c688bee6f415eb2ff2e43" + hash: "75af84ff6f21648737cef4a215410cc6" } Frame { msec: 176 - hash: "e754141341d9f81366f21820e46bd1ca" + hash: "71fd1fe13a14632ff54ad7a87be68bca" } Frame { msec: 192 - hash: "89b4b5f7563bfdb5d1e636a5462e0d8e" + hash: "69f553a1893403dc6fc82d3c9c47f501" } Frame { msec: 208 - hash: "46c3a7d4700a9599d474b7de1ab44a18" + hash: "9456b12d49cc2a1f9212dba98a83c8ab" } Frame { msec: 224 - hash: "c50698470bc6c1ea04633b9e819a2d4d" + hash: "cfd826f91f6f880816d505c93a8f125a" } Frame { msec: 240 - hash: "dc7d5345363cad6ee007f162f9ea75e2" + hash: "d8e3291525eff9f905102ed7654f986b" } Frame { msec: 256 - hash: "3b9ccb93f6375ea401c1fc3bcdf847d5" + hash: "044c1f37e37a68fbfbb9ddbc2da4300a" } Frame { msec: 272 - hash: "6d034da407af9e27ce70e9dbfee3bb38" + hash: "d640cba5f14d9c065bec6f6c23f2831f" } Frame { msec: 288 - hash: "3bce938e5db4c2295cd25a6e2b33738c" + hash: "9e15b68dace4b39b937dfea8777ae503" } Frame { msec: 304 - hash: "68266f4f9da256b9df499285ebb842fb" + hash: "7ea72711e3f8bdd1087181e127e093c7" } Frame { msec: 320 - hash: "a9c912fd159baadc4afcd963f857e91b" + hash: "c45dae8eb1768c8aba2d92dea4f268a2" } Frame { msec: 336 - hash: "85cb9086774297b2772e71229f7d84fc" + hash: "181ebf6597be2d9e54c1d01a5ab54b46" } Frame { msec: 352 - hash: "585e6f2d28ec70d10741a52fb68d718c" + hash: "094b6cc486b60882836a9ba35411ae7d" } Frame { msec: 368 - hash: "bfd552ccaccc569d2478ac4d92fe2eb0" + hash: "031f1bcb864b4507bf93caab88756317" } Frame { msec: 384 - hash: "748d57dff4cdc09a842353e51de41e5a" + hash: "42b4d89a1026327f180ecc414dcd0ef0" } Frame { msec: 400 - hash: "e0012622a4ef1d5b2090c02020b676c2" + hash: "a99c5d1d434687e2f16e7054bcff8a69" } Frame { msec: 416 - hash: "8e4d4a808564a8ba80578600104f230d" + hash: "91cf18d3f8538ee8550f7e190911b072" } Frame { msec: 432 - hash: "d92e44d8e1f7651a9d256e9e4f3e8168" + hash: "1c11a328d74bc7bf77da10f094db8d4a" } Frame { msec: 448 - hash: "d99b016a0dfdb332dbb1a2c10f53bc05" + hash: "e4da6dc99c962e8f37dc8d99669616d0" } Frame { msec: 464 - hash: "3ce4357881a34f4c9e2f0d684218e253" + hash: "628d4c1455f58a304887050c0552499a" } Frame { msec: 480 - hash: "07ee4bb59f7ee591bd7a6f117d9f1aa6" + hash: "dd17a403f45bcd1001cb08e7f4ae8443" } Frame { msec: 496 - hash: "f66ce51f2eece9f0fa89c41340245976" + hash: "1ed042d0289fc6167143ddcd92f708f6" } Frame { msec: 512 - hash: "a9d2b2d4f6ae5e071897d17469a5bad3" + hash: "b55abb6249925cf06439b3177310dcfc" } Frame { msec: 528 - hash: "55db2dbd65cae186d59cb2edb5841880" + hash: "251c3346640a2aa7a9c18ca84ff2d5bb" } Frame { msec: 544 - hash: "576297445ee3f89994538fcd8c8b102c" + hash: "6f5e18d84c4107213599b57bf7284c4b" } Frame { msec: 560 - hash: "6ca41b83b8ff27f97c71a23d1c7f9765" + hash: "2179c1d7d7acb3c2f6354b493cfe74e0" } Frame { msec: 576 - hash: "7e41ef79cae5966821106df39f6a748d" + hash: "bbc757e8f3c08f93ffcdd68b392c8cdb" } Frame { msec: 592 - hash: "9e8b750bbb3680f90d6bbddb6e394d5e" + hash: "7eefd9c7291c1a23679efd42f2c29539" } Frame { msec: 608 - hash: "9a61dddcc33ff2b778097b5edb706912" + hash: "fa375510d3850614aebceb2bc31ab4de" } Frame { msec: 624 - hash: "395d015e538dde494059df392379ba26" + hash: "f643c5ba39bb90f396f00c0a9df995c8" } Frame { msec: 640 - hash: "d1db5dc62ca702f4241e45811aebe6f3" + hash: "c6b7792f780b00b1b07c0ce948dff13b" } Frame { msec: 656 - hash: "18f1a038041bd8a51f3375ca64084251" + hash: "d43d82ee9b0da8f237469c555b48bee8" } Frame { msec: 672 - hash: "6c0f6360156cb806a8b30cafc69013af" + hash: "addaa9d2aa8f54d6a4e82dc7e029f19d" } Frame { msec: 688 - hash: "69525e71fe8fe9847ff956e40c2c45ec" + hash: "b12af2fd05a1ccd4664c5093456bae01" } Frame { msec: 704 - hash: "ac7ae453f35a05e760976df6d91206e2" + hash: "982d3505c51fc1bac026c744e2d1db11" } Frame { msec: 720 - hash: "c96358482f0900a906b2fc4742981e3a" + hash: "a67a0705ce893dcafdcfc3a7fe71f608" } Frame { msec: 736 - hash: "2cccb8f6a63f21d01cd3b61a97730bf8" + hash: "6e00f746695ca67fb4c4462740b13c8f" } Frame { msec: 752 - hash: "bf01c0cb968768199f3158e6cefcb09f" + hash: "bc4235d556a1e18d591b9afd87b29826" } Frame { msec: 768 - hash: "0ac63c33649462f06979de77c042476c" + hash: "830ebf4b9214f1dc31975c83cf49d31e" } Frame { msec: 784 - hash: "61931edba8d1abcdc07bb43e17446f4e" + hash: "bac049ae3d6676db8bca99620c9f5bd3" } Frame { msec: 800 - hash: "e8122f997a4076055d8addda88c4ad6e" + hash: "0f9623c23e4e45126078c3c93015d26c" } Frame { msec: 816 - hash: "cc7e654138605c25cb21aa8966361cf4" + hash: "bedde76baa8905970ea5fa8da62355a6" } Frame { msec: 832 - hash: "177aaec34c677b21798de1e024860490" + hash: "018b9b1444d921b8cfd823265556c8f6" } Frame { msec: 848 - hash: "d0fe9544e55f6876908d9c118366f038" + hash: "2be3e0693f54ffefd24e44f552d59e3f" } Frame { msec: 864 - hash: "f713b7e11bf61a0f0a06e6aedb36b7f1" + hash: "c8c99f68125df2a1f41f6b44fdcc0406" } Frame { msec: 880 - hash: "b703bd46b9f355711318882194f28d52" + hash: "3e18d6a24a1c6983f3f2ce984d22dbe4" } Frame { msec: 896 - hash: "047dad73e6c845704f3de6b317ce9290" + hash: "aa336c4e5ace2b33689ca280de2299db" } Frame { msec: 912 - hash: "8c48b0963af8d71fc245373083c14a93" + hash: "fd7245f879bbd72b6e72c563a588eea7" } Frame { msec: 928 - hash: "d11944e0d9035b6eff85ca9fc5adc2c0" + hash: "e484656517fcb5763c0c8992b22efe91" } Frame { msec: 944 - hash: "d650943a979c7bf52fff77063406c46d" + hash: "fbd58b050963fc7cdbd5ae89aa7a4a70" } Frame { msec: 960 - hash: "13d533b5b3b01be7dbad7b8403ce1c24" + hash: "b47ad6fb8b364e3c2764bf31e62f21e0" } Frame { msec: 976 @@ -250,239 +250,239 @@ VisualTest { } Frame { msec: 992 - hash: "ba51fa05accf637b31328ab0a11e4b61" + hash: "ac1a6692030ed80cd34c082ac70ea06e" } Frame { msec: 1008 - hash: "25c783c07b5eb03c351274c3b6494e24" + hash: "068a6b82a35d94e3db3eae772c7da56a" } Frame { msec: 1024 - hash: "5665113db0b932b07ac707875e5d77e6" + hash: "8252bb45e74bc09e1d5e6b3951fbb08e" } Frame { msec: 1040 - hash: "aceeb64e5935f1889828f3487767db3e" + hash: "a5d7ad9287238780cb45c61bb70d6cd4" } Frame { msec: 1056 - hash: "7c66c51a9fd694940a93a7acf036e6d3" + hash: "e0307f3a1193af0df0cd52d7dac44db9" } Frame { msec: 1072 - hash: "8b699d11b0a8c7df7df448f5c27a0bc2" + hash: "d649cf0c4a768dba1a0380b64bc7e48b" } Frame { msec: 1088 - hash: "c592cebdfadf68eecbddb0add92afa42" + hash: "3fd512a0860c17abbb6ed71488cd7255" } Frame { msec: 1104 - hash: "e175f718809eea5b38a1de46f061871f" + hash: "26032efe6efd1de4b5fae23ce4e28a0a" } Frame { msec: 1120 - hash: "3182ba22228e8cd056db81eea4678b5d" + hash: "846652a87d93e397d1a84b187b7aafea" } Frame { msec: 1136 - hash: "e09776f37769f34bd2d856c6af3a1e53" + hash: "4dfdaa030da4c72a0e1a19bfd70b5856" } Frame { msec: 1152 - hash: "085f9dd2539b950d9f62bdcdf4f3b172" + hash: "365ad99db7302dfe078f4283af13f5ca" } Frame { msec: 1168 - hash: "3c290084b9c251e039aef4df8581ed31" + hash: "f378a096243bd2c6f7e33e0baf24716a" } Frame { msec: 1184 - hash: "893f5dc3cd01ace8d31ebc63e0d7e132" + hash: "e972a84715d314e8814cb7fcab1ad379" } Frame { msec: 1200 - hash: "5cadde434641daffa52965659a4a056f" + hash: "8826dbafd12ba2a7437623c8967f2699" } Frame { msec: 1216 - hash: "741d34abca5ba1a2e5678f3ca272dbd3" + hash: "effa889b33b97f665a21d6562acc45fc" } Frame { msec: 1232 - hash: "96dd3f940c637b085026e224021239bd" + hash: "6ebb408651cf5fbb2fa8788e0ec544d6" } Frame { msec: 1248 - hash: "df8334c4ce1ca5f2317a771e787aea96" + hash: "c4f45fd05b7b4f00acf80f768e99af38" } Frame { msec: 1264 - hash: "aeef63be208b75c9246248025c977b75" + hash: "735a7c461f6b10cd967b03c173bfd81d" } Frame { msec: 1280 - hash: "8722a8e9b1cca4cf20ec31da27f38614" + hash: "608cf5ebac88726ffe7e66d763d74e27" } Frame { msec: 1296 - hash: "bdc1392f8e1a55e7c970502785024a89" + hash: "6322c5aebdf814bfc5bfaef8b6bb4d91" } Frame { msec: 1312 - hash: "ed2be797ca3d623ca532fea7ca5b1f2c" + hash: "730b7cef2e0cf57a4721e77e6849b862" } Frame { msec: 1328 - hash: "bb79d75488df131bf5443371c6b4464f" + hash: "13879c0772938e39d820b6fc10e0f7e5" } Frame { msec: 1344 - hash: "0b7dd91d5bc8290d4be1a0af6b2756c2" + hash: "0710bf8a2beff02009d4bb02f2404b7b" } Frame { msec: 1360 - hash: "4f1c88a745105934fb94a6a3e3620602" + hash: "2cd38c2cbf3d8b7eb3a50b9db4bb8f7f" } Frame { msec: 1376 - hash: "c5a3b476c66e9b6a33f93d5114303669" + hash: "4e988a74a3846171f86d4d69ce3407d9" } Frame { msec: 1392 - hash: "3104791545798f8e43ca976c893d078f" + hash: "82cc4b40fe1190de5a2cbbf3f11ac7b0" } Frame { msec: 1408 - hash: "3c8c329b4c757ab37054cbcc93840a75" + hash: "f15bd345b992b39167165a640ad45794" } Frame { msec: 1424 - hash: "36b1fc7d93664005449d818dd063c8e7" + hash: "be5ca66da00327ecc9f5dde2aa3660d2" } Frame { msec: 1440 - hash: "25927d84d7394e912977d25ddf555ddf" + hash: "f97a1e863c36477d31a78342c7aa21b7" } Frame { msec: 1456 - hash: "6f226e26d6a40b3688923fb833ce0fd9" + hash: "d137a2a6ae95aba3f7a2b2a0560718a5" } Frame { msec: 1472 - hash: "75aaa5301fc8d716371d9fcec6491e81" + hash: "e7529db7cf310e41eb0ac42ab86ae317" } Frame { msec: 1488 - hash: "fb87bcb1b620d48d6bfa6eeb94025907" + hash: "66914e90881a4a8751ba5391ac41a70b" } Frame { msec: 1504 - hash: "88231c28ef82974f8eb47060e64176d0" + hash: "249863a5ef1a14ca0eb4397d206dfc1e" } Frame { msec: 1520 - hash: "06db390a17fc2fa4a93012a168801d05" + hash: "26095384b724a5e704c7b627930f4e22" } Frame { msec: 1536 - hash: "41400211939574696e04bcd615130f34" + hash: "98281eed5ae9d9f933e47a8fba8709f1" } Frame { msec: 1552 - hash: "ca979c24603d8cd31583c1670f15b1a9" + hash: "d9b50c54255edb300e36af2648ef8f30" } Frame { msec: 1568 - hash: "515a32b5c4567c8dec3004c41214daa1" + hash: "9bde860d92f5ec979fa5c274fd1c13a1" } Frame { msec: 1584 - hash: "d4fbe8e354db8b1b5fc543daf7007fdb" + hash: "39c13a42f920f57d9f9fe85ebc4e68fa" } Frame { msec: 1600 - hash: "ec6351064566a120836cb115bb81e46a" + hash: "e80bd130bad05078212089586d6c2731" } Frame { msec: 1616 - hash: "74dcd99e1ba3e5e8447d2695e4c4acd9" + hash: "753732b5309fd8dd7daa16761dd7dad0" } Frame { msec: 1632 - hash: "7a751f44c384b87b0c2f633932587795" + hash: "2eb56a98f728b224f7db073c6ea3c3b9" } Frame { msec: 1648 - hash: "04e45b241cf498777835f74feeea0c15" + hash: "21ab167d173e244ffb471faddf704e81" } Frame { msec: 1664 - hash: "66096d2ef700bb64771fa192219e034a" + hash: "9964a0386ae349b909424f588d8decf5" } Frame { msec: 1680 - hash: "1dd2437b0f63a8acaa8c62819d7de10e" + hash: "cee42f46df4c879fa6fc378481ec728c" } Frame { msec: 1696 - hash: "89e6b25fc16c5d1eba04cd0f7bd2f910" + hash: "4779aeed276cbe4112484d189d1baf8b" } Frame { msec: 1712 - hash: "7cd23dbc40340bc3652255d4a65ce7ec" + hash: "d482cd14db734f5fed2eaec7d8c0c555" } Frame { msec: 1728 - hash: "5f94c6ba73d2dbeb8ec90b17cb7fab6f" + hash: "1f8b0681711c46afcf8af66df6d7caf8" } Frame { msec: 1744 - hash: "e8e01bc97bbd349e2f64a59d13ca25a3" + hash: "44b0e6d69fcd2b7acb499dfdfced026b" } Frame { msec: 1760 - hash: "a0cf054ef1005191637173a22e325891" + hash: "b6e25c4a276917b7f7f9189e65d965a8" } Frame { msec: 1776 - hash: "fa8b35c0141049d691735b26eb9410ac" + hash: "07e5da936f8d5c84606fcdc49fc6aca2" } Frame { msec: 1792 - hash: "c55b4d3a3ee530480d0a0e0aa52f340f" + hash: "f27a54a8d37ec62f54e083f1ca65aada" } Frame { msec: 1808 - hash: "b2639e3e32e513c991525a87448e805d" + hash: "074403259022efd08fcbd9d3a3052c79" } Frame { msec: 1824 - hash: "d66f25378bbec3eca675a90795567825" + hash: "a126762087c8f94beef81216b6010f0c" } Frame { msec: 1840 - hash: "13bb009108dfcdc861a16ab33a3c4f3a" + hash: "96b8c7cebbb9676ea4f028907de71bbf" } Frame { msec: 1856 - hash: "3a09ccaf62d8929def529260da98dc7a" + hash: "e6f073522d0af8e504fdb7df971f5e0a" } Frame { msec: 1872 - hash: "79564d7447732fcfdbb81ff2bcd85a4f" + hash: "9223ed285f322fae3ba2b52afb408586" } Frame { msec: 1888 - hash: "149c65ef5ec18af4fd264fa284bfa027" + hash: "b24575dd4c0b0da0b99a03c46209ed3a" } Frame { msec: 1904 - hash: "e5370728e870ac9f907aafbd17526631" + hash: "5c82bc860f64183e66aead451ee5b893" } Frame { msec: 1920 - hash: "98034cff5b93c905bbc53cf9582bc4be" + hash: "3172ab9c62b0870d6894b13720e54918" } Frame { msec: 1936 @@ -490,239 +490,239 @@ VisualTest { } Frame { msec: 1952 - hash: "05c3a8016110ad576c349964af3d4d05" + hash: "5f8e85839f9ac82f46a17f871c3fffbc" } Frame { msec: 1968 - hash: "91caa4f007dfd1ab7994a11bf4b4fa94" + hash: "245219fb6c4aa37d8cba7b5e1f74265f" } Frame { msec: 1984 - hash: "d1fb233313ef6e7be742a504e171f6c0" + hash: "b68cfc5366c4ed8d1e5950a1facf0d85" } Frame { msec: 2000 - hash: "0e20bbd3c80189a6d8ea23205bf7b278" + hash: "dd5c2d2470cc87d57d35ecc9ae8a3528" } Frame { msec: 2016 - hash: "6f2b8de20e5800bda7a533353bb5805a" + hash: "1a15d7f02b35d046305b40f9e6a6839d" } Frame { msec: 2032 - hash: "e25e8c3e7df20b0b7e8f25fba5d2608a" + hash: "d44c382ea28d429e6f8bbef9ae17338a" } Frame { msec: 2048 - hash: "8802faef3121ac361b448b42b89d2176" + hash: "63598cb09d5ecbeb991c6db778c5c002" } Frame { msec: 2064 - hash: "567c710da8f36b51192a8994611a50a8" + hash: "b3fcd0180ecd01e2ad0c0114b3dfbf78" } Frame { msec: 2080 - hash: "d45309aabf9c510234276c28ef4e3c35" + hash: "8d441044f5f10da23708d7ddf0472989" } Frame { msec: 2096 - hash: "ef698cc1ea8eee480c57f38a8f704e6b" + hash: "6e87518a368c39d68521046773c2f922" } Frame { msec: 2112 - hash: "5301682074b5343d18748cf6e7bada1c" + hash: "59e377ccc851ee361e3874ad5ec18e55" } Frame { msec: 2128 - hash: "dd5220c0d94b747cd462e35e41945ae8" + hash: "57a9b0431c7db130bfe4d6603f98c1f5" } Frame { msec: 2144 - hash: "0d1c246956283f80eff128bbb5241e03" + hash: "526c93727c6321782a373ea6952a8784" } Frame { msec: 2160 - hash: "7b57a3c6ee9b8ae316e2a2d7a1ab630d" + hash: "fcd0a4605e27ecb0bac18686e7846b3b" } Frame { msec: 2176 - hash: "61780d8d53f21b275f9ee795c5519cbf" + hash: "d697892f9944c67b5aadd7ad641e3ee5" } Frame { msec: 2192 - hash: "1876746b0b6bdc40c808c3afb0ad00e8" + hash: "f46fd7e568d0995c518749ec0f5a0882" } Frame { msec: 2208 - hash: "6f7e9a1d8240b037501b486245eb5c33" + hash: "31cd2243fb23d4332c02e91f9956f648" } Frame { msec: 2224 - hash: "8a5f3d8d9e0147072690740d567f8a2a" + hash: "3b29a9c0121ff127b69abba9c0b13c2c" } Frame { msec: 2240 - hash: "2ea7f42b92e407b50ebf82c841e77f7f" + hash: "ecd789e744ebb5dee7f25ebb089407bf" } Frame { msec: 2256 - hash: "7ce3e829b75be2f2f72952c614748b51" + hash: "c99a6dfad8d750b7e67c1e3ef1021cbb" } Frame { msec: 2272 - hash: "112cbf9bf521c2fb0f0573081feb6051" + hash: "82d18b0c193f0ada9cae68e9f6ad5ff5" } Frame { msec: 2288 - hash: "c6d16bde84f714d3f14a105deb68e989" + hash: "a09e8144b06db76f5849561d880f037e" } Frame { msec: 2304 - hash: "f1e3f7416233bc8b3bce90672185cbd2" + hash: "3e6922ca54c809a32ed5ef72e19d7ff0" } Frame { msec: 2320 - hash: "009fd4bfc354c91f3766bcf32732b027" + hash: "28e46da32bf34b3e1cd3d351e4c40317" } Frame { msec: 2336 - hash: "67220a780fc2cd8e9fbd314c5f000f7c" + hash: "297aeeaadc5f3268d95320bc3b33a429" } Frame { msec: 2352 - hash: "c306d1be1dc40fb115b583a83497fbb0" + hash: "31721528cdb17b03d3d6ca9f9a91370b" } Frame { msec: 2368 - hash: "f6bedbbffec4447da8fda2d75169644c" + hash: "52fd1721330321daaea0b56122a72e5b" } Frame { msec: 2384 - hash: "be4f28bd814ce3688bd7a28a2dc71606" + hash: "739c5179b9739021dbb522d01812388c" } Frame { msec: 2400 - hash: "130ec2ff6e06927a02df769743de19b5" + hash: "4ae07f58d3a514f5c08f314c5dd445c4" } Frame { msec: 2416 - hash: "34ffeec40133a30903809a30d9108887" + hash: "4305ea97d47bac3fb0eebf9181b3ce48" } Frame { msec: 2432 - hash: "133a89cf6c784106066b96f51e43f43a" + hash: "21c99059dba068bc145896217cc0883c" } Frame { msec: 2448 - hash: "6336801efb0d62e5b790ff67b76754a5" + hash: "0a514ae5d36acc07c7809a7b4f21ed8e" } Frame { msec: 2464 - hash: "04d50179982fdf346a33e346eeb9eb62" + hash: "550ce887f462ace686bc6a9021c5cb73" } Frame { msec: 2480 - hash: "5432d629a9bce20e041841d79acf91ab" + hash: "b65857dcfa0b1281dd5b9821a12dd8e8" } Frame { msec: 2496 - hash: "afbdef35aae3d79f0ba992a34c46b1dc" + hash: "5a6bb448a570e1a3eef142b8054f3717" } Frame { msec: 2512 - hash: "18a051efc4bf47515d2220549970fa69" + hash: "b38e2f6b4063e1b8a40292017c5ed4ec" } Frame { msec: 2528 - hash: "a0cde51080347ba164227c8a40cf37c1" + hash: "fa7545e6e3fc92d62af2f7651077da5b" } Frame { msec: 2544 - hash: "b2eeabc7208b7a3f9e5a7d16f984be86" + hash: "ebf0c79720a5692b761b62c4ba360875" } Frame { msec: 2560 - hash: "ee5c97a5bd22b22a4e18998b6d056517" + hash: "cb5356376d97308a4d102c9a53e93abe" } Frame { msec: 2576 - hash: "84f4575d2c4ba3a91ef72cb8caf64e63" + hash: "879f434f4901bdcb166294336c60e26a" } Frame { msec: 2592 - hash: "bd14115e10086864de3ab6a7bc13f9a2" + hash: "3ab575ac04bdd455346c0460aed413a0" } Frame { msec: 2608 - hash: "9b3672f731fad142ae7e3621a325cf21" + hash: "8f08366cb474ca2a1988ebba9d65ecaa" } Frame { msec: 2624 - hash: "17d1887942d2b7297b6f3a2545ec8bf2" + hash: "2939cf0235f98aeaf48b3f28964cdddd" } Frame { msec: 2640 - hash: "c5c8b41e74b90fcb9d4da432fa01e361" + hash: "9cf4b339914e48f896dda17e08759472" } Frame { msec: 2656 - hash: "a2992b652305077906db9dcbb90c1a23" + hash: "3f5568ac7a4386f1d5072f1cda0c35b8" } Frame { msec: 2672 - hash: "bfb30aa4caa43833eca59ceaaca04084" + hash: "107edbf8181f79cd7847d0154b6eda11" } Frame { msec: 2688 - hash: "cbb06915ae6176ef52fdb518fb5a12de" + hash: "9254497b95b89a7d40903edb04a3764a" } Frame { msec: 2704 - hash: "a894d34c39b274149a9391a5956f0666" + hash: "7e7d25a2ee3fbfd67a3b8fecb9fe9202" } Frame { msec: 2720 - hash: "7dcc1008d2287ca15f726854e5e204f2" + hash: "03759f59bbd2be573acd6c03eb088edd" } Frame { msec: 2736 - hash: "811db22f9a25dd594f59d97adb41b9ce" + hash: "58689762be6c7d3d6de6f23580ec8886" } Frame { msec: 2752 - hash: "6535cb3f4cf2839158f172bd0c1baf88" + hash: "0d4e315f9b079a30e6a4294a667f9ebc" } Frame { msec: 2768 - hash: "1919a3d079c06fbb00b6a23d4a47951a" + hash: "3f3dfa1c8d160238dae2da79a6a569f3" } Frame { msec: 2784 - hash: "69f3525379f7628c4435d2681a2a0bb8" + hash: "b3cd7c3034e2a34c4ae9ed7f3144b2cc" } Frame { msec: 2800 - hash: "4ce4253e733c24a1a988de018916d0b2" + hash: "c27d3a9057d1f15c6e0b2d427ac12ad2" } Frame { msec: 2816 - hash: "7610bee04c98b9af5e6ae34f4a1a4a09" + hash: "9b25ab315d9bfc582e41c05e88812cbe" } Frame { msec: 2832 - hash: "5e2a2c16c0a218afc3eb9095f3432f41" + hash: "e75671bfb99741dcff476690ede42166" } Frame { msec: 2848 - hash: "0124a41ff860d31b3e36973226db2916" + hash: "7dd3307fb41277ebcc4339cdb7747d7c" } Frame { msec: 2864 - hash: "a1126e1d8cce43dfb571803a62f790de" + hash: "a148bce140f1637e27ae5f0207b75351" } Frame { msec: 2880 - hash: "6eee371fe5cc8b052ca49bb5e3509307" + hash: "64e57a31c1baa16bcf47f2202fd6e2ed" } Frame { msec: 2896 @@ -730,239 +730,239 @@ VisualTest { } Frame { msec: 2912 - hash: "331bcae7bd6aeaede3556cf926bd1a0c" + hash: "83381c54b1923356c403cad2ae2c3519" } Frame { msec: 2928 - hash: "a7561f3a6ce4fee43e4b06dfe5ee7844" + hash: "e110f28619c2ec7c1c8d479793b93e54" } Frame { msec: 2944 - hash: "712e52e72cc01ae29cd7e736a78f94b3" + hash: "996a9a698f1a7c673eeef67501d7b81b" } Frame { msec: 2960 - hash: "d34a4414fca4ef7a2cce288d438bfcc1" + hash: "6cf2465c8b7c70343a26e981e6492212" } Frame { msec: 2976 - hash: "1c2c5241aee7efcc9a6adcbe01f56609" + hash: "3a9078adf3d4ca207c97b62ad525998f" } Frame { msec: 2992 - hash: "90a8547113c36002f62405aac41de5b1" + hash: "0bf0d9a6a202119daa6a44f17d03b9ed" } Frame { msec: 3008 - hash: "5726801ea37dcfd2c087c9523b360b55" + hash: "6dfadc21810c9176dad599a6f7f672b9" } Frame { msec: 3024 - hash: "a371d1f9ef687f50d433b0efb6bb57c9" + hash: "f1f866c6245bd6fd8141abfb8a040d46" } Frame { msec: 3040 - hash: "75e0e2728e2160dcc012a21c759c62d0" + hash: "84329287c7555bc6207039ea632632b2" } Frame { msec: 3056 - hash: "428e6d8adbd0e85790365d7537dc37c8" + hash: "da7e80527f58c93bce9267958ce4c5d7" } Frame { msec: 3072 - hash: "798babedde2192b4ac9becc5bae3ea62" + hash: "cd8eea7543ebc42971b3f41ea21dd4ed" } Frame { msec: 3088 - hash: "39745e87e8e96993fccfed6710c3c14f" + hash: "b9abb526dc3447370d847a5bca868b50" } Frame { msec: 3104 - hash: "08624110f2bba4e676b4a339ead23f78" + hash: "b8d63ac8331a9375ca06adacb56d12ea" } Frame { msec: 3120 - hash: "1d45fc90eb70a3c21d503284637355de" + hash: "20fcdd73a4cc2abebbc462c32fb9b2c8" } Frame { msec: 3136 - hash: "37c6eed126e265f4a60a1bc92879e18e" + hash: "3f656f80771828ee6696a2e0a0626ae4" } Frame { msec: 3152 - hash: "a25f2accf6e19eb293a5540efa9447ec" + hash: "0d99110edca4f8ec544d10d680d27092" } Frame { msec: 3168 - hash: "5212d86075595cb1a9c47cf683ac411a" + hash: "48026f803bd17f56d13dd946fb359e3a" } Frame { msec: 3184 - hash: "8f43028def9e949ca3a15fdec9932a59" + hash: "40759d794139327e2e66685c9fcb047b" } Frame { msec: 3200 - hash: "90b55602b8aa530d634db72c202f2d75" + hash: "419953a3f882008e82bd733e63e66ab6" } Frame { msec: 3216 - hash: "f5a84978918f8987b49ce500959d81ef" + hash: "ddcd288b0a825ef6899755fbad56f2dd" } Frame { msec: 3232 - hash: "588382357311925157e12ae7a576426c" + hash: "bc203d9f0f32efdd177353b9589bd127" } Frame { msec: 3248 - hash: "ce3e9a93f60579f77f6503637cb316d0" + hash: "a4ae6c449b53545a683cd33bc9274d59" } Frame { msec: 3264 - hash: "63c2ba78f5a81375fe79c5b2b2030b55" + hash: "59e7c218b5a1b857469972f966489a43" } Frame { msec: 3280 - hash: "7dceb950e0cae31bddeca1d279a688f3" + hash: "521fc5833ab0e3088200e1fea9a887b0" } Frame { msec: 3296 - hash: "c6681bcf60562b16eb515f6b0bfdc751" + hash: "bd2386f85afb7516d147bff4c07e239f" } Frame { msec: 3312 - hash: "cd2b41f01af6b80622158bf38a13c609" + hash: "5298fdee07ff2ff34121f064fed3db4e" } Frame { msec: 3328 - hash: "69401bc38be274791a26f6ea161eb296" + hash: "311a8f163cebf7bafcb47c8e6db40ed1" } Frame { msec: 3344 - hash: "425238342219c4fc66c4a0a8b16c5345" + hash: "ad6342bed57257a1616a74e19f2bb484" } Frame { msec: 3360 - hash: "a501082add225fa59f468808d34d1c16" + hash: "4eb186c5f4963dc72b3dbc3a9da4df65" } Frame { msec: 3376 - hash: "58bba6d1eb3166e7ac9bfe36cd9a4fa9" + hash: "58f1f128001dd1ce0d405595acbaab2a" } Frame { msec: 3392 - hash: "293df1a2bdd526e97d5783f46f74262c" + hash: "ba4a39b66cac22fceba9c4ecfdbae363" } Frame { msec: 3408 - hash: "6808ee202e8eae3c72474126b59aa0dc" + hash: "bbfde54a4de637bc1c54248e2e342544" } Frame { msec: 3424 - hash: "7ef977f275851649324e333d58777156" + hash: "ddc3b4e87782e0472630e2f9f8a57099" } Frame { msec: 3440 - hash: "12007edff45f9cc21a2f633052e4b9d6" + hash: "1bf1212686520da772fc18ca7684a924" } Frame { msec: 3456 - hash: "bc1d362d3a42ab3610136727605222dc" + hash: "706ec5a3b48123d3b5113d55b71f7968" } Frame { msec: 3472 - hash: "6bfead8d9644f5abdd3b896714521002" + hash: "62b08db0c3c4f1313bcf4a1e7b90badb" } Frame { msec: 3488 - hash: "341c311e4b08d69a053c1faffc208838" + hash: "ae8409fed9d8919b1af2b4d0eafce670" } Frame { msec: 3504 - hash: "54e4c8001d06c7c48180865598f5f5df" + hash: "9f6ed6ada78e42f06f33514e363c736f" } Frame { msec: 3520 - hash: "e69c142bf2a6cf85194de5df91e54886" + hash: "97e9a504c2c4ba5329a616810fc19505" } Frame { msec: 3536 - hash: "fb9fda1e790c64aea264a6af0020ce33" + hash: "348b6d15b8ef6862818b4fbdb938f241" } Frame { msec: 3552 - hash: "74c27a13090e8eb78bc157daff840e07" + hash: "c1845df466f5690a8d7a439d33a27f7d" } Frame { msec: 3568 - hash: "f9a8c1764b0a1625ce336e80a91db00e" + hash: "aee2486331275b9f4116b61588ce169e" } Frame { msec: 3584 - hash: "11fd6f7cee3971ebce744f20da77139f" + hash: "efca3eaffa3421d68d788ee3f0ec068c" } Frame { msec: 3600 - hash: "6cea030cfc1c53772f14d760d046d7f8" + hash: "35f2940b51ed8c4734c23a43bf6fe448" } Frame { msec: 3616 - hash: "599cf14ec73f6812ffb49312d3d8f742" + hash: "92b7d34480b7fab4dd39bbccfa8455a5" } Frame { msec: 3632 - hash: "879798ae161f1550096abdfa113e3eac" + hash: "4408049f405ecf5c3c696780390e2155" } Frame { msec: 3648 - hash: "4cc9b679554a2a8b809a88504c17f86a" + hash: "29aa30678d5c87c79ac67198e4dd7bd4" } Frame { msec: 3664 - hash: "943bca80ab42c1856aa095add705a3fe" + hash: "2f88ac156017b20795f01716d9e9f2e8" } Frame { msec: 3680 - hash: "0386a55ebc0cd32b4b7727eac2908a59" + hash: "4d72dec4a2e8edcff806c11f3742cf07" } Frame { msec: 3696 - hash: "74ed8ea60f1c1b3fb097eb7f5bca43e8" + hash: "3f5ebad282a4aa9c03a17d32aea03151" } Frame { msec: 3712 - hash: "225f78966947d20268f1bea32093c0c9" + hash: "a8d289d15353d45159607377de285732" } Frame { msec: 3728 - hash: "d2ed6af6fbdfbdcd9c82a588b72c5f6b" + hash: "af2d2fcfa4510e0d26ea90fc7711b0cf" } Frame { msec: 3744 - hash: "3c0e45078e5223335a4204fb8904d116" + hash: "aed6897bc8b2163822a052e1cc9ad36b" } Frame { msec: 3760 - hash: "58ad3d7030b079cdedf1a84d6c6a59fc" + hash: "bf7077614b5045f79c8697bab1e83839" } Frame { msec: 3776 - hash: "2c8ce9f237a2c373584b661defe84e7f" + hash: "e5c8c0bf1fce3a964f4bb911ffee0bdb" } Frame { msec: 3792 - hash: "c2f2ae8c7481036ddda01776db61ef0a" + hash: "bcfe4aebc880809f56d480f23b17dfd1" } Frame { msec: 3808 - hash: "7236e9d1e086479acd5047070a4ae700" + hash: "2ce342f7864ab26124093edc88585c97" } Frame { msec: 3824 - hash: "7f95776ac1804971cc939f8f1f0fee70" + hash: "8be15d95125e03a0282e897096abb443" } Frame { msec: 3840 - hash: "d6d76b50b7d2ec522a51d2512a5aeff8" + hash: "a4486f30becceca3ec3cc5c8718af82a" } Frame { msec: 3856 @@ -970,239 +970,239 @@ VisualTest { } Frame { msec: 3872 - hash: "29b8b535c9321752a68b17400c7133ac" + hash: "38de7ed0d05015f9b06a4bb278fc96c1" } Frame { msec: 3888 - hash: "846f4f5718bce8dc7a333d8603bfe729" + hash: "1cd9a38bb1fc8b06d5c05cd28719d4b3" } Frame { msec: 3904 - hash: "b285f6a417bfb46add698f4193b39552" + hash: "682ba6e2eb83ce1b6bf8526b21cf2694" } Frame { msec: 3920 - hash: "b79708e4aa2b05a1c285dd075127460d" + hash: "3da075fccb3d26f30530a69f86d999a8" } Frame { msec: 3936 - hash: "0cdded9c7796292cd38a3bc2fdc65597" + hash: "b0fb39798dfa94d0898e5e0d7afd1277" } Frame { msec: 3952 - hash: "6f8855c20666a58bbf4ade762403180e" + hash: "7e41bbe233d6bc7354ba4516edec4841" } Frame { msec: 3968 - hash: "1a7979b578c8b330099a5e840d5d2bd8" + hash: "1d3f24f20ba123940d97f09949cfcc0f" } Frame { msec: 3984 - hash: "30fb74a2bf4e1ec57332713994e405cd" + hash: "abc7a82d91e28c5a3ee9ffd663c8c7bd" } Frame { msec: 4000 - hash: "1c7df42f90a867350adca840106d3ba1" + hash: "e685c0218a3d80584013806707693eb0" } Frame { msec: 4016 - hash: "5509a232afe047f365465ef8fd9f0af0" + hash: "6ff98dc7eb0453f058a5d4cadf86ddf4" } Frame { msec: 4032 - hash: "2149d59ffd7c07bdc0bcb2d8ad9b1ca3" + hash: "5a3d0c2c95cb85678f32a8b68dc8d399" } Frame { msec: 4048 - hash: "4b8848019eaf4af67db4db09b98b183e" + hash: "d5bde2f063d524ac0e7bcef26d543668" } Frame { msec: 4064 - hash: "e3f6f9db89bd81ce68f8dfd401f1baa8" + hash: "64e7bc5e0798ecd009fd05cbc1523977" } Frame { msec: 4080 - hash: "6e8d991c83094c89025148bc0943e554" + hash: "3c87a9ee92661da2aacc09b71dd393ca" } Frame { msec: 4096 - hash: "ed4d8bde61581cdcf6128c65d427846c" + hash: "bf4806e0e8cb73cded37ca97966078d7" } Frame { msec: 4112 - hash: "c63d0baaa43c4f6a0f0150ecf268b06d" + hash: "a5956031dac15dba64bf49c9d308c9c7" } Frame { msec: 4128 - hash: "b36c6a0092f400bb99b2c68a0ba4e6ce" + hash: "51395284acf731266eaed86387ad768a" } Frame { msec: 4144 - hash: "b4b1059c1e00ee77fda538f9e71a6206" + hash: "489ab28b773d48b8fdf9cf674b1da87f" } Frame { msec: 4160 - hash: "e7c36e10dee12ea2d22d7c17cde9d8ca" + hash: "4c6a5b7442a4ff241329157657b8c9f7" } Frame { msec: 4176 - hash: "78d070c37bbc707e38db98896f997349" + hash: "629faa780676c705ca8349b8765ed38b" } Frame { msec: 4192 - hash: "e56cb5fbb7713a66ef1f1577eff20db8" + hash: "28654cb8801bea906a4f181004ed0e85" } Frame { msec: 4208 - hash: "17e466af39cdde893cf93fa38392bb90" + hash: "2abf774ccf33e6d0af4a8c4154e2ab2a" } Frame { msec: 4224 - hash: "75bf32afe1071794bba58623d7165a22" + hash: "f1cbdf35081b08b676d1661834829c9a" } Frame { msec: 4240 - hash: "6de50f6748021b99731f6cb25d6d6ec3" + hash: "a49ef4ec40d59be1e872c6f8bcdbbb4c" } Frame { msec: 4256 - hash: "cbd224a02668f57413b6999dfb141723" + hash: "dab02c8afd3914177bfdf29e68b54291" } Frame { msec: 4272 - hash: "f770a74ce40615095798b244af3cc097" + hash: "7bdca9571a346117277b0de6fa1f6e5e" } Frame { msec: 4288 - hash: "faea3d28eb65656392860d888ec087b1" + hash: "11dc19768b1a4a787f46082a583c068c" } Frame { msec: 4304 - hash: "1f1d5ee10403184ab83ec5c1f94c4290" + hash: "5e72d13702108d55d650a01c1caf2cfb" } Frame { msec: 4320 - hash: "501253b40939d98beac9db85d3cd5b4b" + hash: "e5a379841ae54f07d54c4baa78fa7b69" } Frame { msec: 4336 - hash: "0819ece70a98a3ea4371947375b52d46" + hash: "88d2363709d377cad251dc956b0ff866" } Frame { msec: 4352 - hash: "2b5f64e4a03aa416a4cf172c99aec498" + hash: "5e6db7322e69f41d37efdd35a769df4e" } Frame { msec: 4368 - hash: "931a6fa175b8d540fc745d425a9b93b3" + hash: "cc781d136bb48a1a41bd9243327bacc3" } Frame { msec: 4384 - hash: "fa6f54fae79a428029fbd0ae6481bcc5" + hash: "69612d6379a204fa1e1c6d7b58f78370" } Frame { msec: 4400 - hash: "7796756dfd30688ed74c2e6e0b05ca5a" + hash: "a81c15225bc81a19e22375532a5457ab" } Frame { msec: 4416 - hash: "b42cfbfe1527412b977b8e2c7506cdf0" + hash: "a97bb0ac528a1377ef8f6bf655795b69" } Frame { msec: 4432 - hash: "c81300e8d29770c0efd2ab91d75a669a" + hash: "7fa6d66219c66ae8aec43e44626b427a" } Frame { msec: 4448 - hash: "923494f5147a85432e6efbcf5b79e26a" + hash: "99f47bc80b706692f16c6c5fa3c0c85d" } Frame { msec: 4464 - hash: "3aaffee732cb243bbda5df938f487b2d" + hash: "55d6cf7f545c74ed59a8bf040f9d5d58" } Frame { msec: 4480 - hash: "ce8e33f621c7f5cd5047da86bdef4084" + hash: "1a07d14fa7866c5268e622d0925cbf4d" } Frame { msec: 4496 - hash: "55e2bc371ea853ee4f3ba22e35c20e8e" + hash: "a41b281563c401d0e4ff55f4a3c45e18" } Frame { msec: 4512 - hash: "e8bec4813a6c8f212c70019f907ba904" + hash: "6bff67c2f53a4e620c63eea539f4abe0" } Frame { msec: 4528 - hash: "aae9dd25ca9935c478e5d9fa629c6f70" + hash: "a5f06e5ff2fd7f390279f7df822c8297" } Frame { msec: 4544 - hash: "30828a796072deb6e6505090dbc2c840" + hash: "213b174770c13105b89a1d88cd2f0b7c" } Frame { msec: 4560 - hash: "c8ebeb539a6ebb2ca47544f7f1617da9" + hash: "dde34ca92317a54ddaa2f9bff515d91c" } Frame { msec: 4576 - hash: "3ad9a23b57b0938a430c636910dc312f" + hash: "12446cca2aae19fd721cda11bbb51bae" } Frame { msec: 4592 - hash: "1a12587ebbae18dd761c70c4ed845fa5" + hash: "f4d00502cab0a843563fcfd336b74596" } Frame { msec: 4608 - hash: "f1d6ee0cd7aaa221d151c2d32e963358" + hash: "b6ae2b396adf6068ef3a6027e4b175db" } Frame { msec: 4624 - hash: "e9bbf398abc09d9740dce4e3843c53f4" + hash: "370dabffdfc0bebf5d25abfaefff399c" } Frame { msec: 4640 - hash: "f839c105f1897f028611d557b11f5814" + hash: "fd496e8c03f85a872bd5ee6e8a85db7f" } Frame { msec: 4656 - hash: "b923b46ccfe53ceb7ea228b12f44842d" + hash: "0999335427d63f318e166ea8662c4c22" } Frame { msec: 4672 - hash: "8e3708a8f2ba63f7cb01b8d66d1b3dec" + hash: "5a4eb9267cd35a71f6c2daaca1a582be" } Frame { msec: 4688 - hash: "68659fce94c9d019a1d5da6273186674" + hash: "4270d7a26d56f1d805b647c5ec7cc6ce" } Frame { msec: 4704 - hash: "56797caf6f2987b7d03c0401871d87e3" + hash: "334f1e3c8520196016352bf4d00fbc18" } Frame { msec: 4720 - hash: "de0d89aaa5b1ce0ed99d2906b63e7434" + hash: "2bf704e85c197c776a188927a80deaad" } Frame { msec: 4736 - hash: "e3802a76b64eeaeae06b23134b5198a9" + hash: "e2c5c42e55dc185977bd5049eb4bd3d2" } Frame { msec: 4752 - hash: "1a3ddf57aa429a407705ae268441c5b5" + hash: "7ead4353fdc135d6b959be0ce22955e3" } Frame { msec: 4768 - hash: "319b09c0e4a8c0d1f507594b53a407c4" + hash: "ab42998e1e17ac8637d76dc0cf356c7a" } Frame { msec: 4784 - hash: "fd54c9ee19133b0f75c56e4d6472cdad" + hash: "030f34f8caf0814eaaf18ea5fda669dd" } Frame { msec: 4800 - hash: "e6b983b491133a41b753411c587c69ec" + hash: "6e12a04ac25553142875a10a5c8e46e8" } Frame { msec: 4816 @@ -1210,114 +1210,114 @@ VisualTest { } Frame { msec: 4832 - hash: "2760407d7defa4738d7b9ecb243f41a9" + hash: "e2f2ab9a3fe6a3a375341010c91017bd" } Frame { msec: 4848 - hash: "1ff562f05454980d4f677e783ba4bf75" + hash: "9301889debd3932772a1c81314eb1ef2" } Frame { msec: 4864 - hash: "43ad6e0926f812af5553e3a8492404e9" + hash: "671feec6eb1166c612a22405db9c044e" } Frame { msec: 4880 - hash: "b9c34d52c0c44dcdf8a2ca8a0e20ae65" + hash: "648215ffa5448dc173165d24389c014e" } Frame { msec: 4896 - hash: "4fd7f6d183626686569462a9828837d2" + hash: "a70806b54806f29d0e240cd63d86b77e" } Frame { msec: 4912 - hash: "3b904440f68aa0009707b5f3a0c2af74" + hash: "4bf9ffe611c52c21fbdb84221d3d4dba" } Frame { msec: 4928 - hash: "cc58910f0881ec5b3cb2eec404c19e16" + hash: "ae78202b0ebd4c13a92d468a7470bdc9" } Frame { msec: 4944 - hash: "8b638f369c3629530d91e6acac8c5fdf" + hash: "fb0c3d6c3e3479abb6a1b44b1a5f3785" } Frame { msec: 4960 - hash: "b403e21b14646ac0cdaee2027125c0ad" + hash: "48906c21e17479807f736d7f7713f6b0" } Frame { msec: 4976 - hash: "d037545cc68b7582c400c8c9da49ff2a" + hash: "a661a461542b3078dd1dad25bf6d8414" } Frame { msec: 4992 - hash: "551435ecb008ff217eb65a5a77a28090" + hash: "387deb0df0c59cfb120313946c4e5c9a" } Frame { msec: 5008 - hash: "a1684c1c0938386bbfb309969114beee" + hash: "f2473c6e4877f3035f0b511ff2d27684" } Frame { msec: 5024 - hash: "f803bd7bdc97bb8bbb5103a54901d756" + hash: "f88d3767ccd773930ef9d99dfd0e8c17" } Frame { msec: 5040 - hash: "de956b3223e24a615713c35faa403128" + hash: "aef8a93d2caafec839d425184176bcc7" } Frame { msec: 5056 - hash: "9124b4e5f5dd374e44f3f57fe3d6809b" + hash: "e73c4521144b2c810f15239e6d8fa468" } Frame { msec: 5072 - hash: "5b8313c622796aa87248b38ab336bcf8" + hash: "a66856750cc5aa7a21ffb6e0a9c94306" } Frame { msec: 5088 - hash: "de6477fc7e6b8f14a7a51f9cf762ee79" + hash: "22bce57e360790c356564a0568ec3bee" } Frame { msec: 5104 - hash: "0d908ef6e3ea15455e35a9ebbc90c735" + hash: "55edcaeed37c1390eee2619d52a2eb03" } Frame { msec: 5120 - hash: "bd1d7ad510cd5e04283f6167a5a8e2df" + hash: "51d8495324954f1bd62caa67d15e9ab2" } Frame { msec: 5136 - hash: "2ec7418477158ee60afe123fa2b7ce4b" + hash: "bfcbba7e970af922ee87fbbe936eaa84" } Frame { msec: 5152 - hash: "04c671070b1eba13380aa2fbb672d3a1" + hash: "a7652fe427ca7b8ef37dbf9a6097f8af" } Frame { msec: 5168 - hash: "ce031ba5b388dfaff34674eb71f790f2" + hash: "d5ab00fc274a7fd568af514c55f24e04" } Frame { msec: 5184 - hash: "e754141341d9f81366f21820e46bd1ca" + hash: "71fd1fe13a14632ff54ad7a87be68bca" } Frame { msec: 5200 - hash: "acf56542617bc742ad729709645ac919" + hash: "761f9b41ce4136619f89c73746ab176e" } Frame { msec: 5216 - hash: "c50698470bc6c1ea04633b9e819a2d4d" + hash: "cfd826f91f6f880816d505c93a8f125a" } Frame { msec: 5232 - hash: "c156d3540c3cf6d406b72696fd6e9148" + hash: "33fbc77640cc73c17a0f68db5f70ddec" } Frame { msec: 5248 - hash: "82a04f09cd35db0dbf012797625368e4" + hash: "ef925f6709f7603d8acddbbe3e3b0426" } Frame { msec: 5264 - hash: "3b9ccb93f6375ea401c1fc3bcdf847d5" + hash: "044c1f37e37a68fbfbb9ddbc2da4300a" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.0.png Binary files differindex 591c1ef..cfa61a9 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.0.png Binary files differindex dc90e0d..be676c0 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext2.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.0.png Binary files differindex c787029..df2fe2f 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/plaintext3.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.png Binary files differindex fdd64ac..76e5b9f 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.0.png Binary files differindex 1286e54..bb65ade 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext.0.png Binary files differindex 56d98ff..b4e1d3a 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext2.0.png Binary files differindex 1ab1eb5..4177b9e 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext2.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/plaintext2.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext.0.png Binary files differindex 68921f6..36e5d35 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext2.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext2.0.png Binary files differindex c9450c7..34f8e38 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext2.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-X11/richtext2.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.0.png Binary files differindex 59fc0fc..8d74b8d 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.1.png Binary files differindex 2747b50..8a642d2 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.2.png Binary files differindex 74efe73..5698741 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.2.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.3.png Binary files differindex 02f6e17..7f56f34 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.3.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.4.png Binary files differindex 59fc0fc..8d74b8d 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.4.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.qml index 760a831..a4ba005 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/qt-669.qml @@ -10,95 +10,95 @@ VisualTest { } Frame { msec: 32 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 48 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 64 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 80 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 96 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 112 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 128 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 144 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 160 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 176 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 192 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 208 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 224 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 240 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 256 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 272 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 288 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 304 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 320 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 336 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 352 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 368 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 384 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Key { type: 6 @@ -110,15 +110,15 @@ VisualTest { } Frame { msec: 400 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 416 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 432 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Key { type: 7 @@ -130,27 +130,27 @@ VisualTest { } Frame { msec: 448 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 464 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 480 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 496 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 512 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 528 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Key { type: 6 @@ -162,15 +162,15 @@ VisualTest { } Frame { msec: 544 - hash: "1465f1f32ba4a6180ab3460298febe26" + hash: "53f9d63bacad27fd73c2f84b82599dbc" } Frame { msec: 560 - hash: "1465f1f32ba4a6180ab3460298febe26" + hash: "53f9d63bacad27fd73c2f84b82599dbc" } Frame { msec: 576 - hash: "1465f1f32ba4a6180ab3460298febe26" + hash: "53f9d63bacad27fd73c2f84b82599dbc" } Key { type: 7 @@ -182,27 +182,27 @@ VisualTest { } Frame { msec: 592 - hash: "1465f1f32ba4a6180ab3460298febe26" + hash: "53f9d63bacad27fd73c2f84b82599dbc" } Frame { msec: 608 - hash: "1465f1f32ba4a6180ab3460298febe26" + hash: "53f9d63bacad27fd73c2f84b82599dbc" } Frame { msec: 624 - hash: "1465f1f32ba4a6180ab3460298febe26" + hash: "53f9d63bacad27fd73c2f84b82599dbc" } Frame { msec: 640 - hash: "1465f1f32ba4a6180ab3460298febe26" + hash: "53f9d63bacad27fd73c2f84b82599dbc" } Frame { msec: 656 - hash: "1465f1f32ba4a6180ab3460298febe26" + hash: "53f9d63bacad27fd73c2f84b82599dbc" } Frame { msec: 672 - hash: "1465f1f32ba4a6180ab3460298febe26" + hash: "53f9d63bacad27fd73c2f84b82599dbc" } Key { type: 6 @@ -214,19 +214,19 @@ VisualTest { } Frame { msec: 688 - hash: "1bcb9bc9d6606329ad5376ea6f608bf8" + hash: "b069c174a1b9589ed3137cd01f870b17" } Frame { msec: 704 - hash: "1bcb9bc9d6606329ad5376ea6f608bf8" + hash: "b069c174a1b9589ed3137cd01f870b17" } Frame { msec: 720 - hash: "1bcb9bc9d6606329ad5376ea6f608bf8" + hash: "b069c174a1b9589ed3137cd01f870b17" } Frame { msec: 736 - hash: "1bcb9bc9d6606329ad5376ea6f608bf8" + hash: "b069c174a1b9589ed3137cd01f870b17" } Key { type: 7 @@ -238,23 +238,23 @@ VisualTest { } Frame { msec: 752 - hash: "1bcb9bc9d6606329ad5376ea6f608bf8" + hash: "b069c174a1b9589ed3137cd01f870b17" } Frame { msec: 768 - hash: "1bcb9bc9d6606329ad5376ea6f608bf8" + hash: "b069c174a1b9589ed3137cd01f870b17" } Frame { msec: 784 - hash: "1bcb9bc9d6606329ad5376ea6f608bf8" + hash: "b069c174a1b9589ed3137cd01f870b17" } Frame { msec: 800 - hash: "1bcb9bc9d6606329ad5376ea6f608bf8" + hash: "b069c174a1b9589ed3137cd01f870b17" } Frame { msec: 816 - hash: "1bcb9bc9d6606329ad5376ea6f608bf8" + hash: "b069c174a1b9589ed3137cd01f870b17" } Key { type: 6 @@ -266,19 +266,19 @@ VisualTest { } Frame { msec: 832 - hash: "9eda76efdd179847e89b9e96ead51e4a" + hash: "fa22742b8778a3b63ce7d6699dbf7482" } Frame { msec: 848 - hash: "9eda76efdd179847e89b9e96ead51e4a" + hash: "fa22742b8778a3b63ce7d6699dbf7482" } Frame { msec: 864 - hash: "9eda76efdd179847e89b9e96ead51e4a" + hash: "fa22742b8778a3b63ce7d6699dbf7482" } Frame { msec: 880 - hash: "9eda76efdd179847e89b9e96ead51e4a" + hash: "fa22742b8778a3b63ce7d6699dbf7482" } Key { type: 7 @@ -290,19 +290,19 @@ VisualTest { } Frame { msec: 896 - hash: "9eda76efdd179847e89b9e96ead51e4a" + hash: "fa22742b8778a3b63ce7d6699dbf7482" } Frame { msec: 912 - hash: "9eda76efdd179847e89b9e96ead51e4a" + hash: "fa22742b8778a3b63ce7d6699dbf7482" } Frame { msec: 928 - hash: "9eda76efdd179847e89b9e96ead51e4a" + hash: "fa22742b8778a3b63ce7d6699dbf7482" } Frame { msec: 944 - hash: "9eda76efdd179847e89b9e96ead51e4a" + hash: "fa22742b8778a3b63ce7d6699dbf7482" } Key { type: 6 @@ -314,7 +314,7 @@ VisualTest { } Frame { msec: 960 - hash: "a7415d0abcc670ba02c2a00b3b5fc647" + hash: "3624b85c9362dfeff911cd5426f11ada" } Frame { msec: 976 @@ -322,11 +322,11 @@ VisualTest { } Frame { msec: 992 - hash: "a7415d0abcc670ba02c2a00b3b5fc647" + hash: "3624b85c9362dfeff911cd5426f11ada" } Frame { msec: 1008 - hash: "a7415d0abcc670ba02c2a00b3b5fc647" + hash: "3624b85c9362dfeff911cd5426f11ada" } Key { type: 7 @@ -338,23 +338,23 @@ VisualTest { } Frame { msec: 1024 - hash: "a7415d0abcc670ba02c2a00b3b5fc647" + hash: "3624b85c9362dfeff911cd5426f11ada" } Frame { msec: 1040 - hash: "a7415d0abcc670ba02c2a00b3b5fc647" + hash: "3624b85c9362dfeff911cd5426f11ada" } Frame { msec: 1056 - hash: "a7415d0abcc670ba02c2a00b3b5fc647" + hash: "3624b85c9362dfeff911cd5426f11ada" } Frame { msec: 1072 - hash: "a7415d0abcc670ba02c2a00b3b5fc647" + hash: "3624b85c9362dfeff911cd5426f11ada" } Frame { msec: 1088 - hash: "a7415d0abcc670ba02c2a00b3b5fc647" + hash: "3624b85c9362dfeff911cd5426f11ada" } Key { type: 6 @@ -366,15 +366,15 @@ VisualTest { } Frame { msec: 1104 - hash: "fe998f3c7c780fddfa6a595936d2e78e" + hash: "c8b5e39f4930399527236905cdbcb546" } Frame { msec: 1120 - hash: "fe998f3c7c780fddfa6a595936d2e78e" + hash: "c8b5e39f4930399527236905cdbcb546" } Frame { msec: 1136 - hash: "fe998f3c7c780fddfa6a595936d2e78e" + hash: "c8b5e39f4930399527236905cdbcb546" } Key { type: 7 @@ -386,23 +386,23 @@ VisualTest { } Frame { msec: 1152 - hash: "fe998f3c7c780fddfa6a595936d2e78e" + hash: "c8b5e39f4930399527236905cdbcb546" } Frame { msec: 1168 - hash: "fe998f3c7c780fddfa6a595936d2e78e" + hash: "c8b5e39f4930399527236905cdbcb546" } Frame { msec: 1184 - hash: "fe998f3c7c780fddfa6a595936d2e78e" + hash: "c8b5e39f4930399527236905cdbcb546" } Frame { msec: 1200 - hash: "fe998f3c7c780fddfa6a595936d2e78e" + hash: "c8b5e39f4930399527236905cdbcb546" } Frame { msec: 1216 - hash: "fe998f3c7c780fddfa6a595936d2e78e" + hash: "c8b5e39f4930399527236905cdbcb546" } Key { type: 6 @@ -414,19 +414,19 @@ VisualTest { } Frame { msec: 1232 - hash: "6ec9e863238467c249f62bdd38b68490" + hash: "b80db720c6371aeaf99f4787fec2c5a3" } Frame { msec: 1248 - hash: "6ec9e863238467c249f62bdd38b68490" + hash: "b80db720c6371aeaf99f4787fec2c5a3" } Frame { msec: 1264 - hash: "6ec9e863238467c249f62bdd38b68490" + hash: "b80db720c6371aeaf99f4787fec2c5a3" } Frame { msec: 1280 - hash: "6ec9e863238467c249f62bdd38b68490" + hash: "b80db720c6371aeaf99f4787fec2c5a3" } Key { type: 7 @@ -438,19 +438,19 @@ VisualTest { } Frame { msec: 1296 - hash: "6ec9e863238467c249f62bdd38b68490" + hash: "b80db720c6371aeaf99f4787fec2c5a3" } Frame { msec: 1312 - hash: "6ec9e863238467c249f62bdd38b68490" + hash: "b80db720c6371aeaf99f4787fec2c5a3" } Frame { msec: 1328 - hash: "6ec9e863238467c249f62bdd38b68490" + hash: "b80db720c6371aeaf99f4787fec2c5a3" } Frame { msec: 1344 - hash: "6ec9e863238467c249f62bdd38b68490" + hash: "b80db720c6371aeaf99f4787fec2c5a3" } Key { type: 6 @@ -462,19 +462,19 @@ VisualTest { } Frame { msec: 1360 - hash: "7f895d1255301397298cd6b92282e4f7" + hash: "6f08f7b6337d5ebb305579bb71ba31d8" } Frame { msec: 1376 - hash: "7f895d1255301397298cd6b92282e4f7" + hash: "6f08f7b6337d5ebb305579bb71ba31d8" } Frame { msec: 1392 - hash: "7f895d1255301397298cd6b92282e4f7" + hash: "6f08f7b6337d5ebb305579bb71ba31d8" } Frame { msec: 1408 - hash: "7f895d1255301397298cd6b92282e4f7" + hash: "6f08f7b6337d5ebb305579bb71ba31d8" } Key { type: 7 @@ -486,23 +486,23 @@ VisualTest { } Frame { msec: 1424 - hash: "7f895d1255301397298cd6b92282e4f7" + hash: "6f08f7b6337d5ebb305579bb71ba31d8" } Frame { msec: 1440 - hash: "7f895d1255301397298cd6b92282e4f7" + hash: "6f08f7b6337d5ebb305579bb71ba31d8" } Frame { msec: 1456 - hash: "7f895d1255301397298cd6b92282e4f7" + hash: "6f08f7b6337d5ebb305579bb71ba31d8" } Frame { msec: 1472 - hash: "7f895d1255301397298cd6b92282e4f7" + hash: "6f08f7b6337d5ebb305579bb71ba31d8" } Frame { msec: 1488 - hash: "7f895d1255301397298cd6b92282e4f7" + hash: "6f08f7b6337d5ebb305579bb71ba31d8" } Key { type: 6 @@ -514,15 +514,15 @@ VisualTest { } Frame { msec: 1504 - hash: "64f5712c1f96345f2a2ad103e6fbd734" + hash: "da047993eb77afffee6b8f0f210ca2d6" } Frame { msec: 1520 - hash: "64f5712c1f96345f2a2ad103e6fbd734" + hash: "da047993eb77afffee6b8f0f210ca2d6" } Frame { msec: 1536 - hash: "64f5712c1f96345f2a2ad103e6fbd734" + hash: "da047993eb77afffee6b8f0f210ca2d6" } Key { type: 7 @@ -534,79 +534,79 @@ VisualTest { } Frame { msec: 1552 - hash: "64f5712c1f96345f2a2ad103e6fbd734" + hash: "da047993eb77afffee6b8f0f210ca2d6" } Frame { msec: 1568 - hash: "64f5712c1f96345f2a2ad103e6fbd734" + hash: "da047993eb77afffee6b8f0f210ca2d6" } Frame { msec: 1584 - hash: "64f5712c1f96345f2a2ad103e6fbd734" + hash: "da047993eb77afffee6b8f0f210ca2d6" } Frame { msec: 1600 - hash: "64f5712c1f96345f2a2ad103e6fbd734" + hash: "da047993eb77afffee6b8f0f210ca2d6" } Frame { msec: 1616 - hash: "64f5712c1f96345f2a2ad103e6fbd734" + hash: "da047993eb77afffee6b8f0f210ca2d6" } Frame { msec: 1632 - hash: "64f5712c1f96345f2a2ad103e6fbd734" + hash: "da047993eb77afffee6b8f0f210ca2d6" } Frame { msec: 1648 - hash: "64f5712c1f96345f2a2ad103e6fbd734" + hash: "da047993eb77afffee6b8f0f210ca2d6" } Frame { msec: 1664 - hash: "64f5712c1f96345f2a2ad103e6fbd734" + hash: "da047993eb77afffee6b8f0f210ca2d6" } Frame { msec: 1680 - hash: "64f5712c1f96345f2a2ad103e6fbd734" + hash: "da047993eb77afffee6b8f0f210ca2d6" } Frame { msec: 1696 - hash: "64f5712c1f96345f2a2ad103e6fbd734" + hash: "da047993eb77afffee6b8f0f210ca2d6" } Frame { msec: 1712 - hash: "64f5712c1f96345f2a2ad103e6fbd734" + hash: "da047993eb77afffee6b8f0f210ca2d6" } Frame { msec: 1728 - hash: "64f5712c1f96345f2a2ad103e6fbd734" + hash: "da047993eb77afffee6b8f0f210ca2d6" } Frame { msec: 1744 - hash: "64f5712c1f96345f2a2ad103e6fbd734" + hash: "da047993eb77afffee6b8f0f210ca2d6" } Frame { msec: 1760 - hash: "64f5712c1f96345f2a2ad103e6fbd734" + hash: "da047993eb77afffee6b8f0f210ca2d6" } Frame { msec: 1776 - hash: "64f5712c1f96345f2a2ad103e6fbd734" + hash: "da047993eb77afffee6b8f0f210ca2d6" } Frame { msec: 1792 - hash: "64f5712c1f96345f2a2ad103e6fbd734" + hash: "da047993eb77afffee6b8f0f210ca2d6" } Frame { msec: 1808 - hash: "64f5712c1f96345f2a2ad103e6fbd734" + hash: "da047993eb77afffee6b8f0f210ca2d6" } Frame { msec: 1824 - hash: "64f5712c1f96345f2a2ad103e6fbd734" + hash: "da047993eb77afffee6b8f0f210ca2d6" } Frame { msec: 1840 - hash: "64f5712c1f96345f2a2ad103e6fbd734" + hash: "da047993eb77afffee6b8f0f210ca2d6" } Key { type: 6 @@ -618,23 +618,23 @@ VisualTest { } Frame { msec: 1856 - hash: "7f895d1255301397298cd6b92282e4f7" + hash: "6f08f7b6337d5ebb305579bb71ba31d8" } Frame { msec: 1872 - hash: "7f895d1255301397298cd6b92282e4f7" + hash: "6f08f7b6337d5ebb305579bb71ba31d8" } Frame { msec: 1888 - hash: "7f895d1255301397298cd6b92282e4f7" + hash: "6f08f7b6337d5ebb305579bb71ba31d8" } Frame { msec: 1904 - hash: "7f895d1255301397298cd6b92282e4f7" + hash: "6f08f7b6337d5ebb305579bb71ba31d8" } Frame { msec: 1920 - hash: "7f895d1255301397298cd6b92282e4f7" + hash: "6f08f7b6337d5ebb305579bb71ba31d8" } Frame { msec: 1936 @@ -642,15 +642,15 @@ VisualTest { } Frame { msec: 1952 - hash: "7f895d1255301397298cd6b92282e4f7" + hash: "6f08f7b6337d5ebb305579bb71ba31d8" } Frame { msec: 1968 - hash: "7f895d1255301397298cd6b92282e4f7" + hash: "6f08f7b6337d5ebb305579bb71ba31d8" } Frame { msec: 1984 - hash: "7f895d1255301397298cd6b92282e4f7" + hash: "6f08f7b6337d5ebb305579bb71ba31d8" } Key { type: 7 @@ -662,23 +662,23 @@ VisualTest { } Frame { msec: 2000 - hash: "7f895d1255301397298cd6b92282e4f7" + hash: "6f08f7b6337d5ebb305579bb71ba31d8" } Frame { msec: 2016 - hash: "7f895d1255301397298cd6b92282e4f7" + hash: "6f08f7b6337d5ebb305579bb71ba31d8" } Frame { msec: 2032 - hash: "7f895d1255301397298cd6b92282e4f7" + hash: "6f08f7b6337d5ebb305579bb71ba31d8" } Frame { msec: 2048 - hash: "7f895d1255301397298cd6b92282e4f7" + hash: "6f08f7b6337d5ebb305579bb71ba31d8" } Frame { msec: 2064 - hash: "7f895d1255301397298cd6b92282e4f7" + hash: "6f08f7b6337d5ebb305579bb71ba31d8" } Key { type: 6 @@ -690,23 +690,23 @@ VisualTest { } Frame { msec: 2080 - hash: "6ec9e863238467c249f62bdd38b68490" + hash: "b80db720c6371aeaf99f4787fec2c5a3" } Frame { msec: 2096 - hash: "6ec9e863238467c249f62bdd38b68490" + hash: "b80db720c6371aeaf99f4787fec2c5a3" } Frame { msec: 2112 - hash: "6ec9e863238467c249f62bdd38b68490" + hash: "b80db720c6371aeaf99f4787fec2c5a3" } Frame { msec: 2128 - hash: "6ec9e863238467c249f62bdd38b68490" + hash: "b80db720c6371aeaf99f4787fec2c5a3" } Frame { msec: 2144 - hash: "6ec9e863238467c249f62bdd38b68490" + hash: "b80db720c6371aeaf99f4787fec2c5a3" } Key { type: 7 @@ -718,23 +718,23 @@ VisualTest { } Frame { msec: 2160 - hash: "6ec9e863238467c249f62bdd38b68490" + hash: "b80db720c6371aeaf99f4787fec2c5a3" } Frame { msec: 2176 - hash: "6ec9e863238467c249f62bdd38b68490" + hash: "b80db720c6371aeaf99f4787fec2c5a3" } Frame { msec: 2192 - hash: "6ec9e863238467c249f62bdd38b68490" + hash: "b80db720c6371aeaf99f4787fec2c5a3" } Frame { msec: 2208 - hash: "6ec9e863238467c249f62bdd38b68490" + hash: "b80db720c6371aeaf99f4787fec2c5a3" } Frame { msec: 2224 - hash: "6ec9e863238467c249f62bdd38b68490" + hash: "b80db720c6371aeaf99f4787fec2c5a3" } Key { type: 6 @@ -746,11 +746,11 @@ VisualTest { } Frame { msec: 2240 - hash: "fe998f3c7c780fddfa6a595936d2e78e" + hash: "c8b5e39f4930399527236905cdbcb546" } Frame { msec: 2256 - hash: "fe998f3c7c780fddfa6a595936d2e78e" + hash: "c8b5e39f4930399527236905cdbcb546" } Key { type: 7 @@ -762,23 +762,23 @@ VisualTest { } Frame { msec: 2272 - hash: "fe998f3c7c780fddfa6a595936d2e78e" + hash: "c8b5e39f4930399527236905cdbcb546" } Frame { msec: 2288 - hash: "fe998f3c7c780fddfa6a595936d2e78e" + hash: "c8b5e39f4930399527236905cdbcb546" } Frame { msec: 2304 - hash: "fe998f3c7c780fddfa6a595936d2e78e" + hash: "c8b5e39f4930399527236905cdbcb546" } Frame { msec: 2320 - hash: "fe998f3c7c780fddfa6a595936d2e78e" + hash: "c8b5e39f4930399527236905cdbcb546" } Frame { msec: 2336 - hash: "fe998f3c7c780fddfa6a595936d2e78e" + hash: "c8b5e39f4930399527236905cdbcb546" } Key { type: 6 @@ -790,15 +790,15 @@ VisualTest { } Frame { msec: 2352 - hash: "a7415d0abcc670ba02c2a00b3b5fc647" + hash: "3624b85c9362dfeff911cd5426f11ada" } Frame { msec: 2368 - hash: "a7415d0abcc670ba02c2a00b3b5fc647" + hash: "3624b85c9362dfeff911cd5426f11ada" } Frame { msec: 2384 - hash: "a7415d0abcc670ba02c2a00b3b5fc647" + hash: "3624b85c9362dfeff911cd5426f11ada" } Key { type: 7 @@ -810,55 +810,55 @@ VisualTest { } Frame { msec: 2400 - hash: "a7415d0abcc670ba02c2a00b3b5fc647" + hash: "3624b85c9362dfeff911cd5426f11ada" } Frame { msec: 2416 - hash: "a7415d0abcc670ba02c2a00b3b5fc647" + hash: "3624b85c9362dfeff911cd5426f11ada" } Frame { msec: 2432 - hash: "a7415d0abcc670ba02c2a00b3b5fc647" + hash: "3624b85c9362dfeff911cd5426f11ada" } Frame { msec: 2448 - hash: "a7415d0abcc670ba02c2a00b3b5fc647" + hash: "3624b85c9362dfeff911cd5426f11ada" } Frame { msec: 2464 - hash: "a7415d0abcc670ba02c2a00b3b5fc647" + hash: "3624b85c9362dfeff911cd5426f11ada" } Frame { msec: 2480 - hash: "a7415d0abcc670ba02c2a00b3b5fc647" + hash: "3624b85c9362dfeff911cd5426f11ada" } Frame { msec: 2496 - hash: "a7415d0abcc670ba02c2a00b3b5fc647" + hash: "3624b85c9362dfeff911cd5426f11ada" } Frame { msec: 2512 - hash: "a7415d0abcc670ba02c2a00b3b5fc647" + hash: "3624b85c9362dfeff911cd5426f11ada" } Frame { msec: 2528 - hash: "a7415d0abcc670ba02c2a00b3b5fc647" + hash: "3624b85c9362dfeff911cd5426f11ada" } Frame { msec: 2544 - hash: "a7415d0abcc670ba02c2a00b3b5fc647" + hash: "3624b85c9362dfeff911cd5426f11ada" } Frame { msec: 2560 - hash: "a7415d0abcc670ba02c2a00b3b5fc647" + hash: "3624b85c9362dfeff911cd5426f11ada" } Frame { msec: 2576 - hash: "a7415d0abcc670ba02c2a00b3b5fc647" + hash: "3624b85c9362dfeff911cd5426f11ada" } Frame { msec: 2592 - hash: "a7415d0abcc670ba02c2a00b3b5fc647" + hash: "3624b85c9362dfeff911cd5426f11ada" } Key { type: 6 @@ -870,23 +870,23 @@ VisualTest { } Frame { msec: 2608 - hash: "9eda76efdd179847e89b9e96ead51e4a" + hash: "fa22742b8778a3b63ce7d6699dbf7482" } Frame { msec: 2624 - hash: "9eda76efdd179847e89b9e96ead51e4a" + hash: "fa22742b8778a3b63ce7d6699dbf7482" } Frame { msec: 2640 - hash: "9eda76efdd179847e89b9e96ead51e4a" + hash: "fa22742b8778a3b63ce7d6699dbf7482" } Frame { msec: 2656 - hash: "9eda76efdd179847e89b9e96ead51e4a" + hash: "fa22742b8778a3b63ce7d6699dbf7482" } Frame { msec: 2672 - hash: "9eda76efdd179847e89b9e96ead51e4a" + hash: "fa22742b8778a3b63ce7d6699dbf7482" } Key { type: 7 @@ -898,23 +898,23 @@ VisualTest { } Frame { msec: 2688 - hash: "9eda76efdd179847e89b9e96ead51e4a" + hash: "fa22742b8778a3b63ce7d6699dbf7482" } Frame { msec: 2704 - hash: "9eda76efdd179847e89b9e96ead51e4a" + hash: "fa22742b8778a3b63ce7d6699dbf7482" } Frame { msec: 2720 - hash: "9eda76efdd179847e89b9e96ead51e4a" + hash: "fa22742b8778a3b63ce7d6699dbf7482" } Frame { msec: 2736 - hash: "9eda76efdd179847e89b9e96ead51e4a" + hash: "fa22742b8778a3b63ce7d6699dbf7482" } Frame { msec: 2752 - hash: "9eda76efdd179847e89b9e96ead51e4a" + hash: "fa22742b8778a3b63ce7d6699dbf7482" } Key { type: 6 @@ -926,15 +926,15 @@ VisualTest { } Frame { msec: 2768 - hash: "1bcb9bc9d6606329ad5376ea6f608bf8" + hash: "b069c174a1b9589ed3137cd01f870b17" } Frame { msec: 2784 - hash: "1bcb9bc9d6606329ad5376ea6f608bf8" + hash: "b069c174a1b9589ed3137cd01f870b17" } Frame { msec: 2800 - hash: "1bcb9bc9d6606329ad5376ea6f608bf8" + hash: "b069c174a1b9589ed3137cd01f870b17" } Key { type: 7 @@ -946,19 +946,19 @@ VisualTest { } Frame { msec: 2816 - hash: "1bcb9bc9d6606329ad5376ea6f608bf8" + hash: "b069c174a1b9589ed3137cd01f870b17" } Frame { msec: 2832 - hash: "1bcb9bc9d6606329ad5376ea6f608bf8" + hash: "b069c174a1b9589ed3137cd01f870b17" } Frame { msec: 2848 - hash: "1bcb9bc9d6606329ad5376ea6f608bf8" + hash: "b069c174a1b9589ed3137cd01f870b17" } Frame { msec: 2864 - hash: "1bcb9bc9d6606329ad5376ea6f608bf8" + hash: "b069c174a1b9589ed3137cd01f870b17" } Key { type: 6 @@ -970,7 +970,7 @@ VisualTest { } Frame { msec: 2880 - hash: "1465f1f32ba4a6180ab3460298febe26" + hash: "53f9d63bacad27fd73c2f84b82599dbc" } Frame { msec: 2896 @@ -978,11 +978,11 @@ VisualTest { } Frame { msec: 2912 - hash: "1465f1f32ba4a6180ab3460298febe26" + hash: "53f9d63bacad27fd73c2f84b82599dbc" } Frame { msec: 2928 - hash: "1465f1f32ba4a6180ab3460298febe26" + hash: "53f9d63bacad27fd73c2f84b82599dbc" } Key { type: 7 @@ -994,23 +994,23 @@ VisualTest { } Frame { msec: 2944 - hash: "1465f1f32ba4a6180ab3460298febe26" + hash: "53f9d63bacad27fd73c2f84b82599dbc" } Frame { msec: 2960 - hash: "1465f1f32ba4a6180ab3460298febe26" + hash: "53f9d63bacad27fd73c2f84b82599dbc" } Frame { msec: 2976 - hash: "1465f1f32ba4a6180ab3460298febe26" + hash: "53f9d63bacad27fd73c2f84b82599dbc" } Frame { msec: 2992 - hash: "1465f1f32ba4a6180ab3460298febe26" + hash: "53f9d63bacad27fd73c2f84b82599dbc" } Frame { msec: 3008 - hash: "1465f1f32ba4a6180ab3460298febe26" + hash: "53f9d63bacad27fd73c2f84b82599dbc" } Key { type: 6 @@ -1022,23 +1022,23 @@ VisualTest { } Frame { msec: 3024 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3040 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3056 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3072 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3088 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Key { type: 7 @@ -1050,155 +1050,155 @@ VisualTest { } Frame { msec: 3104 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3120 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3136 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3152 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3168 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3184 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3200 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3216 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3232 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3248 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3264 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3280 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3296 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3312 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3328 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3344 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3360 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3376 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3392 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3408 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3424 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3440 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3456 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3472 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3488 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3504 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3520 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3536 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3552 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3568 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3584 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3600 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3616 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3632 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3648 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3664 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3680 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Frame { msec: 3696 - hash: "89f3a1c5080d5d742e4455a8818a715c" + hash: "9294b20b7160322e1f2eecaee6ebf856" } Key { type: 6 @@ -1210,27 +1210,27 @@ VisualTest { } Frame { msec: 3712 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 3728 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 3744 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 3760 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 3776 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 3792 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Key { type: 7 @@ -1242,15 +1242,15 @@ VisualTest { } Frame { msec: 3808 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 3824 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 3840 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 3856 @@ -1258,114 +1258,114 @@ VisualTest { } Frame { msec: 3872 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 3888 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 3904 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 3920 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 3936 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 3952 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 3968 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 3984 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 4000 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 4016 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 4032 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 4048 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 4064 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 4080 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 4096 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 4112 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 4128 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 4144 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 4160 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 4176 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 4192 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 4208 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 4224 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 4240 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 4256 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 4272 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 4288 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } Frame { msec: 4304 - hash: "0051b27d72a917e2af72c4b953877d42" + hash: "80122e3e0d124c01b2769c1c88aa4a13" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.0.png Binary files differindex d63f753..da3b971 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.1.png Binary files differindex bb7daa3..8ea0787 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.2.png Binary files differindex bcad242..33328db 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.2.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.3.png Binary files differindex 7be45e7..222ba53 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.3.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.4.png Binary files differindex 42f7f51..970e73d 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.4.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.5.png Binary files differindex 147632a..4dc64a1 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.5.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.5.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.6.png Binary files differindex d624a71..99d451c 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.6.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.6.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.7.png Binary files differindex d624a71..99d451c 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.7.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.7.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.qml index 72f68e7..13834f0 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-X11/wrap.qml @@ -18,7 +18,7 @@ VisualTest { } Frame { msec: 32 - hash: "3e34b9a8c5df08caa18f37289c25138f" + hash: "ca07773bf0df96be1f23d13c4d6e2bfd" } Key { type: 7 @@ -30,11 +30,11 @@ VisualTest { } Frame { msec: 48 - hash: "3e34b9a8c5df08caa18f37289c25138f" + hash: "ca07773bf0df96be1f23d13c4d6e2bfd" } Frame { msec: 64 - hash: "3e34b9a8c5df08caa18f37289c25138f" + hash: "ca07773bf0df96be1f23d13c4d6e2bfd" } Key { type: 7 @@ -46,11 +46,11 @@ VisualTest { } Frame { msec: 80 - hash: "3e34b9a8c5df08caa18f37289c25138f" + hash: "ca07773bf0df96be1f23d13c4d6e2bfd" } Frame { msec: 96 - hash: "3e34b9a8c5df08caa18f37289c25138f" + hash: "ca07773bf0df96be1f23d13c4d6e2bfd" } Key { type: 6 @@ -62,15 +62,15 @@ VisualTest { } Frame { msec: 112 - hash: "4242081446f2a3122bbd4f8c03a67e5c" + hash: "fc223de2e1f35db08d9689bc41f02304" } Frame { msec: 128 - hash: "4242081446f2a3122bbd4f8c03a67e5c" + hash: "fc223de2e1f35db08d9689bc41f02304" } Frame { msec: 144 - hash: "4242081446f2a3122bbd4f8c03a67e5c" + hash: "fc223de2e1f35db08d9689bc41f02304" } Key { type: 6 @@ -82,15 +82,15 @@ VisualTest { } Frame { msec: 160 - hash: "79c4a9defe89f99b3f6b3c25bd81fc7e" + hash: "dc208fb5236b0a2a54bf9aaf7a9d60cd" } Frame { msec: 176 - hash: "79c4a9defe89f99b3f6b3c25bd81fc7e" + hash: "dc208fb5236b0a2a54bf9aaf7a9d60cd" } Frame { msec: 192 - hash: "79c4a9defe89f99b3f6b3c25bd81fc7e" + hash: "dc208fb5236b0a2a54bf9aaf7a9d60cd" } Key { type: 7 @@ -102,11 +102,11 @@ VisualTest { } Frame { msec: 208 - hash: "79c4a9defe89f99b3f6b3c25bd81fc7e" + hash: "dc208fb5236b0a2a54bf9aaf7a9d60cd" } Frame { msec: 224 - hash: "79c4a9defe89f99b3f6b3c25bd81fc7e" + hash: "dc208fb5236b0a2a54bf9aaf7a9d60cd" } Key { type: 6 @@ -118,7 +118,7 @@ VisualTest { } Frame { msec: 240 - hash: "0bee22de7793974cadec12dfb5df16aa" + hash: "c017468afd522089b5c9f42dd61be1b4" } Key { type: 7 @@ -130,19 +130,19 @@ VisualTest { } Frame { msec: 256 - hash: "0bee22de7793974cadec12dfb5df16aa" + hash: "c017468afd522089b5c9f42dd61be1b4" } Frame { msec: 272 - hash: "0bee22de7793974cadec12dfb5df16aa" + hash: "c017468afd522089b5c9f42dd61be1b4" } Frame { msec: 288 - hash: "0bee22de7793974cadec12dfb5df16aa" + hash: "c017468afd522089b5c9f42dd61be1b4" } Frame { msec: 304 - hash: "0bee22de7793974cadec12dfb5df16aa" + hash: "c017468afd522089b5c9f42dd61be1b4" } Key { type: 7 @@ -154,11 +154,11 @@ VisualTest { } Frame { msec: 320 - hash: "0bee22de7793974cadec12dfb5df16aa" + hash: "c017468afd522089b5c9f42dd61be1b4" } Frame { msec: 336 - hash: "0bee22de7793974cadec12dfb5df16aa" + hash: "c017468afd522089b5c9f42dd61be1b4" } Key { type: 6 @@ -170,19 +170,19 @@ VisualTest { } Frame { msec: 352 - hash: "07393d1c1bb6da436700881ebcd38195" + hash: "84b1f1bf26af0da07006bb102d22693f" } Frame { msec: 368 - hash: "07393d1c1bb6da436700881ebcd38195" + hash: "84b1f1bf26af0da07006bb102d22693f" } Frame { msec: 384 - hash: "07393d1c1bb6da436700881ebcd38195" + hash: "84b1f1bf26af0da07006bb102d22693f" } Frame { msec: 400 - hash: "07393d1c1bb6da436700881ebcd38195" + hash: "84b1f1bf26af0da07006bb102d22693f" } Key { type: 7 @@ -194,19 +194,19 @@ VisualTest { } Frame { msec: 416 - hash: "07393d1c1bb6da436700881ebcd38195" + hash: "84b1f1bf26af0da07006bb102d22693f" } Frame { msec: 432 - hash: "07393d1c1bb6da436700881ebcd38195" + hash: "84b1f1bf26af0da07006bb102d22693f" } Frame { msec: 448 - hash: "07393d1c1bb6da436700881ebcd38195" + hash: "84b1f1bf26af0da07006bb102d22693f" } Frame { msec: 464 - hash: "07393d1c1bb6da436700881ebcd38195" + hash: "84b1f1bf26af0da07006bb102d22693f" } Key { type: 6 @@ -218,19 +218,19 @@ VisualTest { } Frame { msec: 480 - hash: "b12a4550ae068d157d340c008047d6f1" + hash: "a16f5aa01bd07de4ef7f868b7b6116f7" } Frame { msec: 496 - hash: "b12a4550ae068d157d340c008047d6f1" + hash: "a16f5aa01bd07de4ef7f868b7b6116f7" } Frame { msec: 512 - hash: "b12a4550ae068d157d340c008047d6f1" + hash: "a16f5aa01bd07de4ef7f868b7b6116f7" } Frame { msec: 528 - hash: "b12a4550ae068d157d340c008047d6f1" + hash: "a16f5aa01bd07de4ef7f868b7b6116f7" } Key { type: 6 @@ -250,23 +250,23 @@ VisualTest { } Frame { msec: 544 - hash: "f291de0963549b92d607f38d2d08c551" + hash: "e25e16d0d7b223b243d466630b901f68" } Frame { msec: 560 - hash: "f291de0963549b92d607f38d2d08c551" + hash: "e25e16d0d7b223b243d466630b901f68" } Frame { msec: 576 - hash: "f291de0963549b92d607f38d2d08c551" + hash: "e25e16d0d7b223b243d466630b901f68" } Frame { msec: 592 - hash: "f291de0963549b92d607f38d2d08c551" + hash: "e25e16d0d7b223b243d466630b901f68" } Frame { msec: 608 - hash: "f291de0963549b92d607f38d2d08c551" + hash: "e25e16d0d7b223b243d466630b901f68" } Key { type: 7 @@ -286,19 +286,19 @@ VisualTest { } Frame { msec: 624 - hash: "b7eedae59cc521aa8222596cd97bf129" + hash: "a53520edb9c117aa53abc42fce3505be" } Frame { msec: 640 - hash: "b7eedae59cc521aa8222596cd97bf129" + hash: "a53520edb9c117aa53abc42fce3505be" } Frame { msec: 656 - hash: "b7eedae59cc521aa8222596cd97bf129" + hash: "a53520edb9c117aa53abc42fce3505be" } Frame { msec: 672 - hash: "b7eedae59cc521aa8222596cd97bf129" + hash: "a53520edb9c117aa53abc42fce3505be" } Key { type: 7 @@ -310,11 +310,11 @@ VisualTest { } Frame { msec: 688 - hash: "b7eedae59cc521aa8222596cd97bf129" + hash: "a53520edb9c117aa53abc42fce3505be" } Frame { msec: 704 - hash: "b7eedae59cc521aa8222596cd97bf129" + hash: "a53520edb9c117aa53abc42fce3505be" } Key { type: 6 @@ -326,23 +326,23 @@ VisualTest { } Frame { msec: 720 - hash: "98ef281d984841075f2fc82cebcba3a9" + hash: "a7ef30038b24e8bf946bdd38aaac6430" } Frame { msec: 736 - hash: "98ef281d984841075f2fc82cebcba3a9" + hash: "a7ef30038b24e8bf946bdd38aaac6430" } Frame { msec: 752 - hash: "98ef281d984841075f2fc82cebcba3a9" + hash: "a7ef30038b24e8bf946bdd38aaac6430" } Frame { msec: 768 - hash: "98ef281d984841075f2fc82cebcba3a9" + hash: "a7ef30038b24e8bf946bdd38aaac6430" } Frame { msec: 784 - hash: "98ef281d984841075f2fc82cebcba3a9" + hash: "a7ef30038b24e8bf946bdd38aaac6430" } Key { type: 7 @@ -354,7 +354,7 @@ VisualTest { } Frame { msec: 800 - hash: "98ef281d984841075f2fc82cebcba3a9" + hash: "a7ef30038b24e8bf946bdd38aaac6430" } Key { type: 6 @@ -366,15 +366,15 @@ VisualTest { } Frame { msec: 816 - hash: "e7b8f24ba55765e2fc1f386d510b402f" + hash: "026b29fc03bd22e15ff725d34dee91eb" } Frame { msec: 832 - hash: "e7b8f24ba55765e2fc1f386d510b402f" + hash: "026b29fc03bd22e15ff725d34dee91eb" } Frame { msec: 848 - hash: "e7b8f24ba55765e2fc1f386d510b402f" + hash: "026b29fc03bd22e15ff725d34dee91eb" } Key { type: 7 @@ -386,15 +386,15 @@ VisualTest { } Frame { msec: 864 - hash: "e7b8f24ba55765e2fc1f386d510b402f" + hash: "026b29fc03bd22e15ff725d34dee91eb" } Frame { msec: 880 - hash: "e7b8f24ba55765e2fc1f386d510b402f" + hash: "026b29fc03bd22e15ff725d34dee91eb" } Frame { msec: 896 - hash: "e7b8f24ba55765e2fc1f386d510b402f" + hash: "026b29fc03bd22e15ff725d34dee91eb" } Key { type: 6 @@ -406,19 +406,19 @@ VisualTest { } Frame { msec: 912 - hash: "38a3062cb4f23993416f83ff6acbe189" + hash: "2b1cef34dff32e36e3c44f2ffb2be66e" } Frame { msec: 928 - hash: "38a3062cb4f23993416f83ff6acbe189" + hash: "2b1cef34dff32e36e3c44f2ffb2be66e" } Frame { msec: 944 - hash: "38a3062cb4f23993416f83ff6acbe189" + hash: "2b1cef34dff32e36e3c44f2ffb2be66e" } Frame { msec: 960 - hash: "38a3062cb4f23993416f83ff6acbe189" + hash: "2b1cef34dff32e36e3c44f2ffb2be66e" } Frame { msec: 976 @@ -426,7 +426,7 @@ VisualTest { } Frame { msec: 992 - hash: "38a3062cb4f23993416f83ff6acbe189" + hash: "2b1cef34dff32e36e3c44f2ffb2be66e" } Key { type: 6 @@ -446,23 +446,23 @@ VisualTest { } Frame { msec: 1008 - hash: "daef9995a008f0ca672adc98315a6b9f" + hash: "f619bc4148876effc459127009d4cc3a" } Frame { msec: 1024 - hash: "daef9995a008f0ca672adc98315a6b9f" + hash: "f619bc4148876effc459127009d4cc3a" } Frame { msec: 1040 - hash: "daef9995a008f0ca672adc98315a6b9f" + hash: "f619bc4148876effc459127009d4cc3a" } Frame { msec: 1056 - hash: "daef9995a008f0ca672adc98315a6b9f" + hash: "f619bc4148876effc459127009d4cc3a" } Frame { msec: 1072 - hash: "daef9995a008f0ca672adc98315a6b9f" + hash: "f619bc4148876effc459127009d4cc3a" } Key { type: 7 @@ -474,31 +474,31 @@ VisualTest { } Frame { msec: 1088 - hash: "daef9995a008f0ca672adc98315a6b9f" + hash: "f619bc4148876effc459127009d4cc3a" } Frame { msec: 1104 - hash: "daef9995a008f0ca672adc98315a6b9f" + hash: "f619bc4148876effc459127009d4cc3a" } Frame { msec: 1120 - hash: "daef9995a008f0ca672adc98315a6b9f" + hash: "f619bc4148876effc459127009d4cc3a" } Frame { msec: 1136 - hash: "daef9995a008f0ca672adc98315a6b9f" + hash: "f619bc4148876effc459127009d4cc3a" } Frame { msec: 1152 - hash: "daef9995a008f0ca672adc98315a6b9f" + hash: "f619bc4148876effc459127009d4cc3a" } Frame { msec: 1168 - hash: "daef9995a008f0ca672adc98315a6b9f" + hash: "f619bc4148876effc459127009d4cc3a" } Frame { msec: 1184 - hash: "daef9995a008f0ca672adc98315a6b9f" + hash: "f619bc4148876effc459127009d4cc3a" } Key { type: 6 @@ -510,23 +510,23 @@ VisualTest { } Frame { msec: 1200 - hash: "da27d35f241ccc7c1ee2832e491fa726" + hash: "c7fbee3129141e8493b7bc4f85fdc2d0" } Frame { msec: 1216 - hash: "da27d35f241ccc7c1ee2832e491fa726" + hash: "c7fbee3129141e8493b7bc4f85fdc2d0" } Frame { msec: 1232 - hash: "da27d35f241ccc7c1ee2832e491fa726" + hash: "c7fbee3129141e8493b7bc4f85fdc2d0" } Frame { msec: 1248 - hash: "da27d35f241ccc7c1ee2832e491fa726" + hash: "c7fbee3129141e8493b7bc4f85fdc2d0" } Frame { msec: 1264 - hash: "da27d35f241ccc7c1ee2832e491fa726" + hash: "c7fbee3129141e8493b7bc4f85fdc2d0" } Key { type: 7 @@ -546,11 +546,11 @@ VisualTest { } Frame { msec: 1280 - hash: "7136f5cfcca4a86b8764667895efa813" + hash: "f2a45d80148ee1b5f1cd8cb6ddd0c5ed" } Frame { msec: 1296 - hash: "7136f5cfcca4a86b8764667895efa813" + hash: "f2a45d80148ee1b5f1cd8cb6ddd0c5ed" } Key { type: 6 @@ -562,15 +562,15 @@ VisualTest { } Frame { msec: 1312 - hash: "b99aec3d97f4442378a18ac88d50b97d" + hash: "147efa341e4dc39cdd555c2c81e5c603" } Frame { msec: 1328 - hash: "b99aec3d97f4442378a18ac88d50b97d" + hash: "147efa341e4dc39cdd555c2c81e5c603" } Frame { msec: 1344 - hash: "b99aec3d97f4442378a18ac88d50b97d" + hash: "147efa341e4dc39cdd555c2c81e5c603" } Key { type: 7 @@ -582,11 +582,11 @@ VisualTest { } Frame { msec: 1360 - hash: "b99aec3d97f4442378a18ac88d50b97d" + hash: "147efa341e4dc39cdd555c2c81e5c603" } Frame { msec: 1376 - hash: "b99aec3d97f4442378a18ac88d50b97d" + hash: "147efa341e4dc39cdd555c2c81e5c603" } Key { type: 7 @@ -598,19 +598,19 @@ VisualTest { } Frame { msec: 1392 - hash: "b99aec3d97f4442378a18ac88d50b97d" + hash: "147efa341e4dc39cdd555c2c81e5c603" } Frame { msec: 1408 - hash: "b99aec3d97f4442378a18ac88d50b97d" + hash: "147efa341e4dc39cdd555c2c81e5c603" } Frame { msec: 1424 - hash: "b99aec3d97f4442378a18ac88d50b97d" + hash: "147efa341e4dc39cdd555c2c81e5c603" } Frame { msec: 1440 - hash: "b99aec3d97f4442378a18ac88d50b97d" + hash: "147efa341e4dc39cdd555c2c81e5c603" } Key { type: 6 @@ -622,23 +622,23 @@ VisualTest { } Frame { msec: 1456 - hash: "c32293903502fd1964cfbc10515b2ef7" + hash: "d5b19a6d767a08f488cc8fc5c427a2dd" } Frame { msec: 1472 - hash: "c32293903502fd1964cfbc10515b2ef7" + hash: "d5b19a6d767a08f488cc8fc5c427a2dd" } Frame { msec: 1488 - hash: "c32293903502fd1964cfbc10515b2ef7" + hash: "d5b19a6d767a08f488cc8fc5c427a2dd" } Frame { msec: 1504 - hash: "c32293903502fd1964cfbc10515b2ef7" + hash: "d5b19a6d767a08f488cc8fc5c427a2dd" } Frame { msec: 1520 - hash: "c32293903502fd1964cfbc10515b2ef7" + hash: "d5b19a6d767a08f488cc8fc5c427a2dd" } Key { type: 7 @@ -650,11 +650,11 @@ VisualTest { } Frame { msec: 1536 - hash: "c32293903502fd1964cfbc10515b2ef7" + hash: "d5b19a6d767a08f488cc8fc5c427a2dd" } Frame { msec: 1552 - hash: "c32293903502fd1964cfbc10515b2ef7" + hash: "d5b19a6d767a08f488cc8fc5c427a2dd" } Key { type: 6 @@ -666,23 +666,23 @@ VisualTest { } Frame { msec: 1568 - hash: "47371eb93a2a8fac7afb53990fac9130" + hash: "bf6265ca859f700fb07f8b992255787d" } Frame { msec: 1584 - hash: "47371eb93a2a8fac7afb53990fac9130" + hash: "bf6265ca859f700fb07f8b992255787d" } Frame { msec: 1600 - hash: "47371eb93a2a8fac7afb53990fac9130" + hash: "bf6265ca859f700fb07f8b992255787d" } Frame { msec: 1616 - hash: "47371eb93a2a8fac7afb53990fac9130" + hash: "bf6265ca859f700fb07f8b992255787d" } Frame { msec: 1632 - hash: "47371eb93a2a8fac7afb53990fac9130" + hash: "bf6265ca859f700fb07f8b992255787d" } Key { type: 6 @@ -702,23 +702,23 @@ VisualTest { } Frame { msec: 1648 - hash: "5c22c2566b437497dd6fd908135ec39e" + hash: "329e4cd26283eb08188d96b2b0325733" } Frame { msec: 1664 - hash: "5c22c2566b437497dd6fd908135ec39e" + hash: "329e4cd26283eb08188d96b2b0325733" } Frame { msec: 1680 - hash: "5c22c2566b437497dd6fd908135ec39e" + hash: "329e4cd26283eb08188d96b2b0325733" } Frame { msec: 1696 - hash: "5c22c2566b437497dd6fd908135ec39e" + hash: "329e4cd26283eb08188d96b2b0325733" } Frame { msec: 1712 - hash: "5c22c2566b437497dd6fd908135ec39e" + hash: "329e4cd26283eb08188d96b2b0325733" } Key { type: 6 @@ -730,15 +730,15 @@ VisualTest { } Frame { msec: 1728 - hash: "29b4e69de4c83ccdee6ef116ab3785ee" + hash: "7b5ac2afafbbaf1e13c70a11461820ad" } Frame { msec: 1744 - hash: "29b4e69de4c83ccdee6ef116ab3785ee" + hash: "7b5ac2afafbbaf1e13c70a11461820ad" } Frame { msec: 1760 - hash: "29b4e69de4c83ccdee6ef116ab3785ee" + hash: "7b5ac2afafbbaf1e13c70a11461820ad" } Key { type: 7 @@ -750,7 +750,7 @@ VisualTest { } Frame { msec: 1776 - hash: "29b4e69de4c83ccdee6ef116ab3785ee" + hash: "7b5ac2afafbbaf1e13c70a11461820ad" } Key { type: 6 @@ -762,11 +762,11 @@ VisualTest { } Frame { msec: 1792 - hash: "5ab8ecb0ca9fed70f1d8add6b7b3972d" + hash: "bcfa1aa48767f70541a70cb5f85792ba" } Frame { msec: 1808 - hash: "5ab8ecb0ca9fed70f1d8add6b7b3972d" + hash: "bcfa1aa48767f70541a70cb5f85792ba" } Key { type: 7 @@ -778,19 +778,19 @@ VisualTest { } Frame { msec: 1824 - hash: "5ab8ecb0ca9fed70f1d8add6b7b3972d" + hash: "bcfa1aa48767f70541a70cb5f85792ba" } Frame { msec: 1840 - hash: "5ab8ecb0ca9fed70f1d8add6b7b3972d" + hash: "bcfa1aa48767f70541a70cb5f85792ba" } Frame { msec: 1856 - hash: "5ab8ecb0ca9fed70f1d8add6b7b3972d" + hash: "bcfa1aa48767f70541a70cb5f85792ba" } Frame { msec: 1872 - hash: "5ab8ecb0ca9fed70f1d8add6b7b3972d" + hash: "bcfa1aa48767f70541a70cb5f85792ba" } Key { type: 7 @@ -802,15 +802,15 @@ VisualTest { } Frame { msec: 1888 - hash: "5ab8ecb0ca9fed70f1d8add6b7b3972d" + hash: "bcfa1aa48767f70541a70cb5f85792ba" } Frame { msec: 1904 - hash: "5ab8ecb0ca9fed70f1d8add6b7b3972d" + hash: "bcfa1aa48767f70541a70cb5f85792ba" } Frame { msec: 1920 - hash: "5ab8ecb0ca9fed70f1d8add6b7b3972d" + hash: "bcfa1aa48767f70541a70cb5f85792ba" } Frame { msec: 1936 @@ -818,7 +818,7 @@ VisualTest { } Frame { msec: 1952 - hash: "5ab8ecb0ca9fed70f1d8add6b7b3972d" + hash: "bcfa1aa48767f70541a70cb5f85792ba" } Key { type: 6 @@ -830,27 +830,27 @@ VisualTest { } Frame { msec: 1968 - hash: "2a43f5ac0c7bdf38e367b0cdb0bccea9" + hash: "e89f7cf38b3b596298d6c649a1207469" } Frame { msec: 1984 - hash: "2a43f5ac0c7bdf38e367b0cdb0bccea9" + hash: "e89f7cf38b3b596298d6c649a1207469" } Frame { msec: 2000 - hash: "2a43f5ac0c7bdf38e367b0cdb0bccea9" + hash: "e89f7cf38b3b596298d6c649a1207469" } Frame { msec: 2016 - hash: "2a43f5ac0c7bdf38e367b0cdb0bccea9" + hash: "e89f7cf38b3b596298d6c649a1207469" } Frame { msec: 2032 - hash: "2a43f5ac0c7bdf38e367b0cdb0bccea9" + hash: "e89f7cf38b3b596298d6c649a1207469" } Frame { msec: 2048 - hash: "2a43f5ac0c7bdf38e367b0cdb0bccea9" + hash: "e89f7cf38b3b596298d6c649a1207469" } Key { type: 6 @@ -862,7 +862,7 @@ VisualTest { } Frame { msec: 2064 - hash: "0f28c7855c7fde3390d16a2638e23bd0" + hash: "18e71331b42a115f7f9d5c09e235b944" } Key { type: 7 @@ -874,15 +874,15 @@ VisualTest { } Frame { msec: 2080 - hash: "0f28c7855c7fde3390d16a2638e23bd0" + hash: "18e71331b42a115f7f9d5c09e235b944" } Frame { msec: 2096 - hash: "0f28c7855c7fde3390d16a2638e23bd0" + hash: "18e71331b42a115f7f9d5c09e235b944" } Frame { msec: 2112 - hash: "0f28c7855c7fde3390d16a2638e23bd0" + hash: "18e71331b42a115f7f9d5c09e235b944" } Key { type: 7 @@ -894,27 +894,27 @@ VisualTest { } Frame { msec: 2128 - hash: "0f28c7855c7fde3390d16a2638e23bd0" + hash: "18e71331b42a115f7f9d5c09e235b944" } Frame { msec: 2144 - hash: "0f28c7855c7fde3390d16a2638e23bd0" + hash: "18e71331b42a115f7f9d5c09e235b944" } Frame { msec: 2160 - hash: "0f28c7855c7fde3390d16a2638e23bd0" + hash: "18e71331b42a115f7f9d5c09e235b944" } Frame { msec: 2176 - hash: "0f28c7855c7fde3390d16a2638e23bd0" + hash: "18e71331b42a115f7f9d5c09e235b944" } Frame { msec: 2192 - hash: "0f28c7855c7fde3390d16a2638e23bd0" + hash: "18e71331b42a115f7f9d5c09e235b944" } Frame { msec: 2208 - hash: "0f28c7855c7fde3390d16a2638e23bd0" + hash: "18e71331b42a115f7f9d5c09e235b944" } Key { type: 6 @@ -926,23 +926,23 @@ VisualTest { } Frame { msec: 2224 - hash: "b56e002e5eddde0245f7ad4c75339968" + hash: "3630abd7cc6ab303d08f30dea7b1eec1" } Frame { msec: 2240 - hash: "b56e002e5eddde0245f7ad4c75339968" + hash: "3630abd7cc6ab303d08f30dea7b1eec1" } Frame { msec: 2256 - hash: "b56e002e5eddde0245f7ad4c75339968" + hash: "3630abd7cc6ab303d08f30dea7b1eec1" } Frame { msec: 2272 - hash: "b56e002e5eddde0245f7ad4c75339968" + hash: "3630abd7cc6ab303d08f30dea7b1eec1" } Frame { msec: 2288 - hash: "b56e002e5eddde0245f7ad4c75339968" + hash: "3630abd7cc6ab303d08f30dea7b1eec1" } Key { type: 6 @@ -954,7 +954,7 @@ VisualTest { } Frame { msec: 2304 - hash: "0bdd50e3c8b382b464c82d791ae6c1e5" + hash: "83e7b8c680cda95ec0a669b8030a3efd" } Key { type: 7 @@ -966,15 +966,15 @@ VisualTest { } Frame { msec: 2320 - hash: "0bdd50e3c8b382b464c82d791ae6c1e5" + hash: "83e7b8c680cda95ec0a669b8030a3efd" } Frame { msec: 2336 - hash: "0bdd50e3c8b382b464c82d791ae6c1e5" + hash: "83e7b8c680cda95ec0a669b8030a3efd" } Frame { msec: 2352 - hash: "0bdd50e3c8b382b464c82d791ae6c1e5" + hash: "83e7b8c680cda95ec0a669b8030a3efd" } Key { type: 6 @@ -986,11 +986,11 @@ VisualTest { } Frame { msec: 2368 - hash: "b61b475b84c6e6a149f6262fc560b741" + hash: "cc826833607ae754e633d21ca67a6b5a" } Frame { msec: 2384 - hash: "b61b475b84c6e6a149f6262fc560b741" + hash: "cc826833607ae754e633d21ca67a6b5a" } Key { type: 7 @@ -1002,15 +1002,15 @@ VisualTest { } Frame { msec: 2400 - hash: "b61b475b84c6e6a149f6262fc560b741" + hash: "cc826833607ae754e633d21ca67a6b5a" } Frame { msec: 2416 - hash: "b61b475b84c6e6a149f6262fc560b741" + hash: "cc826833607ae754e633d21ca67a6b5a" } Frame { msec: 2432 - hash: "b61b475b84c6e6a149f6262fc560b741" + hash: "cc826833607ae754e633d21ca67a6b5a" } Key { type: 7 @@ -1022,15 +1022,15 @@ VisualTest { } Frame { msec: 2448 - hash: "b61b475b84c6e6a149f6262fc560b741" + hash: "cc826833607ae754e633d21ca67a6b5a" } Frame { msec: 2464 - hash: "b61b475b84c6e6a149f6262fc560b741" + hash: "cc826833607ae754e633d21ca67a6b5a" } Frame { msec: 2480 - hash: "b61b475b84c6e6a149f6262fc560b741" + hash: "cc826833607ae754e633d21ca67a6b5a" } Key { type: 6 @@ -1042,19 +1042,19 @@ VisualTest { } Frame { msec: 2496 - hash: "1acd6152f317a6c8f6aca52ccf62a8c6" + hash: "2b4c812fac4e84909cc8fc70d8966a27" } Frame { msec: 2512 - hash: "1acd6152f317a6c8f6aca52ccf62a8c6" + hash: "2b4c812fac4e84909cc8fc70d8966a27" } Frame { msec: 2528 - hash: "1acd6152f317a6c8f6aca52ccf62a8c6" + hash: "2b4c812fac4e84909cc8fc70d8966a27" } Frame { msec: 2544 - hash: "1acd6152f317a6c8f6aca52ccf62a8c6" + hash: "2b4c812fac4e84909cc8fc70d8966a27" } Key { type: 7 @@ -1066,27 +1066,27 @@ VisualTest { } Frame { msec: 2560 - hash: "1acd6152f317a6c8f6aca52ccf62a8c6" + hash: "2b4c812fac4e84909cc8fc70d8966a27" } Frame { msec: 2576 - hash: "1acd6152f317a6c8f6aca52ccf62a8c6" + hash: "2b4c812fac4e84909cc8fc70d8966a27" } Frame { msec: 2592 - hash: "1acd6152f317a6c8f6aca52ccf62a8c6" + hash: "2b4c812fac4e84909cc8fc70d8966a27" } Frame { msec: 2608 - hash: "1acd6152f317a6c8f6aca52ccf62a8c6" + hash: "2b4c812fac4e84909cc8fc70d8966a27" } Frame { msec: 2624 - hash: "1acd6152f317a6c8f6aca52ccf62a8c6" + hash: "2b4c812fac4e84909cc8fc70d8966a27" } Frame { msec: 2640 - hash: "1acd6152f317a6c8f6aca52ccf62a8c6" + hash: "2b4c812fac4e84909cc8fc70d8966a27" } Key { type: 6 @@ -1098,19 +1098,19 @@ VisualTest { } Frame { msec: 2656 - hash: "90ab887de5fbf34f4d45e13c4b211490" + hash: "c1aabf4b43cbae0d7654ba78fc870fdd" } Frame { msec: 2672 - hash: "90ab887de5fbf34f4d45e13c4b211490" + hash: "c1aabf4b43cbae0d7654ba78fc870fdd" } Frame { msec: 2688 - hash: "90ab887de5fbf34f4d45e13c4b211490" + hash: "c1aabf4b43cbae0d7654ba78fc870fdd" } Frame { msec: 2704 - hash: "90ab887de5fbf34f4d45e13c4b211490" + hash: "c1aabf4b43cbae0d7654ba78fc870fdd" } Key { type: 7 @@ -1122,15 +1122,15 @@ VisualTest { } Frame { msec: 2720 - hash: "90ab887de5fbf34f4d45e13c4b211490" + hash: "c1aabf4b43cbae0d7654ba78fc870fdd" } Frame { msec: 2736 - hash: "90ab887de5fbf34f4d45e13c4b211490" + hash: "c1aabf4b43cbae0d7654ba78fc870fdd" } Frame { msec: 2752 - hash: "90ab887de5fbf34f4d45e13c4b211490" + hash: "c1aabf4b43cbae0d7654ba78fc870fdd" } Key { type: 6 @@ -1142,23 +1142,23 @@ VisualTest { } Frame { msec: 2768 - hash: "fc91281749bf1a844a19f20d87a17126" + hash: "a707dd726c777a661e4f12d27a75cf63" } Frame { msec: 2784 - hash: "fc91281749bf1a844a19f20d87a17126" + hash: "a707dd726c777a661e4f12d27a75cf63" } Frame { msec: 2800 - hash: "fc91281749bf1a844a19f20d87a17126" + hash: "a707dd726c777a661e4f12d27a75cf63" } Frame { msec: 2816 - hash: "fc91281749bf1a844a19f20d87a17126" + hash: "a707dd726c777a661e4f12d27a75cf63" } Frame { msec: 2832 - hash: "fc91281749bf1a844a19f20d87a17126" + hash: "a707dd726c777a661e4f12d27a75cf63" } Key { type: 6 @@ -1178,15 +1178,15 @@ VisualTest { } Frame { msec: 2848 - hash: "dcf6e510866fa20e54255c2c980d7b4b" + hash: "bdaa69c1074f9820901ce31ea24383ca" } Frame { msec: 2864 - hash: "dcf6e510866fa20e54255c2c980d7b4b" + hash: "bdaa69c1074f9820901ce31ea24383ca" } Frame { msec: 2880 - hash: "dcf6e510866fa20e54255c2c980d7b4b" + hash: "bdaa69c1074f9820901ce31ea24383ca" } Frame { msec: 2896 @@ -1202,11 +1202,11 @@ VisualTest { } Frame { msec: 2912 - hash: "a26b06714f951084f2ee5ee4b4e67e43" + hash: "f703f87031be4f9d7409fb145343c02b" } Frame { msec: 2928 - hash: "a26b06714f951084f2ee5ee4b4e67e43" + hash: "f703f87031be4f9d7409fb145343c02b" } Key { type: 7 @@ -1218,11 +1218,11 @@ VisualTest { } Frame { msec: 2944 - hash: "a26b06714f951084f2ee5ee4b4e67e43" + hash: "f703f87031be4f9d7409fb145343c02b" } Frame { msec: 2960 - hash: "a26b06714f951084f2ee5ee4b4e67e43" + hash: "f703f87031be4f9d7409fb145343c02b" } Key { type: 7 @@ -1234,35 +1234,35 @@ VisualTest { } Frame { msec: 2976 - hash: "a26b06714f951084f2ee5ee4b4e67e43" + hash: "f703f87031be4f9d7409fb145343c02b" } Frame { msec: 2992 - hash: "a26b06714f951084f2ee5ee4b4e67e43" + hash: "f703f87031be4f9d7409fb145343c02b" } Frame { msec: 3008 - hash: "a26b06714f951084f2ee5ee4b4e67e43" + hash: "f703f87031be4f9d7409fb145343c02b" } Frame { msec: 3024 - hash: "a26b06714f951084f2ee5ee4b4e67e43" + hash: "f703f87031be4f9d7409fb145343c02b" } Frame { msec: 3040 - hash: "a26b06714f951084f2ee5ee4b4e67e43" + hash: "f703f87031be4f9d7409fb145343c02b" } Frame { msec: 3056 - hash: "a26b06714f951084f2ee5ee4b4e67e43" + hash: "f703f87031be4f9d7409fb145343c02b" } Frame { msec: 3072 - hash: "a26b06714f951084f2ee5ee4b4e67e43" + hash: "f703f87031be4f9d7409fb145343c02b" } Frame { msec: 3088 - hash: "a26b06714f951084f2ee5ee4b4e67e43" + hash: "f703f87031be4f9d7409fb145343c02b" } Key { type: 6 @@ -1274,23 +1274,23 @@ VisualTest { } Frame { msec: 3104 - hash: "832c43553cea6d22b7664ef6f145d1c6" + hash: "cb2660df955b757b00661a1acb5f22d2" } Frame { msec: 3120 - hash: "832c43553cea6d22b7664ef6f145d1c6" + hash: "cb2660df955b757b00661a1acb5f22d2" } Frame { msec: 3136 - hash: "832c43553cea6d22b7664ef6f145d1c6" + hash: "cb2660df955b757b00661a1acb5f22d2" } Frame { msec: 3152 - hash: "832c43553cea6d22b7664ef6f145d1c6" + hash: "cb2660df955b757b00661a1acb5f22d2" } Frame { msec: 3168 - hash: "832c43553cea6d22b7664ef6f145d1c6" + hash: "cb2660df955b757b00661a1acb5f22d2" } Key { type: 7 @@ -1302,23 +1302,23 @@ VisualTest { } Frame { msec: 3184 - hash: "832c43553cea6d22b7664ef6f145d1c6" + hash: "cb2660df955b757b00661a1acb5f22d2" } Frame { msec: 3200 - hash: "832c43553cea6d22b7664ef6f145d1c6" + hash: "cb2660df955b757b00661a1acb5f22d2" } Frame { msec: 3216 - hash: "832c43553cea6d22b7664ef6f145d1c6" + hash: "cb2660df955b757b00661a1acb5f22d2" } Frame { msec: 3232 - hash: "832c43553cea6d22b7664ef6f145d1c6" + hash: "cb2660df955b757b00661a1acb5f22d2" } Frame { msec: 3248 - hash: "832c43553cea6d22b7664ef6f145d1c6" + hash: "cb2660df955b757b00661a1acb5f22d2" } Key { type: 6 @@ -1330,15 +1330,15 @@ VisualTest { } Frame { msec: 3264 - hash: "081c183901aadcc6406f4ad9f41efa7e" + hash: "8ea510d25195956fa42eabfe3bb9f230" } Frame { msec: 3280 - hash: "081c183901aadcc6406f4ad9f41efa7e" + hash: "8ea510d25195956fa42eabfe3bb9f230" } Frame { msec: 3296 - hash: "081c183901aadcc6406f4ad9f41efa7e" + hash: "8ea510d25195956fa42eabfe3bb9f230" } Key { type: 7 @@ -1350,15 +1350,15 @@ VisualTest { } Frame { msec: 3312 - hash: "081c183901aadcc6406f4ad9f41efa7e" + hash: "8ea510d25195956fa42eabfe3bb9f230" } Frame { msec: 3328 - hash: "081c183901aadcc6406f4ad9f41efa7e" + hash: "8ea510d25195956fa42eabfe3bb9f230" } Frame { msec: 3344 - hash: "081c183901aadcc6406f4ad9f41efa7e" + hash: "8ea510d25195956fa42eabfe3bb9f230" } Key { type: 6 @@ -1370,23 +1370,23 @@ VisualTest { } Frame { msec: 3360 - hash: "9bd3c76a58f942880f40566cfbaa2e99" + hash: "26b58aef7b1f50a5d261718e8266a3fb" } Frame { msec: 3376 - hash: "9bd3c76a58f942880f40566cfbaa2e99" + hash: "26b58aef7b1f50a5d261718e8266a3fb" } Frame { msec: 3392 - hash: "9bd3c76a58f942880f40566cfbaa2e99" + hash: "26b58aef7b1f50a5d261718e8266a3fb" } Frame { msec: 3408 - hash: "9bd3c76a58f942880f40566cfbaa2e99" + hash: "26b58aef7b1f50a5d261718e8266a3fb" } Frame { msec: 3424 - hash: "9bd3c76a58f942880f40566cfbaa2e99" + hash: "26b58aef7b1f50a5d261718e8266a3fb" } Key { type: 7 @@ -1398,15 +1398,15 @@ VisualTest { } Frame { msec: 3440 - hash: "9bd3c76a58f942880f40566cfbaa2e99" + hash: "26b58aef7b1f50a5d261718e8266a3fb" } Frame { msec: 3456 - hash: "9bd3c76a58f942880f40566cfbaa2e99" + hash: "26b58aef7b1f50a5d261718e8266a3fb" } Frame { msec: 3472 - hash: "9bd3c76a58f942880f40566cfbaa2e99" + hash: "26b58aef7b1f50a5d261718e8266a3fb" } Key { type: 6 @@ -1418,19 +1418,19 @@ VisualTest { } Frame { msec: 3488 - hash: "204a2ee8a33e5452d47d95ad4142d417" + hash: "012854de1c9d1a772994d02f52bdcd7c" } Frame { msec: 3504 - hash: "204a2ee8a33e5452d47d95ad4142d417" + hash: "012854de1c9d1a772994d02f52bdcd7c" } Frame { msec: 3520 - hash: "204a2ee8a33e5452d47d95ad4142d417" + hash: "012854de1c9d1a772994d02f52bdcd7c" } Frame { msec: 3536 - hash: "204a2ee8a33e5452d47d95ad4142d417" + hash: "012854de1c9d1a772994d02f52bdcd7c" } Key { type: 7 @@ -1442,11 +1442,11 @@ VisualTest { } Frame { msec: 3552 - hash: "204a2ee8a33e5452d47d95ad4142d417" + hash: "012854de1c9d1a772994d02f52bdcd7c" } Frame { msec: 3568 - hash: "204a2ee8a33e5452d47d95ad4142d417" + hash: "012854de1c9d1a772994d02f52bdcd7c" } Key { type: 6 @@ -1458,27 +1458,27 @@ VisualTest { } Frame { msec: 3584 - hash: "4729d1f555fe604d4660f02673f9c5f3" + hash: "660a31e1c0d573f4155cfa8fe2323413" } Frame { msec: 3600 - hash: "4729d1f555fe604d4660f02673f9c5f3" + hash: "660a31e1c0d573f4155cfa8fe2323413" } Frame { msec: 3616 - hash: "4729d1f555fe604d4660f02673f9c5f3" + hash: "660a31e1c0d573f4155cfa8fe2323413" } Frame { msec: 3632 - hash: "4729d1f555fe604d4660f02673f9c5f3" + hash: "660a31e1c0d573f4155cfa8fe2323413" } Frame { msec: 3648 - hash: "4729d1f555fe604d4660f02673f9c5f3" + hash: "660a31e1c0d573f4155cfa8fe2323413" } Frame { msec: 3664 - hash: "4729d1f555fe604d4660f02673f9c5f3" + hash: "660a31e1c0d573f4155cfa8fe2323413" } Key { type: 6 @@ -1490,7 +1490,7 @@ VisualTest { } Frame { msec: 3680 - hash: "2c0e0951ce4839b302a6e2735adc6c09" + hash: "bea00f5e628e40b679eb8829c16c6260" } Key { type: 7 @@ -1502,23 +1502,23 @@ VisualTest { } Frame { msec: 3696 - hash: "2c0e0951ce4839b302a6e2735adc6c09" + hash: "bea00f5e628e40b679eb8829c16c6260" } Frame { msec: 3712 - hash: "2c0e0951ce4839b302a6e2735adc6c09" + hash: "bea00f5e628e40b679eb8829c16c6260" } Frame { msec: 3728 - hash: "2c0e0951ce4839b302a6e2735adc6c09" + hash: "bea00f5e628e40b679eb8829c16c6260" } Frame { msec: 3744 - hash: "2c0e0951ce4839b302a6e2735adc6c09" + hash: "bea00f5e628e40b679eb8829c16c6260" } Frame { msec: 3760 - hash: "2c0e0951ce4839b302a6e2735adc6c09" + hash: "bea00f5e628e40b679eb8829c16c6260" } Key { type: 7 @@ -1530,23 +1530,23 @@ VisualTest { } Frame { msec: 3776 - hash: "2c0e0951ce4839b302a6e2735adc6c09" + hash: "bea00f5e628e40b679eb8829c16c6260" } Frame { msec: 3792 - hash: "2c0e0951ce4839b302a6e2735adc6c09" + hash: "bea00f5e628e40b679eb8829c16c6260" } Frame { msec: 3808 - hash: "2c0e0951ce4839b302a6e2735adc6c09" + hash: "bea00f5e628e40b679eb8829c16c6260" } Frame { msec: 3824 - hash: "2c0e0951ce4839b302a6e2735adc6c09" + hash: "bea00f5e628e40b679eb8829c16c6260" } Frame { msec: 3840 - hash: "2c0e0951ce4839b302a6e2735adc6c09" + hash: "bea00f5e628e40b679eb8829c16c6260" } Frame { msec: 3856 @@ -1554,15 +1554,15 @@ VisualTest { } Frame { msec: 3872 - hash: "2c0e0951ce4839b302a6e2735adc6c09" + hash: "bea00f5e628e40b679eb8829c16c6260" } Frame { msec: 3888 - hash: "2c0e0951ce4839b302a6e2735adc6c09" + hash: "bea00f5e628e40b679eb8829c16c6260" } Frame { msec: 3904 - hash: "2c0e0951ce4839b302a6e2735adc6c09" + hash: "bea00f5e628e40b679eb8829c16c6260" } Key { type: 6 @@ -1574,23 +1574,23 @@ VisualTest { } Frame { msec: 3920 - hash: "28c2ffe2ad35010dc077625cde7d21b6" + hash: "c5c60cd10a1106161cde5f51dbdec5ad" } Frame { msec: 3936 - hash: "28c2ffe2ad35010dc077625cde7d21b6" + hash: "c5c60cd10a1106161cde5f51dbdec5ad" } Frame { msec: 3952 - hash: "28c2ffe2ad35010dc077625cde7d21b6" + hash: "c5c60cd10a1106161cde5f51dbdec5ad" } Frame { msec: 3968 - hash: "28c2ffe2ad35010dc077625cde7d21b6" + hash: "c5c60cd10a1106161cde5f51dbdec5ad" } Frame { msec: 3984 - hash: "28c2ffe2ad35010dc077625cde7d21b6" + hash: "c5c60cd10a1106161cde5f51dbdec5ad" } Key { type: 7 @@ -1602,11 +1602,11 @@ VisualTest { } Frame { msec: 4000 - hash: "28c2ffe2ad35010dc077625cde7d21b6" + hash: "c5c60cd10a1106161cde5f51dbdec5ad" } Frame { msec: 4016 - hash: "28c2ffe2ad35010dc077625cde7d21b6" + hash: "c5c60cd10a1106161cde5f51dbdec5ad" } Key { type: 6 @@ -1618,15 +1618,15 @@ VisualTest { } Frame { msec: 4032 - hash: "6f206482adcd45a2b0d8d3c8b85f53c6" + hash: "41c26e6a4c911f9ecd082c4d3366806b" } Frame { msec: 4048 - hash: "6f206482adcd45a2b0d8d3c8b85f53c6" + hash: "41c26e6a4c911f9ecd082c4d3366806b" } Frame { msec: 4064 - hash: "6f206482adcd45a2b0d8d3c8b85f53c6" + hash: "41c26e6a4c911f9ecd082c4d3366806b" } Key { type: 7 @@ -1638,7 +1638,7 @@ VisualTest { } Frame { msec: 4080 - hash: "6f206482adcd45a2b0d8d3c8b85f53c6" + hash: "41c26e6a4c911f9ecd082c4d3366806b" } Key { type: 6 @@ -1650,19 +1650,19 @@ VisualTest { } Frame { msec: 4096 - hash: "4685a786f36cb821a69b0ac059145a5f" + hash: "e212938ce981ed4e8d7a993468bc9377" } Frame { msec: 4112 - hash: "4685a786f36cb821a69b0ac059145a5f" + hash: "e212938ce981ed4e8d7a993468bc9377" } Frame { msec: 4128 - hash: "4685a786f36cb821a69b0ac059145a5f" + hash: "e212938ce981ed4e8d7a993468bc9377" } Frame { msec: 4144 - hash: "4685a786f36cb821a69b0ac059145a5f" + hash: "e212938ce981ed4e8d7a993468bc9377" } Key { type: 7 @@ -1674,15 +1674,15 @@ VisualTest { } Frame { msec: 4160 - hash: "4685a786f36cb821a69b0ac059145a5f" + hash: "e212938ce981ed4e8d7a993468bc9377" } Frame { msec: 4176 - hash: "4685a786f36cb821a69b0ac059145a5f" + hash: "e212938ce981ed4e8d7a993468bc9377" } Frame { msec: 4192 - hash: "4685a786f36cb821a69b0ac059145a5f" + hash: "e212938ce981ed4e8d7a993468bc9377" } Key { type: 6 @@ -1694,23 +1694,23 @@ VisualTest { } Frame { msec: 4208 - hash: "d0efb89ee3e2d2b18429b57dcfe13f33" + hash: "55df0528a97d77d0a4b513aeedd34440" } Frame { msec: 4224 - hash: "d0efb89ee3e2d2b18429b57dcfe13f33" + hash: "55df0528a97d77d0a4b513aeedd34440" } Frame { msec: 4240 - hash: "d0efb89ee3e2d2b18429b57dcfe13f33" + hash: "55df0528a97d77d0a4b513aeedd34440" } Frame { msec: 4256 - hash: "d0efb89ee3e2d2b18429b57dcfe13f33" + hash: "55df0528a97d77d0a4b513aeedd34440" } Frame { msec: 4272 - hash: "d0efb89ee3e2d2b18429b57dcfe13f33" + hash: "55df0528a97d77d0a4b513aeedd34440" } Key { type: 6 @@ -1722,7 +1722,7 @@ VisualTest { } Frame { msec: 4288 - hash: "cbe0bb714b2e9b63af978f666292d8f0" + hash: "2165091c97a891560bf3afab879e6dbc" } Key { type: 7 @@ -1734,15 +1734,15 @@ VisualTest { } Frame { msec: 4304 - hash: "cbe0bb714b2e9b63af978f666292d8f0" + hash: "2165091c97a891560bf3afab879e6dbc" } Frame { msec: 4320 - hash: "cbe0bb714b2e9b63af978f666292d8f0" + hash: "2165091c97a891560bf3afab879e6dbc" } Frame { msec: 4336 - hash: "cbe0bb714b2e9b63af978f666292d8f0" + hash: "2165091c97a891560bf3afab879e6dbc" } Key { type: 7 @@ -1754,23 +1754,23 @@ VisualTest { } Frame { msec: 4352 - hash: "cbe0bb714b2e9b63af978f666292d8f0" + hash: "2165091c97a891560bf3afab879e6dbc" } Frame { msec: 4368 - hash: "cbe0bb714b2e9b63af978f666292d8f0" + hash: "2165091c97a891560bf3afab879e6dbc" } Frame { msec: 4384 - hash: "cbe0bb714b2e9b63af978f666292d8f0" + hash: "2165091c97a891560bf3afab879e6dbc" } Frame { msec: 4400 - hash: "cbe0bb714b2e9b63af978f666292d8f0" + hash: "2165091c97a891560bf3afab879e6dbc" } Frame { msec: 4416 - hash: "cbe0bb714b2e9b63af978f666292d8f0" + hash: "2165091c97a891560bf3afab879e6dbc" } Key { type: 6 @@ -1782,15 +1782,15 @@ VisualTest { } Frame { msec: 4432 - hash: "d15a45a86874daaff5f2e6afae43b2f4" + hash: "a3d7968e13768c4ec538fe9ba7edf142" } Frame { msec: 4448 - hash: "d15a45a86874daaff5f2e6afae43b2f4" + hash: "a3d7968e13768c4ec538fe9ba7edf142" } Frame { msec: 4464 - hash: "d15a45a86874daaff5f2e6afae43b2f4" + hash: "a3d7968e13768c4ec538fe9ba7edf142" } Key { type: 7 @@ -1802,23 +1802,23 @@ VisualTest { } Frame { msec: 4480 - hash: "d15a45a86874daaff5f2e6afae43b2f4" + hash: "a3d7968e13768c4ec538fe9ba7edf142" } Frame { msec: 4496 - hash: "d15a45a86874daaff5f2e6afae43b2f4" + hash: "a3d7968e13768c4ec538fe9ba7edf142" } Frame { msec: 4512 - hash: "d15a45a86874daaff5f2e6afae43b2f4" + hash: "a3d7968e13768c4ec538fe9ba7edf142" } Frame { msec: 4528 - hash: "d15a45a86874daaff5f2e6afae43b2f4" + hash: "a3d7968e13768c4ec538fe9ba7edf142" } Frame { msec: 4544 - hash: "d15a45a86874daaff5f2e6afae43b2f4" + hash: "a3d7968e13768c4ec538fe9ba7edf142" } Key { type: 6 @@ -1830,19 +1830,19 @@ VisualTest { } Frame { msec: 4560 - hash: "b0c3ef9c5331af8768b23537d1d38311" + hash: "3b18ada8637d4024acfe88718765f71c" } Frame { msec: 4576 - hash: "b0c3ef9c5331af8768b23537d1d38311" + hash: "3b18ada8637d4024acfe88718765f71c" } Frame { msec: 4592 - hash: "b0c3ef9c5331af8768b23537d1d38311" + hash: "3b18ada8637d4024acfe88718765f71c" } Frame { msec: 4608 - hash: "b0c3ef9c5331af8768b23537d1d38311" + hash: "3b18ada8637d4024acfe88718765f71c" } Key { type: 7 @@ -1854,19 +1854,19 @@ VisualTest { } Frame { msec: 4624 - hash: "b0c3ef9c5331af8768b23537d1d38311" + hash: "3b18ada8637d4024acfe88718765f71c" } Frame { msec: 4640 - hash: "b0c3ef9c5331af8768b23537d1d38311" + hash: "3b18ada8637d4024acfe88718765f71c" } Frame { msec: 4656 - hash: "b0c3ef9c5331af8768b23537d1d38311" + hash: "3b18ada8637d4024acfe88718765f71c" } Frame { msec: 4672 - hash: "b0c3ef9c5331af8768b23537d1d38311" + hash: "3b18ada8637d4024acfe88718765f71c" } Key { type: 6 @@ -1878,19 +1878,19 @@ VisualTest { } Frame { msec: 4688 - hash: "3be1d2faec1ab5d3d1ab72c25db95059" + hash: "c419775870b0c5e41b5156c840e6a298" } Frame { msec: 4704 - hash: "3be1d2faec1ab5d3d1ab72c25db95059" + hash: "c419775870b0c5e41b5156c840e6a298" } Frame { msec: 4720 - hash: "3be1d2faec1ab5d3d1ab72c25db95059" + hash: "c419775870b0c5e41b5156c840e6a298" } Frame { msec: 4736 - hash: "3be1d2faec1ab5d3d1ab72c25db95059" + hash: "c419775870b0c5e41b5156c840e6a298" } Key { type: 7 @@ -1902,15 +1902,15 @@ VisualTest { } Frame { msec: 4752 - hash: "3be1d2faec1ab5d3d1ab72c25db95059" + hash: "c419775870b0c5e41b5156c840e6a298" } Frame { msec: 4768 - hash: "3be1d2faec1ab5d3d1ab72c25db95059" + hash: "c419775870b0c5e41b5156c840e6a298" } Frame { msec: 4784 - hash: "3be1d2faec1ab5d3d1ab72c25db95059" + hash: "c419775870b0c5e41b5156c840e6a298" } Key { type: 6 @@ -1922,7 +1922,7 @@ VisualTest { } Frame { msec: 4800 - hash: "db999862fcf827930098b3f129ff567f" + hash: "81a744f02650728c7557a27c94056e64" } Frame { msec: 4816 @@ -1938,19 +1938,19 @@ VisualTest { } Frame { msec: 4832 - hash: "db999862fcf827930098b3f129ff567f" + hash: "81a744f02650728c7557a27c94056e64" } Frame { msec: 4848 - hash: "db999862fcf827930098b3f129ff567f" + hash: "81a744f02650728c7557a27c94056e64" } Frame { msec: 4864 - hash: "db999862fcf827930098b3f129ff567f" + hash: "81a744f02650728c7557a27c94056e64" } Frame { msec: 4880 - hash: "db999862fcf827930098b3f129ff567f" + hash: "81a744f02650728c7557a27c94056e64" } Key { type: 6 @@ -1962,19 +1962,19 @@ VisualTest { } Frame { msec: 4896 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 4912 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 4928 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 4944 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Key { type: 7 @@ -1986,207 +1986,207 @@ VisualTest { } Frame { msec: 4960 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 4976 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 4992 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5008 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5024 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5040 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5056 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5072 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5088 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5104 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5120 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5136 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5152 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5168 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5184 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5200 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5216 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5232 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5248 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5264 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5280 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5296 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5312 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5328 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5344 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5360 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5376 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5392 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5408 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5424 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5440 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5456 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5472 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5488 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5504 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5520 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5536 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5552 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5568 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5584 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5600 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5616 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5632 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5648 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5664 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5680 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5696 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5712 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5728 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5744 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5760 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5776 @@ -2194,239 +2194,239 @@ VisualTest { } Frame { msec: 5792 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5808 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5824 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5840 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5856 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5872 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5888 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5904 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5920 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5936 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5952 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5968 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 5984 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6000 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6016 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6032 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6048 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6064 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6080 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6096 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6112 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6128 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6144 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6160 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6176 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6192 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6208 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6224 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6240 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6256 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6272 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6288 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6304 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6320 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6336 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6352 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6368 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6384 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6400 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6416 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6432 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6448 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6464 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6480 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6496 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6512 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6528 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6544 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6560 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6576 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6592 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6608 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6624 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6640 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6656 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6672 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6688 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6704 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6720 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6736 @@ -2434,34 +2434,34 @@ VisualTest { } Frame { msec: 6752 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6768 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6784 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6800 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6816 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6832 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6848 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } Frame { msec: 6864 - hash: "6557c4982e2c23d0ef5ec8a594df7277" + hash: "ed1520bf20159e60c6a75bbf07f3a6ee" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.png Binary files differindex 05dd690..060be22 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.png Binary files differindex eb74cc5..d373aef 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.2.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.3.png Binary files differindex 3aed06c..5dad108 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.3.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml index 2de4a10..6081aaf 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml @@ -110,23 +110,23 @@ VisualTest { } Frame { msec: 368 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 384 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 400 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 416 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 432 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Key { type: 7 @@ -138,27 +138,27 @@ VisualTest { } Frame { msec: 448 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 464 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 480 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 496 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 512 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 528 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Key { type: 7 @@ -170,43 +170,43 @@ VisualTest { } Frame { msec: 544 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 560 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 576 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 592 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 608 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 624 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 640 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 656 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 672 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Frame { msec: 688 - hash: "bc06530170cf26690a09ed9f6c4014fd" + hash: "593867b082681c362d7dffda12615284" } Key { type: 6 @@ -218,23 +218,23 @@ VisualTest { } Frame { msec: 704 - hash: "8c64a986ce7bd19dcc88785309456f4e" + hash: "8d4a4baca932c318fba437b05962a635" } Frame { msec: 720 - hash: "8c64a986ce7bd19dcc88785309456f4e" + hash: "8d4a4baca932c318fba437b05962a635" } Frame { msec: 736 - hash: "8c64a986ce7bd19dcc88785309456f4e" + hash: "8d4a4baca932c318fba437b05962a635" } Frame { msec: 752 - hash: "8c64a986ce7bd19dcc88785309456f4e" + hash: "8d4a4baca932c318fba437b05962a635" } Frame { msec: 768 - hash: "8c64a986ce7bd19dcc88785309456f4e" + hash: "8d4a4baca932c318fba437b05962a635" } Key { type: 7 @@ -246,23 +246,23 @@ VisualTest { } Frame { msec: 784 - hash: "8c64a986ce7bd19dcc88785309456f4e" + hash: "8d4a4baca932c318fba437b05962a635" } Frame { msec: 800 - hash: "8c64a986ce7bd19dcc88785309456f4e" + hash: "8d4a4baca932c318fba437b05962a635" } Frame { msec: 816 - hash: "8c64a986ce7bd19dcc88785309456f4e" + hash: "8d4a4baca932c318fba437b05962a635" } Frame { msec: 832 - hash: "8c64a986ce7bd19dcc88785309456f4e" + hash: "8d4a4baca932c318fba437b05962a635" } Frame { msec: 848 - hash: "8c64a986ce7bd19dcc88785309456f4e" + hash: "8d4a4baca932c318fba437b05962a635" } Key { type: 6 @@ -274,15 +274,15 @@ VisualTest { } Frame { msec: 864 - hash: "4cfca8edcb96b1d9986db4ee491bf857" + hash: "b2698dba3a5ebe80e26f273b32857506" } Frame { msec: 880 - hash: "4cfca8edcb96b1d9986db4ee491bf857" + hash: "b2698dba3a5ebe80e26f273b32857506" } Frame { msec: 896 - hash: "4cfca8edcb96b1d9986db4ee491bf857" + hash: "b2698dba3a5ebe80e26f273b32857506" } Key { type: 7 @@ -294,19 +294,19 @@ VisualTest { } Frame { msec: 912 - hash: "4cfca8edcb96b1d9986db4ee491bf857" + hash: "b2698dba3a5ebe80e26f273b32857506" } Frame { msec: 928 - hash: "4cfca8edcb96b1d9986db4ee491bf857" + hash: "b2698dba3a5ebe80e26f273b32857506" } Frame { msec: 944 - hash: "4cfca8edcb96b1d9986db4ee491bf857" + hash: "b2698dba3a5ebe80e26f273b32857506" } Frame { msec: 960 - hash: "4cfca8edcb96b1d9986db4ee491bf857" + hash: "b2698dba3a5ebe80e26f273b32857506" } Frame { msec: 976 @@ -322,19 +322,19 @@ VisualTest { } Frame { msec: 992 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1008 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1024 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1040 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Key { type: 7 @@ -346,51 +346,51 @@ VisualTest { } Frame { msec: 1056 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1072 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1088 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1104 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1120 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1136 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1152 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1168 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1184 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1200 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1216 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Frame { msec: 1232 - hash: "3d25316ea23ace5a88dbe8765b743eb3" + hash: "3ea06a90d633d5e9fe5a11cc4ed67764" } Key { type: 6 @@ -402,15 +402,15 @@ VisualTest { } Frame { msec: 1248 - hash: "fea82a32ec46a88027cc9b0c00aa0aba" + hash: "a190bbf59ec807391077b9d1183f72b5" } Frame { msec: 1264 - hash: "fea82a32ec46a88027cc9b0c00aa0aba" + hash: "a190bbf59ec807391077b9d1183f72b5" } Frame { msec: 1280 - hash: "fea82a32ec46a88027cc9b0c00aa0aba" + hash: "a190bbf59ec807391077b9d1183f72b5" } Key { type: 7 @@ -422,15 +422,15 @@ VisualTest { } Frame { msec: 1296 - hash: "fea82a32ec46a88027cc9b0c00aa0aba" + hash: "a190bbf59ec807391077b9d1183f72b5" } Frame { msec: 1312 - hash: "fea82a32ec46a88027cc9b0c00aa0aba" + hash: "a190bbf59ec807391077b9d1183f72b5" } Frame { msec: 1328 - hash: "fea82a32ec46a88027cc9b0c00aa0aba" + hash: "a190bbf59ec807391077b9d1183f72b5" } Key { type: 6 @@ -442,39 +442,39 @@ VisualTest { } Frame { msec: 1344 - hash: "fffa6f462ea15fe3bdbf2c199881fce4" + hash: "f171a98a3a726b517ad4b401a0720ba2" } Frame { msec: 1360 - hash: "fffa6f462ea15fe3bdbf2c199881fce4" + hash: "f171a98a3a726b517ad4b401a0720ba2" } Frame { msec: 1376 - hash: "fffa6f462ea15fe3bdbf2c199881fce4" + hash: "f171a98a3a726b517ad4b401a0720ba2" } Frame { msec: 1392 - hash: "fffa6f462ea15fe3bdbf2c199881fce4" + hash: "f171a98a3a726b517ad4b401a0720ba2" } Frame { msec: 1408 - hash: "fffa6f462ea15fe3bdbf2c199881fce4" + hash: "f171a98a3a726b517ad4b401a0720ba2" } Frame { msec: 1424 - hash: "fffa6f462ea15fe3bdbf2c199881fce4" + hash: "f171a98a3a726b517ad4b401a0720ba2" } Frame { msec: 1440 - hash: "fffa6f462ea15fe3bdbf2c199881fce4" + hash: "f171a98a3a726b517ad4b401a0720ba2" } Frame { msec: 1456 - hash: "fffa6f462ea15fe3bdbf2c199881fce4" + hash: "f171a98a3a726b517ad4b401a0720ba2" } Frame { msec: 1472 - hash: "fffa6f462ea15fe3bdbf2c199881fce4" + hash: "f171a98a3a726b517ad4b401a0720ba2" } Key { type: 7 @@ -486,7 +486,7 @@ VisualTest { } Frame { msec: 1488 - hash: "fffa6f462ea15fe3bdbf2c199881fce4" + hash: "f171a98a3a726b517ad4b401a0720ba2" } Key { type: 6 @@ -498,19 +498,19 @@ VisualTest { } Frame { msec: 1504 - hash: "d874584748e4aa14fd71730aa36d676c" + hash: "e7199e4284be9dea34caff7bde0f6303" } Frame { msec: 1520 - hash: "d874584748e4aa14fd71730aa36d676c" + hash: "e7199e4284be9dea34caff7bde0f6303" } Frame { msec: 1536 - hash: "d874584748e4aa14fd71730aa36d676c" + hash: "e7199e4284be9dea34caff7bde0f6303" } Frame { msec: 1552 - hash: "d874584748e4aa14fd71730aa36d676c" + hash: "e7199e4284be9dea34caff7bde0f6303" } Key { type: 7 @@ -522,27 +522,27 @@ VisualTest { } Frame { msec: 1568 - hash: "d874584748e4aa14fd71730aa36d676c" + hash: "e7199e4284be9dea34caff7bde0f6303" } Frame { msec: 1584 - hash: "d874584748e4aa14fd71730aa36d676c" + hash: "e7199e4284be9dea34caff7bde0f6303" } Frame { msec: 1600 - hash: "d874584748e4aa14fd71730aa36d676c" + hash: "e7199e4284be9dea34caff7bde0f6303" } Frame { msec: 1616 - hash: "d874584748e4aa14fd71730aa36d676c" + hash: "e7199e4284be9dea34caff7bde0f6303" } Frame { msec: 1632 - hash: "d874584748e4aa14fd71730aa36d676c" + hash: "e7199e4284be9dea34caff7bde0f6303" } Frame { msec: 1648 - hash: "d874584748e4aa14fd71730aa36d676c" + hash: "e7199e4284be9dea34caff7bde0f6303" } Key { type: 6 @@ -554,23 +554,23 @@ VisualTest { } Frame { msec: 1664 - hash: "5eac6452c3c01de25633be412b2c9fd6" + hash: "1d9d3c6435f2fa06bda16ef4a2ff238f" } Frame { msec: 1680 - hash: "5eac6452c3c01de25633be412b2c9fd6" + hash: "1d9d3c6435f2fa06bda16ef4a2ff238f" } Frame { msec: 1696 - hash: "5eac6452c3c01de25633be412b2c9fd6" + hash: "1d9d3c6435f2fa06bda16ef4a2ff238f" } Frame { msec: 1712 - hash: "5eac6452c3c01de25633be412b2c9fd6" + hash: "1d9d3c6435f2fa06bda16ef4a2ff238f" } Frame { msec: 1728 - hash: "5eac6452c3c01de25633be412b2c9fd6" + hash: "1d9d3c6435f2fa06bda16ef4a2ff238f" } Key { type: 6 @@ -582,7 +582,7 @@ VisualTest { } Frame { msec: 1744 - hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" + hash: "9d8cb02bbc4f39d38ccdf8e9bda0ed5c" } Key { type: 7 @@ -594,15 +594,15 @@ VisualTest { } Frame { msec: 1760 - hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" + hash: "9d8cb02bbc4f39d38ccdf8e9bda0ed5c" } Frame { msec: 1776 - hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" + hash: "9d8cb02bbc4f39d38ccdf8e9bda0ed5c" } Frame { msec: 1792 - hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" + hash: "9d8cb02bbc4f39d38ccdf8e9bda0ed5c" } Key { type: 7 @@ -614,19 +614,19 @@ VisualTest { } Frame { msec: 1808 - hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" + hash: "9d8cb02bbc4f39d38ccdf8e9bda0ed5c" } Frame { msec: 1824 - hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" + hash: "9d8cb02bbc4f39d38ccdf8e9bda0ed5c" } Frame { msec: 1840 - hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" + hash: "9d8cb02bbc4f39d38ccdf8e9bda0ed5c" } Frame { msec: 1856 - hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" + hash: "9d8cb02bbc4f39d38ccdf8e9bda0ed5c" } Key { type: 6 @@ -638,19 +638,19 @@ VisualTest { } Frame { msec: 1872 - hash: "4a31bba56f9adaccf47e6335ed4e284f" + hash: "2af75935ad1d3be02c6481c094737575" } Frame { msec: 1888 - hash: "4a31bba56f9adaccf47e6335ed4e284f" + hash: "2af75935ad1d3be02c6481c094737575" } Frame { msec: 1904 - hash: "4a31bba56f9adaccf47e6335ed4e284f" + hash: "2af75935ad1d3be02c6481c094737575" } Frame { msec: 1920 - hash: "4a31bba56f9adaccf47e6335ed4e284f" + hash: "2af75935ad1d3be02c6481c094737575" } Key { type: 7 @@ -666,23 +666,23 @@ VisualTest { } Frame { msec: 1952 - hash: "4a31bba56f9adaccf47e6335ed4e284f" + hash: "2af75935ad1d3be02c6481c094737575" } Frame { msec: 1968 - hash: "4a31bba56f9adaccf47e6335ed4e284f" + hash: "2af75935ad1d3be02c6481c094737575" } Frame { msec: 1984 - hash: "4a31bba56f9adaccf47e6335ed4e284f" + hash: "2af75935ad1d3be02c6481c094737575" } Frame { msec: 2000 - hash: "4a31bba56f9adaccf47e6335ed4e284f" + hash: "2af75935ad1d3be02c6481c094737575" } Frame { msec: 2016 - hash: "4a31bba56f9adaccf47e6335ed4e284f" + hash: "2af75935ad1d3be02c6481c094737575" } Key { type: 6 @@ -694,11 +694,11 @@ VisualTest { } Frame { msec: 2032 - hash: "8bbabbbe84de490438d1111aa728c15f" + hash: "c3512d6a7ead481aa6fec8ef8ee2f1d1" } Frame { msec: 2048 - hash: "8bbabbbe84de490438d1111aa728c15f" + hash: "c3512d6a7ead481aa6fec8ef8ee2f1d1" } Key { type: 7 @@ -710,11 +710,11 @@ VisualTest { } Frame { msec: 2064 - hash: "8bbabbbe84de490438d1111aa728c15f" + hash: "c3512d6a7ead481aa6fec8ef8ee2f1d1" } Frame { msec: 2080 - hash: "8bbabbbe84de490438d1111aa728c15f" + hash: "c3512d6a7ead481aa6fec8ef8ee2f1d1" } Key { type: 6 @@ -726,19 +726,19 @@ VisualTest { } Frame { msec: 2096 - hash: "5877f1d527fecaf1077ff5bd2fe1934f" + hash: "064e1fc885ab7f07dad1770361087bef" } Frame { msec: 2112 - hash: "5877f1d527fecaf1077ff5bd2fe1934f" + hash: "064e1fc885ab7f07dad1770361087bef" } Frame { msec: 2128 - hash: "5877f1d527fecaf1077ff5bd2fe1934f" + hash: "064e1fc885ab7f07dad1770361087bef" } Frame { msec: 2144 - hash: "5877f1d527fecaf1077ff5bd2fe1934f" + hash: "064e1fc885ab7f07dad1770361087bef" } Key { type: 6 @@ -758,19 +758,19 @@ VisualTest { } Frame { msec: 2160 - hash: "1593ef669fdff28c33f54c12c7e7424e" + hash: "9b764f6e9cc3d30446e1b32f7ab94f66" } Frame { msec: 2176 - hash: "1593ef669fdff28c33f54c12c7e7424e" + hash: "9b764f6e9cc3d30446e1b32f7ab94f66" } Frame { msec: 2192 - hash: "1593ef669fdff28c33f54c12c7e7424e" + hash: "9b764f6e9cc3d30446e1b32f7ab94f66" } Frame { msec: 2208 - hash: "1593ef669fdff28c33f54c12c7e7424e" + hash: "9b764f6e9cc3d30446e1b32f7ab94f66" } Key { type: 6 @@ -782,7 +782,7 @@ VisualTest { } Frame { msec: 2224 - hash: "da746581451954d7d941fbac825a1009" + hash: "18eff632e106f632aad481ab40f985d7" } Key { type: 7 @@ -794,23 +794,23 @@ VisualTest { } Frame { msec: 2240 - hash: "da746581451954d7d941fbac825a1009" + hash: "18eff632e106f632aad481ab40f985d7" } Frame { msec: 2256 - hash: "da746581451954d7d941fbac825a1009" + hash: "18eff632e106f632aad481ab40f985d7" } Frame { msec: 2272 - hash: "da746581451954d7d941fbac825a1009" + hash: "18eff632e106f632aad481ab40f985d7" } Frame { msec: 2288 - hash: "da746581451954d7d941fbac825a1009" + hash: "18eff632e106f632aad481ab40f985d7" } Frame { msec: 2304 - hash: "da746581451954d7d941fbac825a1009" + hash: "18eff632e106f632aad481ab40f985d7" } Key { type: 7 @@ -822,11 +822,11 @@ VisualTest { } Frame { msec: 2320 - hash: "da746581451954d7d941fbac825a1009" + hash: "18eff632e106f632aad481ab40f985d7" } Frame { msec: 2336 - hash: "da746581451954d7d941fbac825a1009" + hash: "18eff632e106f632aad481ab40f985d7" } Key { type: 6 @@ -838,27 +838,27 @@ VisualTest { } Frame { msec: 2352 - hash: "3e008b7ead8459c1667f4f385d4c5372" + hash: "eaabd4617081e3bc68a5b9099c63272a" } Frame { msec: 2368 - hash: "3e008b7ead8459c1667f4f385d4c5372" + hash: "eaabd4617081e3bc68a5b9099c63272a" } Frame { msec: 2384 - hash: "3e008b7ead8459c1667f4f385d4c5372" + hash: "eaabd4617081e3bc68a5b9099c63272a" } Frame { msec: 2400 - hash: "3e008b7ead8459c1667f4f385d4c5372" + hash: "eaabd4617081e3bc68a5b9099c63272a" } Frame { msec: 2416 - hash: "3e008b7ead8459c1667f4f385d4c5372" + hash: "eaabd4617081e3bc68a5b9099c63272a" } Frame { msec: 2432 - hash: "3e008b7ead8459c1667f4f385d4c5372" + hash: "eaabd4617081e3bc68a5b9099c63272a" } Key { type: 7 @@ -870,19 +870,19 @@ VisualTest { } Frame { msec: 2448 - hash: "3e008b7ead8459c1667f4f385d4c5372" + hash: "eaabd4617081e3bc68a5b9099c63272a" } Frame { msec: 2464 - hash: "3e008b7ead8459c1667f4f385d4c5372" + hash: "eaabd4617081e3bc68a5b9099c63272a" } Frame { msec: 2480 - hash: "3e008b7ead8459c1667f4f385d4c5372" + hash: "eaabd4617081e3bc68a5b9099c63272a" } Frame { msec: 2496 - hash: "3e008b7ead8459c1667f4f385d4c5372" + hash: "eaabd4617081e3bc68a5b9099c63272a" } Key { type: 6 @@ -894,15 +894,15 @@ VisualTest { } Frame { msec: 2512 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2528 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2544 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Key { type: 7 @@ -914,87 +914,87 @@ VisualTest { } Frame { msec: 2560 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2576 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2592 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2608 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2624 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2640 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2656 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2672 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2688 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2704 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2720 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2736 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2752 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2768 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2784 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2800 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2816 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2832 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2848 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2864 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2880 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2896 @@ -1002,42 +1002,42 @@ VisualTest { } Frame { msec: 2912 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2928 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2944 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2960 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2976 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 2992 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 3008 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 3024 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 3040 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } Frame { msec: 3056 - hash: "1dbc7e1ab58dcec8691ff4195b0d581c" + hash: "fec019ea87914d30b5bf4754ce8ba916" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.qml index a1a0821..fc8a115 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.qml @@ -379,7 +379,7 @@ VisualTest { Key { type: 6 key: 16777249 - modifiers: 67108864 + modifiers: 0 text: "" autorep: false count: 1 @@ -583,7 +583,7 @@ VisualTest { Key { type: 7 key: 16777249 - modifiers: 0 + modifiers: 67108864 text: "" autorep: false count: 1 @@ -783,7 +783,7 @@ VisualTest { Key { type: 6 key: 16777249 - modifiers: 67108864 + modifiers: 0 text: "" autorep: false count: 1 @@ -1175,7 +1175,7 @@ VisualTest { Key { type: 7 key: 16777249 - modifiers: 0 + modifiers: 67108864 text: "" autorep: false count: 1 @@ -1823,7 +1823,7 @@ VisualTest { Key { type: 6 key: 16777249 - modifiers: 67108864 + modifiers: 0 text: "" autorep: false count: 1 @@ -2327,7 +2327,7 @@ VisualTest { Key { type: 7 key: 16777249 - modifiers: 0 + modifiers: 67108864 text: "" autorep: false count: 1 diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.0.png Binary files differindex a6593c9..63b1779 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.1.png Binary files differindex 914f1b1..7924652 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.2.png Binary files differindex dd2b946..e77bfde 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.2.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.3.png Binary files differindex 629b84b..67d7e52 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.3.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.qml index 211ca68..ee29db6 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/echoMode.qml @@ -10,7 +10,7 @@ VisualTest { } Frame { msec: 32 - hash: "eff6a4491bc00e5570ea73a1371f63fc" + hash: "75bcecaf83ffc9b851894db0be2c02bc" } Key { type: 6 @@ -22,83 +22,83 @@ VisualTest { } Frame { msec: 48 - hash: "eff6a4491bc00e5570ea73a1371f63fc" + hash: "75bcecaf83ffc9b851894db0be2c02bc" } Frame { msec: 64 - hash: "eff6a4491bc00e5570ea73a1371f63fc" + hash: "75bcecaf83ffc9b851894db0be2c02bc" } Frame { msec: 80 - hash: "eff6a4491bc00e5570ea73a1371f63fc" + hash: "75bcecaf83ffc9b851894db0be2c02bc" } Frame { msec: 96 - hash: "eff6a4491bc00e5570ea73a1371f63fc" + hash: "75bcecaf83ffc9b851894db0be2c02bc" } Frame { msec: 112 - hash: "eff6a4491bc00e5570ea73a1371f63fc" + hash: "75bcecaf83ffc9b851894db0be2c02bc" } Frame { msec: 128 - hash: "eff6a4491bc00e5570ea73a1371f63fc" + hash: "75bcecaf83ffc9b851894db0be2c02bc" } Frame { msec: 144 - hash: "eff6a4491bc00e5570ea73a1371f63fc" + hash: "75bcecaf83ffc9b851894db0be2c02bc" } Frame { msec: 160 - hash: "eff6a4491bc00e5570ea73a1371f63fc" + hash: "75bcecaf83ffc9b851894db0be2c02bc" } Frame { msec: 176 - hash: "eff6a4491bc00e5570ea73a1371f63fc" + hash: "75bcecaf83ffc9b851894db0be2c02bc" } Frame { msec: 192 - hash: "eff6a4491bc00e5570ea73a1371f63fc" + hash: "75bcecaf83ffc9b851894db0be2c02bc" } Frame { msec: 208 - hash: "eff6a4491bc00e5570ea73a1371f63fc" + hash: "75bcecaf83ffc9b851894db0be2c02bc" } Frame { msec: 224 - hash: "eff6a4491bc00e5570ea73a1371f63fc" + hash: "75bcecaf83ffc9b851894db0be2c02bc" } Frame { msec: 240 - hash: "eff6a4491bc00e5570ea73a1371f63fc" + hash: "75bcecaf83ffc9b851894db0be2c02bc" } Frame { msec: 256 - hash: "eff6a4491bc00e5570ea73a1371f63fc" + hash: "75bcecaf83ffc9b851894db0be2c02bc" } Frame { msec: 272 - hash: "eff6a4491bc00e5570ea73a1371f63fc" + hash: "75bcecaf83ffc9b851894db0be2c02bc" } Frame { msec: 288 - hash: "eff6a4491bc00e5570ea73a1371f63fc" + hash: "75bcecaf83ffc9b851894db0be2c02bc" } Frame { msec: 304 - hash: "eff6a4491bc00e5570ea73a1371f63fc" + hash: "75bcecaf83ffc9b851894db0be2c02bc" } Frame { msec: 320 - hash: "eff6a4491bc00e5570ea73a1371f63fc" + hash: "75bcecaf83ffc9b851894db0be2c02bc" } Frame { msec: 336 - hash: "eff6a4491bc00e5570ea73a1371f63fc" + hash: "75bcecaf83ffc9b851894db0be2c02bc" } Frame { msec: 352 - hash: "eff6a4491bc00e5570ea73a1371f63fc" + hash: "75bcecaf83ffc9b851894db0be2c02bc" } Key { type: 6 @@ -110,23 +110,23 @@ VisualTest { } Frame { msec: 368 - hash: "00097f2bb5cf4ea412db48acb93ffd76" + hash: "1a9f4d47e3982ce68eee8446fd735487" } Frame { msec: 384 - hash: "00097f2bb5cf4ea412db48acb93ffd76" + hash: "1a9f4d47e3982ce68eee8446fd735487" } Frame { msec: 400 - hash: "00097f2bb5cf4ea412db48acb93ffd76" + hash: "1a9f4d47e3982ce68eee8446fd735487" } Frame { msec: 416 - hash: "00097f2bb5cf4ea412db48acb93ffd76" + hash: "1a9f4d47e3982ce68eee8446fd735487" } Frame { msec: 432 - hash: "00097f2bb5cf4ea412db48acb93ffd76" + hash: "1a9f4d47e3982ce68eee8446fd735487" } Key { type: 7 @@ -138,27 +138,27 @@ VisualTest { } Frame { msec: 448 - hash: "00097f2bb5cf4ea412db48acb93ffd76" + hash: "1a9f4d47e3982ce68eee8446fd735487" } Frame { msec: 464 - hash: "00097f2bb5cf4ea412db48acb93ffd76" + hash: "1a9f4d47e3982ce68eee8446fd735487" } Frame { msec: 480 - hash: "00097f2bb5cf4ea412db48acb93ffd76" + hash: "1a9f4d47e3982ce68eee8446fd735487" } Frame { msec: 496 - hash: "00097f2bb5cf4ea412db48acb93ffd76" + hash: "1a9f4d47e3982ce68eee8446fd735487" } Frame { msec: 512 - hash: "00097f2bb5cf4ea412db48acb93ffd76" + hash: "1a9f4d47e3982ce68eee8446fd735487" } Frame { msec: 528 - hash: "00097f2bb5cf4ea412db48acb93ffd76" + hash: "1a9f4d47e3982ce68eee8446fd735487" } Key { type: 7 @@ -170,43 +170,43 @@ VisualTest { } Frame { msec: 544 - hash: "00097f2bb5cf4ea412db48acb93ffd76" + hash: "1a9f4d47e3982ce68eee8446fd735487" } Frame { msec: 560 - hash: "00097f2bb5cf4ea412db48acb93ffd76" + hash: "1a9f4d47e3982ce68eee8446fd735487" } Frame { msec: 576 - hash: "00097f2bb5cf4ea412db48acb93ffd76" + hash: "1a9f4d47e3982ce68eee8446fd735487" } Frame { msec: 592 - hash: "00097f2bb5cf4ea412db48acb93ffd76" + hash: "1a9f4d47e3982ce68eee8446fd735487" } Frame { msec: 608 - hash: "00097f2bb5cf4ea412db48acb93ffd76" + hash: "1a9f4d47e3982ce68eee8446fd735487" } Frame { msec: 624 - hash: "00097f2bb5cf4ea412db48acb93ffd76" + hash: "1a9f4d47e3982ce68eee8446fd735487" } Frame { msec: 640 - hash: "00097f2bb5cf4ea412db48acb93ffd76" + hash: "1a9f4d47e3982ce68eee8446fd735487" } Frame { msec: 656 - hash: "00097f2bb5cf4ea412db48acb93ffd76" + hash: "1a9f4d47e3982ce68eee8446fd735487" } Frame { msec: 672 - hash: "00097f2bb5cf4ea412db48acb93ffd76" + hash: "1a9f4d47e3982ce68eee8446fd735487" } Frame { msec: 688 - hash: "00097f2bb5cf4ea412db48acb93ffd76" + hash: "1a9f4d47e3982ce68eee8446fd735487" } Key { type: 6 @@ -218,23 +218,23 @@ VisualTest { } Frame { msec: 704 - hash: "94e683223900efc840296b86ce934ec3" + hash: "9ab137169f2ea0f4b140a6e668f59ad2" } Frame { msec: 720 - hash: "94e683223900efc840296b86ce934ec3" + hash: "9ab137169f2ea0f4b140a6e668f59ad2" } Frame { msec: 736 - hash: "94e683223900efc840296b86ce934ec3" + hash: "9ab137169f2ea0f4b140a6e668f59ad2" } Frame { msec: 752 - hash: "94e683223900efc840296b86ce934ec3" + hash: "9ab137169f2ea0f4b140a6e668f59ad2" } Frame { msec: 768 - hash: "94e683223900efc840296b86ce934ec3" + hash: "9ab137169f2ea0f4b140a6e668f59ad2" } Key { type: 7 @@ -246,23 +246,23 @@ VisualTest { } Frame { msec: 784 - hash: "94e683223900efc840296b86ce934ec3" + hash: "9ab137169f2ea0f4b140a6e668f59ad2" } Frame { msec: 800 - hash: "94e683223900efc840296b86ce934ec3" + hash: "9ab137169f2ea0f4b140a6e668f59ad2" } Frame { msec: 816 - hash: "94e683223900efc840296b86ce934ec3" + hash: "9ab137169f2ea0f4b140a6e668f59ad2" } Frame { msec: 832 - hash: "94e683223900efc840296b86ce934ec3" + hash: "9ab137169f2ea0f4b140a6e668f59ad2" } Frame { msec: 848 - hash: "94e683223900efc840296b86ce934ec3" + hash: "9ab137169f2ea0f4b140a6e668f59ad2" } Key { type: 6 @@ -274,15 +274,15 @@ VisualTest { } Frame { msec: 864 - hash: "a1c7aeece2891f3ca0103761ffa7f424" + hash: "3080734a2da042b87ef9177cbb314835" } Frame { msec: 880 - hash: "a1c7aeece2891f3ca0103761ffa7f424" + hash: "3080734a2da042b87ef9177cbb314835" } Frame { msec: 896 - hash: "a1c7aeece2891f3ca0103761ffa7f424" + hash: "3080734a2da042b87ef9177cbb314835" } Key { type: 7 @@ -294,19 +294,19 @@ VisualTest { } Frame { msec: 912 - hash: "a1c7aeece2891f3ca0103761ffa7f424" + hash: "3080734a2da042b87ef9177cbb314835" } Frame { msec: 928 - hash: "a1c7aeece2891f3ca0103761ffa7f424" + hash: "3080734a2da042b87ef9177cbb314835" } Frame { msec: 944 - hash: "a1c7aeece2891f3ca0103761ffa7f424" + hash: "3080734a2da042b87ef9177cbb314835" } Frame { msec: 960 - hash: "a1c7aeece2891f3ca0103761ffa7f424" + hash: "3080734a2da042b87ef9177cbb314835" } Frame { msec: 976 @@ -322,19 +322,19 @@ VisualTest { } Frame { msec: 992 - hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75" + hash: "e591963b05361595383b1a60eec289cb" } Frame { msec: 1008 - hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75" + hash: "e591963b05361595383b1a60eec289cb" } Frame { msec: 1024 - hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75" + hash: "e591963b05361595383b1a60eec289cb" } Frame { msec: 1040 - hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75" + hash: "e591963b05361595383b1a60eec289cb" } Key { type: 7 @@ -346,51 +346,51 @@ VisualTest { } Frame { msec: 1056 - hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75" + hash: "e591963b05361595383b1a60eec289cb" } Frame { msec: 1072 - hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75" + hash: "e591963b05361595383b1a60eec289cb" } Frame { msec: 1088 - hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75" + hash: "e591963b05361595383b1a60eec289cb" } Frame { msec: 1104 - hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75" + hash: "e591963b05361595383b1a60eec289cb" } Frame { msec: 1120 - hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75" + hash: "e591963b05361595383b1a60eec289cb" } Frame { msec: 1136 - hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75" + hash: "e591963b05361595383b1a60eec289cb" } Frame { msec: 1152 - hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75" + hash: "e591963b05361595383b1a60eec289cb" } Frame { msec: 1168 - hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75" + hash: "e591963b05361595383b1a60eec289cb" } Frame { msec: 1184 - hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75" + hash: "e591963b05361595383b1a60eec289cb" } Frame { msec: 1200 - hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75" + hash: "e591963b05361595383b1a60eec289cb" } Frame { msec: 1216 - hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75" + hash: "e591963b05361595383b1a60eec289cb" } Frame { msec: 1232 - hash: "7a4ebe5f0875ded07b44c9ff2d6a4d75" + hash: "e591963b05361595383b1a60eec289cb" } Key { type: 6 @@ -402,15 +402,15 @@ VisualTest { } Frame { msec: 1248 - hash: "b7cdd294253e065c06fabc60895a29c2" + hash: "8a528bf3110bace8275f6fe33ce528b9" } Frame { msec: 1264 - hash: "b7cdd294253e065c06fabc60895a29c2" + hash: "8a528bf3110bace8275f6fe33ce528b9" } Frame { msec: 1280 - hash: "b7cdd294253e065c06fabc60895a29c2" + hash: "8a528bf3110bace8275f6fe33ce528b9" } Key { type: 7 @@ -422,15 +422,15 @@ VisualTest { } Frame { msec: 1296 - hash: "b7cdd294253e065c06fabc60895a29c2" + hash: "8a528bf3110bace8275f6fe33ce528b9" } Frame { msec: 1312 - hash: "b7cdd294253e065c06fabc60895a29c2" + hash: "8a528bf3110bace8275f6fe33ce528b9" } Frame { msec: 1328 - hash: "b7cdd294253e065c06fabc60895a29c2" + hash: "8a528bf3110bace8275f6fe33ce528b9" } Key { type: 6 @@ -442,39 +442,39 @@ VisualTest { } Frame { msec: 1344 - hash: "d8669a3194f485aaef3a1421f7fd50f6" + hash: "03d56caa0c86b5544d1f5148e0dccd92" } Frame { msec: 1360 - hash: "d8669a3194f485aaef3a1421f7fd50f6" + hash: "03d56caa0c86b5544d1f5148e0dccd92" } Frame { msec: 1376 - hash: "d8669a3194f485aaef3a1421f7fd50f6" + hash: "03d56caa0c86b5544d1f5148e0dccd92" } Frame { msec: 1392 - hash: "d8669a3194f485aaef3a1421f7fd50f6" + hash: "03d56caa0c86b5544d1f5148e0dccd92" } Frame { msec: 1408 - hash: "d8669a3194f485aaef3a1421f7fd50f6" + hash: "03d56caa0c86b5544d1f5148e0dccd92" } Frame { msec: 1424 - hash: "d8669a3194f485aaef3a1421f7fd50f6" + hash: "03d56caa0c86b5544d1f5148e0dccd92" } Frame { msec: 1440 - hash: "d8669a3194f485aaef3a1421f7fd50f6" + hash: "03d56caa0c86b5544d1f5148e0dccd92" } Frame { msec: 1456 - hash: "d8669a3194f485aaef3a1421f7fd50f6" + hash: "03d56caa0c86b5544d1f5148e0dccd92" } Frame { msec: 1472 - hash: "d8669a3194f485aaef3a1421f7fd50f6" + hash: "03d56caa0c86b5544d1f5148e0dccd92" } Key { type: 7 @@ -486,7 +486,7 @@ VisualTest { } Frame { msec: 1488 - hash: "d8669a3194f485aaef3a1421f7fd50f6" + hash: "03d56caa0c86b5544d1f5148e0dccd92" } Key { type: 6 @@ -498,19 +498,19 @@ VisualTest { } Frame { msec: 1504 - hash: "b53fd36f58dc692856e6a789371aaf33" + hash: "d9aac9ed4ca0ad97b440db3ac7384001" } Frame { msec: 1520 - hash: "b53fd36f58dc692856e6a789371aaf33" + hash: "d9aac9ed4ca0ad97b440db3ac7384001" } Frame { msec: 1536 - hash: "b53fd36f58dc692856e6a789371aaf33" + hash: "d9aac9ed4ca0ad97b440db3ac7384001" } Frame { msec: 1552 - hash: "b53fd36f58dc692856e6a789371aaf33" + hash: "d9aac9ed4ca0ad97b440db3ac7384001" } Key { type: 7 @@ -522,27 +522,27 @@ VisualTest { } Frame { msec: 1568 - hash: "b53fd36f58dc692856e6a789371aaf33" + hash: "d9aac9ed4ca0ad97b440db3ac7384001" } Frame { msec: 1584 - hash: "b53fd36f58dc692856e6a789371aaf33" + hash: "d9aac9ed4ca0ad97b440db3ac7384001" } Frame { msec: 1600 - hash: "b53fd36f58dc692856e6a789371aaf33" + hash: "d9aac9ed4ca0ad97b440db3ac7384001" } Frame { msec: 1616 - hash: "b53fd36f58dc692856e6a789371aaf33" + hash: "d9aac9ed4ca0ad97b440db3ac7384001" } Frame { msec: 1632 - hash: "b53fd36f58dc692856e6a789371aaf33" + hash: "d9aac9ed4ca0ad97b440db3ac7384001" } Frame { msec: 1648 - hash: "b53fd36f58dc692856e6a789371aaf33" + hash: "d9aac9ed4ca0ad97b440db3ac7384001" } Key { type: 6 @@ -554,23 +554,23 @@ VisualTest { } Frame { msec: 1664 - hash: "98de66666f6ea1a87bd493db3f67a7c6" + hash: "a2e8a6a742b11b4f30a2d75df14d5f47" } Frame { msec: 1680 - hash: "98de66666f6ea1a87bd493db3f67a7c6" + hash: "a2e8a6a742b11b4f30a2d75df14d5f47" } Frame { msec: 1696 - hash: "98de66666f6ea1a87bd493db3f67a7c6" + hash: "a2e8a6a742b11b4f30a2d75df14d5f47" } Frame { msec: 1712 - hash: "98de66666f6ea1a87bd493db3f67a7c6" + hash: "a2e8a6a742b11b4f30a2d75df14d5f47" } Frame { msec: 1728 - hash: "98de66666f6ea1a87bd493db3f67a7c6" + hash: "a2e8a6a742b11b4f30a2d75df14d5f47" } Key { type: 6 @@ -582,7 +582,7 @@ VisualTest { } Frame { msec: 1744 - hash: "696807419ef2b228dfb9d85dd79dd293" + hash: "021641e69fef4720acf6af15d4a2da82" } Key { type: 7 @@ -594,15 +594,15 @@ VisualTest { } Frame { msec: 1760 - hash: "696807419ef2b228dfb9d85dd79dd293" + hash: "021641e69fef4720acf6af15d4a2da82" } Frame { msec: 1776 - hash: "696807419ef2b228dfb9d85dd79dd293" + hash: "021641e69fef4720acf6af15d4a2da82" } Frame { msec: 1792 - hash: "696807419ef2b228dfb9d85dd79dd293" + hash: "021641e69fef4720acf6af15d4a2da82" } Key { type: 7 @@ -614,19 +614,19 @@ VisualTest { } Frame { msec: 1808 - hash: "696807419ef2b228dfb9d85dd79dd293" + hash: "021641e69fef4720acf6af15d4a2da82" } Frame { msec: 1824 - hash: "696807419ef2b228dfb9d85dd79dd293" + hash: "021641e69fef4720acf6af15d4a2da82" } Frame { msec: 1840 - hash: "696807419ef2b228dfb9d85dd79dd293" + hash: "021641e69fef4720acf6af15d4a2da82" } Frame { msec: 1856 - hash: "696807419ef2b228dfb9d85dd79dd293" + hash: "021641e69fef4720acf6af15d4a2da82" } Key { type: 6 @@ -638,19 +638,19 @@ VisualTest { } Frame { msec: 1872 - hash: "4c0a528609872cf65180d336bbca4231" + hash: "46ece14e3a61aefcb28b3c888ac7ea59" } Frame { msec: 1888 - hash: "4c0a528609872cf65180d336bbca4231" + hash: "46ece14e3a61aefcb28b3c888ac7ea59" } Frame { msec: 1904 - hash: "4c0a528609872cf65180d336bbca4231" + hash: "46ece14e3a61aefcb28b3c888ac7ea59" } Frame { msec: 1920 - hash: "4c0a528609872cf65180d336bbca4231" + hash: "46ece14e3a61aefcb28b3c888ac7ea59" } Key { type: 7 @@ -666,23 +666,23 @@ VisualTest { } Frame { msec: 1952 - hash: "4c0a528609872cf65180d336bbca4231" + hash: "46ece14e3a61aefcb28b3c888ac7ea59" } Frame { msec: 1968 - hash: "4c0a528609872cf65180d336bbca4231" + hash: "46ece14e3a61aefcb28b3c888ac7ea59" } Frame { msec: 1984 - hash: "4c0a528609872cf65180d336bbca4231" + hash: "46ece14e3a61aefcb28b3c888ac7ea59" } Frame { msec: 2000 - hash: "4c0a528609872cf65180d336bbca4231" + hash: "46ece14e3a61aefcb28b3c888ac7ea59" } Frame { msec: 2016 - hash: "4c0a528609872cf65180d336bbca4231" + hash: "46ece14e3a61aefcb28b3c888ac7ea59" } Key { type: 6 @@ -694,11 +694,11 @@ VisualTest { } Frame { msec: 2032 - hash: "03b670f413abfa1811d4020de969b2ea" + hash: "ffa55ac51f20c82725cadbb445908fd2" } Frame { msec: 2048 - hash: "03b670f413abfa1811d4020de969b2ea" + hash: "ffa55ac51f20c82725cadbb445908fd2" } Key { type: 7 @@ -710,11 +710,11 @@ VisualTest { } Frame { msec: 2064 - hash: "03b670f413abfa1811d4020de969b2ea" + hash: "ffa55ac51f20c82725cadbb445908fd2" } Frame { msec: 2080 - hash: "03b670f413abfa1811d4020de969b2ea" + hash: "ffa55ac51f20c82725cadbb445908fd2" } Key { type: 6 @@ -726,19 +726,19 @@ VisualTest { } Frame { msec: 2096 - hash: "6d478c62fa5bb37f0178e94914473174" + hash: "e9e2edb9176cb57506a3f130fca15d1e" } Frame { msec: 2112 - hash: "6d478c62fa5bb37f0178e94914473174" + hash: "e9e2edb9176cb57506a3f130fca15d1e" } Frame { msec: 2128 - hash: "6d478c62fa5bb37f0178e94914473174" + hash: "e9e2edb9176cb57506a3f130fca15d1e" } Frame { msec: 2144 - hash: "6d478c62fa5bb37f0178e94914473174" + hash: "e9e2edb9176cb57506a3f130fca15d1e" } Key { type: 6 @@ -758,19 +758,19 @@ VisualTest { } Frame { msec: 2160 - hash: "2f9803e906ce38a6ade3874bbeb27216" + hash: "87c3cf93b47a766d6373ecaec7239dd4" } Frame { msec: 2176 - hash: "2f9803e906ce38a6ade3874bbeb27216" + hash: "87c3cf93b47a766d6373ecaec7239dd4" } Frame { msec: 2192 - hash: "2f9803e906ce38a6ade3874bbeb27216" + hash: "87c3cf93b47a766d6373ecaec7239dd4" } Frame { msec: 2208 - hash: "2f9803e906ce38a6ade3874bbeb27216" + hash: "87c3cf93b47a766d6373ecaec7239dd4" } Key { type: 6 @@ -782,7 +782,7 @@ VisualTest { } Frame { msec: 2224 - hash: "d93582b0c7de46d5ff1c9959c158bfe7" + hash: "1fb4aa190807d169d1ceaff7d9fa92ad" } Key { type: 7 @@ -794,23 +794,23 @@ VisualTest { } Frame { msec: 2240 - hash: "d93582b0c7de46d5ff1c9959c158bfe7" + hash: "1fb4aa190807d169d1ceaff7d9fa92ad" } Frame { msec: 2256 - hash: "d93582b0c7de46d5ff1c9959c158bfe7" + hash: "1fb4aa190807d169d1ceaff7d9fa92ad" } Frame { msec: 2272 - hash: "d93582b0c7de46d5ff1c9959c158bfe7" + hash: "1fb4aa190807d169d1ceaff7d9fa92ad" } Frame { msec: 2288 - hash: "d93582b0c7de46d5ff1c9959c158bfe7" + hash: "1fb4aa190807d169d1ceaff7d9fa92ad" } Frame { msec: 2304 - hash: "d93582b0c7de46d5ff1c9959c158bfe7" + hash: "1fb4aa190807d169d1ceaff7d9fa92ad" } Key { type: 7 @@ -822,11 +822,11 @@ VisualTest { } Frame { msec: 2320 - hash: "d93582b0c7de46d5ff1c9959c158bfe7" + hash: "1fb4aa190807d169d1ceaff7d9fa92ad" } Frame { msec: 2336 - hash: "d93582b0c7de46d5ff1c9959c158bfe7" + hash: "1fb4aa190807d169d1ceaff7d9fa92ad" } Key { type: 6 @@ -838,27 +838,27 @@ VisualTest { } Frame { msec: 2352 - hash: "8accfa30ddc59803d8f9d2f60dd6a891" + hash: "e9cd789b114befb4637fcff39d4413b0" } Frame { msec: 2368 - hash: "8accfa30ddc59803d8f9d2f60dd6a891" + hash: "e9cd789b114befb4637fcff39d4413b0" } Frame { msec: 2384 - hash: "8accfa30ddc59803d8f9d2f60dd6a891" + hash: "e9cd789b114befb4637fcff39d4413b0" } Frame { msec: 2400 - hash: "8accfa30ddc59803d8f9d2f60dd6a891" + hash: "e9cd789b114befb4637fcff39d4413b0" } Frame { msec: 2416 - hash: "8accfa30ddc59803d8f9d2f60dd6a891" + hash: "e9cd789b114befb4637fcff39d4413b0" } Frame { msec: 2432 - hash: "8accfa30ddc59803d8f9d2f60dd6a891" + hash: "e9cd789b114befb4637fcff39d4413b0" } Key { type: 7 @@ -870,19 +870,19 @@ VisualTest { } Frame { msec: 2448 - hash: "8accfa30ddc59803d8f9d2f60dd6a891" + hash: "e9cd789b114befb4637fcff39d4413b0" } Frame { msec: 2464 - hash: "8accfa30ddc59803d8f9d2f60dd6a891" + hash: "e9cd789b114befb4637fcff39d4413b0" } Frame { msec: 2480 - hash: "8accfa30ddc59803d8f9d2f60dd6a891" + hash: "e9cd789b114befb4637fcff39d4413b0" } Frame { msec: 2496 - hash: "8accfa30ddc59803d8f9d2f60dd6a891" + hash: "e9cd789b114befb4637fcff39d4413b0" } Key { type: 6 @@ -894,15 +894,15 @@ VisualTest { } Frame { msec: 2512 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2528 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2544 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Key { type: 7 @@ -914,87 +914,87 @@ VisualTest { } Frame { msec: 2560 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2576 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2592 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2608 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2624 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2640 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2656 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2672 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2688 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2704 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2720 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2736 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2752 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2768 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2784 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2800 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2816 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2832 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2848 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2864 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2880 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2896 @@ -1002,42 +1002,42 @@ VisualTest { } Frame { msec: 2912 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2928 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2944 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2960 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2976 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 2992 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 3008 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 3024 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 3040 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } Frame { msec: 3056 - hash: "a444ce402f5dc0d892f66a88b8252301" + hash: "15f91fda9bcc8a2a9ebf3b9c32f61efb" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.0.png Binary files differindex a12db0a..4c04a1b 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.qml index acc646c..74ee95f 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-X11/hAlign.qml @@ -10,98 +10,98 @@ VisualTest { } Frame { msec: 32 - hash: "fe5a0e7ac7ea0796d8cf3e49b513669d" + hash: "93758371bdc69b81077989e911f62fb0" } Frame { msec: 48 - hash: "fe5a0e7ac7ea0796d8cf3e49b513669d" + hash: "93758371bdc69b81077989e911f62fb0" } Frame { msec: 64 - hash: "fe5a0e7ac7ea0796d8cf3e49b513669d" + hash: "93758371bdc69b81077989e911f62fb0" } Frame { msec: 80 - hash: "fe5a0e7ac7ea0796d8cf3e49b513669d" + hash: "93758371bdc69b81077989e911f62fb0" } Frame { msec: 96 - hash: "fe5a0e7ac7ea0796d8cf3e49b513669d" + hash: "93758371bdc69b81077989e911f62fb0" } Frame { msec: 112 - hash: "fe5a0e7ac7ea0796d8cf3e49b513669d" + hash: "93758371bdc69b81077989e911f62fb0" } Frame { msec: 128 - hash: "fe5a0e7ac7ea0796d8cf3e49b513669d" + hash: "93758371bdc69b81077989e911f62fb0" } Frame { msec: 144 - hash: "fe5a0e7ac7ea0796d8cf3e49b513669d" + hash: "93758371bdc69b81077989e911f62fb0" } Frame { msec: 160 - hash: "fe5a0e7ac7ea0796d8cf3e49b513669d" + hash: "93758371bdc69b81077989e911f62fb0" } Frame { msec: 176 - hash: "fe5a0e7ac7ea0796d8cf3e49b513669d" + hash: "93758371bdc69b81077989e911f62fb0" } Frame { msec: 192 - hash: "fe5a0e7ac7ea0796d8cf3e49b513669d" + hash: "93758371bdc69b81077989e911f62fb0" } Frame { msec: 208 - hash: "fe5a0e7ac7ea0796d8cf3e49b513669d" + hash: "93758371bdc69b81077989e911f62fb0" } Frame { msec: 224 - hash: "fe5a0e7ac7ea0796d8cf3e49b513669d" + hash: "93758371bdc69b81077989e911f62fb0" } Frame { msec: 240 - hash: "fe5a0e7ac7ea0796d8cf3e49b513669d" + hash: "93758371bdc69b81077989e911f62fb0" } Frame { msec: 256 - hash: "fe5a0e7ac7ea0796d8cf3e49b513669d" + hash: "93758371bdc69b81077989e911f62fb0" } Frame { msec: 272 - hash: "fe5a0e7ac7ea0796d8cf3e49b513669d" + hash: "93758371bdc69b81077989e911f62fb0" } Frame { msec: 288 - hash: "fe5a0e7ac7ea0796d8cf3e49b513669d" + hash: "93758371bdc69b81077989e911f62fb0" } Frame { msec: 304 - hash: "fe5a0e7ac7ea0796d8cf3e49b513669d" + hash: "93758371bdc69b81077989e911f62fb0" } Frame { msec: 320 - hash: "fe5a0e7ac7ea0796d8cf3e49b513669d" + hash: "93758371bdc69b81077989e911f62fb0" } Frame { msec: 336 - hash: "fe5a0e7ac7ea0796d8cf3e49b513669d" + hash: "93758371bdc69b81077989e911f62fb0" } Frame { msec: 352 - hash: "fe5a0e7ac7ea0796d8cf3e49b513669d" + hash: "93758371bdc69b81077989e911f62fb0" } Frame { msec: 368 - hash: "fe5a0e7ac7ea0796d8cf3e49b513669d" + hash: "93758371bdc69b81077989e911f62fb0" } Frame { msec: 384 - hash: "fe5a0e7ac7ea0796d8cf3e49b513669d" + hash: "93758371bdc69b81077989e911f62fb0" } Frame { msec: 400 - hash: "fe5a0e7ac7ea0796d8cf3e49b513669d" + hash: "93758371bdc69b81077989e911f62fb0" } } diff --git a/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp b/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp index 2a15102..3ca6d93 100644 --- a/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp +++ b/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp @@ -104,10 +104,11 @@ void tst_qmlvisual::visual_data() QStringList files; files << findQmlFiles(QDir(QT_TEST_SOURCE_DIR)); if (qgetenv("QMLVISUAL_ALL") != "1") { -#if defined(Q_WS_X11) - //Text on X11 varies per distro - and the CI system is currently using something outdated. - foreach(const QString &str, files.filter(QRegExp(".*text.*"))) - files.removeAll(str); +#if defined(Q_WS_MAC) + //Text on Mac varies per version. Only check the text on 10.6 + if(QSysInfo::MacintoshVersion != QSysInfo::MV_10_6) + foreach(const QString &str, files.filter(QRegExp(".*text.*"))) + files.removeAll(str); #endif #if defined(Q_WS_QWS) //We don't want QWS test results to mire down the CI system @@ -132,6 +133,9 @@ void tst_qmlvisual::visual() QFETCH(QString, testdata); QStringList arguments; +#ifdef Q_WS_MAC + arguments << "-no-opengl"; +#endif arguments << "-script" << testdata << "-scriptopts" << "play,testimages,testerror,testskip,exitoncomplete,exitonfailure" << file; @@ -141,9 +145,11 @@ void tst_qmlvisual::visual() QProcess p; p.start(qmlruntime, arguments); - QVERIFY(p.waitForFinished()); + bool finished = p.waitForFinished(); + QByteArray output = p.readAllStandardOutput() + p.readAllStandardError(); + QVERIFY2(finished, output.data()); if (p.exitCode() != 0) - qDebug() << p.readAllStandardError(); + qDebug() << output; QCOMPARE(p.exitStatus(), QProcess::NormalExit); QCOMPARE(p.exitCode(), 0); } @@ -233,6 +239,9 @@ void action(Mode mode, const QString &file) QString testdata = tst_qmlvisual::toTestScript(file,mode); QStringList arguments; +#ifdef Q_WS_MAC + arguments << "-no-opengl"; +#endif switch (mode) { case Test: // Don't run qml diff --git a/tests/auto/qabstractnetworkcache/tst_qabstractnetworkcache.cpp b/tests/auto/qabstractnetworkcache/tst_qabstractnetworkcache.cpp index 04bd432..fc8a126 100644 --- a/tests/auto/qabstractnetworkcache/tst_qabstractnetworkcache.cpp +++ b/tests/auto/qabstractnetworkcache/tst_qabstractnetworkcache.cpp @@ -58,20 +58,29 @@ public: private slots: void expires_data(); void expires(); + void expiresSynchronous_data(); + void expiresSynchronous(); void lastModified_data(); void lastModified(); + void lastModifiedSynchronous_data(); + void lastModifiedSynchronous(); void etag_data(); void etag(); + void etagSynchronous_data(); + void etagSynchronous(); void cacheControl_data(); void cacheControl(); + void cacheControlSynchronous_data(); + void cacheControlSynchronous(); void deleteCache(); private: void check(); + void checkSynchronous(); }; class NetworkDiskCache : public QNetworkDiskCache @@ -142,6 +151,16 @@ void tst_QAbstractNetworkCache::expires() check(); } +void tst_QAbstractNetworkCache::expiresSynchronous_data() +{ + expires_data(); +} + +void tst_QAbstractNetworkCache::expiresSynchronous() +{ + checkSynchronous(); +} + void tst_QAbstractNetworkCache::lastModified_data() { QTest::addColumn<QNetworkRequest::CacheLoadControl>("cacheLoadControl"); @@ -164,6 +183,16 @@ void tst_QAbstractNetworkCache::lastModified() check(); } +void tst_QAbstractNetworkCache::lastModifiedSynchronous_data() +{ + tst_QAbstractNetworkCache::lastModified_data(); +} + +void tst_QAbstractNetworkCache::lastModifiedSynchronous() +{ + checkSynchronous(); +} + void tst_QAbstractNetworkCache::etag_data() { QTest::addColumn<QNetworkRequest::CacheLoadControl>("cacheLoadControl"); @@ -186,6 +215,16 @@ void tst_QAbstractNetworkCache::etag() check(); } +void tst_QAbstractNetworkCache::etagSynchronous_data() +{ + tst_QAbstractNetworkCache::etag_data(); +} + +void tst_QAbstractNetworkCache::etagSynchronous() +{ + checkSynchronous(); +} + void tst_QAbstractNetworkCache::cacheControl_data() { QTest::addColumn<QNetworkRequest::CacheLoadControl>("cacheLoadControl"); @@ -217,6 +256,16 @@ void tst_QAbstractNetworkCache::cacheControl() check(); } +void tst_QAbstractNetworkCache::cacheControlSynchronous_data() +{ + tst_QAbstractNetworkCache::cacheControl_data(); +} + +void tst_QAbstractNetworkCache::cacheControlSynchronous() +{ + checkSynchronous(); +} + void tst_QAbstractNetworkCache::check() { QFETCH(QNetworkRequest::CacheLoadControl, cacheLoadControl); @@ -250,8 +299,6 @@ void tst_QAbstractNetworkCache::check() QCOMPARE(reply2->error(), QNetworkReply::ContentNotFoundError); QCOMPARE(secondData, QByteArray()); } else { - if (reply2->error() != QNetworkReply::NoError) - qDebug() << reply2->errorString(); QCOMPARE(reply2->error(), QNetworkReply::NoError); QCOMPARE(QString(secondData), QString(goodData)); QCOMPARE(secondData, goodData); @@ -263,16 +310,60 @@ void tst_QAbstractNetworkCache::check() QList<QByteArray> rawHeaderList2 = reply2->rawHeaderList(); qSort(rawHeaderList); qSort(rawHeaderList2); + } + QCOMPARE(diskCache->gotData, fetchFromCache); +} - // headers can change - for (int i = 0; i < rawHeaderList.count(); ++i) { - //qDebug() << i << rawHeaderList.value(i) << reply->rawHeader(rawHeaderList.value(i)); - //qDebug() << i << rawHeaderList2.value(i) << reply2->rawHeader(rawHeaderList2.value(i)); - //QCOMPARE(QString(rawHeaderList.value(i)), QString(rawHeaderList2.value(i))); - //QCOMPARE(QString(reply->rawHeader(rawHeaderList.value(i))), QString(reply2->rawHeader(rawHeaderList2.value(i)))); - } - //QCOMPARE(rawHeaderList.count(), rawHeaderList2.count()); +void tst_QAbstractNetworkCache::checkSynchronous() +{ + QSKIP("not working yet, see QTBUG-15221", SkipAll); + QFETCH(QNetworkRequest::CacheLoadControl, cacheLoadControl); + QFETCH(QString, url); + QFETCH(bool, fetchFromCache); + + QNetworkAccessManager manager; + NetworkDiskCache *diskCache = new NetworkDiskCache(&manager); + manager.setCache(diskCache); + QCOMPARE(diskCache->gotData, false); + + QUrl realUrl = url.contains("://") ? url : TESTFILE + url; + QNetworkRequest request(realUrl); + + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(QNetworkRequest::DownloadBufferAttribute + 1), + true); + + // prime the cache + QNetworkReply *reply = manager.get(request); + QVERIFY(reply->isFinished()); // synchronous + QCOMPARE(diskCache->gotData, false); + QByteArray goodData = reply->readAll(); + + request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, cacheLoadControl); + + // should be in the cache now + QNetworkReply *reply2 = manager.get(request); + QVERIFY(reply2->isFinished()); // synchronous + + QByteArray secondData = reply2->readAll(); + if (!fetchFromCache && cacheLoadControl == QNetworkRequest::AlwaysCache) { + QCOMPARE(reply2->error(), QNetworkReply::ContentNotFoundError); + QCOMPARE(secondData, QByteArray()); + } else { + if (reply2->error() != QNetworkReply::NoError) + qDebug() << reply2->errorString(); + QCOMPARE(reply2->error(), QNetworkReply::NoError); + QCOMPARE(QString(secondData), QString(goodData)); + QCOMPARE(secondData, goodData); + QCOMPARE(reply2->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); + } + + if (fetchFromCache) { + QList<QByteArray> rawHeaderList = reply->rawHeaderList(); + QList<QByteArray> rawHeaderList2 = reply2->rawHeaderList(); + qSort(rawHeaderList); + qSort(rawHeaderList2); } QCOMPARE(diskCache->gotData, fetchFromCache); } diff --git a/tests/auto/qdbusconnection/tst_qdbusconnection.cpp b/tests/auto/qdbusconnection/tst_qdbusconnection.cpp index 599abbd..4494d6f 100644 --- a/tests/auto/qdbusconnection/tst_qdbusconnection.cpp +++ b/tests/auto/qdbusconnection/tst_qdbusconnection.cpp @@ -106,6 +106,8 @@ private slots: void slotsWithLessParameters(); void nestedCallWithCallback(); + void serviceRegistrationRaceCondition(); + public: QString serviceName() const { return "com.trolltech.Qt.Autotests.QDBusConnection"; } bool callMethod(const QDBusConnection &conn, const QString &path); @@ -647,6 +649,73 @@ void tst_QDBusConnection::nestedCallWithCallback() QCOMPARE(signalsReceived, 1); } +class RaceConditionSignalWaiter : public QObject +{ + Q_OBJECT +public: + int count; + RaceConditionSignalWaiter() : count (0) {} + virtual ~RaceConditionSignalWaiter() {} + +public slots: + void countUp() { ++count; emit done(); } +signals: + void done(); +}; + +void tst_QDBusConnection::serviceRegistrationRaceCondition() +{ + // There was a race condition in the updating of list of name owners in + // QtDBus. When the user connects to a signal coming from a given + // service, we must listen for NameOwnerChanged signals relevant to that + // name and update when the owner changes. However, it's possible that we + // receive in one chunk from the server both the NameOwnerChanged signal + // about the service and the signal we're interested in. Since QtDBus + // posts events in order to handle the incoming signals, the update + // happens too late. + + const QString connectionName = "testConnectionName"; + const QString serviceName = "org.example.SecondaryName"; + + QDBusConnection session = QDBusConnection::sessionBus(); + QVERIFY(!session.interface()->isServiceRegistered(serviceName)); + + // connect to the signal: + RaceConditionSignalWaiter recv; + session.connect(serviceName, "/", "com.trolltech.TestCase", "oneSignal", &recv, SLOT(countUp())); + + // create a secondary connection and register a name + QDBusConnection connection = QDBusConnection::connectToBus(QDBusConnection::SessionBus, connectionName); + QDBusConnection::disconnectFromBus(connectionName); // disconnection happens when "connection" goes out of scope + QVERIFY(connection.isConnected()); + QVERIFY(connection.registerService(serviceName)); + + // send a signal + QDBusMessage msg = QDBusMessage::createSignal("/", "com.trolltech.TestCase", "oneSignal"); + connection.send(msg); + + // make a blocking call just to be sure that the buffer was flushed + msg = QDBusMessage::createMethodCall("org.freedesktop.DBus", "/org/freedesktop/DBus", "org.freedesktop.DBus", + "NameHasOwner"); + msg << connectionName; + connection.call(msg); // ignore result + + // Now here's the race condition (more info on task QTBUG-15651): + // the bus has most likely queued three signals for us to work on: + // 1) NameOwnerChanged for the connection we created above + // 2) NameOwnerChanged for the service we registered above + // 3) The "oneSignal" signal we sent + // + // We'll most likely receive all three in one go from the server. We must + // update the owner of serviceName before we start processing the + // "oneSignal" signal. + + QTestEventLoop::instance().connect(&recv, SIGNAL(done()), SLOT(exitLoop())); + QTestEventLoop::instance().enterLoop(1); + QVERIFY(!QTestEventLoop::instance().timeout()); + QCOMPARE(recv.count, 1); +} + QString MyObject::path; QTEST_MAIN(tst_QDBusConnection) diff --git a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp index fff7f66..ebdc3e2 100644 --- a/tests/auto/qnetworkreply/tst_qnetworkreply.cpp +++ b/tests/auto/qnetworkreply/tst_qnetworkreply.cpp @@ -84,6 +84,8 @@ Q_DECLARE_METATYPE(QList<QNetworkProxy>) Q_DECLARE_METATYPE(QNetworkReply::NetworkError) Q_DECLARE_METATYPE(QBuffer*) +const int SynchronousRequestAttribute = QNetworkRequest::DownloadBufferAttribute + 1; + class QNetworkReplyPtr: public QSharedPointer<QNetworkReply> { public: @@ -108,6 +110,16 @@ class tst_QNetworkReply: public QObject bool requiresAuthentication; }; + static bool seedCreated; + static QString createUniqueExtension() { + if (!seedCreated) { + qsrand(QTime(0,0,0).msecsTo(QTime::currentTime()) + QCoreApplication::applicationPid()); + seedCreated = true; // not thread-safe, but who cares + } + QString s = QString("%1-%2-%3").arg(QTime(0,0,0).msecsTo(QTime::currentTime())).arg(QCoreApplication::applicationPid()).arg(qrand()); + return s; + }; + QEventLoop *loop; enum RunSimpleRequestReturn { Timeout = 0, Success, Failure }; int returnCode; @@ -173,8 +185,12 @@ private Q_SLOTS: void putToFtp(); void putToHttp_data(); void putToHttp(); + void putToHttpSynchronous_data(); + void putToHttpSynchronous(); void postToHttp_data(); void postToHttp(); + void postToHttpSynchronous_data(); + void postToHttpSynchronous(); void deleteFromHttp_data(); void deleteFromHttp(); void putGetDeleteGetFromHttp_data(); @@ -198,7 +214,9 @@ private Q_SLOTS: void ioGetFromHttpWithReuseParallel(); void ioGetFromHttpWithReuseSequential(); void ioGetFromHttpWithAuth(); + void ioGetFromHttpWithAuthSynchronous(); void ioGetFromHttpWithProxyAuth(); + void ioGetFromHttpWithProxyAuthSynchronous(); void ioGetFromHttpWithSocksProxy(); #ifndef QT_NO_OPENSSL void ioGetFromHttpsWithSslErrors(); @@ -233,6 +251,8 @@ private Q_SLOTS: void ioPostToHttpFromFile(); void ioPostToHttpFromSocket_data(); void ioPostToHttpFromSocket(); + void ioPostToHttpFromSocketSynchronous(); + void ioPostToHttpFromSocketSynchronous_data(); void ioPostToHttpFromMiddleOfFileToEnd(); void ioPostToHttpFromMiddleOfFileFiveBytes(); void ioPostToHttpFromMiddleOfQBufferFiveBytes(); @@ -258,13 +278,19 @@ private Q_SLOTS: void receiveCookiesFromHttp_data(); void receiveCookiesFromHttp(); + void receiveCookiesFromHttpSynchronous_data(); + void receiveCookiesFromHttpSynchronous(); void sendCookies_data(); void sendCookies(); + void sendCookiesSynchronous_data(); + void sendCookiesSynchronous(); void nestedEventLoops(); void httpProxyCommands_data(); void httpProxyCommands(); + void httpProxyCommandsSynchronous_data(); + void httpProxyCommandsSynchronous(); void proxyChange(); void authorizationError_data(); void authorizationError(); @@ -311,12 +337,18 @@ private Q_SLOTS: void qtbug15311doubleContentLength(); + void synchronousRequest_data(); + void synchronousRequest(); + void synchronousRequestSslFailure(); + // NOTE: This test must be last! void parentingRepliesToTheApp(); }; QT_BEGIN_NAMESPACE +bool tst_QNetworkReply::seedCreated = false; + namespace QTest { template<> char *toString(const QNetworkReply::NetworkError& code) @@ -923,14 +955,15 @@ protected: tst_QNetworkReply::tst_QNetworkReply() { + qRegisterMetaType<QNetworkReply *>(); // for QSignalSpy + qRegisterMetaType<QAuthenticator *>(); + qRegisterMetaType<QNetworkProxy>(); + qRegisterMetaType<QList<QSslError> >(); + Q_SET_DEFAULT_IAP testFileName = QDir::currentPath() + "/testfile"; -#ifndef Q_OS_WINCE - uniqueExtension = QString("%1%2%3").arg((qulonglong)this).arg(rand()).arg((qulonglong)time(0)); -#else - uniqueExtension = QString("%1%2").arg((qulonglong)this).arg(rand()); -#endif + uniqueExtension = createUniqueExtension(); cookieJar = new MyCookieJar; manager.setCookieJar(cookieJar); @@ -1017,15 +1050,25 @@ QString tst_QNetworkReply::runSimpleRequest(QNetworkAccessManager::Operation op, Q_ASSERT_X(false, "tst_QNetworkReply", "Invalid/unknown operation requested"); } reply->setParent(this); - connect(reply, SIGNAL(finished()), SLOT(finished())); - connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(gotError())); returnCode = Timeout; - loop = new QEventLoop; - QTimer::singleShot(20000, loop, SLOT(quit())); - int code = returnCode == Timeout ? loop->exec() : returnCode; - delete loop; - loop = 0; + int code = Success; + + if (request.attribute(static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute)).toBool()) { + if (reply->isFinished()) + code = reply->error() != QNetworkReply::NoError ? Failure : Success; + else + code = Failure; + } else { + connect(reply, SIGNAL(finished()), SLOT(finished())); + connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), SLOT(gotError())); + + loop = new QEventLoop; + QTimer::singleShot(20000, loop, SLOT(quit())); + code = returnCode == Timeout ? loop->exec() : returnCode; + delete loop; + loop = 0; + } switch (code) { case Failure: @@ -1506,6 +1549,9 @@ void tst_QNetworkReply::putToFile_data() data = QByteArray(128*1024+1, '\177'); QTest::newRow("128k+1") << data << md5sum(data); + + data = QByteArray(2*1024*1024+1, '\177'); + QTest::newRow("2MB+1") << data << md5sum(data); } void tst_QNetworkReply::putToFile() @@ -1612,6 +1658,47 @@ void tst_QNetworkReply::putToHttp() QCOMPARE(uploadedData, data); } +void tst_QNetworkReply::putToHttpSynchronous_data() +{ + uniqueExtension = createUniqueExtension(); + putToFile_data(); +} + +void tst_QNetworkReply::putToHttpSynchronous() +{ + QUrl url("http://" + QtNetworkSettings::serverName()); + url.setPath(QString("/dav/qnetworkaccess-putToHttp-%1-%2") + .arg(QTest::currentDataTag()) + .arg(uniqueExtension)); + + QNetworkRequest request(url); + QNetworkReplyPtr reply; + + QFETCH(QByteArray, data); + + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute), + true); + + RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PutOperation, request, reply, data)); + + QCOMPARE(reply->url(), url); + QCOMPARE(reply->error(), QNetworkReply::NoError); + + QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 201); // 201 Created + + // download the file again from HTTP to make sure it was uploaded + // correctly. HTTP/0.9 is enough + QTcpSocket socket; + socket.connectToHost(QtNetworkSettings::serverName(), 80); + socket.write("GET " + url.toEncoded(QUrl::RemoveScheme | QUrl::RemoveAuthority) + "\r\n"); + if (!socket.waitForDisconnected(10000)) + QFAIL("Network timeout"); + + QByteArray uploadedData = socket.readAll(); + QCOMPARE(uploadedData, data); +} + void tst_QNetworkReply::postToHttp_data() { putToFile_data(); @@ -1638,6 +1725,37 @@ void tst_QNetworkReply::postToHttp() QCOMPARE(uploadedData, md5sum.toHex()); } +void tst_QNetworkReply::postToHttpSynchronous_data() +{ + putToFile_data(); +} + +void tst_QNetworkReply::postToHttpSynchronous() +{ + QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/md5sum.cgi"); + + QNetworkRequest request(url); + + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute), + true); + + QNetworkReplyPtr reply; + + QFETCH(QByteArray, data); + + RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PostOperation, request, reply, data)); + + QCOMPARE(reply->url(), url); + QCOMPARE(reply->error(), QNetworkReply::NoError); + + QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok + + QFETCH(QByteArray, md5sum); + QByteArray uploadedData = reply->readAll().trimmed(); + QCOMPARE(uploadedData, md5sum.toHex()); +} + void tst_QNetworkReply::deleteFromHttp_data() { QTest::addColumn<QUrl>("url"); @@ -2062,9 +2180,6 @@ void tst_QNetworkReply::ioGetFromHttpWithReuseSequential() void tst_QNetworkReply::ioGetFromHttpWithAuth() { - qRegisterMetaType<QNetworkReply *>(); // for QSignalSpy - qRegisterMetaType<QAuthenticator *>(); - // This test sends three requests // The first two in parallel // The third after the first two finished @@ -2123,6 +2238,44 @@ void tst_QNetworkReply::ioGetFromHttpWithAuth() QCOMPARE(authspy.count(), 0); } + + // now check with synchronous calls: + reference.seek(0); + { + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute), + true); + + QSignalSpy authspy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*))); + QNetworkReplyPtr replySync = manager.get(request); + QVERIFY(replySync->isFinished()); // synchronous + QCOMPARE(authspy.count(), 0); + + // we cannot use a data reader here, since that connects to the readyRead signal, + // just use readAll() + + // the only thing we check here is that the auth cache was used when using synchronous requests + QCOMPARE(replySync->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); + QCOMPARE(replySync->readAll(), reference.readAll()); + } +} + +void tst_QNetworkReply::ioGetFromHttpWithAuthSynchronous() +{ + // verify that we do not enter an endless loop with synchronous calls and wrong credentials + // the case when we succed with the login is tested in ioGetFromHttpWithAuth() + + QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfcs-auth/rfc3252.txt")); + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute), + true); + + QSignalSpy authspy(&manager, SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*))); + QNetworkReplyPtr replySync = manager.get(request); + QVERIFY(replySync->isFinished()); // synchronous + QCOMPARE(replySync->error(), QNetworkReply::AuthenticationRequiredError); + QCOMPARE(authspy.count(), 0); + QCOMPARE(replySync->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 401); } void tst_QNetworkReply::ioGetFromHttpWithProxyAuth() @@ -2194,6 +2347,47 @@ void tst_QNetworkReply::ioGetFromHttpWithProxyAuth() QCOMPARE(authspy.count(), 0); } + + // now check with synchronous calls: + reference.seek(0); + { + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute), + true); + + QSignalSpy authspy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*))); + QNetworkReplyPtr replySync = manager.get(request); + QVERIFY(replySync->isFinished()); // synchronous + QCOMPARE(authspy.count(), 0); + + // we cannot use a data reader here, since that connects to the readyRead signal, + // just use readAll() + + // the only thing we check here is that the proxy auth cache was used when using synchronous requests + QCOMPARE(replySync->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); + QCOMPARE(replySync->readAll(), reference.readAll()); + } +} + +void tst_QNetworkReply::ioGetFromHttpWithProxyAuthSynchronous() +{ + // verify that we do not enter an endless loop with synchronous calls and wrong credentials + // the case when we succed with the login is tested in ioGetFromHttpWithAuth() + + QNetworkProxy proxy(QNetworkProxy::HttpCachingProxy, QtNetworkSettings::serverName(), 3129); + QNetworkRequest request(QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt")); + manager.setProxy(proxy); + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute), + true); + + QSignalSpy authspy(&manager, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*))); + QNetworkReplyPtr replySync = manager.get(request); + manager.setProxy(QNetworkProxy()); // reset + QVERIFY(replySync->isFinished()); // synchronous + QCOMPARE(replySync->error(), QNetworkReply::ProxyAuthenticationRequiredError); + QCOMPARE(authspy.count(), 0); + QCOMPARE(replySync->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 407); } void tst_QNetworkReply::ioGetFromHttpWithSocksProxy() @@ -3252,7 +3446,67 @@ void tst_QNetworkReply::ioPostToHttpFromSocket() QTEST(authenticationRequiredSpy.count(), "authenticationRequiredCount"); QTEST(proxyAuthenticationRequiredSpy.count(), "proxyAuthenticationRequiredCount"); - } +} + +void tst_QNetworkReply::ioPostToHttpFromSocketSynchronous_data() +{ + QTest::addColumn<QByteArray>("data"); + QTest::addColumn<QByteArray>("md5sum"); + + QByteArray data; + data = ""; + QTest::newRow("empty") << data << md5sum(data); + + data = "This is a normal message."; + QTest::newRow("generic") << data << md5sum(data); + + data = "This is a message to show that Qt rocks!\r\n\n"; + QTest::newRow("small") << data << md5sum(data); + + data = QByteArray("abcd\0\1\2\abcd",12); + QTest::newRow("with-nul") << data << md5sum(data); + + data = QByteArray(4097, '\4'); + QTest::newRow("4k+1") << data << md5sum(data); + + data = QByteArray(128*1024+1, '\177'); + QTest::newRow("128k+1") << data << md5sum(data); + + data = QByteArray(2*1024*1024+1, '\177'); + QTest::newRow("2MB+1") << data << md5sum(data); +} + +void tst_QNetworkReply::ioPostToHttpFromSocketSynchronous() +{ + QFETCH(QByteArray, data); + + SocketPair socketpair; + QVERIFY(socketpair.create()); + QVERIFY(socketpair.endPoints[0] && socketpair.endPoints[1]); + socketpair.endPoints[0]->write(data); + socketpair.endPoints[0]->waitForBytesWritten(5000); + // ### for 4.8: make the socket pair unbuffered, to not read everything in one go in QNetworkReplyImplPrivate::setup() + QTestEventLoop::instance().enterLoop(3); + + QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/md5sum.cgi"); + QNetworkRequest request(url); + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute), + true); + + QNetworkReplyPtr reply = manager.post(request, socketpair.endPoints[1]); + QVERIFY(reply->isFinished()); + socketpair.endPoints[0]->close(); + + QCOMPARE(reply->error(), QNetworkReply::NoError); + + QCOMPARE(reply->url(), url); + QCOMPARE(reply->error(), QNetworkReply::NoError); + // verify that the HTTP status code is 200 Ok + QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); + + QCOMPARE(reply->readAll().trimmed(), md5sum(data).toHex()); +} // this tests checks if rewinding the POST-data to some place in the middle // worked. @@ -3995,6 +4249,38 @@ void tst_QNetworkReply::receiveCookiesFromHttp() QTEST(cookieJar->allCookies(), "expectedCookiesInJar"); } +void tst_QNetworkReply::receiveCookiesFromHttpSynchronous_data() +{ + tst_QNetworkReply::receiveCookiesFromHttp_data(); +} + +void tst_QNetworkReply::receiveCookiesFromHttpSynchronous() +{ + QFETCH(QString, cookieString); + + QByteArray data = cookieString.toLatin1() + '\n'; + QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/set-cookie.cgi"); + + QNetworkRequest request(url); + + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute), + true); + + QNetworkReplyPtr reply; + RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::PostOperation, request, reply, data)); + + QCOMPARE(reply->url(), url); + QCOMPARE(reply->error(), QNetworkReply::NoError); + + QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok + + QList<QNetworkCookie> setCookies = + qvariant_cast<QList<QNetworkCookie> >(reply->header(QNetworkRequest::SetCookieHeader)); + QTEST(setCookies, "expectedCookiesFromHttp"); + QTEST(cookieJar->allCookies(), "expectedCookiesInJar"); +} + void tst_QNetworkReply::sendCookies_data() { QTest::addColumn<QList<QNetworkCookie> >("cookiesToSet"); @@ -4055,6 +4341,35 @@ void tst_QNetworkReply::sendCookies() QCOMPARE(QString::fromLatin1(reply->readAll()).trimmed(), expectedCookieString); } +void tst_QNetworkReply::sendCookiesSynchronous_data() +{ + tst_QNetworkReply::sendCookies_data(); +} + +void tst_QNetworkReply::sendCookiesSynchronous() +{ + QFETCH(QString, expectedCookieString); + QFETCH(QList<QNetworkCookie>, cookiesToSet); + cookieJar->setAllCookies(cookiesToSet); + + QUrl url("http://" + QtNetworkSettings::serverName() + "/qtest/cgi-bin/get-cookie.cgi"); + QNetworkRequest request(url); + + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute), + true); + + QNetworkReplyPtr reply; + RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply)); + + QCOMPARE(reply->url(), url); + QCOMPARE(reply->error(), QNetworkReply::NoError); + + QCOMPARE(reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(), 200); // 200 Ok + + QCOMPARE(QString::fromLatin1(reply->readAll()).trimmed(), expectedCookieString); +} + void tst_QNetworkReply::nestedEventLoops_slot() { QEventLoop subloop; @@ -4158,6 +4473,50 @@ private: int signalCount; }; +void tst_QNetworkReply::httpProxyCommandsSynchronous_data() +{ + httpProxyCommands_data(); +} + +void tst_QNetworkReply::httpProxyCommandsSynchronous() +{ + QFETCH(QUrl, url); + QFETCH(QByteArray, responseToSend); + QFETCH(QString, expectedCommand); + + // when using synchronous commands, we need a different event loop for + // the server thread, because the client is never returning to the + // event loop + MiniHttpServer proxyServer(responseToSend); + QThread serverThread; + proxyServer.moveToThread(&serverThread); + serverThread.start(); + QNetworkProxy proxy(QNetworkProxy::HttpProxy, "127.0.0.1", proxyServer.serverPort()); + + manager.setProxy(proxy); + QNetworkRequest request(url); + + // send synchronous request + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute), + true); + + QNetworkReplyPtr reply = manager.get(request); + QVERIFY(reply->isFinished()); // synchronous + manager.setProxy(QNetworkProxy()); + serverThread.quit(); + serverThread.wait(3000); + + //qDebug() << reply->error() << reply->errorString(); + + // we don't really care if the request succeeded + // especially since it won't succeed in the HTTPS case + // so just check that the command was correct + + QString receivedHeader = proxyServer.receivedData.left(expectedCommand.length()); + QCOMPARE(receivedHeader, expectedCommand); +} + void tst_QNetworkReply::proxyChange() { ProxyChangeHelper helper; @@ -5018,7 +5377,122 @@ void tst_QNetworkReply::qtbug15311doubleContentLength() QCOMPARE(reply->readAll(), QByteArray("ABC")); } +void tst_QNetworkReply::synchronousRequest_data() +{ + QTest::addColumn<QUrl>("url"); + QTest::addColumn<QString>("expected"); + QTest::addColumn<bool>("checkContentLength"); + QTest::addColumn<QString>("mimeType"); + + // ### cache, auth, proxies + + QTest::newRow("http") + << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt") + << QString("file:" SRCDIR "/rfc3252.txt") + << true + << QString("text/plain"); + + QTest::newRow("http-gzip") + << QUrl("http://" + QtNetworkSettings::serverName() + "/qtest/deflate/rfc3252.txt") + << QString("file:" SRCDIR "/rfc3252.txt") + << false // don't check content length, because it's gzip encoded + // ### we would need to enflate (un-deflate) the file content and compare the sizes + << QString("text/plain"); + +#ifndef QT_NO_OPENSSL + QTest::newRow("https") + << QUrl("https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt") + << QString("file:" SRCDIR "/rfc3252.txt") + << true + << QString("text/plain"); +#endif + + QTest::newRow("data") + << QUrl(QString::fromLatin1("data:text/plain,hello world")) + << QString("data:hello world") + << true // check content length + << QString("text/plain"); + + QTest::newRow("simple-file") + << QUrl(QString::fromLatin1("file:///" SRCDIR "/rfc3252.txt")) + << QString("file:" SRCDIR "/rfc3252.txt") + << true + << QString(); +} + +// FIXME add testcase for failing network etc +void tst_QNetworkReply::synchronousRequest() +{ + QFETCH(QUrl, url); + QFETCH(QString, expected); + QFETCH(bool, checkContentLength); + QFETCH(QString, mimeType); + + QNetworkRequest request(url); + +#ifndef QT_NO_OPENSSL + // workaround for HTTPS requests: add self-signed server cert to list of CA certs, + // since we cannot react to the sslErrors() signal + // to fix this properly we would need to have an ignoreSslErrors() method in the + // QNetworkRequest, see http://bugreports.qt.nokia.com/browse/QTBUG-14774 + if (url.scheme() == "https") { + QSslConfiguration sslConf; + QList<QSslCertificate> certs = QSslCertificate::fromPath(SRCDIR "/certs/qt-test-server-cacert.pem"); + sslConf.setCaCertificates(certs); + request.setSslConfiguration(sslConf); + } +#endif + + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute), + true); + + QNetworkReplyPtr reply; + QSignalSpy finishedSpy(&manager, SIGNAL(finished(QNetworkReply*))); + QSignalSpy sslErrorsSpy(&manager, SIGNAL(sslErrors(QNetworkReply*,QList<QSslError>))); + RUN_REQUEST(runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply, 0)); + QVERIFY(reply->isFinished()); + QCOMPARE(finishedSpy.count(), 0); + QCOMPARE(sslErrorsSpy.count(), 0); + + QCOMPARE(reply->header(QNetworkRequest::ContentTypeHeader).toString(), mimeType); + + QByteArray expectedContent; + + if (expected.startsWith("file:")) { + QString path = expected.mid(5); + QFile file(path); + file.open(QIODevice::ReadOnly); + expectedContent = file.readAll(); + } else if (expected.startsWith("data:")) { + expectedContent = expected.mid(5).toUtf8(); + } + + if (checkContentLength) + QCOMPARE(reply->header(QNetworkRequest::ContentLengthHeader).toLongLong(), qint64(expectedContent.size())); + QCOMPARE(reply->readAll(), expectedContent); + + reply->deleteLater(); +} + +void tst_QNetworkReply::synchronousRequestSslFailure() +{ + // test that SSL won't be accepted with self-signed certificate, + // and that we do not emit the sslError signal (in the manager that is, + // in the reply we don't care) + QUrl url("https://" + QtNetworkSettings::serverName() + "/qtest/rfc3252.txt"); + QNetworkRequest request(url); + request.setAttribute( + static_cast<QNetworkRequest::Attribute>(SynchronousRequestAttribute), + true); + QNetworkReplyPtr reply; + QSignalSpy sslErrorsSpy(&manager, SIGNAL(sslErrors(QNetworkReply *, const QList<QSslError> &))); + runSimpleRequest(QNetworkAccessManager::GetOperation, request, reply, 0); + QVERIFY(reply->isFinished()); + QCOMPARE(reply->error(), QNetworkReply::SslHandshakeFailedError); + QCOMPARE(sslErrorsSpy.count(), 0); +} // NOTE: This test must be last testcase in tst_qnetworkreply! void tst_QNetworkReply::parentingRepliesToTheApp() diff --git a/tests/auto/qsharedpointer/tst_qsharedpointer.cpp b/tests/auto/qsharedpointer/tst_qsharedpointer.cpp index 5e624e4..d285ccd 100644 --- a/tests/auto/qsharedpointer/tst_qsharedpointer.cpp +++ b/tests/auto/qsharedpointer/tst_qsharedpointer.cpp @@ -283,8 +283,8 @@ void tst_QSharedPointer::operators() QSharedPointer<char> p1; QSharedPointer<char> p2(new char); qptrdiff diff = p2.data() - p1.data(); - Q_ASSERT(p1.data() < p2.data()); - Q_ASSERT(diff > 0); + Q_ASSERT(p1.data() != p2.data()); + Q_ASSERT(diff != 0); // operator- QCOMPARE(p2 - p1.data(), diff); diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index 479fd4c..b22e05f 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -739,6 +739,23 @@ void Configure::parseCmdLine() } else if (configCmdLine.at(i) == "-opengl-es-2") { dictionary[ "OPENGL" ] = "yes"; dictionary[ "OPENGL_ES_2" ] = "yes"; + } else if (configCmdLine.at(i) == "-opengl") { + dictionary[ "OPENGL" ] = "yes"; + i++; + if (i == argCount) + break; + + if (configCmdLine.at(i) == "es1") { + dictionary[ "OPENGL_ES_CM" ] = "yes"; + } else if ( configCmdLine.at(i) == "es2" ) { + dictionary[ "OPENGL_ES_2" ] = "yes"; + } else if ( configCmdLine.at(i) == "desktop" ) { + dictionary[ "OPENGL_ES_2" ] = "yes"; + } else { + cout << "Argument passed to -opengl option is not valid." << endl; + dictionary[ "DONE" ] = "error"; + break; + } } // OpenVG Support ------------------------------------------- @@ -1733,6 +1750,11 @@ bool Configure::displayHelp() desc("QT3SUPPORT", "no","-no-qt3support", "Disables the Qt 3 support functionality.\n"); desc("OPENGL", "no","-no-opengl", "Disables OpenGL functionality\n"); + desc("OPENGL", "no","-opengl <api>", "Enable OpenGL support with specified API version.\n" + "Available values for <api>:"); + desc("", "", "", " desktop - Enable support for Desktop OpenGL", ' '); + desc("OPENGL_ES_CM", "no", "", " es1 - Enable support for OpenGL ES Common Profile", ' '); + desc("OPENGL_ES_2", "no", "", " es2 - Enable support for OpenGL ES 2.0", ' '); desc("OPENVG", "no","-no-openvg", "Disables OpenVG functionality\n"); desc("OPENVG", "yes","-openvg", "Enables OpenVG functionality"); @@ -1892,8 +1914,7 @@ bool Configure::displayHelp() desc("CETEST", "no", "-no-cetest", "Do not compile Windows CE remote test application"); desc("CETEST", "yes", "-cetest", "Compile Windows CE remote test application"); desc( "-signature <file>", "Use file for signing the target project"); - desc("OPENGL_ES_CM", "no", "-opengl-es-cm", "Enable support for OpenGL ES Common"); - desc("OPENGL_ES_2", "no", "-opengl-es-2", "Enable support for OpenGL ES 2.0"); + desc("DIRECTSHOW", "no", "-phonon-wince-ds9", "Enable Phonon Direct Show 9 backend for Windows CE"); // Qt\Symbian only options go below here ----------------------------------------------------------------------------- @@ -2483,15 +2504,11 @@ void Configure::generateOutputVars() qtConfig += "no-gif"; else if (dictionary[ "GIF" ] == "yes") qtConfig += "gif"; - else if (dictionary[ "GIF" ] == "plugin") - qmakeFormatPlugins += "gif"; if (dictionary[ "TIFF" ] == "no") qtConfig += "no-tiff"; else if (dictionary[ "TIFF" ] == "yes") qtConfig += "tiff"; - else if (dictionary[ "TIFF" ] == "plugin") - qmakeFormatPlugins += "tiff"; if (dictionary[ "LIBTIFF" ] == "system") qtConfig += "system-tiff"; @@ -2499,8 +2516,6 @@ void Configure::generateOutputVars() qtConfig += "no-jpeg"; else if (dictionary[ "JPEG" ] == "yes") qtConfig += "jpeg"; - else if (dictionary[ "JPEG" ] == "plugin") - qmakeFormatPlugins += "jpeg"; if (dictionary[ "LIBJPEG" ] == "system") qtConfig += "system-jpeg"; @@ -2819,8 +2834,6 @@ void Configure::generateOutputVars() qmakeVars += QString("styles += ") + qmakeStyles.join(" "); if (!qmakeStylePlugins.isEmpty()) qmakeVars += QString("style-plugins += ") + qmakeStylePlugins.join(" "); - if (!qmakeFormatPlugins.isEmpty()) - qmakeVars += QString("imageformat-plugins += ") + qmakeFormatPlugins.join(" "); if (dictionary["QMAKESPEC"].endsWith("-g++")) { QString includepath = qgetenv("INCLUDE"); @@ -3426,7 +3439,7 @@ void Configure::displayConfig() QString webkit = dictionary[ "WEBKIT" ]; if (webkit == "debug") webkit = "yes (debug)"; - cout << "WebKit support.............." << webkit; + cout << "WebKit support.............." << webkit << endl; } cout << "Declarative support........." << dictionary[ "DECLARATIVE" ] << endl; cout << "Declarative debugging......." << dictionary[ "DECLARATIVE_DEBUG" ] << endl; diff --git a/tools/configure/configureapp.h b/tools/configure/configureapp.h index b3c07f7..32d1860 100644 --- a/tools/configure/configureapp.h +++ b/tools/configure/configureapp.h @@ -122,8 +122,6 @@ private: QStringList qmakeStyles; QStringList qmakeStylePlugins; - QStringList qmakeFormatPlugins; - QStringList qmakeVars; QStringList qmakeDefines; // makeList[0] for qt and qtmain diff --git a/tools/qml/browser/Browser.qml b/tools/qml/browser/Browser.qml index ebed72f..b9573da 100644 --- a/tools/qml/browser/Browser.qml +++ b/tools/qml/browser/Browser.qml @@ -180,7 +180,7 @@ Rectangle { GradientStop { id: t1; position: 0.0; color: palette.highlight } GradientStop { id: t2; position: 1.0; color: Qt.lighter(palette.highlight) } } - width: view1.currentItem.width + width: view1.currentItem == null ? 0 : view1.currentItem.width } highlightMoveSpeed: 1000 pressDelay: 100 @@ -230,7 +230,7 @@ Rectangle { GradientStop { id: t1; position: 0.0; color: palette.highlight } GradientStop { id: t2; position: 1.0; color: Qt.lighter(palette.highlight) } } - width: view1.currentItem.width + width: view1.currentItem == null ? 0 : view1.currentItem.width } highlightMoveSpeed: 1000 pressDelay: 100 diff --git a/tools/qml/qdeclarativetester.cpp b/tools/qml/qdeclarativetester.cpp index a516fd7..e3a1f59 100644 --- a/tools/qml/qdeclarativetester.cpp +++ b/tools/qml/qdeclarativetester.cpp @@ -274,7 +274,16 @@ void QDeclarativeTester::updateCurrentTime(int msec) if (options & QDeclarativeViewer::TestImages) { img.fill(qRgb(255,255,255)); + +#ifdef Q_WS_MAC + bool oldSmooth = qt_applefontsmoothing_enabled; + qt_applefontsmoothing_enabled = false; +#endif QPainter p(&img); +#ifdef Q_WS_MAC + qt_applefontsmoothing_enabled = oldSmooth; +#endif + m_view->render(&p); } diff --git a/tools/qml/qmlruntime.cpp b/tools/qml/qmlruntime.cpp index 7ea77d1..a368bc1 100644 --- a/tools/qml/qmlruntime.cpp +++ b/tools/qml/qmlruntime.cpp @@ -1520,7 +1520,7 @@ void QDeclarativeViewer::updateSizeHints(bool initial) //qWarning() << "USH: R2V: setting free size "; layout()->setSizeConstraint(QLayout::SetNoConstraint); layout()->activate(); - setMinimumSize(QSize(1,1)); + setMinimumSize(minimumSizeHint()); setMaximumSize(QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX)); canvas->setMinimumSize(QSize(0,0)); canvas->setMaximumSize(QSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX)); diff --git a/tools/shared/windows/registry.cpp b/tools/shared/windows/registry.cpp index 48e9ae6..f520910 100644 --- a/tools/shared/windows/registry.cpp +++ b/tools/shared/windows/registry.cpp @@ -157,6 +157,9 @@ QString qt_readRegistryKey(HKEY parentHandle, const QString &rSubkey) } RegCloseKey(handle); +#else + Q_UNUSED(parentHandle); + Q_UNUSED(rSubkey) #endif return result; |