diff options
author | João Abecasis <joao.abecasis@nokia.com> | 2010-12-02 12:13:07 (GMT) |
---|---|---|
committer | João Abecasis <joao.abecasis@nokia.com> | 2010-12-02 12:13:07 (GMT) |
commit | 655bae506d4d2743ed016c78a767afa2150057a9 (patch) | |
tree | 9ccc2b4a56792616a2c48045faa9bd7081126167 | |
parent | 16252a59afa58b0cb4b0ffb02a330dcf002c9750 (diff) | |
parent | f6f8ba94d5f82b8df723a217a3d0ecb50e570cbc (diff) | |
download | Qt-655bae506d4d2743ed016c78a767afa2150057a9.zip Qt-655bae506d4d2743ed016c78a767afa2150057a9.tar.gz Qt-655bae506d4d2743ed016c78a767afa2150057a9.tar.bz2 |
Merge remote branch 'origin/master' into file-engine-refactor
master's version of conflicting def files picked.
Conflicts:
src/s60installs/bwins/QtCoreu.def
src/s60installs/bwins/QtGuiu.def
src/s60installs/bwins/QtNetworku.def
src/s60installs/eabi/QtCoreu.def
src/s60installs/eabi/QtGuiu.def
384 files changed, 24094 insertions, 7206 deletions
@@ -247,3 +247,5 @@ qtc-debugging-helper src/corelib/lib src/network/lib src/xml/lib/ + +.pc/ diff --git a/bin/elf2e32_qtwrapper.pl b/bin/elf2e32_qtwrapper.pl index 4eeb098..d91be14 100755 --- a/bin/elf2e32_qtwrapper.pl +++ b/bin/elf2e32_qtwrapper.pl @@ -1,4 +1,44 @@ #!/usr/bin/perl -w +############################################################################# +## +## 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 utilities of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:LGPL$ +## 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 Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 2.1 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 2.1 requirements +## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +## +## In addition, as a special exception, Nokia gives you certain additional +## rights. These rights are described in the Nokia Qt LGPL Exception +## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +## +## If you have questions regarding the use of this file, please contact +## Nokia at qt-info@nokia.com. +## +## +## +## +## +## +## +## +## $QT_END_LICENSE$ +## +############################################################################# # A script to get around some shortcomings in elf2e32, namely: # - Returning 0 even when there are errors. diff --git a/bin/patch_capabilities.pl b/bin/patch_capabilities.pl index 5230480..994d493 100755 --- a/bin/patch_capabilities.pl +++ b/bin/patch_capabilities.pl @@ -78,7 +78,7 @@ sub trim($) { my $nullDevice = "/dev/null"; $nullDevice = "NUL" if ($^O =~ /MSWin/); -my @capabilitiesToAllow = ("LocalServices", "NetworkServices", "ReadUserData", "UserEnvironment", "WriteUserData"); +my @capabilitiesToAllow = ("LocalServices", "NetworkServices", "ReadUserData", "UserEnvironment", "WriteUserData", "Location"); my @capabilitiesSpecified = (); # If arguments were given to the script, @@ -301,6 +301,9 @@ if (@ARGV) $_ = trim($_); 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"); + } } else { push(@capabilitiesToDrop, $_); } @@ -319,6 +322,7 @@ if (@ARGV) # 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); } else { print ("Patching: The following capabilities used in \"$binaryBaseName\" are not compatible with a self-signed package and will be removed: \"$capsToDropStr\".\n"); @@ -634,12 +634,14 @@ fi # initalize variables #------------------------------------------------------------------------------- -SYSTEM_VARIABLES="CC CXX CFLAGS CXXFLAGS LDFLAGS" +SYSTEM_VARIABLES="RANLIB STRIP OBJDUMP LD CC CXX CFLAGS CXXFLAGS LDFLAGS" for varname in $SYSTEM_VARIABLES; do qmakevarname="${varname}" # use LDFLAGS for autoconf compat, but qmake uses QMAKE_LFLAGS if [ "${varname}" = "LDFLAGS" ]; then qmakevarname="LFLAGS" + elif [ "${varname}" = "LD" ]; then + qmakevarname="LINK" fi cmd=`echo \ 'if [ -n "\$'${varname}'" ]; then @@ -4668,7 +4670,7 @@ if [ -n "$EVALKEY" ]; then rm -f "$outpath/src/corelib/global/qconfig_eval.cpp" cat > "$outpath/src/corelib/global/qconfig_eval.cpp" <<EOF /* Evaluation license key */ -static const char qt_eval_key_data [512 + 12] = "$EVALKEY"; +static const volatile char qt_eval_key_data [512 + 12] = "$EVALKEY"; EOF chmod -w "$outpath/src/corelib/global/qconfig_eval.cpp" fi diff --git a/demos/symbianpkgrules.pri b/demos/symbianpkgrules.pri index c9cc492..ef6dfd8 100644 --- a/demos/symbianpkgrules.pri +++ b/demos/symbianpkgrules.pri @@ -2,12 +2,13 @@ RSS_RULES ="group_name=\"QtDemos\";" +nokiaVendor = "Nokia, Qt" vendorinfo = \ "; Localised Vendor name" \ - "%{\"Nokia, Qt\"}" \ + "%{$$addLanguageDependentPkgItem(nokiaVendor)}" \ " " \ "; Unique Vendor name" \ - ":\"Nokia, Qt\"" \ + ":\"$$nokiaVendor\"" \ " " demos_deployment.pkg_prerules += vendorinfo diff --git a/dist/changes-4.7.2 b/dist/changes-4.7.2 index 49bdd8e..a18a237 100644 --- a/dist/changes-4.7.2 +++ b/dist/changes-4.7.2 @@ -45,8 +45,12 @@ QtCore QtGui ----- - - foo - * bar + - QWidget + * [QTMOBILITY-645] Send WinIdChange event when winId is set to zero. + The window handle of a native widget may be set to zero in two + situations: (i) temporarily, during reparenting and (ii) during + widget destruction. Previously, no WinIdChange event was sent in + either of these cases; now, it is sent in both cases. QtDBus ------ diff --git a/doc/src/declarative/basictypes.qdoc b/doc/src/declarative/basictypes.qdoc index 8ab06ab..71192bf 100644 --- a/doc/src/declarative/basictypes.qdoc +++ b/doc/src/declarative/basictypes.qdoc @@ -166,7 +166,7 @@ \l{QML:Qt::lighter()}{Qt.lighter()} or \l{QML:Qt::tint()}{Qt.tint()} functions: \qml - Rectangle { color: Qt.rgba(255, 0, 0, 1) } + Rectangle { color: Qt.rgba(0.5, 0.5, 0, 1) } \endqml \sa {QML Basic Types} diff --git a/doc/src/declarative/declarativeui.qdoc b/doc/src/declarative/declarativeui.qdoc index 28a8a70..01e1302 100644 --- a/doc/src/declarative/declarativeui.qdoc +++ b/doc/src/declarative/declarativeui.qdoc @@ -45,7 +45,7 @@ language for describing user interfaces and a language runtime. A collection of C++ APIs is used to integrate these high level features with classic Qt applications. -\section2 QML, Elements and the QtDeclarative Module +\section2 QML, Elements and the Qt Declarative Module User interfaces and their behavior are described using QML, an extension to \l{About JavaScript}{JavaScript} that lets developers and designers @@ -60,14 +60,14 @@ QObject-based type system, adds support for automatic \l{Property Binding}{property bindings} and provides \l{Network Transparency}{network transparency} at the language level. -The QtDeclarative module implements the interface between the QML language +The Qt Declarative module implements the interface between the QML language and the elements available to it. It also provides a C++ API that can be used to load and interact with QML files from within Qt applications. Qt Quick builds on \l{QML for Qt programmers}{Qt's existing strengths}. QML can be be used to incrementally extend an existing application or to build completely new applications. QML is fully -\l{Extending QML in C++}{extensible from C++} through the QtDeclarative +\l{Extending QML in C++}{extensible from C++} through the Qt Declarative Module. \section1 Getting Started @@ -77,7 +77,7 @@ Module. \o \l{Introduction to the QML language} \o \l{QML for Qt Programmers} \o \l{Getting Started Programming with QML} -\o \l{Beginning Qt Quick} +\o \l{Intro to Qt Quick} \endlist \list @@ -139,7 +139,7 @@ Module. \o \l{QML Global Object} \o \l{QML Internationalization} \o \l{QML Security} -\o \l{QtDeclarative Module} +\o \l{Qt Declarative Module} \o \l{Debugging QML} \o \l{QML Viewer} \o \l{QML Performance} diff --git a/doc/src/declarative/elements.qdoc b/doc/src/declarative/elements.qdoc index 54f07a2..eaa6a82 100644 --- a/doc/src/declarative/elements.qdoc +++ b/doc/src/declarative/elements.qdoc @@ -32,7 +32,7 @@ \brief A dictionary of standard QML elements. This is a dictionary of all standard QML elements made available - in the QtDeclarative module. + in the Qt Declarative module. To see the QML elements listed by functional area, see the \l{Groups Of Related QML Elements} page. diff --git a/doc/src/declarative/extending-tutorial.qdoc b/doc/src/declarative/extending-tutorial.qdoc index 2bfe62e..dff1d9c 100644 --- a/doc/src/declarative/extending-tutorial.qdoc +++ b/doc/src/declarative/extending-tutorial.qdoc @@ -29,7 +29,7 @@ \page qml-extending-tutorial-index.html \title Tutorial: Writing QML extensions with C++ -The QtDeclarative module provides a set of APIs for extending QML through +The Qt Declarative module provides a set of APIs for extending QML through C++ extensions. You can write extensions to add your own QML types, extend existing Qt types, or call C/C++ functions that are not accessible from ordinary QML code. @@ -65,7 +65,7 @@ For example, this could be done to implement particular data models, or provide elements with custom painting and drawing capabilities, or access system features like network programming that are not accessible through built-in QML features. -In this tutorial, we will show how to use the C++ classes in the QtDeclarative +In this tutorial, we will show how to use the C++ classes in the Qt Declarative module to extend QML. The end result will be a simple Pie Chart display implemented by several custom QML types connected together through QML features like bindings and signals, and made available to the QML runtime through a plugin. diff --git a/doc/src/declarative/qml-intro.qdoc b/doc/src/declarative/qml-intro.qdoc index f891e01..e02ce8f 100644 --- a/doc/src/declarative/qml-intro.qdoc +++ b/doc/src/declarative/qml-intro.qdoc @@ -29,7 +29,7 @@ /*! \page qml-intro.html -\title Beginning Qt Quick +\title Intro to Qt Quick \section1 Overview diff --git a/doc/src/declarative/qmlinuse.qdoc b/doc/src/declarative/qmlinuse.qdoc new file mode 100644 index 0000000..90ce02c --- /dev/null +++ b/doc/src/declarative/qmlinuse.qdoc @@ -0,0 +1,499 @@ +/**************************************************************************** +** +** 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: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. +** +** GNU Free Documentation License +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of this +** file. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! +\page qmlinuse.html +\title Using QML elements + +\raw HTML + <div class="item group"> + <div class="secondaryx"> + <div class="toc"> + <h3> + <a name="toc">QML Elements</a></h3> + <ul> + <li class="level1"><a href="#basicElements">Basic QML Elements</a></li> + <li class="level1"><a href="#visualElements">QML Visual Elements</a></li> + <li class="level1"><a href="#AnimAndTrans">QML Animation and Transition Elements</a></li> + <li class="level1"><a href="#interactElement">Basic QML Interaction Elements</a></li> + <li class="level1"><a href="#eventElements">QML Event Elements</a></li> + <li class="level1"><a href="#Position">QML Positioning Elements</a></li> + <li class="level1"><a href="#stateElement">QML State Elements</a></li> + <li class="level1"><a href="#transformElement">QML Transform Elements</a></li> + <li class="level1"><a href="#utilityElement">QML Utility Elements</a></li> + <li class="level1"><a href="#modelView">Models and View Elements</a></li> + <li class="level1"><a href="#paths">Paths</a></li> + <li class="level1"><a href="#ParticleElement">Particle Elements</a></li> + <li class="level1"><a href="#bridge">Bridge Elements</a></li> + </ul> + </div> + </div> + <div class="primary"> + <h1> + Groups Of Related QML Elements</h1> + <p> + QML Elements are grouped by their respective functionalities. Certain elements are + suited for building complex components while other elements strictly dictate appearances + and color.</p> + <div class="cols two group unclear"> + <div class="col first"> + <p> + <i>add something about elements in use in general</i></p> + </div> + <div class="col"> + <img src="images/quick_screens.png" /> + </div> + </div> + </div> + </div> + <!-- tech domains start --> + <div class="item group"> + <hr> + <div class="secondary"> + <div class="box"> + <!-- video box --> + <h3> + image heading</h3> + <img src="" /> + <p> + img descr.</p> + </div> + <!-- video box end --> + </div> + <div class="primary"> + <h2><a name="basicElements"> Basic QML Elements</a></h2> + <p> + Basic elements can be extended to form more complex elements.</p> + <b>Elements:</b> + <ul> + <li><a href="qml-item.html">Item Element</a> + - The Item is the most basic of all visual items in QML. Many visual elements inherit + properties from the Item element.</li> + <li><a href="qml-component.html">Component Element</a> + - The Component element encapsulates a QML component definition.</li> + </ul> + </div> + </div> + <!-- next --> + <div class="item group"> + <hr> + <div class="secondary"> + <div class="box"> + <!-- video box --> + <h3> + image heading</h3> + <img src="" /> + <p> + img descr.</p> + </div> + <!-- video box end --> + </div> + <div class="primary"> + <h2><a name="visualElements">QML Visual Elements</a></h2> + <p> + Visual elements offer various interactive and graphical functionalities. Visual + elements can directly set properties that dictate appearances.</p> + <b>Elements:</b> + <ul> + <li><a href="qml-borderimage.html">BorderImage + Element</a> - The BorderImage element provides an image that can be used as a border.</li> + <li><a href="qml-gradient.html">Gradient Element</a> + - The Gradient item defines a gradient fill.</li> + <li><a href="qml-gradientstop.html">GradientStop + Element</a> - The GradientStop item defines the color at a position in a Gradient.</li> + <li><a href="qml-image.html">Image Element</a> + - The Image element displays an image from a source.</li> + <li><a href="qml-rectangle.html">Rectangle Element</a> + - The Rectangle item provides a filled rectangle.</li> + <li><a href="qml-text.html">Text Element</a> + - The Text item allows the addition of formatted text to a scene.</li> + <li><a href="qml-textedit.html">TextEdit Element</a> + - The TextEdit item displays multiple lines of editable formatted text.</li> + <li><a href="qml-textinput.html">TextInput Element</a> + - The TextInput item displays an editable line of text.</li> + </ul> + </div> + </div> + <!-- next --> + <div class="item group"> + <hr> + <div class="secondary"> + <div class="box"> + <!-- video box --> + <h3> + image heading</h3> + <img src="" /> + <p> + img descr.</p> + </div> + <!-- video box end --> + </div> + <div class="primary"> + <h2><a name="AnimAndTrans">QML Animation and Transition Elements</a></h2> + <p> + Animation and transition elements control animation behaviors. Animations can run + in parallel or in series for different value types. + </p> + <b>Elements:</b> + <ul> + <li><a href="qml-anchoranimation.html">AnchorAnimation Element</a> - + The AnchorAnimation element animates changes in anchor values.</li> + <li><a href="qml-animation.html">Animation Element</a> - The Animation + element is the base of all QML animations.</li> + <li><a href="qml-behavior.html">Behavior Element</a> - The Behavior element allows you to specify a default animation for a property change.</li> + <li><a href="qml-coloranimation.html">ColorAnimation Element</a> - The ColorAnimation element animates changes in color values.</li> + <li><a href="qml-numberanimation.html">NumberAnimation Element</a> - The NumberAnimation element animates changes in qreal-type values.</li> + <li><a href="qml-parallelanimation.html">ParallelAnimation Element</a> - The ParallelAnimation element allows animations to be run in parallel.</li> + <li><a href="qml-parentanimation.html">ParentAnimation Element</a> - The ParentAnimation element animates changes in parent values.</li> + <li><a href="qml-pauseanimation.html">PauseAnimation Element</a> - The PauseAnimation element provides a pause during an animation.</li> + <li><a href="qml-propertyaction.html">PropertyAction Element</a> - The PropertyAction element allows immediate property changes during animation.</li> + <li><a href="qml-propertyanimation.html">PropertyAnimation Element</a> - The PropertyAnimation element animates changes in property values.</li> + <li><a href="qml-rotationanimation.html">RotationAnimation Element</a> - The RotationAnimation element animates changes in rotational values.</li> + <li><a href="qml-scriptaction.html">ScriptAction Element</a> - The ScriptAction element allows scripts to be run during an animation.</li> + <li><a href="qml-sequentialanimation.html">SequentialAnimation Element</a> - The SequentialAnimation element allows animations to be run sequentially.</li> + <li><a href="qml-smoothedanimation.html">SmoothedAnimation Element</a> - The SmoothedAnimation element allows a property to smoothly track a value.</li> + <li><a href="qml-springanimation.html">SpringAnimation Element</a> - The SpringAnimation element allows a property to track a value in a spring-like + motion.</li> + <li><a href="qml-transition.html">Transition Element</a> - The Transition element defines animated transitions that occur on state changes.</li> + <li><a href="qml-vector3danimation.html">Vector3dAnimation Element</a> - The Vector3dAnimation element animates changes in QVector3d values.</li> + </ul> + </div> + </div> + <!-- next --> + <div class="item group"> + <hr> + <div class="secondary"> + <div class="box"> + <!-- video box --> + <h3> + image heading</h3> + <img src="" /> + <p> + img descr.</p> + </div> + <!-- video box end --> + </div> + <div class="primary"> + <h2><a name="interactElement">QML Interaction Elements</h2></a> + <p> + These elements define basic interactions such as touch movements and focus management.</p> + <b>Elements:</b> + <ul> + <li><a href="qml-flickable.html">Flickable Element</a> - The Flickable item provides a surface that can be "flicked".</li> + <li><a href="qml-flipable.html">Flipable Element</a> - The Flipable item provides a surface that can be flipped or reflected.</li> + <li><a href="qml-focuspanel.html">FocusPanel Element</a> - The FocusPanel item explicitly creates a focus panel.</li> + <li><a href="qml-focusscope.html">FocusScope Element</a> - The FocusScope object explicitly creates a focus scope for focus management.</li> + <li><a href="qml-gesturearea.html">GestureArea Element</a> - The GestureArea item enables simple gesture handling.</li> + <li><a href="qml-keynavigation.html">KeyNavigation Element</a> - The KeyNavigation attached property supports key navigation by arrow keys.</li> + <li><a href="qml-keys.html">Keys Element</a> - The Keys attached property provides key handling to Items.</li> + <li><a href="qml-mousearea.html">MouseArea Element</a> - The MouseArea item enables simple mouse handling.</li> + </ul> + </div> + </div> + <!-- next --> + <div class="item group"> + <hr> + <div class="secondary"> + <div class="box"> + <!-- video box --> + <h3> + image heading</h3> + <img src="" /> + <p> + img descr.</p> + </div> + <!-- video box end --> + </div> + <div class="primary"> + <h2><a name="eventElements">QML Event Elements</a></h2> + <p> + Key and mouse events information are provided in these event elements.</p> + <b>Elements:</b> + <ul> + <li><a href="qml-keyevent.html">KeyEvent Element</a> - The KeyEvent + object provides information about a key event.</li> + <li><a href="qml-mouseevent.html">MouseEvent Element</a> - The MouseEvent + object provides information about a mouse event.</li> + </ul> + </div> + </div> + <!-- next --> + <div class="item group"> + <hr> + <div class="secondary"> + <div class="box"> + <!-- video box --> + <h3> + image heading</h3> + <img src="" /> + <p> + img descr.</p> + </div> + <!-- video box end --> + </div> + <div class="primary"> + <h2><a name="Position">QML Positioning Elements</a></h2> + <p> + Using positioning elements, layouts can be defined and their children accessed through + an index.</p> + <b>Elements:</b> + <ul> + <li><a href="qml-column.html">Column Element</a> - The Column + item arranges its children vertically.</li> + <li><a href="qml-flow.html">Flow Element</a> - The Flow item + arranges its children side by side, wrapping as necessary.</li> + <li><a href="qml-grid.html">Grid Element</a> - The Grid item + positions its children in a grid.</li> + <li><a href="qml-row.html">Row Element</a> - The Row item + arranges its children horizontally.</li> + <li><a href="qml-repeater.html">Repeater Element</a> - The Repeater element allows you to repeat an Item-based component using a model.</li> + </ul> + </div> + </div> + <!-- next --> + <div class="item group"> + <hr> + <div class="secondary"> + <div class="box"> + <!-- video box --> + <h3> + image heading</h3> + <img src="" /> + <p> + img descr.</p> + </div> + <!-- video box end --> + </div> + <div class="primary"> + + <h2><a name="stateElement">QML State Elements</a></h2> + <p> + States and groups of states are formed using state elements.</p> + <b>Elements:</b> + <ul> + <li><a href="qml-anchorchanges.html">AnchorChanges Element</a> - The AnchorChanges element allows you to change the anchors of an item in a state.</li> + <li><a href="qml-parentchange.html">ParentChange Element</a> - The ParentChange element allows you to reparent an Item in a state change.</li> + <li><a href="qml-propertychanges.html">PropertyChanges Element</a> - The PropertyChanges element describes new property bindings or values for a state.</li> + <li><a href="qml-state.html">State Element</a> - The State + element defines configurations of objects and properties.</li> + <li><a href="qml-statechangescript.html">StateChangeScript Element</a> - The StateChangeScript element allows you to run a script in a state.</li> + <li><a href="qml-stategroup.html">StateGroup Element</a> - The StateGroup element provides state support for non-Item elements.</li> + </ul> + </div> + </div> + <!-- next --> + <div class="item group"> + <hr> + <div class="secondary"> + <div class="box"> + <!-- video box --> + <h3> + image heading</h3> + <img src="" /> + <p> + img descr.</p> + </div> + <!-- video box end --> + </div> + <div class="primary"> + <h2><a name="transformElement">QML Transform Elements</a></h2> + <p> + Advanced handling of transformations is controlled in transform elements.</p> + <b>Elements:</b> + <ul> + <li><a href="qml-rotation.html">Rotation Element</a> - The Rotation object provides a way to rotate an Item.</li> + <li><a href="qml-scale.html">Scale Element</a> - The Scale element provides a way to scale an Item.</li> + <li><a href="qml-transform.html">Transform Element</a> - The Transform element provide a way of building advanced transformations on Items.</li> + <li><a href="qml-translate.html">Translate Element</a> - The Translate object provides a way to move an Item without changing its x or y properties.</li> + </ul> + </div> + </div> + <!-- next --> + <div class="item group"> + <hr> + <div class="secondary"> + <div class="box"> + <!-- video box --> + <h3> + image heading</h3> + <img src="" /> + <p> + img descr.</p> + </div> + <!-- video box end --> + </div> + <div class="primary"> + <h2><a name="utilityElement">QML Utility Elements</a></h2> + <p> + These elements handle assorted operations such as event timing, Qt enumerations, + and font loading.</p> + <b>Elements:</b> + <ul> + <li><a href="qml-binding.html">Binding Element</a> - The Binding element allows arbitrary property bindings to be created.</li> + <li><a href="qml-connections.html">Connections Element</a> - A Connections element describes generalized connections to signals.</li> + <li><a href="qml-doublevalidator.html">DoubleValidator Element</a> - Provides a validator for non-integer numbers.</li> + <li><a href="qml-fontloader.html">FontLoader Element</a> - The FontLoader element allows fonts to be loaded by name or URL.</li> + <li><a href="qml-intvalidator.html">IntValidator Element</a> - This element provides a validator for integer values.</li> + <li><a href="qml-layoutitem.html">LayoutItem Element</a> - The LayoutItem element allows declarative UI elements to be placed inside Qt's Graphics View layouts.</li> + <li><a href="qml-loader.html">Loader Element</a> - The Loader item allows dynamically loading an Item-based subtree from a URL or Component.</li> + <li><a href="qml-package.html">Package Element</a> - Package provides a bundle for shared contexts in multiple views.</li> + <li><a href="qml-qt.html">Qt Element</a> - The QML global Qt object provides useful enums and functions from Qt.</li> + <li><a href="qml-qtobject.html">QtObject Element</a> - The QtObject element is the most basic element in QML.</li> + <li><a href="qml-regexpvalidator.html">RegExpValidator Element</a> - This element provides a validator for regular expressions.</li> + <li><a href="qml-systempalette.html">SystemPalette Element</a> - The SystemPalette element provides access to the Qt palettes.</li> + <li><a href="qml-timer.html">Timer Element</a> - The Timer item triggers a handler at a specified interval.</li> + <li><a href="qml-workerscript.html">WorkerScript Element</a> - The WorkerScript element enables the use of threads in QML.</li> + </ul> + </div> + </div> + <!-- next --> + <div class="item group"> + <hr> + <div class="secondary"> + <div class="box"> + <!-- video box --> + <h3> + image heading</h3> + <img src="" /> + <p> + img descr.</p> + </div> + <!-- video box end --> + </div> + <div class="primary"> + <h2><a name="modelView">Models and View Elements</a></h2> + <p> + Models and views are used to organize data and control their layouts using delegates. + Models dictate the data formation and views control the layouts of data in the model.</p> + <b>View Elements:</b> + <ul> + <li><a href="qml-gridview.html">GridView Element</a> - The GridView item provides a grid view of items provided by a model.</li> + <li><a href="qml-listview.html">ListView Element</a> - The ListView item provides a list view of items provided by a model.</li> + <li><a href="qml-pathview.html">PathView Element</a> - The PathView element lays out model-provided items on a path.</li> + <li><a href="qml-webview.html">WebView Element</a> - The WebView item allows you to add Web content to a canvas.</li> + </ul> + <b>Model Elements:</b> + <ul> + <li><a href="qml-folderlistmodel.html">FolderListModel Element</a> - The FolderListModel provides a model of the contents of a file system folder.</li> + <li><a href="qml-listelement.html">ListElement Element</a> - A ListElement defines a data item in a ListModel.</li> + <li><a href="qml-listmodel.html">ListModel Element</a> - The ListModel element defines a free-form list data source.</li> + <li><a href="qml-visualdatamodel.html">VisualDataModel Element</a> - The VisualDataModel encapsulates a model and delegate.</li> + <li><a href="qml-visualitemmodel.html">VisualItemModel Element</a> - The VisualItemModel allows items to be provided to a view.</li> + <li><a href="qml-xmllistmodel.html">XmlListModel Element</a> - The XmlListModel element is used to specify a model using XPath expressions.</li> + <li><a href="qml-xmlrole.html">XmlRole Element</a> - The XmlRole element allows you to specify a role for an XmlListModel.</li> + </ul> + </div> + </div> + <!-- next --> + <div class="item group"> + <hr> + <div class="secondary"> + <div class="box"> + <!-- video box --> + <h3> + image heading</h3> + <img src="" /> + <p> + img descr.</p> + </div> + <!-- video box end --> + </div> + <div class="primary"> + <h2><a name="paths">Paths</a></h2> + <p> + QML components can be arranged along paths. Path elements allow control over different + path types.</p> + <b>Elements:</b> + <ul> + <li><a href="qml-path.html">Path Element</a> - A Path object defines a path for use by PathView.</li> + <li><a href="qml-pathattribute.html">PathAttribute Element</a> - The PathAttribute allows setting an attribute at a given position in a Path.</li> + <li><a href="qml-pathcubic.html">PathCubic Element</a> - The PathCubic defines a cubic Bezier curve with two control points.</li> + <li><a href="qml-pathelement.html">PathElement Element</a> - PathElement is the base path type.</li> + <li><a href="qml-pathline.html">PathLine Element</a> - The PathLine defines a straight line.</li> + <li><a href="qml-pathpercent.html">PathPercent Element</a> - The PathPercent manipulates the way a path is interpreted.</li> + <li><a href="qml-pathquad.html">PathQuad Element</a> - The PathQuad defines a quadratic Bezier curve with a control point.</li> + </ul> + </div> + </div> + <!-- next --> + <div class="item group"> + <hr> + <div class="secondary"> + <div class="box"> + <!-- video box --> + <h3> + image heading</h3> + <img src="" /> + <p> + img descr.</p> + </div> + <!-- video box end --> + </div> + <div class="primary"> + <h2><a name="ParticleElement">Particle Elements</a></h2> + <p> + Particle effects are declared and controlled using particle elements.</p> + <b>Elements:</b> + <ul> + <li><a href="qml-particlemotiongravity.html">ParticleMotionGravity Element</a> - The ParticleMotionGravity object moves particles towards a point.</li> + <li><a href="qml-particlemotionlinear.html">ParticleMotionLinear Element</a> - The ParticleMotionLinear object moves particles linearly.</li> + <li><a href="qml-particlemotionwander.html">ParticleMotionWander Element</a> - The ParticleMotionWander object moves particles in a somewhat random fashion.</li> + <li><a href="qml-particles.html">Particles Element</a> - The Particles object generates and moves particles.</li> + </ul> + </div> + </div> + <!-- next --> + <div class="item group"> + <hr> + <div class="secondary"> + <div class="box"> + <!-- video box --> + <h3> + image heading</h3> + <img src="" /> + <p> + img descr.</p> + </div> + <!-- video box end --> + </div> + <div class="primary"> + <h2><a name="bridge">Bridge Elements</a></h2> + <p> + Bridge elements allow direct communication between C++ and QML entities.</p> + <b>Elements:</b> + <ul> + <li><a href="qml-layoutitem.html">LayoutItem Element</a> - The LayoutItem element allows declarative UI elements to be placed inside Qt's Graphics View layouts.</li> + </ul> + </div> + </div> + +\endraw + + + +*/ + diff --git a/doc/src/declarative/qtbinding.qdoc b/doc/src/declarative/qtbinding.qdoc index 8a969eb..c3ce6d0 100644 --- a/doc/src/declarative/qtbinding.qdoc +++ b/doc/src/declarative/qtbinding.qdoc @@ -31,7 +31,7 @@ \title Using QML in C++ Applications QML is designed to be easily extensible from C++. The classes in the -QtDeclarative module allow QML components to be loaded and manipulated from C++, and through +Qt Declarative module allow QML components to be loaded and manipulated from C++, and through Qt's \l{The Meta-Object System}{meta-object system}, QML and C++ objects can easily communicate through Qt signals and slots. In addition, QML plugins can be written to create reusable QML components for distribution. @@ -41,20 +41,20 @@ You may want to mix QML and C++ for a number of reasons. For example: \list \o To use functionality defined in a C++ source (for example, when using a C++ Qt-based data model, or calling functions in a third-party C++ library) -\o To access functionality in the QtDeclarative module (for example, to dynamically generate +\o To access functionality in the Qt Declarative module (for example, to dynamically generate images using QDeclarativeImageProvider) \o To write your own QML elements (whether for your applications, or for distribution to others) \endlist -To use the QtDeclarative module, you must include and link to the module appropriately, as shown on +To use the Qt Declarative module, you must include and link to the module appropriately, as shown on the \l {QtDeclarative}{module index page}. The \l {Qt Declarative UI Runtime} documentation shows how to build a basic C++ application that uses this module. \section1 Core module classes -The QtDeclarative module provides a set of C++ APIs for extending your QML applications from C++ and -embedding QML into C++ applications. There are several core classes in the QtDeclarative module +The Qt Declarative module provides a set of C++ APIs for extending your QML applications from C++ and +embedding QML into C++ applications. There are several core classes in the Qt Declarative module that provide the essential capabilities for doing this. These are: \list @@ -448,7 +448,8 @@ now be used from QML: \snippet doc/src/snippets/declarative/qtbinding/enums/standalone.qml 0 The C++ type must be registered with QML to use its enums. If your C++ type is not instantiable, it -can be registered using qmlRegisterUncreatableType(). +can be registered using qmlRegisterUncreatableType(). To be accessible from QML, the names of enum values +must begin with a capital letter. See the \l {Tutorial: Writing QML extensions with C++}{Writing QML extensions with C++} tutorial and the \l {Extending QML in C++} reference documentation for more information. @@ -520,7 +521,7 @@ a QColor-type property or to call a C++ function that requires a QColor paramete \section1 Writing QML plugins -The QtDeclarative module includes the QDeclarativeExtensionPlugin class, which is an abstract +The Qt Declarative module includes the QDeclarativeExtensionPlugin class, which is an abstract class for writing QML plugins. This allows QML extension types to be dynamically loaded into QML applications. diff --git a/doc/src/declarative/qtdeclarative.qdoc b/doc/src/declarative/qtdeclarative.qdoc index 7ecdc53..f2b2032 100644 --- a/doc/src/declarative/qtdeclarative.qdoc +++ b/doc/src/declarative/qtdeclarative.qdoc @@ -27,7 +27,7 @@ /*! \module QtDeclarative - \title QtDeclarative Module + \title Qt Declarative Module \ingroup modules \brief The Qt Declarative module provides a declarative framework diff --git a/doc/src/development/qmake-manual.qdoc b/doc/src/development/qmake-manual.qdoc index 1230af3..d7a48a3 100644 --- a/doc/src/development/qmake-manual.qdoc +++ b/doc/src/development/qmake-manual.qdoc @@ -1294,6 +1294,14 @@ test sections in generated bld.inf instead of their regular sections. Note that this only affects automatically generated bld.inf content; the content added via \c BLD_INF_RULES variable is not affected. + \row \o localize_deployment \o Makes \c lupdate tool add fields for + application captions and package file names into generated \c{.ts} + files. Qmake generates properly localized \c{.loc} and \c{.pkg} files + based on available translations. Translation file name bodies must + end with underscore and the language code for deployment localization + to work. E.g. \c{myapp_en.ts}. + \bold{Note:} All languages supported by Qt are not supported by Symbian, + so some \c{.ts} files may be ignored by qmake. \endtable These options have an effect on Linux/Unix platforms: diff --git a/doc/src/examples/multicastreceiver.qdoc b/doc/src/examples/multicastreceiver.qdoc index f769705..9c4dda4 100644 --- a/doc/src/examples/multicastreceiver.qdoc +++ b/doc/src/examples/multicastreceiver.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/examples/multicastsender.qdoc b/doc/src/examples/multicastsender.qdoc index 271be60..be5fb6a 100644 --- a/doc/src/examples/multicastsender.qdoc +++ b/doc/src/examples/multicastsender.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/frameworks-technologies/threads.qdoc b/doc/src/frameworks-technologies/threads.qdoc index 3ef617c..001b29d 100644 --- a/doc/src/frameworks-technologies/threads.qdoc +++ b/doc/src/frameworks-technologies/threads.qdoc @@ -459,11 +459,10 @@ \list - \o \l{Qt::AutoConnection}{Auto Connection} (default) The behavior - is the same as the Direct Connection, if the emitter and - receiver are in the same thread. The behavior is the same as - the Queued Connection, if the emitter and receiver are in - different threads. + \o \l{Qt::AutoConnection}{Auto Connection} (default) If the signal is + emitted in the thread which the receiving object has affinity then + the behavior is the same as the Direct Connection. Otherwise, + the behavior is the same as the Queued Connection." \o \l{Qt::DirectConnection}{Direct Connection} The slot is invoked immediately, when the signal is emitted. The slot is executed diff --git a/doc/src/getting-started/gettingstartedqml.qdoc b/doc/src/getting-started/gettingstartedqml.qdoc index 54fa098..b767587 100644 --- a/doc/src/getting-started/gettingstartedqml.qdoc +++ b/doc/src/getting-started/gettingstartedqml.qdoc @@ -42,7 +42,7 @@ installation instructions and requirements for different platforms. Qt Quick includes a declarative language called - \l{Introduction to the QML language}{QML}, the \l{QtDeclarative Module}, and + \l{Introduction to the QML language}{QML}, the \l{Qt Declarative Module}, and \l{QML Viewer}. \section1 QML to Build User Interfaces diff --git a/doc/src/platforms/emb-directfb-EmbLinux.qdoc b/doc/src/platforms/emb-directfb-EmbLinux.qdoc index dbe6c14..bcc06dc 100644 --- a/doc/src/platforms/emb-directfb-EmbLinux.qdoc +++ b/doc/src/platforms/emb-directfb-EmbLinux.qdoc @@ -39,11 +39,11 @@ and generally chip vendors start out with the official version and implement their own plugins to optimize the operations their hardware supports. -We recommend using Qt 4.6 with DirectFB. DirectFB support was introduced -already into Qt for Embedded Linux as a labs project for Qt 4.3 and folded +We recommend using Qt 4.6 or later with DirectFB. Support for DirectFB was +introduced into Qt for Embedded Linux as a labs project for Qt 4.3 and folded into Qt as a screen driver for Qt 4.4, but not supported fully. In Qt 4.5, major changes were made to make it work with the optimized raster paint -engine. And in Qt 4.6 these have been further improved. +engine. These changes were further improved in Qt 4.6. \tableofcontents diff --git a/doc/src/platforms/emb-pointer.qdoc b/doc/src/platforms/emb-pointer.qdoc index 81e532f..506e9e0 100644 --- a/doc/src/platforms/emb-pointer.qdoc +++ b/doc/src/platforms/emb-pointer.qdoc @@ -105,7 +105,7 @@ {touch panels} in which case the driver must be specified explicitly to determine which device to use. - To manually specify which driver to use, set the QWS_MOUSE_PROTO + To manually specify which driver to use, set the \c QWS_MOUSE_PROTO environment variable. For example (if the current shell is bash, ksh, zsh or sh): @@ -156,7 +156,7 @@ \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 8 To make \l{Qt for Embedded Linux} explicitly choose the tslib mouse - handler, set the QWS_MOUSE_PROTO environment variable as explained + handler, set the \c QWS_MOUSE_PROTO environment variable as explained above. \endtable diff --git a/doc/src/qt4-intro.qdoc b/doc/src/qt4-intro.qdoc index 2384051..62decbb 100644 --- a/doc/src/qt4-intro.qdoc +++ b/doc/src/qt4-intro.qdoc @@ -466,7 +466,7 @@ collaborate tightly and create animated and fluid user experiences, using existing knowledge in script language and design. - \i QtDeclarative is a C++ library that provides the underlying engine, + \i Qt Declarative is a C++ library that provides the underlying engine, which translates the declarative description of the UI in QML into items on a QGraphicsScene. The library also provides APIs to bind custom C++ types and elements to QML, and to connect the QML UI with diff --git a/doc/src/snippets/code/doc_src_properties.qdoc b/doc/src/snippets/code/doc_src_properties.qdoc index 7704160..a4ed409 100644 --- a/doc/src/snippets/code/doc_src_properties.qdoc +++ b/doc/src/snippets/code/doc_src_properties.qdoc @@ -91,7 +91,7 @@ for (int i=0; i<count; ++i) { class MyClass : public QObject { Q_OBJECT - Q_PROPERTY(Priority priority READ priority WRITE setPriority) + Q_PROPERTY(Priority priority READ priority WRITE setPriority NOTIFY priorityChanged) Q_ENUMS(Priority) public: @@ -100,8 +100,19 @@ public: enum Priority { High, Low, VeryHigh, VeryLow }; - void setPriority(Priority priority); - Priority priority() const; + void setPriority(Priority priority) + { + m_priority = priority; + emit priorityChanged(priority); + } + Priority priority() const + { return m_priority; } + +signals: + void priorityChanged(Priority); + +private: + Priority m_priority; }; //! [5] diff --git a/doc/src/snippets/moc/myclass2.h b/doc/src/snippets/moc/myclass2.h index ca79515..daea23c 100644 --- a/doc/src/snippets/moc/myclass2.h +++ b/doc/src/snippets/moc/myclass2.h @@ -58,8 +58,11 @@ public: MyClass(QObject *parent = 0); ~MyClass(); - void setPriority(Priority priority); - Priority priority() const; + void setPriority(Priority priority) { m_priority = priority; } + Priority priority() const { return m_priority; } + +private: + Priority m_priority; }; //! [0] diff --git a/doc/src/snippets/threads/threads.cpp b/doc/src/snippets/threads/threads.cpp index d8d1270..d16c398 100644 --- a/doc/src/snippets/threads/threads.cpp +++ b/doc/src/snippets/threads/threads.cpp @@ -93,15 +93,12 @@ private: typedef int SomeClass; //! [7] -QThreadStorage<QCache<QString, SomeClass> *> caches; +QThreadStorage<QCache<QString, SomeClass> > caches; void cacheObject(const QString &key, SomeClass *object) //! [7] //! [8] { - if (!caches.hasLocalData()) - caches.setLocalData(new QCache<QString, SomeClass>); - - caches.localData()->insert(key, object); + caches.localData().insert(key, object); } void removeFromCache(const QString &key) @@ -110,7 +107,7 @@ void removeFromCache(const QString &key) if (!caches.hasLocalData()) return; - caches.localData()->remove(key); + caches.localData().remove(key); } //! [9] diff --git a/examples/symbianpkgrules.pri b/examples/symbianpkgrules.pri index 0f615c7..fe9b487 100644 --- a/examples/symbianpkgrules.pri +++ b/examples/symbianpkgrules.pri @@ -2,12 +2,13 @@ RSS_RULES ="group_name=\"QtExamples\";" +nokiaVendor = "Nokia, Qt" vendorinfo = \ "; Localised Vendor name" \ - "%{\"Nokia, Qt\"}" \ + "%{$$addLanguageDependentPkgItem(nokiaVendor)}" \ " " \ "; Unique Vendor name" \ - ":\"Nokia, Qt\"" \ + ":\"$$nokiaVendor\"" \ " " examples_deployment.pkg_prerules += vendorinfo diff --git a/mkspecs/common/symbian/appCaptionForTranslation.cpp b/mkspecs/common/symbian/appCaptionForTranslation.cpp new file mode 100644 index 0000000..c295147 --- /dev/null +++ b/mkspecs/common/symbian/appCaptionForTranslation.cpp @@ -0,0 +1,46 @@ +/**************************************************************************** +** +** 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 qmake spec of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//: Application short caption, currently only relevant for application projects in Symbian. +QT_TRANSLATE_NOOP("QtApplicationCaptions", "Application short caption") + +//: Application long caption, currently only relevant for application projects in Symbian. +QT_TRANSLATE_NOOP("QtApplicationCaptions", "Application long caption") diff --git a/mkspecs/common/symbian/packageNameForTranslation.cpp b/mkspecs/common/symbian/packageNameForTranslation.cpp new file mode 100644 index 0000000..bc4a7f4 --- /dev/null +++ b/mkspecs/common/symbian/packageNameForTranslation.cpp @@ -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 qmake spec of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//: Installation package name, currently only relevant for Symbian projects that deploy something. +QT_TRANSLATE_NOOP("QtPackageNames", "Package name") + +//: Smart installer installation package name, currently only relevant for Symbian projects that +//: deploy something. +QT_TRANSLATE_NOOP("QtPackageNames", "Smart installer package name") diff --git a/mkspecs/common/symbian/symbian-mmp.conf b/mkspecs/common/symbian/symbian-mmp.conf index 1fbd302..4d554bd 100644 --- a/mkspecs/common/symbian/symbian-mmp.conf +++ b/mkspecs/common/symbian/symbian-mmp.conf @@ -18,8 +18,8 @@ MMP_RULES += $$MMP_RULES_DONT_EXPORT_ALL_CLASS_IMPEDIMENTA SYMBIAN_PLATFORMS = WINSCW GCCE ARMV5 ARMV6 INCLUDEPATH = \ - $$[QT_INSTALL_PREFIX]/mkspecs/common/symbian/stl-off \ - $$[QT_INSTALL_PREFIX]/mkspecs/common/symbian \ + $$[QT_INSTALL_DATA]/mkspecs/common/symbian/stl-off \ + $$[QT_INSTALL_DATA]/mkspecs/common/symbian \ $${EPOCROOT}epoc32/include \ $$OS_LAYER_LIBC_SYSTEMINCLUDE \ $$INCLUDEPATH diff --git a/mkspecs/common/symbian/symbian.conf b/mkspecs/common/symbian/symbian.conf index 4d0320d..0b5c573 100644 --- a/mkspecs/common/symbian/symbian.conf +++ b/mkspecs/common/symbian/symbian.conf @@ -130,6 +130,17 @@ QMAKE_LIBS_QT_ENTRY = -lqtmain$${QT_LIBINFIX}.lib QMAKE_LIBS_NO_QT_ENTRY = -llibcrt0.lib QMAKE_LIBS_NO_QT_ENTRY_GCCE = -llibcrt0_gcce.lib +# List of languages that have a Symbian language code mapping provided in localize_deployment.prf +SYMBIAN_SUPPORTED_LANGUAGES = \ + af sq am ar hy bn bg my be ca \ + hr cs da nl en et fi fr gd ka \ + de el gu he hi hu is id ga it \ + ja kn kk ko lo lv lt mk ms ml \ + 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 + # These directories must match what configure uses for QT_INSTALL_PLUGINS and QT_INSTALL_IMPORTS QT_PLUGINS_BASE_DIR = /resource/qt$${QT_LIBINFIX}/plugins QT_IMPORTS_BASE_DIR = /resource/qt/imports @@ -194,17 +205,6 @@ isEmpty(S60_VERSION) { # multiple language compatible dependency statements him/herself. default_deployment.pkg_prerules += pkg_depends_webkit pkg_depends_qt pkg_platform_dependencies - -# Supports S60 3.1, 3.2, 5.0, Symbian^3, and Symbian^4 by default -pkg_platform_dependencies = \ - "; Default HW/platform dependencies" \ - "[0x102032BE],0,0,0,{\"S60ProductID\"}" \ - "[0x102752AE],0,0,0,{\"S60ProductID\"}" \ - "[0x1028315F],0,0,0,{\"S60ProductID\"}" \ - "[0x20022E6D],0,0,0,{\"S60ProductID\"}" \ - "[0x20032DE7],0,0,0,{\"S60ProductID\"}" \ - " " - DEPLOYMENT += default_deployment default_bin_deployment default_resource_deployment default_reg_deployment defineReplace(symbianRemoveSpecialCharacters) { @@ -225,3 +225,44 @@ defineReplace(symbianRemoveSpecialCharacters) { return ($$fixedStr) } +# Determines translations that are Symbian supported +defineTest(matchSymbianLanguages) { + SYMBIAN_MATCHED_LANGUAGES = + SYMBIAN_MATCHED_TRANSLATIONS = + + # Cannot parse .ts file for language here, so detect it from filename. + # Allow two and three character language and country codes. + for(translation, TRANSLATIONS) { + language = $$replace(translation, "^(.*/)?[^/]+_(([^_]{2,3}_)?[^_]{2,3})\\.ts$", \\2) + contains(SYMBIAN_SUPPORTED_LANGUAGES, $$language) { + SYMBIAN_MATCHED_LANGUAGES += $$language + SYMBIAN_MATCHED_TRANSLATIONS += $$translation + } + } + + isEmpty(SYMBIAN_MATCHED_LANGUAGES): SYMBIAN_MATCHED_LANGUAGES = en + + export(SYMBIAN_MATCHED_LANGUAGES) + export(SYMBIAN_MATCHED_TRANSLATIONS) +} + +# Symbian pkg files that define multiple languages require a language specific string to be +# defined for various items, even though the string often needs to be same for all languages. +# This replacement method will generate correct string for such cases based on TRANSLATIONS +# variable. +defineReplace(addLanguageDependentPkgItem) { + localize_deployment:!isEmpty(TRANSLATIONS):isEmpty(SYMBIAN_MATCHED_LANGUAGES) { + matchSymbianLanguages() + } + + pkgItem = $$eval($$1) + pkgLanguageList = + + for(dummyItem, SYMBIAN_MATCHED_LANGUAGES) { + pkgLanguageList += "\"$$pkgItem\"" + } + + isEmpty(pkgLanguageList): pkgLanguageList = "\"$$pkgItem\"" + + return($$join(pkgLanguageList,",",,)) +} diff --git a/mkspecs/features/default_post.prf b/mkspecs/features/default_post.prf index 09c6587..9fb9f10 100644 --- a/mkspecs/features/default_post.prf +++ b/mkspecs/features/default_post.prf @@ -110,3 +110,13 @@ QMAKE_LIBDIR += $$QMAKE_LIBDIR_POST } QMAKE_EXTRA_TARGETS += check } + +# Add special translation sources for projects that require them. +# Note 1: Since lupdate will not parse regular config scopes right, contains checks are used instead. +# Note 2: Checking for last value of TEMPLATE is used instead of simple contains check because +# lupdate doesn't respect "-=" variable assignments and therefore always finds "app" +# as the first value of TEMPLATE variable. +contains(CONFIG, lupdate_run):contains(CONFIG, localize_deployment) { + equals($$list($$last(TEMPLATE)), app): SOURCES += $$[QT_INSTALL_DATA]/mkspecs/common/symbian/appCaptionForTranslation.cpp + SOURCES += $$[QT_INSTALL_DATA]/mkspecs/common/symbian/packageNameForTranslation.cpp +} diff --git a/mkspecs/features/no_debug_info.prf b/mkspecs/features/no_debug_info.prf index 3acf6c8..e05410d 100644 --- a/mkspecs/features/no_debug_info.prf +++ b/mkspecs/features/no_debug_info.prf @@ -1,5 +1,14 @@ -QMAKE_CFLAGS -= -g -ggdb3 -QMAKE_CXXFLAGS -= -g -ggdb3 -QMAKE_LFLAGS -= -g -ggdb3 -QMAKE_LIBFLAGS -= -g -ggdb3 +win32-msvc2*|wince*msvc* { + QMAKE_CFLAGS -= -Zi + QMAKE_CFLAGS_DEBUG -= -Zi + QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO -= -Zi + QMAKE_CXXFLAGS -= -Zi + QMAKE_CXXFLAGS_DEBUG -= -Zi + QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO -= -Zi +} else { + QMAKE_CFLAGS -= -g -ggdb3 + QMAKE_CXXFLAGS -= -g -ggdb3 + QMAKE_LFLAGS -= -g -ggdb3 + QMAKE_LIBFLAGS -= -g -ggdb3 +} diff --git a/mkspecs/features/symbian/default_post.prf b/mkspecs/features/symbian/default_post.prf index d9ff03d..ec6ecd0 100644 --- a/mkspecs/features/symbian/default_post.prf +++ b/mkspecs/features/symbian/default_post.prf @@ -52,3 +52,15 @@ isEmpty(TARGET.UID2) { } } } + +# Supports S60 3.1, 3.2, 5.0, Symbian^3, and Symbian^4 by default +platform_product_id = S60ProductID +platform_product_id = $$addLanguageDependentPkgItem(platform_product_id) +pkg_platform_dependencies = \ + "; Default HW/platform dependencies" \ + "[0x102032BE],0,0,0,{$$platform_product_id}" \ + "[0x102752AE],0,0,0,{$$platform_product_id}" \ + "[0x1028315F],0,0,0,{$$platform_product_id}" \ + "[0x20022E6D],0,0,0,{$$platform_product_id}" \ + "[0x20032DE7],0,0,0,{$$platform_product_id}" \ + " " diff --git a/mkspecs/features/symbian/localize_deployment.prf b/mkspecs/features/symbian/localize_deployment.prf new file mode 100644 index 0000000..5f52dbc --- /dev/null +++ b/mkspecs/features/symbian/localize_deployment.prf @@ -0,0 +1,82 @@ +SYMBIAN_LANG.af = 34 #Afrikaans +SYMBIAN_LANG.sq = 35 #Albanian +SYMBIAN_LANG.am = 36 #Amharic +SYMBIAN_LANG.ar = 37 #Arabic +SYMBIAN_LANG.hy = 38 #Armenian +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.hr = 45 #Croatian +SYMBIAN_LANG.cs = 25 #Czech +SYMBIAN_LANG.da = 07 #Danish +SYMBIAN_LANG.nl = 18 #Dutch +SYMBIAN_LANG.en = 01 #English(UK) +SYMBIAN_LANG.et = 49 #Estonian +SYMBIAN_LANG.fi = 09 #Finnish +SYMBIAN_LANG.fr = 02 #French +SYMBIAN_LANG.gd = 52 #Gaelic +SYMBIAN_LANG.ka = 53 #Georgian +SYMBIAN_LANG.de = 03 #German +SYMBIAN_LANG.el = 54 #Greek +SYMBIAN_LANG.gu = 56 #Gujarati +SYMBIAN_LANG.he = 57 #Hebrew +SYMBIAN_LANG.hi = 58 #Hindi +SYMBIAN_LANG.hu = 17 #Hungarian +SYMBIAN_LANG.is = 15 #Icelandic +SYMBIAN_LANG.id = 59 #Indonesian +SYMBIAN_LANG.ga = 60 #Irish +SYMBIAN_LANG.it = 05 #Italian +SYMBIAN_LANG.ja = 32 #Japanese +SYMBIAN_LANG.kn = 62 #Kannada +SYMBIAN_LANG.kk = 63 #Kazakh +SYMBIAN_LANG.ko = 65 #Korean +SYMBIAN_LANG.lo = 66 #Laothian +SYMBIAN_LANG.lv = 67 #Latvian +SYMBIAN_LANG.lt = 68 #Lithuanian +SYMBIAN_LANG.mk = 69 #Macedonian +SYMBIAN_LANG.ms = 70 #Malay +SYMBIAN_LANG.ml = 71 #Malayalam +SYMBIAN_LANG.mr = 72 #Marathi +SYMBIAN_LANG.mo = 73 #Moldavian +SYMBIAN_LANG.mn = 74 #Mongolian +SYMBIAN_LANG.nb = 08 #Norwegian +SYMBIAN_LANG.pl = 27 #Polish +SYMBIAN_LANG.pt = 13 #Portuguese +SYMBIAN_LANG.pa = 77 #Punjabi +SYMBIAN_LANG.ro = 78 #Romanian +SYMBIAN_LANG.ru = 16 #Russian +SYMBIAN_LANG.sr = 79 #Serbian +SYMBIAN_LANG.si = 80 #Singhalese +SYMBIAN_LANG.sk = 26 #Slovak +SYMBIAN_LANG.sl = 28 #Slovenian +SYMBIAN_LANG.so = 81 #Somali +SYMBIAN_LANG.es = 04 #Spanish +SYMBIAN_LANG.sw = 84 #Swahili +SYMBIAN_LANG.sv = 06 #Swedish +SYMBIAN_LANG.tl = 39 #Tagalog +SYMBIAN_LANG.ta = 87 #Tamil +SYMBIAN_LANG.te = 88 #Telugu +SYMBIAN_LANG.th = 33 #Thai +SYMBIAN_LANG.bo = 89 #Tibetan +SYMBIAN_LANG.ti = 90 #Tigrinya +SYMBIAN_LANG.tr = 14 #Turkish +SYMBIAN_LANG.tk = 92 #Turkmen +SYMBIAN_LANG.uk = 93 #Ukrainian +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 + +isEmpty(SYMBIAN_MATCHED_LANGUAGES) { + matchSymbianLanguages() +} + +!isEmpty(SYMBIAN_MATCHED_TRANSLATIONS) { + # Generate dependencies to .ts files for pkg files + template_pkg_target.depends += $$SYMBIAN_MATCHED_TRANSLATIONS + installer_pkg_target.depends += $$SYMBIAN_MATCHED_TRANSLATIONS + stub_pkg_target.depends += $$SYMBIAN_MATCHED_TRANSLATIONS +} diff --git a/mkspecs/features/symbian/qt.prf b/mkspecs/features/symbian/qt.prf index b5d3d98..c8f97aa 100644 --- a/mkspecs/features/symbian/qt.prf +++ b/mkspecs/features/symbian/qt.prf @@ -25,9 +25,10 @@ INCLUDEPATH = $$PREPEND_INCLUDEPATH $$INCLUDEPATH # Note: Qt libs package with full capabilities has UID3 of 0x2001E61C, # while self-signed version typically has temporary UID3 of 0xE001E61C. contains(CONFIG, qt):!contains(TARGET.UID3, 0x2001E61C):!contains(TARGET.UID3, 0xE001E61C):isEmpty(QT_LIBINFIX) { + qt_pkg_name = Qt pkg_depends_qt += \ "; Default dependency to Qt libraries" \ - "(0x2001E61C), $${QT_MAJOR_VERSION}, $${QT_MINOR_VERSION}, $${QT_PATCH_VERSION}, {\"Qt\"}" + "(0x2001E61C), $${QT_MAJOR_VERSION}, $${QT_MINOR_VERSION}, $${QT_PATCH_VERSION}, {$$addLanguageDependentPkgItem(qt_pkg_name)}" # Projects linking to webkit need dependency to webkit contains(QT, webkit): { @@ -38,9 +39,10 @@ contains(CONFIG, qt):!contains(TARGET.UID3, 0x2001E61C):!contains(TARGET.UID3, 0 QT_WEBKIT_PATCH_VERSION = $${QT_PATCH_VERSION} } + webkit_pkg_name = QtWebKit pkg_depends_webkit += \ "; Dependency to Qt Webkit" \ - "(0x200267C2), $${QT_WEBKIT_MAJOR_VERSION}, $${QT_WEBKIT_MINOR_VERSION}, $${QT_WEBKIT_PATCH_VERSION}, {\"QtWebKit\"}" + "(0x200267C2), $${QT_WEBKIT_MAJOR_VERSION}, $${QT_WEBKIT_MINOR_VERSION}, $${QT_WEBKIT_PATCH_VERSION}, {$$addLanguageDependentPkgItem(webkit_pkg_name)}" } else { default_deployment.pkg_prerules -= pkg_depends_webkit } diff --git a/mkspecs/features/symbian/sis_targets.prf b/mkspecs/features/symbian/sis_targets.prf index e5a33cb..7456deb 100644 --- a/mkspecs/features/symbian/sis_targets.prf +++ b/mkspecs/features/symbian/sis_targets.prf @@ -13,6 +13,17 @@ else:!equals(DEPLOYMENT, default_deployment) { equals(GENERATE_SIS_TARGETS, true) { baseTarget = $$symbianRemoveSpecialCharacters($$basename(TARGET)) + template_pkg_target.target = $${baseTarget}_template.pkg + template_pkg_target.depends += $$_PRO_FILE_ + template_pkg_target.commands = $(MAKE) -f $(MAKEFILE) qmake + installer_pkg_target.target = $${baseTarget}_installer.pkg + installer_pkg_target.depends += $$_PRO_FILE_ + installer_pkg_target.commands = $(MAKE) -f $(MAKEFILE) qmake + stub_pkg_target.target = $${baseTarget}_stub.pkg + stub_pkg_target.depends += $$_PRO_FILE_ + stub_pkg_target.commands = $(MAKE) -f $(MAKEFILE) qmake + QMAKE_EXTRA_TARGETS += template_pkg_target installer_pkg_target stub_pkg_target + symbian-abld|symbian-sbsv2 { symbian-sbsv2 { @@ -36,6 +47,7 @@ equals(GENERATE_SIS_TARGETS, true) { , \ $(MAKE) -f $(MAKEFILE) fail_sis_nopkg \ ) + sis_target.depends += $${baseTarget}_template.pkg ok_sis_target.target = ok_sis ok_sis_target.commands = createpackage $$CONVERT_GCCE_PARAM $(QT_SIS_OPTIONS) $${baseTarget}_template.pkg \ @@ -55,6 +67,7 @@ equals(GENERATE_SIS_TARGETS, true) { , \ $(MAKE) -f $(MAKEFILE) fail_sis_nopkg \ ) + unsigned_sis_target.depends += $${baseTarget}_template.pkg ok_unsigned_sis_target.target = ok_unsigned_sis ok_unsigned_sis_target.commands = createpackage $$CONVERT_GCCE_PARAM $(QT_SIS_OPTIONS) -o $${baseTarget}_template.pkg $(QT_SIS_TARGET) @@ -68,7 +81,7 @@ equals(GENERATE_SIS_TARGETS, true) { , \ $(MAKE) -f $(MAKEFILE) fail_sis_nopkg \ ) - installer_sis_target.depends = 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 - \ @@ -80,7 +93,7 @@ equals(GENERATE_SIS_TARGETS, true) { , \ $(MAKE) -f $(MAKEFILE) fail_sis_nopkg \ ) - unsigned_installer_sis_target.depends = unsigned_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 @@ -105,6 +118,7 @@ equals(GENERATE_SIS_TARGETS, true) { , \ $(MAKE) -f $(MAKEFILE) fail_sis_nopkg \ ) + stub_sis_target.depends += $${baseTarget}_stub.pkg ok_stub_sis_target.target = ok_stub_sis ok_stub_sis_target.commands = createpackage -s $(QT_SIS_OPTIONS) $${baseTarget}_stub.pkg \ @@ -155,11 +169,11 @@ equals(GENERATE_SIS_TARGETS, true) { sis_target.target = sis sis_target.commands = $$QMAKE_CREATEPACKAGE $(QT_SIS_OPTIONS) $${baseTarget}_template.pkg \ - $(QT_SIS_CERTIFICATE) $(QT_SIS_KEY) $(QT_SIS_PASSPHRASE) - sis_target.depends = first + sis_target.depends = first $${baseTarget}_template.pkg unsigned_sis_target.target = unsigned_sis unsigned_sis_target.commands = $$QMAKE_CREATEPACKAGE $(QT_SIS_OPTIONS) -o $${baseTarget}_template.pkg - unsigned_sis_target.depends = first + unsigned_sis_target.depends = first $${baseTarget}_template.pkg target_sis_target.target = $${sis_destdir}/$${baseTarget}.sis target_sis_target.commands = $(MAKE) -f $(MAKEFILE) sis @@ -167,11 +181,11 @@ equals(GENERATE_SIS_TARGETS, true) { 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.depends = sis + installer_sis_target.depends = $${baseTarget}_installer.pkg sis 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 = unsigned_sis + unsigned_installer_sis_target.depends = $${baseTarget}_installer.pkg unsigned_sis !isEmpty(sis_destdir):!equals(sis_destdir, "."):!equals(sis_destdir, "./") { sis_target.commands += && $$QMAKE_MOVE $${baseTarget}.sis $$sis_destdir diff --git a/mkspecs/features/symbian/stl.prf b/mkspecs/features/symbian/stl.prf index 65d4b93..1fd5e16 100644 --- a/mkspecs/features/symbian/stl.prf +++ b/mkspecs/features/symbian/stl.prf @@ -12,7 +12,7 @@ INCLUDEPATH += $$OS_LAYER_STDCPP_SYSTEMINCLUDE # Remove mkspecs/common/symbian/stl-off from beginning of includepath # in order to use new and delete operators from STL -INCLUDEPATH -= $$[QT_INSTALL_PREFIX]/mkspecs/common/symbian/stl-off +INCLUDEPATH -= $$[QT_INSTALL_DATA]/mkspecs/common/symbian/stl-off # libstdcppv5 is preferred over libstdcpp as it has/uses the throwing version of operator new # STDCPP turns on standard C++ new behaviour (ie. throwing new) diff --git a/mkspecs/features/unix/gdb_dwarf_index.prf b/mkspecs/features/unix/gdb_dwarf_index.prf index e2167a6..c647bae 100644 --- a/mkspecs/features/unix/gdb_dwarf_index.prf +++ b/mkspecs/features/unix/gdb_dwarf_index.prf @@ -1,7 +1,7 @@ !CONFIG(separate_debug_info):CONFIG(debug, debug|release):!staticlib:!static:!contains(TEMPLATE, subdirs):!isEmpty(QMAKE_OBJCOPY) { QMAKE_GDB_INDEX = { test -z \"$(DESTDIR)\" || cd \"$(DESTDIR)\"; } && \ - test \$\$(gdb --version | sed -e \'s,[^(]*(GDB).\\([0-9]\\)\\.\\([0-9]\\).*,\\1\\2,;q\') -gt 71 && \ + test \$\$(gdb --version | sed -e \'s,[^(]*(GDB).\\([0-9]\\)\\.\\([0-9]\\).*,\\1\\2,;q\') -gt 72 && \ gdb --nx --batch --quiet -ex \'set confirm off\' -ex \'save gdb-index .\' -ex quit \'$(TARGET)\' && \ test -f $(TARGET).gdb-index && \ $$QMAKE_OBJCOPY --add-section \'.gdb_index=$(TARGET).gdb-index\' --set-section-flags \'.gdb_index=readonly\' \'$(TARGET)\' \'$(TARGET)\' && \ diff --git a/qmake/Makefile.unix b/qmake/Makefile.unix index f1697a9..a24076e 100644 --- a/qmake/Makefile.unix +++ b/qmake/Makefile.unix @@ -73,7 +73,7 @@ CPPFLAGS = -I. -Igenerators -Igenerators/unix -Igenerators/win32 -Igenerators/ma -I$(BUILD_PATH)/src/corelib/global -I$(BUILD_PATH)/src/corelib/xml \ -I$(SOURCE_PATH)/tools/shared \ -DQT_NO_PCRE \ - -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED \ + -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED -DQLIBRARYINFO_EPOCROOT \ -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_STL \ -DQT_NO_COMPRESS -I$(QMAKESPEC) -DHAVE_QCONFIG_CPP -DQT_NO_THREAD -DQT_NO_QOBJECT \ -DQT_NO_GEOM_VARIANT -DQT_NO_DEPRECATED $(OPENSOURCE_CXXFLAGS) diff --git a/qmake/Makefile.win32 b/qmake/Makefile.win32 index c9e623d..4d29537 100644 --- a/qmake/Makefile.win32 +++ b/qmake/Makefile.win32 @@ -40,7 +40,8 @@ CFLAGS_BARE = -c -Fo./ \ -I$(SOURCE_PATH)\tools\shared \ -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL \ -DQT_NO_COMPRESS -DUNICODE -DHAVE_QCONFIG_CPP -DQT_BUILD_QMAKE -DQT_NO_THREAD \ - -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM -DQT_NO_PCRE -DQT_BOOTSTRAPPED + -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM -DQT_NO_PCRE -DQT_BOOTSTRAPPED \ + -DQLIBRARYINFO_EPOCROOT CFLAGS = -Yuqmake_pch.h -FIqmake_pch.h -Fpqmake_pch.pch $(CFLAGS_BARE) $(CFLAGS) CXXFLAGS_BARE = $(CFLAGS_BARE) diff --git a/qmake/Makefile.win32-g++ b/qmake/Makefile.win32-g++ index 1a20d71..59ac8c2 100644 --- a/qmake/Makefile.win32-g++ +++ b/qmake/Makefile.win32-g++ @@ -25,7 +25,7 @@ CFLAGS = -c -o$@ -O \ -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT -DQT_NO_PCRE \ -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -DUNICODE -DHAVE_QCONFIG_CPP \ -DQT_BUILD_QMAKE -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM \ - -DQT_BOOTSTRAPPED + -DQT_BOOTSTRAPPED -DQLIBRARYINFO_EPOCROOT CXXFLAGS = $(CFLAGS) LFLAGS = -static-libgcc -static-libstdc++ -s LIBS = -lole32 -luuid diff --git a/qmake/Makefile.win32-g++-sh b/qmake/Makefile.win32-g++-sh index aad4a9e..a84b3f6 100644 --- a/qmake/Makefile.win32-g++-sh +++ b/qmake/Makefile.win32-g++-sh @@ -25,7 +25,7 @@ CFLAGS = -c -o$@ -O \ -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT -DQT_NO_PCRE \ -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -DUNICODE -DHAVE_QCONFIG_CPP \ -DQT_BUILD_QMAKE -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM \ - -DQT_BOOTSTRAPPED + -DQT_BOOTSTRAPPED -DQLIBRARYINFO_EPOCROOT CXXFLAGS = $(CFLAGS) LFLAGS = -static-libgcc -static-libstdc++ -s LIBS = -lole32 -luuid diff --git a/qmake/generators/symbian/initprojectdeploy_symbian.cpp b/qmake/generators/symbian/initprojectdeploy_symbian.cpp index eb45b10..2349c11 100644 --- a/qmake/generators/symbian/initprojectdeploy_symbian.cpp +++ b/qmake/generators/symbian/initprojectdeploy_symbian.cpp @@ -47,7 +47,7 @@ #include <qdebug.h> // Included from tools/shared -#include <symbian/epocroot.h> +#include <symbian/epocroot_p.h> #define SYSBIN_DIR "/sys/bin" #define HW_Z_DIR "epoc32/data/z" @@ -75,7 +75,7 @@ static bool isPlugin(const QFileInfo& info, const QString& devicePath) && (devicePath.size() < 8 || (0 != devicePath.compare(QLatin1String(SYSBIN_DIR), Qt::CaseInsensitive) && 0 != devicePath.mid(1).compare(QLatin1String(":" SYSBIN_DIR), Qt::CaseInsensitive) - && 0 != devicePath.compare(epocRoot() + QLatin1String(HW_Z_DIR SYSBIN_DIR))))) { + && 0 != devicePath.compare(qt_epocRoot() + QLatin1String(HW_Z_DIR SYSBIN_DIR))))) { return true; } else { return false; @@ -182,7 +182,7 @@ void initProjectDeploySymbian(QMakeProject* project, QString deploymentDrive; if (0 == platform.compare(QLatin1String(ROM_DEPLOYMENT_PLATFORM))) { - deploymentDrive = epocRoot() + HW_Z_DIR; + deploymentDrive = qt_epocRoot() + HW_Z_DIR; } else { deploymentDrive = targetPathHasDriveLetter ? targetPath.left(2) : QLatin1String("c:"); } @@ -225,9 +225,9 @@ void initProjectDeploySymbian(QMakeProject* project, } else { if (0 == platform.compare(QLatin1String(EMULATOR_DEPLOYMENT_PLATFORM))) { if (devicePathHasDriveLetter) { - devicePath = epocRoot() + "epoc32/winscw/" + devicePath.remove(1, 1); + devicePath = qt_epocRoot() + "epoc32/winscw/" + devicePath.remove(1, 1); } else { - devicePath = epocRoot() + "epoc32/winscw/c" + devicePath; + devicePath = qt_epocRoot() + "epoc32/winscw/c" + devicePath; } } else { if (devicePathHasDriveLetter @@ -279,7 +279,7 @@ void initProjectDeploySymbian(QMakeProject* project, // Executables and libraries are deployed to \sys\bin QFileInfo targetPath; if (epocBuild) - targetPath.setFile(epocRoot() + "epoc32/release/" + platform + "/" + build + "/"); + targetPath.setFile(qt_epocRoot() + "epoc32/release/" + platform + "/" + build + "/"); else targetPath.setFile(info.path() + QDir::separator()); if(devicePathHasDriveLetter) { diff --git a/qmake/generators/symbian/symbian_makefile.h b/qmake/generators/symbian/symbian_makefile.h index 63cede2..9339223 100644 --- a/qmake/generators/symbian/symbian_makefile.h +++ b/qmake/generators/symbian/symbian_makefile.h @@ -81,18 +81,18 @@ public: } } + SymbianLocalizationList symbianLocalizationList; + parseTsFiles(&symbianLocalizationList); + if (generatePkg) { - generatePkgFile(iconFile, false); + generatePkgFile(iconFile, false, symbianLocalizationList); } - // Get the application translations and convert to symbian OS lang code, i.e. decical number - QStringList symbianLangCodes = symbianLangCodesFromTsFiles(); - if (targetType == TypeExe) { if (!this->project->values("CONFIG").contains("no_icon", Qt::CaseInsensitive)) { writeRegRssFile(userRssRules); writeRssFile(numberOfIcons, iconFile); - writeLocFile(symbianLangCodes); + writeLocFile(symbianLocalizationList); } } diff --git a/qmake/generators/symbian/symbiancommon.cpp b/qmake/generators/symbian/symbiancommon.cpp index 9d4f27e..602bcc2 100644 --- a/qmake/generators/symbian/symbiancommon.cpp +++ b/qmake/generators/symbian/symbiancommon.cpp @@ -41,9 +41,10 @@ #include "symbiancommon.h" #include <qdebug.h> +#include <qxmlstream.h> // Included from tools/shared -#include <symbian/epocroot.h> +#include <symbian/epocroot_p.h> #define RESOURCE_DIRECTORY_RESOURCE "\\\\resource\\\\apps\\\\" @@ -151,7 +152,9 @@ QString romPath(const QString& path) return QLatin1String("z:") + path; } -void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, bool epocBuild) +void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, + bool epocBuild, + const SymbianLocalizationList &symbianLocalizationList) { QMakeProject *project = generator->project; QString pkgFilename = Option::output_dir + QLatin1Char('/') + @@ -270,8 +273,17 @@ void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, bool epocB // Apply some defaults if specific data does not exist in PKG pre-rules if (languageRules.isEmpty()) { - // language, (*** hardcoded to english atm, should be parsed from TRANSLATIONS) - languageRules << "; Language\n&EN\n\n"; + if (symbianLocalizationList.isEmpty()) { + languageRules << "; Language\n&EN\n\n"; + } else { + QStringList langCodes; + SymbianLocalizationListIterator iter(symbianLocalizationList); + while (iter.hasNext()) { + const SymbianLocalization &loc = iter.next(); + langCodes << loc.symbianLanguageCode; + } + languageRules << QString("; Languages\n&%1\n\n").arg(langCodes.join(",")); + } } else if (headerRules.isEmpty()) { // In case user defines langs, he must take care also about SIS header fprintf(stderr, "Warning: If language is defined with DEPLOYMENT pkg_prerules, also the SIS header must be defined\n"); @@ -320,12 +332,14 @@ void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, bool epocB // Package header QString sisHeader = "; SIS header: name, uid, version\n#{\"%1\"},(%2),%3\n\n"; - QString visualTarget = project->values("DEPLOYMENT.display_name").join(" "); - if (visualTarget.isEmpty()) - visualTarget = generator->escapeFilePath(project->first("TARGET")); - visualTarget = removePathSeparators(visualTarget); - QString wrapperTarget = visualTarget + " installer"; + QString defaultVisualTarget = project->values("DEPLOYMENT.display_name").join(" "); + if (defaultVisualTarget.isEmpty()) + defaultVisualTarget = generator->escapeFilePath(project->first("TARGET")); + defaultVisualTarget = removePathSeparators(defaultVisualTarget); + + QString visualTarget = generatePkgNameForHeader(symbianLocalizationList, defaultVisualTarget, false); + QString wrapperTarget = generatePkgNameForHeader(symbianLocalizationList, defaultVisualTarget, true); if (installerSisHeader.startsWith("0x", Qt::CaseInsensitive)) { tw << sisHeader.arg(wrapperTarget).arg(installerSisHeader).arg(applicationVersion); @@ -344,7 +358,13 @@ void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, bool epocB // Vendor name if (!containsStartWithItem('%', vendorRules)) { - vendorRules << "; Default localized vendor name\n%{\"Vendor\"}\n\n"; + QString vendorStr = QLatin1String("\"Vendor\","); + QString locVendors = vendorStr; + for (int i = 1; i < symbianLocalizationList.size(); i++) { + locVendors.append(vendorStr); + } + locVendors.chop(1); + vendorRules << QString("; Default localized vendor name\n%{%1}\n\n").arg(locVendors); } if (!containsStartWithItem(':', vendorRules)) { vendorRules << "; Default unique vendor name\n:\"Vendor\"\n\n"; @@ -385,12 +405,19 @@ void SymbianCommonGenerator::generatePkgFile(const QString &iconFile, bool epocB t << manufacturerStr << endl; } + // ### FIXME: remove epocBuild check once makefile based mkspecs support localized resource generation + if (epocBuild && symbianLocalizationList.size()) { + // Add localized resources to DEPLOYMENT if default resource deployment is done + addLocalizedResourcesToDeployment("default_resource_deployment.sources", symbianLocalizationList); + addLocalizedResourcesToDeployment("default_reg_deployment.sources", symbianLocalizationList); + } + // deploy files specified by DEPLOYMENT variable QString remoteTestPath; QString zDir; remoteTestPath = QString("!:\\private\\%1").arg(privateDirUid); if (epocBuild) - zDir = epocRoot() + QLatin1String("epoc32/data/z"); + zDir = qt_epocRoot() + QLatin1String("epoc32/data/z"); DeploymentList depList; initProjectDeploySymbian(project, depList, remoteTestPath, true, epocBuild, "$(PLATFORM)", "$(TARGET)", generatedDirs, generatedFiles); @@ -633,12 +660,9 @@ void SymbianCommonGenerator::writeRssFile(QString &numberOfIcons, QString &iconF } } -void SymbianCommonGenerator::writeLocFile(QStringList &symbianLangCodes) +void SymbianCommonGenerator::writeLocFile(const SymbianLocalizationList &symbianLocalizationList) { - QString filename(fixedTarget); - if (!Option::output_dir.isEmpty()) - filename = Option::output_dir + '/' + filename; - filename.append(".loc"); + QString filename = generateLocFileName(); QFile ft(filename); if (ft.open(QIODevice::WriteOnly)) { generatedFiles << ft.fileName(); @@ -658,11 +682,22 @@ void SymbianCommonGenerator::writeLocFile(QStringList &symbianLangCodes) t << "#ifdef LANGUAGE_SC" << endl; t << "#define STRING_r_short_caption \"" << displayName << "\"" << endl; t << "#define STRING_r_caption \"" << displayName << "\"" << endl; - foreach(QString lang, symbianLangCodes) { - t << "#elif defined LANGUAGE_" << lang << endl; - t << "#define STRING_r_short_caption \"" << displayName << "\"" << endl; - t << "#define STRING_r_caption \"" << displayName << "\"" << endl; + + SymbianLocalizationListIterator iter(symbianLocalizationList); + while (iter.hasNext()) { + const SymbianLocalization &loc = iter.next(); + QString shortCaption = loc.shortCaption; + QString longCaption = loc.longCaption; + if (shortCaption.isEmpty()) + shortCaption = displayName; + if (longCaption.isEmpty()) + longCaption = displayName; + + t << "#elif defined LANGUAGE_" << loc.symbianLanguageCode << endl; + t << "#define STRING_r_short_caption \"" << shortCaption << "\"" << endl; + t << "#define STRING_r_caption \"" << longCaption << "\"" << endl; } + t << "#else" << endl; t << "#define STRING_r_short_caption \"" << displayName << "\"" << endl; t << "#define STRING_r_caption \"" << displayName << "\"" << endl; @@ -803,195 +838,49 @@ void SymbianCommonGenerator::writeCustomDefFile() } } -QStringList SymbianCommonGenerator::symbianLangCodesFromTsFiles() +void SymbianCommonGenerator::parseTsFiles(SymbianLocalizationList *symbianLocalizationList) { - QStringList tsfiles; - QStringList symbianLangCodes; - tsfiles << generator->project->values("TRANSLATIONS"); + if (!generator->project->isActiveConfig("localize_deployment")) { + return; + } - fillQt2S60LangMapTable(); + QStringList symbianTsFiles; - foreach(QString file, tsfiles) { - int extIndex = file.lastIndexOf("."); - int langIndex = file.lastIndexOf("_", (extIndex - file.length())); - langIndex += 1; - QString qtlang = file.mid(langIndex, extIndex - langIndex); - QString s60lang = qt2S60LangMapTable.value(qtlang, QString("SC")); + symbianTsFiles << generator->project->values("SYMBIAN_MATCHED_TRANSLATIONS"); - if (!symbianLangCodes.contains(s60lang) && s60lang != "SC") - symbianLangCodes += s60lang; - } + if (!symbianTsFiles.isEmpty()) { + fillQt2SymbianLocalizationList(symbianLocalizationList); - return symbianLangCodes; + QMutableListIterator<SymbianLocalization> iter(*symbianLocalizationList); + while (iter.hasNext()) { + SymbianLocalization &loc = iter.next(); + static QString matchStrTemplate = QLatin1String(".*_%1\\.ts"); + QString matchStr = matchStrTemplate.arg(loc.qtLanguageCode); + + foreach (QString file, symbianTsFiles) { + QRegExp matcher(matchStr); + if (matcher.exactMatch(file) && parseTsContent(file, &loc)) + break; + } + } + } } -void SymbianCommonGenerator::fillQt2S60LangMapTable() +void SymbianCommonGenerator::fillQt2SymbianLocalizationList(SymbianLocalizationList *symbianLocalizationList) { - qt2S60LangMapTable.reserve(170); // 165 items at time of writing. - qt2S60LangMapTable.insert("ab", "SC"); //Abkhazian // - qt2S60LangMapTable.insert("om", "SC"); //Afan // - qt2S60LangMapTable.insert("aa", "SC"); //Afar // - qt2S60LangMapTable.insert("af", "34"); //Afrikaans //Afrikaans - qt2S60LangMapTable.insert("sq", "35"); //Albanian //Albanian - qt2S60LangMapTable.insert("am", "36"); //Amharic //Amharic - qt2S60LangMapTable.insert("ar", "37"); //Arabic //Arabic - qt2S60LangMapTable.insert("hy", "38"); //Armenian //Armenian - qt2S60LangMapTable.insert("as", "SC"); //Assamese // - qt2S60LangMapTable.insert("ay", "SC"); //Aymara // - qt2S60LangMapTable.insert("az", "SC"); //Azerbaijani // - qt2S60LangMapTable.insert("ba", "SC"); //Bashkir // - qt2S60LangMapTable.insert("eu", "SC"); //Basque // - qt2S60LangMapTable.insert("bn", "41"); //Bengali //Bengali - qt2S60LangMapTable.insert("dz", "SC"); //Bhutani // - qt2S60LangMapTable.insert("bh", "SC"); //Bihari // - qt2S60LangMapTable.insert("bi", "SC"); //Bislama // - qt2S60LangMapTable.insert("br", "SC"); //Breton // - qt2S60LangMapTable.insert("bg", "42"); //Bulgarian //Bulgarian - qt2S60LangMapTable.insert("my", "43"); //Burmese //Burmese - qt2S60LangMapTable.insert("be", "40"); //Byelorussian //Belarussian - qt2S60LangMapTable.insert("km", "SC"); //Cambodian // - qt2S60LangMapTable.insert("ca", "44"); //Catalan //Catalan - qt2S60LangMapTable.insert("zh", "SC"); //Chinese // - qt2S60LangMapTable.insert("co", "SC"); //Corsican // - qt2S60LangMapTable.insert("hr", "45"); //Croatian //Croatian - qt2S60LangMapTable.insert("cs", "25"); //Czech //Czech - qt2S60LangMapTable.insert("da", "07"); //Danish //Danish - qt2S60LangMapTable.insert("nl", "18"); //Dutch //Dutch - qt2S60LangMapTable.insert("en", "01"); //English //English(UK) - qt2S60LangMapTable.insert("eo", "SC"); //Esperanto // - qt2S60LangMapTable.insert("et", "49"); //Estonian //Estonian - qt2S60LangMapTable.insert("fo", "SC"); //Faroese // - qt2S60LangMapTable.insert("fj", "SC"); //Fiji // - qt2S60LangMapTable.insert("fi", "09"); //Finnish //Finnish - qt2S60LangMapTable.insert("fr", "02"); //French //French - qt2S60LangMapTable.insert("fy", "SC"); //Frisian // - qt2S60LangMapTable.insert("gd", "52"); //Gaelic //Gaelic - qt2S60LangMapTable.insert("gl", "SC"); //Galician // - qt2S60LangMapTable.insert("ka", "53"); //Georgian //Georgian - qt2S60LangMapTable.insert("de", "03"); //German //German - qt2S60LangMapTable.insert("el", "54"); //Greek //Greek - qt2S60LangMapTable.insert("kl", "SC"); //Greenlandic // - qt2S60LangMapTable.insert("gn", "SC"); //Guarani // - qt2S60LangMapTable.insert("gu", "56"); //Gujarati //Gujarati - qt2S60LangMapTable.insert("ha", "SC"); //Hausa // - qt2S60LangMapTable.insert("he", "57"); //Hebrew //Hebrew - qt2S60LangMapTable.insert("hi", "58"); //Hindi //Hindi - qt2S60LangMapTable.insert("hu", "17"); //Hungarian //Hungarian - qt2S60LangMapTable.insert("is", "15"); //Icelandic //Icelandic - qt2S60LangMapTable.insert("id", "59"); //Indonesian //Indonesian - qt2S60LangMapTable.insert("ia", "SC"); //Interlingua // - qt2S60LangMapTable.insert("ie", "SC"); //Interlingue // - qt2S60LangMapTable.insert("iu", "SC"); //Inuktitut // - qt2S60LangMapTable.insert("ik", "SC"); //Inupiak // - qt2S60LangMapTable.insert("ga", "60"); //Irish //Irish - qt2S60LangMapTable.insert("it", "05"); //Italian //Italian - qt2S60LangMapTable.insert("ja", "32"); //Japanese //Japanese - qt2S60LangMapTable.insert("jv", "SC"); //Javanese // - qt2S60LangMapTable.insert("kn", "62"); //Kannada //Kannada - qt2S60LangMapTable.insert("ks", "SC"); //Kashmiri // - qt2S60LangMapTable.insert("kk", "63"); //Kazakh //Kazakh - qt2S60LangMapTable.insert("rw", "SC"); //Kinyarwanda // - qt2S60LangMapTable.insert("ky", "SC"); //Kirghiz // - qt2S60LangMapTable.insert("ko", "65"); //Korean //Korean - qt2S60LangMapTable.insert("ku", "SC"); //Kurdish // - qt2S60LangMapTable.insert("rn", "SC"); //Kurundi // - qt2S60LangMapTable.insert("lo", "66"); //Laothian //Laothian - qt2S60LangMapTable.insert("la", "SC"); //Latin // - qt2S60LangMapTable.insert("lv", "67"); //Latvian //Latvian - qt2S60LangMapTable.insert("ln", "SC"); //Lingala // - qt2S60LangMapTable.insert("lt", "68"); //Lithuanian //Lithuanian - qt2S60LangMapTable.insert("mk", "69"); //Macedonian //Macedonian - qt2S60LangMapTable.insert("mg", "SC"); //Malagasy // - qt2S60LangMapTable.insert("ms", "70"); //Malay //Malay - qt2S60LangMapTable.insert("ml", "71"); //Malayalam //Malayalam - qt2S60LangMapTable.insert("mt", "SC"); //Maltese // - qt2S60LangMapTable.insert("mi", "SC"); //Maori // - qt2S60LangMapTable.insert("mr", "72"); //Marathi //Marathi - qt2S60LangMapTable.insert("mo", "73"); //Moldavian //Moldovian - qt2S60LangMapTable.insert("mn", "74"); //Mongolian //Mongolian - qt2S60LangMapTable.insert("na", "SC"); //Nauru // - qt2S60LangMapTable.insert("ne", "SC"); //Nepali // - qt2S60LangMapTable.insert("nb", "08"); //Norwegian //Norwegian - qt2S60LangMapTable.insert("oc", "SC"); //Occitan // - qt2S60LangMapTable.insert("or", "SC"); //Oriya // - qt2S60LangMapTable.insert("ps", "SC"); //Pashto // - qt2S60LangMapTable.insert("fa", "SC"); //Persian // - qt2S60LangMapTable.insert("pl", "27"); //Polish //Polish - qt2S60LangMapTable.insert("pt", "13"); //Portuguese //Portuguese - qt2S60LangMapTable.insert("pa", "77"); //Punjabi //Punjabi - qt2S60LangMapTable.insert("qu", "SC"); //Quechua // - qt2S60LangMapTable.insert("rm", "SC"); //RhaetoRomance // - qt2S60LangMapTable.insert("ro", "78"); //Romanian //Romanian - qt2S60LangMapTable.insert("ru", "16"); //Russian //Russian - qt2S60LangMapTable.insert("sm", "SC"); //Samoan // - qt2S60LangMapTable.insert("sg", "SC"); //Sangho // - qt2S60LangMapTable.insert("sa", "SC"); //Sanskrit // - qt2S60LangMapTable.insert("sr", "79"); //Serbian //Serbian - qt2S60LangMapTable.insert("sh", "SC"); //SerboCroatian // - qt2S60LangMapTable.insert("st", "SC"); //Sesotho // - qt2S60LangMapTable.insert("tn", "SC"); //Setswana // - qt2S60LangMapTable.insert("sn", "SC"); //Shona // - qt2S60LangMapTable.insert("sd", "SC"); //Sindhi // - qt2S60LangMapTable.insert("si", "80"); //Singhalese //Sinhalese - qt2S60LangMapTable.insert("ss", "SC"); //Siswati // - qt2S60LangMapTable.insert("sk", "26"); //Slovak //Slovak - qt2S60LangMapTable.insert("sl", "28"); //Slovenian //Slovenian - qt2S60LangMapTable.insert("so", "81"); //Somali //Somali - qt2S60LangMapTable.insert("es", "04"); //Spanish //Spanish - qt2S60LangMapTable.insert("su", "SC"); //Sundanese // - qt2S60LangMapTable.insert("sw", "84"); //Swahili //Swahili - qt2S60LangMapTable.insert("sv", "06"); //Swedish //Swedish - qt2S60LangMapTable.insert("tl", "39"); //Tagalog //Tagalog - qt2S60LangMapTable.insert("tg", "SC"); //Tajik // - qt2S60LangMapTable.insert("ta", "87"); //Tamil //Tamil - qt2S60LangMapTable.insert("tt", "SC"); //Tatar // - qt2S60LangMapTable.insert("te", "88"); //Telugu //Telugu - qt2S60LangMapTable.insert("th", "33"); //Thai //Thai - qt2S60LangMapTable.insert("bo", "89"); //Tibetan //Tibetan - qt2S60LangMapTable.insert("ti", "90"); //Tigrinya //Tigrinya - qt2S60LangMapTable.insert("to", "SC"); //Tonga // - qt2S60LangMapTable.insert("ts", "SC"); //Tsonga // - qt2S60LangMapTable.insert("tr", "14"); //Turkish //Turkish - qt2S60LangMapTable.insert("tk", "92"); //Turkmen //Turkmen - qt2S60LangMapTable.insert("tw", "SC"); //Twi // - qt2S60LangMapTable.insert("ug", "SC"); //Uigur // - qt2S60LangMapTable.insert("uk", "93"); //Ukrainian //Ukrainian - qt2S60LangMapTable.insert("ur", "94"); //Urdu //Urdu - qt2S60LangMapTable.insert("uz", "SC"); //Uzbek // - qt2S60LangMapTable.insert("vi", "96"); //Vietnamese //Vietnamese - qt2S60LangMapTable.insert("vo", "SC"); //Volapuk // - qt2S60LangMapTable.insert("cy", "97"); //Welsh //Welsh - qt2S60LangMapTable.insert("wo", "SC"); //Wolof // - qt2S60LangMapTable.insert("xh", "SC"); //Xhosa // - qt2S60LangMapTable.insert("yi", "SC"); //Yiddish // - qt2S60LangMapTable.insert("yo", "SC"); //Yoruba // - qt2S60LangMapTable.insert("za", "SC"); //Zhuang // - qt2S60LangMapTable.insert("zu", "98"); //Zulu //Zulu - qt2S60LangMapTable.insert("nn", "75"); //Nynorsk //NorwegianNynorsk - qt2S60LangMapTable.insert("bs", "SC"); //Bosnian // - qt2S60LangMapTable.insert("dv", "SC"); //Divehi // - qt2S60LangMapTable.insert("gv", "SC"); //Manx // - qt2S60LangMapTable.insert("kw", "SC"); //Cornish // - qt2S60LangMapTable.insert("ak", "SC"); //Akan // - qt2S60LangMapTable.insert("kok", "SC"); //Konkani // - qt2S60LangMapTable.insert("gaa", "SC"); //Ga // - qt2S60LangMapTable.insert("ig", "SC"); //Igbo // - qt2S60LangMapTable.insert("kam", "SC"); //Kamba // - qt2S60LangMapTable.insert("syr", "SC"); //Syriac // - qt2S60LangMapTable.insert("byn", "SC"); //Blin // - qt2S60LangMapTable.insert("gez", "SC"); //Geez // - qt2S60LangMapTable.insert("kfo", "SC"); //Koro // - qt2S60LangMapTable.insert("sid", "SC"); //Sidamo // - qt2S60LangMapTable.insert("cch", "SC"); //Atsam // - qt2S60LangMapTable.insert("tig", "SC"); //Tigre // - qt2S60LangMapTable.insert("kaj", "SC"); //Jju // - qt2S60LangMapTable.insert("fur", "SC"); //Friulian // - qt2S60LangMapTable.insert("ve", "SC"); //Venda // - qt2S60LangMapTable.insert("ee", "SC"); //Ewe // - qt2S60LangMapTable.insert("wa", "SC"); //Walamo // - qt2S60LangMapTable.insert("haw", "SC"); //Hawaiian // - qt2S60LangMapTable.insert("kcg", "SC"); //Tyap // - qt2S60LangMapTable.insert("ny", "SC"); //Chewa // + static QString symbianCodePrefix = QLatin1String("SYMBIAN_LANG."); + + QStringList symbianLanguages = generator->project->values("SYMBIAN_MATCHED_LANGUAGES"); + + foreach (QString qtCode, symbianLanguages) { + SymbianLocalization newLoc; + QString symbianCodeVariable = symbianCodePrefix + qtCode; + newLoc.symbianLanguageCode = generator->project->first(symbianCodeVariable); + if (!newLoc.symbianLanguageCode.isEmpty()) { + newLoc.qtLanguageCode = qtCode; + symbianLocalizationList->append(newLoc); + } + } } void SymbianCommonGenerator::parsePreRules(const QString &deploymentVariable, @@ -1057,3 +946,183 @@ void SymbianCommonGenerator::parsePostRules(const QString &deploymentVariable, } } +bool SymbianCommonGenerator::parseTsContent(const QString &tsFilename, SymbianLocalization *loc) +{ + bool retval = true; + QMakeProject *project = generator->project; + QFile tsFile(tsFilename); + + if (tsFile.exists()) { + if (tsFile.open(QIODevice::ReadOnly)) { + static QString applicationCaptionsContext = QLatin1String("QtApplicationCaptions"); + static QString pkgNameContext = QLatin1String("QtPackageNames"); + static QString tsElement = QLatin1String("TS"); + static QString contextElement = QLatin1String("context"); + static QString nameElement = QLatin1String("name"); + static QString messageElement = QLatin1String("message"); + static QString sourceElement = QLatin1String("source"); + static QString translationElement = QLatin1String("translation"); + static QString shortCaptionId = QLatin1String("Application short caption"); + static QString longCaptionId = QLatin1String("Application long caption"); + static QString pkgDisplayNameId = QLatin1String("Package name"); + static QString installerPkgDisplayNameId = QLatin1String("Smart installer package name"); + static QString languageAttribute = QLatin1String("language"); + static QChar underscoreChar = QLatin1Char('_'); + + enum CurrentContext { + ContextUnknown, + ContextUninteresting, + ContextInteresting + }; + + QXmlStreamReader xml(&tsFile); + + while (xml.name() != tsElement) + xml.readNextStartElement(); + + while (xml.readNextStartElement()) { + if (xml.name() == contextElement) { + CurrentContext currentContext = ContextUnknown; + while (xml.readNextStartElement()) { + if (currentContext == ContextUnknown) { + // Expect name element before message elements + if (xml.name() == nameElement) { + QString nameText = xml.readElementText(); + if (nameText == applicationCaptionsContext || nameText == pkgNameContext) { + currentContext = ContextInteresting; + } else { + currentContext = ContextUninteresting; + } + } else { + xml.skipCurrentElement(); + } + } else if (currentContext == ContextInteresting) { + if (xml.name() == messageElement) { + QString source; + QString translation; + while (xml.readNextStartElement()) { + if (xml.name() == sourceElement) { + source = xml.readElementText(); + } else if (xml.name() == translationElement) { + translation = xml.readElementText(); + } else { + xml.skipCurrentElement(); + } + } + + if (source == shortCaptionId) { + if (loc->shortCaption.isEmpty()) { + loc->shortCaption = translation; + } else { + fprintf(stderr, "Warning: Duplicate application short caption defined in (%s).\n", + qPrintable(tsFilename)); + } + } else if (source == longCaptionId) { + if (loc->longCaption.isEmpty()) { + loc->longCaption = translation; + } else { + fprintf(stderr, "Warning: Duplicate application long caption defined in (%s).\n", + qPrintable(tsFilename)); + } + } else if (source == pkgDisplayNameId) { + if (loc->pkgDisplayName.isEmpty()) { + loc->pkgDisplayName = translation; + } else { + fprintf(stderr, "Warning: Duplicate package display name defined in (%s).\n", + qPrintable(tsFilename)); + } + } else if (source == installerPkgDisplayNameId) { + if (loc->installerPkgDisplayName.isEmpty()) { + loc->installerPkgDisplayName = translation; + } else { + fprintf(stderr, "Warning: Duplicate smart installer package display name defined in (%s).\n", + qPrintable(tsFilename)); + } + } + } else { + xml.skipCurrentElement(); + } + } else { + xml.skipCurrentElement(); + } + } + } else { + xml.skipCurrentElement(); + } + } + if (xml.hasError()) { + retval = false; + fprintf(stderr, "ERROR: Encountered error \"%s\" when parsing ts file (%s).\n", + qPrintable(xml.errorString()), qPrintable(tsFilename)); + } + } else { + retval = false; + fprintf(stderr, "Warning: Could not open ts file (%s).\n", qPrintable(tsFilename)); + } + } else { + retval = false; + fprintf(stderr, "Warning: ts file does not exist: (%s), unable to parse it.\n", + qPrintable(tsFilename)); + } + + return retval; +} + +QString SymbianCommonGenerator::generatePkgNameForHeader(const SymbianLocalizationList &symbianLocalizationList, + const QString &defaultName, + bool isForSmartInstaller) +{ + QStringList allNames; + QString noTranslation = defaultName; + + if (isForSmartInstaller) + noTranslation += QLatin1String(" installer"); + + SymbianLocalizationListIterator iter(symbianLocalizationList); + while (iter.hasNext()) { + const SymbianLocalization &loc = iter.next(); + QString currentName; + if (isForSmartInstaller) { + currentName = loc.installerPkgDisplayName; + } else { + currentName = loc.pkgDisplayName; + } + + if (currentName.isEmpty()) + currentName = noTranslation; + + allNames << currentName; + } + + if (!allNames.size()) + allNames << noTranslation; + + return allNames.join("\",\""); + +} + +void SymbianCommonGenerator::addLocalizedResourcesToDeployment(const QString &deploymentFilesVar, + const SymbianLocalizationList &symbianLocalizationList) +{ + QStringList locResources; + foreach (QString defaultResource, generator->project->values(deploymentFilesVar)) { + if (defaultResource.endsWith(".rsc")) { + defaultResource.chop(2); + SymbianLocalizationListIterator iter(symbianLocalizationList); + while (iter.hasNext()) { + const SymbianLocalization &loc = iter.next(); + locResources << QString(defaultResource + loc.symbianLanguageCode); + } + } + } + generator->project->values(deploymentFilesVar) << locResources; +} + +QString SymbianCommonGenerator::generateLocFileName() +{ + QString fileName(fixedTarget); + if (!Option::output_dir.isEmpty()) + fileName = Option::output_dir + QLatin1Char('/') + fileName; + fileName.append(".loc"); + return fileName; +} diff --git a/qmake/generators/symbian/symbiancommon.h b/qmake/generators/symbian/symbiancommon.h index 80f2079..1db5890 100644 --- a/qmake/generators/symbian/symbiancommon.h +++ b/qmake/generators/symbian/symbiancommon.h @@ -48,6 +48,20 @@ #define PRINT_FILE_CREATE_ERROR(filename) fprintf(stderr, "Error: Could not create '%s'\n", qPrintable(filename)); +class SymbianLocalization +{ +public: + QString qtLanguageCode; + QString symbianLanguageCode; + QString shortCaption; + QString longCaption; + QString pkgDisplayName; + QString installerPkgDisplayName; +}; + +typedef QList<SymbianLocalization> SymbianLocalizationList; +typedef QListIterator<SymbianLocalization> SymbianLocalizationListIterator; + class SymbianCommonGenerator { public: @@ -59,6 +73,7 @@ public: TypeSubdirs }; + SymbianCommonGenerator(MakefileGenerator *generator); virtual void init(); @@ -68,7 +83,9 @@ protected: QString removePathSeparators(QString &file); void removeSpecialCharacters(QString& str); void removeEpocSpecialCharacters(QString& str); - void generatePkgFile(const QString &iconFile, bool epocBuild); + void generatePkgFile(const QString &iconFile, + bool epocBuild, + const SymbianLocalizationList &symbianLocalizationList); bool containsStartWithItem(const QChar &c, const QStringList& src); void writeRegRssFile(QMap<QString, QStringList> &useritems); @@ -76,15 +93,15 @@ protected: const QString &listTag, const QString &listItem); void writeRssFile(QString &numberOfIcons, QString &iconfile); - void writeLocFile(QStringList &symbianLangCodes); + void writeLocFile(const SymbianLocalizationList &symbianLocalizationList); void readRssRules(QString &numberOfIcons, QString &iconFile, QMap<QString, QStringList> &userRssRules); void writeCustomDefFile(); - QStringList symbianLangCodesFromTsFiles(); - void fillQt2S60LangMapTable(); + void parseTsFiles(SymbianLocalizationList *symbianLocalizationList); + void fillQt2SymbianLocalizationList(SymbianLocalizationList *symbianLocalizationList); void parsePreRules(const QString &deploymentVariable, const QString &variableSuffix, @@ -95,7 +112,13 @@ protected: void parsePostRules(const QString &deploymentVariable, const QString &variableSuffix, QStringList *rawRuleList); - + bool parseTsContent(const QString &tsFilename, SymbianLocalization *loc); + QString generatePkgNameForHeader(const SymbianLocalizationList &symbianLocalizationList, + const QString &defaultName, + bool isForSmartInstaller); + void addLocalizedResourcesToDeployment(const QString &deploymentFilesVar, + const SymbianLocalizationList &symbianLocalizationList); + QString generateLocFileName(); protected: MakefileGenerator *generator; @@ -106,8 +129,6 @@ protected: QString privateDirUid; QString uid3; TargetType targetType; - - QHash<QString, QString> qt2S60LangMapTable; }; #endif // SYMBIANCOMMON_H diff --git a/qmake/generators/symbian/symmake.cpp b/qmake/generators/symbian/symmake.cpp index 0d63cdf..7a5a336 100644 --- a/qmake/generators/symbian/symmake.cpp +++ b/qmake/generators/symbian/symmake.cpp @@ -50,7 +50,7 @@ #include <qdebug.h> // Included from tools/shared -#include <symbian/epocroot.h> +#include <symbian/epocroot_p.h> #define RESOURCE_DIRECTORY_MMP "/resource/apps" #define REGISTRATION_RESOURCE_DIRECTORY_HW "/private/10003a3f/import/apps" @@ -87,10 +87,10 @@ QString SymbianMakefileGenerator::fixPathForMmp(const QString& origPath, const Q { static QString epocRootStr; if (epocRootStr.isEmpty()) { - epocRootStr = epocRoot(); + epocRootStr = qt_epocRoot(); QFileInfo efi(epocRootStr); if (!efi.exists() || epocRootStr.isEmpty()) { - fprintf(stderr, "Unable to resolve epocRoot '%s' to real dir on current drive, defaulting to '/' for mmp paths\n", qPrintable(epocRoot())); + fprintf(stderr, "Unable to resolve epocRoot '%s' to real dir on current drive, defaulting to '/' for mmp paths\n", qPrintable(qt_epocRoot())); epocRootStr = "/"; } else { epocRootStr = efi.absoluteFilePath(); @@ -122,7 +122,7 @@ QString SymbianMakefileGenerator::absolutizePath(const QString& origPath) // Prepend epocroot to any paths beginning with "/epoc32/" QString resultPath = QDir::fromNativeSeparators(origPath); if (resultPath.startsWith("/epoc32/", Qt::CaseInsensitive)) - resultPath = QDir::fromNativeSeparators(epocRoot()) + resultPath.mid(1); + resultPath = QDir::fromNativeSeparators(qt_epocRoot()) + resultPath.mid(1); QFileInfo fi(fileInfo(resultPath)); @@ -187,8 +187,8 @@ bool SymbianMakefileGenerator::writeMakefile(QTextStream &t) QMap<QString, QStringList> userRssRules; readRssRules(numberOfIcons, iconFile, userRssRules); - // Get the application translations and convert to symbian OS lang code, i.e. decical number - QStringList symbianLangCodes = symbianLangCodesFromTsFiles(); + SymbianLocalizationList symbianLocalizationList; + parseTsFiles(&symbianLocalizationList); // Generate pkg files if there are any actual files to deploy bool generatePkg = false; @@ -207,7 +207,7 @@ bool SymbianMakefileGenerator::writeMakefile(QTextStream &t) } if (generatePkg) { - generatePkgFile(iconFile, true); + generatePkgFile(iconFile, true, symbianLocalizationList); } writeBldInfContent(t, generatePkg, iconFile); @@ -244,13 +244,13 @@ bool SymbianMakefileGenerator::writeMakefile(QTextStream &t) writeMkFile(wrapperFileName, false); QString absoluteMmpFileName = Option::output_dir + QLatin1Char('/') + mmpFileName; - writeMmpFile(absoluteMmpFileName, symbianLangCodes); + writeMmpFile(absoluteMmpFileName, symbianLocalizationList); if (targetType == TypeExe) { if (!project->isActiveConfig("no_icon")) { writeRegRssFile(userRssRules); writeRssFile(numberOfIcons, iconFile); - writeLocFile(symbianLangCodes); + writeLocFile(symbianLocalizationList); } } @@ -491,7 +491,7 @@ void SymbianMakefileGenerator::writeMmpFileHeader(QTextStream &t) t << "// ==============================================================================" << endl << endl; } -void SymbianMakefileGenerator::writeMmpFile(QString &filename, QStringList &symbianLangCodes) +void SymbianMakefileGenerator::writeMmpFile(QString &filename, const SymbianLocalizationList &symbianLocalizationList) { QFile ft(filename); if (ft.open(QIODevice::WriteOnly)) { @@ -503,7 +503,7 @@ void SymbianMakefileGenerator::writeMmpFile(QString &filename, QStringList &symb writeMmpFileTargetPart(t); - writeMmpFileResourcePart(t, symbianLangCodes); + writeMmpFileResourcePart(t, symbianLocalizationList); writeMmpFileMacrosPart(t); @@ -645,7 +645,7 @@ void SymbianMakefileGenerator::writeMmpFileTargetPart(QTextStream& t) Application registration resource files should be installed to the \private\10003a3f\import\apps directory. */ -void SymbianMakefileGenerator::writeMmpFileResourcePart(QTextStream& t, QStringList &symbianLangCodes) +void SymbianMakefileGenerator::writeMmpFileResourcePart(QTextStream& t, const SymbianLocalizationList &symbianLocalizationList) { if ((targetType == TypeExe) && !project->isActiveConfig("no_icon")) { @@ -655,8 +655,10 @@ void SymbianMakefileGenerator::writeMmpFileResourcePart(QTextStream& t, QStringL t << "SOURCEPATH\t\t\t. " << endl; t << "LANG SC "; // no endl - foreach(QString lang, symbianLangCodes) { - t << lang << " "; // no endl + SymbianLocalizationListIterator iter(symbianLocalizationList); + while (iter.hasNext()) { + const SymbianLocalization &loc = iter.next(); + t << loc.symbianLanguageCode << " "; // no endl } t << endl; t << MMP_START_RESOURCE "\t\t" << locTarget << endl; @@ -1098,3 +1100,18 @@ void SymbianMakefileGenerator::generateDistcleanTargets(QTextStream& t) t << "distclean: clean dodistclean" << endl; t << endl; } + +// Returns a string that can be used as a dependency to loc file on other targets +QString SymbianMakefileGenerator::generateLocFileTarget(QTextStream& t, const QString& locCmd) +{ + QString locFile; + if (targetType == TypeExe && !project->isActiveConfig("no_icon")) { + locFile = Option::fixPathToLocalOS(generateLocFileName()); + t << locFile << QLatin1String(": ") << project->values("SYMBIAN_MATCHED_TRANSLATIONS").join(" ") << endl; + t << locCmd << endl; + t << endl; + locFile += QLatin1Char(' '); + } + + return locFile; +} diff --git a/qmake/generators/symbian/symmake.h b/qmake/generators/symbian/symmake.h index a1a8e88..aba11de 100644 --- a/qmake/generators/symbian/symmake.h +++ b/qmake/generators/symbian/symmake.h @@ -97,11 +97,11 @@ protected: static bool removeDuplicatedStrings(QStringList& stringList); void writeMmpFileHeader(QTextStream &t); - void writeMmpFile(QString &filename, QStringList &symbianLangCodes); + void writeMmpFile(QString &filename, const SymbianLocalizationList &symbianLocalizationList); void writeMmpFileMacrosPart(QTextStream& t); void addMacro(QTextStream& t, const QString& value); void writeMmpFileTargetPart(QTextStream& t); - void writeMmpFileResourcePart(QTextStream& t, QStringList &symbianLangCodes); + void writeMmpFileResourcePart(QTextStream& t, const SymbianLocalizationList &symbianLocalizationList); void writeMmpFileSystemIncludePart(QTextStream& t); void writeMmpFileIncludePart(QTextStream& t); void writeMmpFileLibraryPart(QTextStream& t); @@ -131,6 +131,7 @@ protected: const QString& itemSuffix); void generateDistcleanTargets(QTextStream& t); + QString generateLocFileTarget(QTextStream& t, const QString& locCmd); // Subclass implements virtual void writeBldInfExtensionRulesPart(QTextStream& t, const QString &iconTargetFile) = 0; diff --git a/qmake/generators/symbian/symmake_abld.cpp b/qmake/generators/symbian/symmake_abld.cpp index f895109..eb39d36 100644 --- a/qmake/generators/symbian/symmake_abld.cpp +++ b/qmake/generators/symbian/symmake_abld.cpp @@ -49,7 +49,7 @@ #include <qdebug.h> // Included from tools/shared -#include <symbian/epocroot.h> +#include <symbian/epocroot_p.h> #define DO_NOTHING_TARGET "do_nothing" #define CREATE_TEMPS_TARGET "create_temps" @@ -184,16 +184,7 @@ void SymbianAbldMakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, bool QTextStream t(&wrapperFile); - t << "# ==============================================================================" << endl; - t << "# Generated by qmake (" << qmake_version() << ") (Qt " << QT_VERSION_STR << ") on: "; - t << QDateTime::currentDateTime().toString() << endl; - t << "# This file is generated by qmake and should not be modified by the" << endl; - t << "# user." << endl; - t << "# Name : " << wrapperFile.fileName() << endl; - t << "# Description : Wrapper Makefile for calling Symbian build tools" << endl; - t << "#" << endl; - t << "# ==============================================================================" << "\n" << endl; - t << endl; + MakefileGenerator::writeHeader(t); t << "MAKEFILE = " << fileInfo(wrapperFile.fileName()).fileName() << endl; t << "QMAKE = " << var("QMAKE_QMAKE") << endl; @@ -267,12 +258,14 @@ void SymbianAbldMakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, bool t << "\tbldmake bldfiles" << endl; t << endl; - t << "debug: $(ABLD)" << endl; + QString locFileDep = generateLocFileTarget(t, qmakeCmd); + + t << "debug: " << locFileDep << "$(ABLD)" << endl; foreach(QString item, debugPlatforms) { t << "\t$(ABLD)" << testClause << " build " << item << " udeb" << endl; } t << endl; - t << "release: $(ABLD)" << endl; + t << "release: " << locFileDep << "$(ABLD)" << endl; foreach(QString item, releasePlatforms) { t << "\t$(ABLD)" << testClause << " build " << item << " urel" << endl; } @@ -280,12 +273,12 @@ void SymbianAbldMakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, bool // For more specific builds, targets are in this form: build-platform, e.g. release-armv5 foreach(QString item, debugPlatforms) { - t << "debug-" << item << ": $(ABLD)" << endl; + t << "debug-" << item << ": " << locFileDep << "$(ABLD)" << endl; t << "\t$(ABLD)" << testClause << " build " << item << " udeb" << endl; } foreach(QString item, releasePlatforms) { - t << "release-" << item << ": $(ABLD)" << endl; + t << "release-" << item << ": " << locFileDep << "$(ABLD)" << endl; t << "\t$(ABLD)" << testClause << " build " << item << " urel" << endl; } @@ -429,7 +422,7 @@ bool SymbianAbldMakefileGenerator::writeDeploymentTargets(QTextStream &t, bool i else t << WINSCW_DEPLOYMENT_TARGET ":" << endl; - QString remoteTestPath = epocRoot() + QString remoteTestPath = qt_epocRoot() + QDir::toNativeSeparators(QLatin1String(isRom ? "epoc32/data/z/private/" : "epoc32/winscw/c/private/")) + privateDirUid; diff --git a/qmake/generators/symbian/symmake_sbsv2.cpp b/qmake/generators/symbian/symmake_sbsv2.cpp index d650e08..c4b51f2 100644 --- a/qmake/generators/symbian/symmake_sbsv2.cpp +++ b/qmake/generators/symbian/symmake_sbsv2.cpp @@ -49,7 +49,7 @@ #include <qdebug.h> // Included from tools/shared -#include <symbian/epocroot.h> +#include <symbian/epocroot_p.h> SymbianSbsv2MakefileGenerator::SymbianSbsv2MakefileGenerator() : SymbianMakefileGenerator() { } SymbianSbsv2MakefileGenerator::~SymbianSbsv2MakefileGenerator() { } @@ -82,7 +82,7 @@ void SymbianSbsv2MakefileGenerator::exportFlm() QDir sourceDir = QDir(QLibraryInfo::location(QLibraryInfo::PrefixPath) + FLM_SOURCE_DIR); QFileInfoList sourceInfos = sourceDir.entryInfoList(QDir::Files); - QDir destDir(epocRoot() + FLM_DEST_DIR); + QDir destDir(qt_epocRoot() + FLM_DEST_DIR); if (!destDir.exists()) { if (destDir.mkpath(destDir.absolutePath())) generatedDirs << destDir.absolutePath(); @@ -324,16 +324,8 @@ void SymbianSbsv2MakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, boo QTextStream t(&wrapperFile); - t << "# ==============================================================================" << endl; - t << "# Generated by qmake (" << qmake_version() << ") (Qt " << QT_VERSION_STR << ") on: "; - t << QDateTime::currentDateTime().toString() << endl; - t << "# This file is generated by qmake and should not be modified by the" << endl; - t << "# user." << endl; - t << "# Name : " << wrapperFile.fileName() << endl; - t << "# Description : Wrapper Makefile for calling Symbian build tools" << endl; - t << "#" << endl; - t << "# ==============================================================================" << "\n" << endl; - t << endl; + MakefileGenerator::writeHeader(t); + t << "MAKEFILE = " << fileInfo(wrapperFile.fileName()).fileName() << endl; t << "QMAKE = " << var("QMAKE_QMAKE") << endl; t << "DEL_FILE = " << var("QMAKE_DEL_FILE") << endl; @@ -386,8 +378,9 @@ void SymbianSbsv2MakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, boo t << endl; QString currentClause; + QString locFileDep = generateLocFileTarget(t, qmakeCmd); - t << "debug: " << BLD_INF_FILENAME << endl; + t << "debug: " << locFileDep << BLD_INF_FILENAME << endl; t << "\t$(SBS)"; foreach(QString clause, debugClauses) { t << clause; @@ -399,7 +392,7 @@ void SymbianSbsv2MakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, boo t << clause; } t << endl; - t << "release: " << BLD_INF_FILENAME << endl; + t << "release: " << locFileDep << BLD_INF_FILENAME << endl; t << "\t$(SBS)"; foreach(QString clause, releaseClauses) { t << clause; @@ -431,7 +424,7 @@ void SymbianSbsv2MakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, boo else // use generic arm clause clause = configClause(item, debugBuild, defaultRvctCompilerVersion, genericArmClause); - t << "debug-" << item << ": " << BLD_INF_FILENAME << endl; + t << "debug-" << item << ": " << locFileDep << BLD_INF_FILENAME << endl; t << "\t$(SBS)" << clause << endl; t << "clean-debug-" << item << ": " << BLD_INF_FILENAME << endl; t << "\t$(SBS) reallyclean" << clause << endl; @@ -444,7 +437,7 @@ void SymbianSbsv2MakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, boo else // use generic arm clause clause = configClause(item, releaseBuild, defaultRvctCompilerVersion, genericArmClause); - t << "release-" << item << ": " << BLD_INF_FILENAME << endl; + t << "release-" << item << ": " << locFileDep << BLD_INF_FILENAME << endl; t << "\t$(SBS)" << clause << endl; t << "clean-release-" << item << ": " << BLD_INF_FILENAME << endl; t << "\t$(SBS) reallyclean" << clause << endl; @@ -454,11 +447,11 @@ void SymbianSbsv2MakefileGenerator::writeWrapperMakefile(QFile& wrapperFile, boo foreach(QString compilerVersion, allArmCompilerVersions) { QString debugClause = configClause(item, debugBuild, compilerVersion, armClause); QString releaseClause = configClause(item, releaseBuild, compilerVersion, armClause); - t << "debug-" << item << "-" << compilerVersion << ": " << BLD_INF_FILENAME << endl; + t << "debug-" << item << "-" << compilerVersion << ": " << locFileDep << BLD_INF_FILENAME << endl; t << "\t$(SBS)" << debugClause << endl; t << "clean-debug-" << item << "-" << compilerVersion << ": " << BLD_INF_FILENAME << endl; t << "\t$(SBS) reallyclean" << debugClause << endl; - t << "release-" << item << "-" << compilerVersion << ": " << BLD_INF_FILENAME << endl; + t << "release-" << item << "-" << compilerVersion << ": " << locFileDep << BLD_INF_FILENAME << endl; t << "\t$(SBS)" << releaseClause << endl; t << "clean-release-" << item << "-" << compilerVersion << ": " << BLD_INF_FILENAME << endl; t << "\t$(SBS) reallyclean" << releaseClause << endl; @@ -629,7 +622,7 @@ void SymbianSbsv2MakefileGenerator::writeBldInfExtensionRulesPart(QTextStream& t t << endl; // Write deployment rules - QString remoteTestPath = epocRoot() + QLatin1String("epoc32/winscw/c/private/") + privateDirUid; + QString remoteTestPath = qt_epocRoot() + QLatin1String("epoc32/winscw/c/private/") + privateDirUid; DeploymentList depList; //write emulator deployment @@ -640,7 +633,7 @@ void SymbianSbsv2MakefileGenerator::writeBldInfExtensionRulesPart(QTextStream& t t << "#endif" << endl; //write ROM deployment - remoteTestPath = epocRoot() + QLatin1String("epoc32/data/z/private/") + privateDirUid; + remoteTestPath = qt_epocRoot() + QLatin1String("epoc32/data/z/private/") + privateDirUid; depList.clear(); initProjectDeploySymbian(project, depList, remoteTestPath, false, true, QLatin1String(ROM_DEPLOYMENT_PLATFORM), QString(), generatedDirs, generatedFiles); diff --git a/qmake/generators/win32/msvc_nmake.cpp b/qmake/generators/win32/msvc_nmake.cpp index 0678d86..b72a8dfd 100644 --- a/qmake/generators/win32/msvc_nmake.cpp +++ b/qmake/generators/win32/msvc_nmake.cpp @@ -85,6 +85,45 @@ NmakeMakefileGenerator::writeMakefile(QTextStream &t) return false; } +QString NmakeMakefileGenerator::getPdbTarget() +{ + return QString(project->first("TARGET") + project->first("TARGET_VERSION_EXT") + ".pdb"); +} + +QString NmakeMakefileGenerator::defaultInstall(const QString &t) +{ + if((t != "target" && t != "dlltarget") || + (t == "dlltarget" && (project->first("TEMPLATE") != "lib" || !project->isActiveConfig("shared"))) || + project->first("TEMPLATE") == "subdirs") + return QString(); + + QString ret = Win32MakefileGenerator::defaultInstall(t); + + const QString root = "$(INSTALL_ROOT)"; + QStringList &uninst = project->values(t + ".uninstall"); + QString targetdir = Option::fixPathToTargetOS(project->first(t + ".path"), false); + targetdir = fileFixify(targetdir, FileFixifyAbsolute); + if(targetdir.right(1) != Option::dir_sep) + targetdir += Option::dir_sep; + + if(t == "target" && project->first("TEMPLATE") == "lib") { + if(project->isActiveConfig("shared") && project->isActiveConfig("debug")) { + QString pdb_target = getPdbTarget(); + pdb_target.remove('"'); + QString src_targ = (project->isEmpty("DESTDIR") ? QString("$(DESTDIR)") : project->first("DESTDIR")) + pdb_target; + QString dst_targ = filePrefixRoot(root, fileFixify(targetdir + pdb_target, FileFixifyAbsolute)); + if(!ret.isEmpty()) + ret += "\n\t"; + ret += QString("-$(INSTALL_FILE)") + " \"" + src_targ + "\" \"" + dst_targ + "\""; + if(!uninst.isEmpty()) + uninst.append("\n\t"); + uninst.append("-$(DEL_FILE) \"" + dst_targ + "\""); + } + } + + return ret; +} + QStringList &NmakeMakefileGenerator::findDependencies(const QString &file) { QStringList &aList = MakefileGenerator::findDependencies(file); diff --git a/qmake/generators/win32/msvc_nmake.h b/qmake/generators/win32/msvc_nmake.h index a751e45..b3fcb82 100644 --- a/qmake/generators/win32/msvc_nmake.h +++ b/qmake/generators/win32/msvc_nmake.h @@ -57,6 +57,8 @@ class NmakeMakefileGenerator : public Win32MakefileGenerator void init(); protected: + virtual QString getPdbTarget(); + virtual QString defaultInstall(const QString &t); virtual QStringList &findDependencies(const QString &file); QString var(const QString &value); QString precompH, precompObj, precompPch; diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp index fbaa6c2..8719045 100644 --- a/qmake/generators/win32/msvc_vcproj.cpp +++ b/qmake/generators/win32/msvc_vcproj.cpp @@ -66,7 +66,7 @@ QT_END_NAMESPACE #ifdef Q_OS_WIN32 #include <qt_windows.h> -#include <windows/registry.h> +#include <windows/registry_p.h> QT_BEGIN_NAMESPACE @@ -118,7 +118,7 @@ DotNET which_dotnet_version() int installed = 0; int i = 0; for(; dotNetCombo[i].version; ++i) { - QString path = readRegistryKey(HKEY_LOCAL_MACHINE, dotNetCombo[i].regKey); + QString path = qt_readRegistryKey(HKEY_LOCAL_MACHINE, dotNetCombo[i].regKey); if(!path.isEmpty()) { ++installed; current_version = dotNetCombo[i].version; @@ -135,7 +135,7 @@ DotNET which_dotnet_version() i = installed = 0; for(; dotNetCombo[i].version; ++i) { - QString productPath = readRegistryKey(HKEY_LOCAL_MACHINE, dotNetCombo[i].regKey).toLower(); + QString productPath = qt_readRegistryKey(HKEY_LOCAL_MACHINE, dotNetCombo[i].regKey).toLower(); if (productPath.isEmpty()) continue; QStringList::iterator it; diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp index ddfe399..8cf970e 100644 --- a/qmake/generators/win32/winmakefile.cpp +++ b/qmake/generators/win32/winmakefile.cpp @@ -78,8 +78,14 @@ Win32MakefileGenerator::findHighestVersion(const QString &d, const QString &stem int biggest=-1; if(!project->isActiveConfig("no_versionlink")) { - QDir dir(bd); - QStringList entries = dir.entryList(); + static QHash<QString, QStringList> dirEntryListCache; + QStringList entries = dirEntryListCache.value(bd); + if (entries.isEmpty()) { + QDir dir(bd); + entries = dir.entryList(); + dirEntryListCache.insert(bd, entries); + } + QRegExp regx(QString("((lib)?%1([0-9]*)).(%2|prl)$").arg(dllStem).arg(ext), Qt::CaseInsensitive); for(QStringList::Iterator it = entries.begin(); it != entries.end(); ++it) { if(regx.exactMatch((*it))) { @@ -775,11 +781,6 @@ QString Win32MakefileGenerator::getLibTarget() return QString(project->first("TARGET") + project->first("TARGET_VERSION_EXT") + ".lib"); } -QString Win32MakefileGenerator::getPdbTarget() -{ - return QString(project->first("TARGET") + project->first("TARGET_VERSION_EXT") + ".pdb"); -} - QString Win32MakefileGenerator::defaultInstall(const QString &t) { if((t != "target" && t != "dlltarget") || @@ -820,18 +821,6 @@ QString Win32MakefileGenerator::defaultInstall(const QString &t) uninst.append("\n\t"); uninst.append("-$(DEL_FILE) \"" + dst_targ + "\""); } - if(project->isActiveConfig("shared") && project->isActiveConfig("debug")) { - QString pdb_target = getPdbTarget(); - pdb_target.remove('"'); - QString src_targ = (project->isEmpty("DESTDIR") ? QString("$(DESTDIR)") : project->first("DESTDIR")) + pdb_target; - QString dst_targ = filePrefixRoot(root, fileFixify(targetdir + pdb_target, FileFixifyAbsolute)); - if(!ret.isEmpty()) - ret += "\n\t"; - ret += QString("-$(INSTALL_FILE)") + " \"" + src_targ + "\" \"" + dst_targ + "\""; - if(!uninst.isEmpty()) - uninst.append("\n\t"); - uninst.append("-$(DEL_FILE) \"" + dst_targ + "\""); - } } if(t == "dlltarget" || project->values(t + ".CONFIG").indexOf("no_dll") == -1) { diff --git a/qmake/generators/win32/winmakefile.h b/qmake/generators/win32/winmakefile.h index 3a2e3a1..5437524 100644 --- a/qmake/generators/win32/winmakefile.h +++ b/qmake/generators/win32/winmakefile.h @@ -83,7 +83,6 @@ protected: virtual void processRcFileVar(); virtual void processFileTagsVar(); virtual QString getLibTarget(); - virtual QString getPdbTarget(); }; inline Win32MakefileGenerator::~Win32MakefileGenerator() diff --git a/qmake/project.cpp b/qmake/project.cpp index 5f5745a..38b47e0 100644 --- a/qmake/project.cpp +++ b/qmake/project.cpp @@ -64,7 +64,7 @@ #include <stdlib.h> // Included from tools/shared -#include <symbian/epocroot.h> +#include <symbian/epocroot_p.h> #ifdef Q_OS_WIN32 #define QT_POPEN _popen @@ -3118,7 +3118,7 @@ QStringList &QMakeProject::values(const QString &_var, QMap<QString, QStringList false)); } else if (var == QLatin1String("EPOCROOT")) { if (place[var].isEmpty()) - place[var] = QStringList(epocRoot()); + place[var] = QStringList(qt_epocRoot()); } #if defined(Q_OS_WIN32) && defined(Q_CC_MSVC) else if(var.startsWith(QLatin1String("QMAKE_TARGET."))) { diff --git a/qmake/qmake.pri b/qmake/qmake.pri index 83a5356..bc7ddb8 100644 --- a/qmake/qmake.pri +++ b/qmake/qmake.pri @@ -3,7 +3,7 @@ CONFIG += depend_includepath QMAKE_INCREMENTAL = SKIP_DEPENDS += qconfig.h qmodules.h DEFINES += QT_NO_TEXTCODEC QT_NO_LIBRARY QT_NO_STL QT_NO_COMPRESS QT_NO_UNICODETABLES \ - QT_NO_GEOM_VARIANT QT_NO_DATASTREAM + QT_NO_GEOM_VARIANT QT_NO_DATASTREAM QLIBRARYINFO_EPOCROOT #qmake code SOURCES += project.cpp property.cpp main.cpp generators/makefile.cpp \ @@ -36,8 +36,8 @@ HEADERS += project.h property.h generators/makefile.h \ generators/symbian/symmake_abld.h \ generators/symbian/symmake_sbsv2.h \ generators/symbian/initprojectdeploy_symbian.h \ - windows/registry.h \ - symbian/epocroot.h + windows/registry_p.h \ + symbian/epocroot_p.h contains(QT_EDITION, OpenSource) { DEFINES += QMAKE_OPENSOURCE_EDITION diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp index 9b97c8b..5bb3c57 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp @@ -1351,26 +1351,30 @@ void QWebPagePrivate::inputMethodEvent(QInputMethodEvent *ev) } } - if (!ev->commitString().isEmpty()) + if (renderTextControl && ev->replacementLength() > 0) { + renderTextControl->setSelectionStart(qMax(renderTextControl->selectionStart() + ev->replacementStart(), 0)); + renderTextControl->setSelectionEnd(qMin(renderTextControl->selectionStart() + ev->replacementLength(), static_cast<int>(renderTextControl->text().length()))); + // Commit regardless of whether commitString is empty, to get rid of selection. editor->confirmComposition(ev->commitString()); - else { - // 1. empty preedit with a selection attribute, and start/end of 0 cancels composition - // 2. empty preedit with a selection attribute, and start/end of non-0 updates selection of current preedit text - // 3. populated preedit with a selection attribute, and start/end of 0 or non-0 updates selection of supplied preedit text - // 4. otherwise event is updating supplied pre-edit text - QString preedit = ev->preeditString(); + } else if (!ev->commitString().isEmpty()) { + editor->confirmComposition(ev->commitString()); + } + // 1. empty preedit with a selection attribute, and start/end of 0 cancels composition + // 2. empty preedit with a selection attribute, and start/end of non-0 updates selection of current preedit text + // 3. populated preedit with a selection attribute, and start/end of 0 or non-0 updates selection of supplied preedit text + // 4. otherwise event is updating supplied pre-edit text + QString preedit = ev->preeditString(); #if QT_VERSION >= 0x040600 - if (hasSelection) { - QString text = (renderTextControl) ? QString(renderTextControl->text()) : QString(); - if (preedit.isEmpty() && selection.start + selection.length > 0) - preedit = text; - editor->setComposition(preedit, underlines, - (selection.length < 0) ? selection.start + selection.length : selection.start, - (selection.length < 0) ? selection.start : selection.start + selection.length); - } else + if (hasSelection) { + QString text = (renderTextControl) ? QString(renderTextControl->text()) : QString(); + if (preedit.isEmpty() && selection.start + selection.length > 0) + preedit = text; + editor->setComposition(preedit, underlines, + (selection.length < 0) ? selection.start + selection.length : selection.start, + (selection.length < 0) ? selection.start : selection.start + selection.length); + } else #endif - editor->setComposition(preedit, underlines, preedit.length(), 0); - } + editor->setComposition(preedit, underlines, preedit.length(), 0); ev->accept(); } diff --git a/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview.cpp b/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview.cpp index e4f70de..7a8aae7 100644 --- a/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview.cpp +++ b/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview.cpp @@ -141,6 +141,16 @@ void GraphicsWebView::mouseMoveEvent(QGraphicsSceneMouseEvent* event) QGraphicsWebView::mouseMoveEvent(event); } +bool GraphicsWebView::sceneEvent(QEvent *event) +{ + bool rv = QGraphicsWebView::sceneEvent(event); + if (event->type() == QEvent::UngrabMouse) { + pressTimer.stop(); + parent->setKeepMouseGrab(false); + } + return rv; +} + /*! \qmlclass WebView QDeclarativeWebView \ingroup qml-view-elements diff --git a/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview_p.h b/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview_p.h index b2055bf..ca15a1e 100644 --- a/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview_p.h +++ b/src/3rdparty/webkit/WebKit/qt/declarative/qdeclarativewebview_p.h @@ -70,6 +70,8 @@ protected: void mouseMoveEvent(QGraphicsSceneMouseEvent* event); void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event); void timerEvent(QTimerEvent* event); + bool sceneEvent(QEvent *event); + Q_SIGNALS: void doubleClick(int clickX, int clickY); private: diff --git a/src/3rdparty/webkit/WebKit/qt/qt_webkit_version.pri b/src/3rdparty/webkit/WebKit/qt/qt_webkit_version.pri index f2282f8..b98617f 100644 --- a/src/3rdparty/webkit/WebKit/qt/qt_webkit_version.pri +++ b/src/3rdparty/webkit/WebKit/qt/qt_webkit_version.pri @@ -1,5 +1,5 @@ -QT_WEBKIT_VERSION = 4.7.1 +QT_WEBKIT_VERSION = 4.7.2 QT_WEBKIT_MAJOR_VERSION = 4 QT_WEBKIT_MINOR_VERSION = 7 -QT_WEBKIT_PATCH_VERSION = 1 +QT_WEBKIT_PATCH_VERSION = 2 QT_CONFIG += webkit diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp index b7ffb8a..31cf277 100644 --- a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp +++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp @@ -1502,6 +1502,20 @@ void tst_QWebPage::inputMethods() QCOMPARE(value, QString("QtWebKit")); #endif + { + QList<QInputMethodEvent::Attribute> attributes; + QInputMethodEvent event(QString(), attributes); + event.setCommitString("XXX", 0, 0); + page->event(&event); + event.setCommitString(QString(), -2, 2); // Erase two characters. + page->event(&event); + event.setCommitString(QString(), -1, 1); // Erase one character. + page->event(&event); + variant = page->inputMethodQuery(Qt::ImSurroundingText); + value = variant.value<QString>(); + QCOMPARE(value, QString("QtWebKit")); + } + // Cancel current composition first inputAttributes << QInputMethodEvent::Attribute(QInputMethodEvent::Selection, 0, 0, QVariant()); QInputMethodEvent eventSelection4("", inputAttributes); diff --git a/src/corelib/global/global.pri b/src/corelib/global/global.pri index 47b82ef..8eae391 100644 --- a/src/corelib/global/global.pri +++ b/src/corelib/global/global.pri @@ -31,3 +31,5 @@ linux*:!static:!symbian-armcc:!symbian-gcce { # Compensate for lack of platform defines in Symbian3 and Symbian4 symbian: DEFINES += SYMBIAN_VERSION_$$upper($$replace(SYMBIAN_VERSION,\\.,_)) + +include(../../../tools/shared/symbian/epocroot.pri) diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp index d493390..8b2ab5a 100644 --- a/src/corelib/global/qlibraryinfo.cpp +++ b/src/corelib/global/qlibraryinfo.cpp @@ -62,6 +62,10 @@ QT_END_NAMESPACE # include "private/qcore_mac_p.h" #endif +#ifdef QLIBRARYINFO_EPOCROOT +# include "symbian/epocroot_p.h" +#endif + #include "qconfig.cpp" QT_BEGIN_NAMESPACE @@ -433,6 +437,14 @@ QLibraryInfo::location(LibraryLocation loc) QString::fromLocal8Bit(qgetenv(ret.mid(rep + 2, reg_var.matchedLength() - 3).toLatin1().constData()).constData())); } + +#ifdef QLIBRARYINFO_EPOCROOT + // $${EPOCROOT} is a special case, resolve it similarly to qmake. + QRegExp epocrootMatcher(QLatin1String("\\$\\$\\{EPOCROOT\\}")); + if ((rep = epocrootMatcher.indexIn(ret)) != -1) + ret.replace(rep, epocrootMatcher.matchedLength(), qt_epocRoot()); +#endif + config->endGroup(); } } diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h index 3ed6291..6afc9a2 100644 --- a/src/corelib/global/qnamespace.h +++ b/src/corelib/global/qnamespace.h @@ -519,6 +519,8 @@ public: WA_X11DoNotAcceptFocus = 132, + WA_MacNoShadow = 133, + // Add new attributes before this line WA_AttributeCount }; diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc index f097f2a..b9939b6 100644 --- a/src/corelib/global/qnamespace.qdoc +++ b/src/corelib/global/qnamespace.qdoc @@ -1257,6 +1257,9 @@ to this top level window. This attribute has no effect on non-X11 platforms. + \value WA_MacNoShadow Since Qt 4.8, this attribute disables drop shadows + for this top level window. Only affects Cocoa builds of Qt for Mac OS X. + \omitvalue WA_SetLayoutDirection \omitvalue WA_InputMethodTransparent \omitvalue WA_WState_CompressKeys diff --git a/src/corelib/io/qfilesystemwatcher.cpp b/src/corelib/io/qfilesystemwatcher.cpp index 18c3c9f..4d0d495 100644 --- a/src/corelib/io/qfilesystemwatcher.cpp +++ b/src/corelib/io/qfilesystemwatcher.cpp @@ -198,7 +198,7 @@ QStringList QPollingFileSystemWatcherEngine::removePaths(const QStringList &path void QPollingFileSystemWatcherEngine::stop() { - QMetaObject::invokeMethod(this, "quit"); + quit(); } void QPollingFileSystemWatcherEngine::timeout() @@ -228,8 +228,14 @@ void QPollingFileSystemWatcherEngine::timeout() dit.remove(); emit directoryChanged(path, true); } else if (x.value() != fi) { - x.value() = fi; - emit directoryChanged(path, false); + fi.refresh(); + if (!fi.exists()) { + dit.remove(); + emit directoryChanged(path, true); + } else { + x.value() = fi; + emit directoryChanged(path, false); + } } } @@ -426,11 +432,6 @@ QFileSystemWatcher::QFileSystemWatcher(const QStringList &paths, QObject *parent /*! Destroys the file system watcher. - - \note To avoid deadlocks on shutdown, all instances of QFileSystemWatcher - need to be destroyed before QCoreApplication. Note that passing - QCoreApplication::instance() as the parent object when creating - QFileSystemWatcher is not sufficient. */ QFileSystemWatcher::~QFileSystemWatcher() { diff --git a/src/corelib/io/qfilesystemwatcher_inotify.cpp b/src/corelib/io/qfilesystemwatcher_inotify.cpp index dc18ae7..ab53431 100644 --- a/src/corelib/io/qfilesystemwatcher_inotify.cpp +++ b/src/corelib/io/qfilesystemwatcher_inotify.cpp @@ -340,7 +340,7 @@ QStringList QInotifyFileSystemWatcherEngine::removePaths(const QStringList &path void QInotifyFileSystemWatcherEngine::stop() { - QMetaObject::invokeMethod(this, "quit"); + quit(); } void QInotifyFileSystemWatcherEngine::readFromInotify() @@ -356,7 +356,7 @@ void QInotifyFileSystemWatcherEngine::readFromInotify() char *at = buffer.data(); char * const end = at + buffSize; - QMap<int, inotify_event *> eventForId; + QHash<int, inotify_event *> eventForId; while (at < end) { inotify_event *event = reinterpret_cast<inotify_event *>(at); @@ -368,7 +368,7 @@ void QInotifyFileSystemWatcherEngine::readFromInotify() at += sizeof(inotify_event) + event->len; } - QMap<int, inotify_event *>::const_iterator it = eventForId.constBegin(); + QHash<int, inotify_event *>::const_iterator it = eventForId.constBegin(); while (it != eventForId.constEnd()) { const inotify_event &event = **it; ++it; diff --git a/src/corelib/io/qfilesystemwatcher_kqueue.cpp b/src/corelib/io/qfilesystemwatcher_kqueue.cpp index 7960792..68994d2 100644 --- a/src/corelib/io/qfilesystemwatcher_kqueue.cpp +++ b/src/corelib/io/qfilesystemwatcher_kqueue.cpp @@ -119,67 +119,77 @@ QStringList QKqueueFileSystemWatcherEngine::addPaths(const QStringList &paths, QStringList *files, QStringList *directories) { - QMutexLocker locker(&mutex); - QStringList p = paths; - QMutableListIterator<QString> it(p); - while (it.hasNext()) { - QString path = it.next(); - int fd; + { + QMutexLocker locker(&mutex); + + QMutableListIterator<QString> it(p); + while (it.hasNext()) { + QString path = it.next(); + int fd; #if defined(O_EVTONLY) - fd = qt_safe_open(QFile::encodeName(path), O_EVTONLY); + fd = qt_safe_open(QFile::encodeName(path), O_EVTONLY); #else - fd = qt_safe_open(QFile::encodeName(path), O_RDONLY); + fd = qt_safe_open(QFile::encodeName(path), O_RDONLY); #endif - if (fd == -1) { - perror("QKqueueFileSystemWatcherEngine::addPaths: open"); - continue; - } + if (fd == -1) { + perror("QKqueueFileSystemWatcherEngine::addPaths: open"); + continue; + } + if (fd >= (int)FD_SETSIZE / 2 && fd < (int)FD_SETSIZE) { + int fddup = fcntl(fd, F_DUPFD, FD_SETSIZE); + if (fddup != -1) { + ::close(fd); + fd = fddup; + } + } + fcntl(fd, F_SETFD, FD_CLOEXEC); - QT_STATBUF st; - if (QT_FSTAT(fd, &st) == -1) { - perror("QKqueueFileSystemWatcherEngine::addPaths: fstat"); - ::close(fd); - continue; - } - int id = (S_ISDIR(st.st_mode)) ? -fd : fd; - if (id < 0) { - if (directories->contains(path)) { + QT_STATBUF st; + if (QT_FSTAT(fd, &st) == -1) { + perror("QKqueueFileSystemWatcherEngine::addPaths: fstat"); ::close(fd); continue; } - } else { - if (files->contains(path)) { + int id = (S_ISDIR(st.st_mode)) ? -fd : fd; + if (id < 0) { + if (directories->contains(path)) { + ::close(fd); + continue; + } + } else { + if (files->contains(path)) { + ::close(fd); + continue; + } + } + + struct kevent kev; + EV_SET(&kev, + fd, + EVFILT_VNODE, + EV_ADD | EV_ENABLE | EV_CLEAR, + NOTE_DELETE | NOTE_WRITE | NOTE_EXTEND | NOTE_ATTRIB | NOTE_RENAME | NOTE_REVOKE, + 0, + 0); + if (kevent(kqfd, &kev, 1, 0, 0, 0) == -1) { + perror("QKqueueFileSystemWatcherEngine::addPaths: kevent"); ::close(fd); continue; } - } - struct kevent kev; - EV_SET(&kev, - fd, - EVFILT_VNODE, - EV_ADD | EV_ENABLE | EV_ONESHOT, - NOTE_DELETE | NOTE_WRITE | NOTE_EXTEND | NOTE_ATTRIB | NOTE_RENAME | NOTE_REVOKE, - 0, - 0); - if (kevent(kqfd, &kev, 1, 0, 0, 0) == -1) { - perror("QKqueueFileSystemWatcherEngine::addPaths: kevent"); - ::close(fd); - continue; - } + it.remove(); + if (id < 0) { + DEBUG() << "QKqueueFileSystemWatcherEngine: added directory path" << path; + directories->append(path); + } else { + DEBUG() << "QKqueueFileSystemWatcherEngine: added file path" << path; + files->append(path); + } - it.remove(); - if (id < 0) { - DEBUG() << "QKqueueFileSystemWatcherEngine: added directory path" << path; - directories->append(path); - } else { - DEBUG() << "QKqueueFileSystemWatcherEngine: added file path" << path; - files->append(path); + pathToID.insert(path, id); + idToPath.insert(id, path); } - - pathToID.insert(path, id); - idToPath.insert(id, path); } if (!isRunning()) @@ -194,43 +204,35 @@ QStringList QKqueueFileSystemWatcherEngine::removePaths(const QStringList &paths QStringList *files, QStringList *directories) { - QMutexLocker locker(&mutex); - + bool isEmpty; QStringList p = paths; - QMutableListIterator<QString> it(p); - while (it.hasNext()) { - QString path = it.next(); - int id = pathToID.take(path); - QString x = idToPath.take(id); - if (x.isEmpty() || x != path) - continue; - - int fd = id < 0 ? -id : id; - struct kevent kev; - EV_SET(&kev, - fd, - EVFILT_VNODE, - EV_DELETE, - NOTE_DELETE | NOTE_WRITE | NOTE_EXTEND | NOTE_ATTRIB | NOTE_RENAME | NOTE_REVOKE, - 0, - 0); - if (kevent(kqfd, &kev, 1, 0, 0, 0) == -1) { - perror("QKqueueFileSystemWatcherEngine::removeWatch: kevent"); - } - ::close(fd); + { + QMutexLocker locker(&mutex); + if (pathToID.isEmpty()) + return p; + + QMutableListIterator<QString> it(p); + while (it.hasNext()) { + QString path = it.next(); + int id = pathToID.take(path); + QString x = idToPath.take(id); + if (x.isEmpty() || x != path) + continue; - it.remove(); - if (id < 0) - directories->removeAll(path); - else - files->removeAll(path); + ::close(id < 0 ? -id : id); + + it.remove(); + if (id < 0) + directories->removeAll(path); + else + files->removeAll(path); + } + isEmpty = pathToID.isEmpty(); } - if (pathToID.isEmpty()) { + if (isEmpty) { stop(); - locker.unlock(); wait(); - locker.relock(); } else { write(kqpipe[1], "@", 1); } @@ -245,19 +247,15 @@ void QKqueueFileSystemWatcherEngine::stop() void QKqueueFileSystemWatcherEngine::run() { - static const struct timespec ZeroTimeout = { 0, 0 }; - forever { + int r; struct kevent kev; DEBUG() << "QKqueueFileSystemWatcherEngine: waiting for kevents..."; - int r = kevent(kqfd, 0, 0, &kev, 1, 0); + EINTR_LOOP(r, kevent(kqfd, 0, 0, &kev, 1, 0)); if (r < 0) { perror("QKqueueFileSystemWatcherEngine: error during kevent wait"); return; - } - - QMutexLocker locker(&mutex); - do { + } else { int fd = kev.ident; DEBUG() << "QKqueueFileSystemWatcherEngine: processing kevent" << kev.ident << kev.filter; @@ -289,6 +287,8 @@ void QKqueueFileSystemWatcherEngine::run() break; } } else { + QMutexLocker locker(&mutex); + int id = fd; QString path = idToPath.value(id); if (path.isEmpty()) { @@ -297,12 +297,12 @@ void QKqueueFileSystemWatcherEngine::run() path = idToPath.value(id); if (path.isEmpty()) { DEBUG() << "QKqueueFileSystemWatcherEngine: received a kevent for a file we're not watching"; - goto process_next_event; + continue; } } if (kev.filter != EVFILT_VNODE) { DEBUG() << "QKqueueFileSystemWatcherEngine: received a kevent with the wrong filter"; - goto process_next_event; + continue; } if ((kev.fflags & (NOTE_DELETE | NOTE_REVOKE | NOTE_RENAME)) != 0) { @@ -317,31 +317,15 @@ void QKqueueFileSystemWatcherEngine::run() else emit fileChanged(path, true); } else { - DEBUG() << path << "changed, re-enabling watch"; + DEBUG() << path << "changed"; if (id < 0) emit directoryChanged(path, false); else emit fileChanged(path, false); - - // renable the watch - EV_SET(&kev, - fd, - EVFILT_VNODE, - EV_ADD | EV_ENABLE | EV_ONESHOT, - NOTE_DELETE | NOTE_WRITE | NOTE_EXTEND | NOTE_ATTRIB | NOTE_RENAME | NOTE_REVOKE, - 0, - 0); - if (kevent(kqfd, &kev, 1, 0, 0, 0) == -1) { - perror("QKqueueFileSystemWatcherEngine::processKqueueEvents: kevent EV_ADD"); - } } } - - // are there any more? -process_next_event: - r = kevent(kqfd, 0, 0, &kev, 1, &ZeroTimeout); - } while (r > 0); + } } } diff --git a/src/corelib/io/qfilesystemwatcher_symbian.cpp b/src/corelib/io/qfilesystemwatcher_symbian.cpp index 6136742..ee66c36 100644 --- a/src/corelib/io/qfilesystemwatcher_symbian.cpp +++ b/src/corelib/io/qfilesystemwatcher_symbian.cpp @@ -215,7 +215,7 @@ void QSymbianFileSystemWatcherEngine::emitPathChanged(QNotifyChangeEvent *e) void QSymbianFileSystemWatcherEngine::stop() { - QMetaObject::invokeMethod(this, "quit"); + quit(); wait(); } diff --git a/src/corelib/io/qiodevice.cpp b/src/corelib/io/qiodevice.cpp index 8544fba..f8eb886 100644 --- a/src/corelib/io/qiodevice.cpp +++ b/src/corelib/io/qiodevice.cpp @@ -395,7 +395,10 @@ QIODevice::QIODevice(QIODevicePrivate &dd, QObject *parent) /*! - Destructs the QIODevice object. + The destructor is virtual, and QIODevice is an abstract base + class. This destructor does not call close(), but the subclass + destructor might. If you are in doubt, call close() before + destroying the QIODevice. */ QIODevice::~QIODevice() { diff --git a/src/corelib/kernel/qeventdispatcher_win.cpp b/src/corelib/kernel/qeventdispatcher_win.cpp index aa7e32f..a363874 100644 --- a/src/corelib/kernel/qeventdispatcher_win.cpp +++ b/src/corelib/kernel/qeventdispatcher_win.cpp @@ -86,7 +86,8 @@ extern uint qGlobalPostedEventsCount(); enum { WM_QT_SOCKETNOTIFIER = WM_USER, - WM_QT_SENDPOSTEDEVENTS = WM_USER + 1 + WM_QT_SENDPOSTEDEVENTS = WM_USER + 1, + SendPostedEventsWindowsTimerId = ~1u }; #if defined(Q_OS_WINCE) @@ -355,7 +356,7 @@ public: // for controlling when to send posted events QAtomicInt serialNumber; - int lastSerialNumber; + int lastSerialNumber, sendPostedEventsWindowsTimerId; QAtomicInt wakeUps; // timers @@ -380,7 +381,7 @@ public: QEventDispatcherWin32Private::QEventDispatcherWin32Private() : threadId(GetCurrentThreadId()), interrupt(false), internalHwnd(0), getMessageHook(0), - serialNumber(0), lastSerialNumber(0), wakeUps(0) + serialNumber(0), lastSerialNumber(0), sendPostedEventsWindowsTimerId(0), wakeUps(0) { resolveTimerAPI(); } @@ -487,17 +488,21 @@ LRESULT QT_WIN_CALLBACK qt_internal_proc(HWND hwnd, UINT message, WPARAM wp, LPA } } return 0; - } else if (message == WM_TIMER) { - Q_ASSERT(d != 0); - d->sendTimerEvent(wp); - return 0; - } else if (message == WM_QT_SENDPOSTEDEVENTS) { + } else if (message == WM_QT_SENDPOSTEDEVENTS + // we also use a Windows timer to send posted events when the message queue is full + || (message == WM_TIMER + && d->sendPostedEventsWindowsTimerId != 0 + && wp == (uint)d->sendPostedEventsWindowsTimerId)) { int localSerialNumber = d->serialNumber; if (localSerialNumber != d->lastSerialNumber) { d->lastSerialNumber = localSerialNumber; QCoreApplicationPrivate::sendPostedEvents(0, 0, d->threadData); } return 0; + } else if (message == WM_TIMER) { + Q_ASSERT(d != 0); + d->sendTimerEvent(wp); + return 0; } return DefWindowProc(hwnd, message, wp, lp); @@ -509,21 +514,36 @@ LRESULT QT_WIN_CALLBACK qt_GetMessageHook(int code, WPARAM wp, LPARAM lp) QEventDispatcherWin32 *q = qobject_cast<QEventDispatcherWin32 *>(QAbstractEventDispatcher::instance()); Q_ASSERT(q != 0); if (q) { + MSG *msg = (MSG *) lp; QEventDispatcherWin32Private *d = q->d_func(); int localSerialNumber = d->serialNumber; - MSG unused; - if ((HIWORD(GetQueueStatus(QS_INPUT | QS_RAWINPUT)) == 0 - && PeekMessage(&unused, 0, WM_TIMER, WM_TIMER, PM_NOREMOVE) == 0)) { - // no more input or timer events in the message queue or more than 10ms has elapsed since - // we send posted events, we can allow posted events to be sent now + if (HIWORD(GetQueueStatus(QS_TIMER | QS_INPUT | QS_RAWINPUT)) == 0) { + // no more input or timer events in the message queue, we can allow posted events to be sent normally now + if (d->sendPostedEventsWindowsTimerId != 0) { + // stop the timer to send posted events, since we now allow the WM_QT_SENDPOSTEDEVENTS message + KillTimer(d->internalHwnd, d->sendPostedEventsWindowsTimerId); + d->sendPostedEventsWindowsTimerId = 0; + } (void) d->wakeUps.fetchAndStoreRelease(0); - MSG *msg = (MSG *) lp; if (localSerialNumber != d->lastSerialNumber // if this message IS the one that triggers sendPostedEvents(), no need to post it again && (msg->hwnd != d->internalHwnd || msg->message != WM_QT_SENDPOSTEDEVENTS)) { PostMessage(d->internalHwnd, WM_QT_SENDPOSTEDEVENTS, 0, 0); } + } else if (d->sendPostedEventsWindowsTimerId == 0 + && localSerialNumber != d->lastSerialNumber + // if this message IS the one that triggers sendPostedEvents(), no need to post it again + && (msg->hwnd != d->internalHwnd + || msg->message != WM_QT_SENDPOSTEDEVENTS)) { + // start a special timer to continue delivering posted events while + // there are still input and timer messages in the message queue + d->sendPostedEventsWindowsTimerId = SetTimer(d->internalHwnd, + SendPostedEventsWindowsTimerId, + 0, // we specify zero, but Windows uses USER_TIMER_MINIMUM + NULL); + // we don't check the return value of SetTimer()... if creating the timer failed, there's little + // we can do. we just have to accept that posted events will be starved } } } diff --git a/src/corelib/kernel/qobjectdefs.h b/src/corelib/kernel/qobjectdefs.h index db46ba5..b4e4aa5 100644 --- a/src/corelib/kernel/qobjectdefs.h +++ b/src/corelib/kernel/qobjectdefs.h @@ -215,11 +215,15 @@ Q_CORE_EXPORT const char *qFlagLocation(const char *method); #define QTOSTRING(s) QTOSTRING_HELPER(s) #ifndef QT_NO_DEBUG # define QLOCATION "\0"__FILE__":"QTOSTRING(__LINE__) -# define METHOD(a) qFlagLocation("0"#a QLOCATION) +# ifndef QT_NO_KEYWORDS +# define METHOD(a) qFlagLocation("0"#a QLOCATION) +# endif # define SLOT(a) qFlagLocation("1"#a QLOCATION) # define SIGNAL(a) qFlagLocation("2"#a QLOCATION) #else -# define METHOD(a) "0"#a +# ifndef QT_NO_KEYWORDS +# define METHOD(a) "0"#a +# endif # define SLOT(a) "1"#a # define SIGNAL(a) "2"#a #endif diff --git a/src/corelib/kernel/qtcore_eval.cpp b/src/corelib/kernel/qtcore_eval.cpp index 78556c3..da76b74 100644 --- a/src/corelib/kernel/qtcore_eval.cpp +++ b/src/corelib/kernel/qtcore_eval.cpp @@ -90,14 +90,14 @@ static const char will_shutdown_now[] = static int qt_eval_is_supported() { - const char *const license_key = qt_eval_key_data + 12; + const volatile char *const license_key = qt_eval_key_data + 12; // fast fail if (!qt_eval_key_data[0] || !*license_key) return -1; // is this an unsupported evaluation? - const char* typecode = license_key; + const volatile char *typecode = license_key; int field = 2; for ( ; field && *typecode; ++typecode) if (*typecode == '-') diff --git a/src/corelib/thread/qthread.cpp b/src/corelib/thread/qthread.cpp index 69b70cb..c9ff8d3 100644 --- a/src/corelib/thread/qthread.cpp +++ b/src/corelib/thread/qthread.cpp @@ -173,7 +173,8 @@ void QAdoptedThread::run() */ QThreadPrivate::QThreadPrivate(QThreadData *d) - : QObjectPrivate(), running(false), finished(false), terminated(false), exited(false), returnCode(-1), + : QObjectPrivate(), running(false), finished(false), terminated(false), + isInFinish(false), exited(false), returnCode(-1), stackSize(0), priority(QThread::InheritPriority), data(d) { #if defined (Q_OS_UNIX) @@ -403,6 +404,11 @@ QThread::~QThread() Q_D(QThread); { QMutexLocker locker(&d->mutex); + if (d->isInFinish) { + locker.unlock(); + wait(); + locker.relock(); + } if (d->running && !d->finished) qWarning("QThread: Destroyed while thread is still running"); @@ -482,8 +488,10 @@ int QThread::exec() Q_D(QThread); QMutexLocker locker(&d->mutex); d->data->quitNow = false; - if (d->exited) + if (d->exited) { + d->exited = false; return d->returnCode; + } locker.unlock(); QEventLoop eventLoop; diff --git a/src/corelib/thread/qthread_p.h b/src/corelib/thread/qthread_p.h index d816aef..51c6991 100644 --- a/src/corelib/thread/qthread_p.h +++ b/src/corelib/thread/qthread_p.h @@ -126,6 +126,7 @@ public: bool running; bool finished; bool terminated; + bool isInFinish; //when in QThreadPrivate::finish bool exited; int returnCode; diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp index f508c0a..0892d8e 100644 --- a/src/corelib/thread/qthread_unix.cpp +++ b/src/corelib/thread/qthread_unix.cpp @@ -99,6 +99,11 @@ # define SCHED_IDLE 5 #endif +#if defined(Q_OS_DARWIN) || !defined(Q_OS_OPENBSD) && defined(_POSIX_THREAD_PRIORITY_SCHEDULING) && (_POSIX_THREAD_PRIORITY_SCHEDULING-0 >= 0) +#define QT_HAS_THREAD_PRIORITY_SCHEDULING +#endif + + QT_BEGIN_NAMESPACE #ifndef QT_NO_THREAD @@ -140,6 +145,7 @@ static void create_current_thread_data_key() static void destroy_current_thread_data_key() { + pthread_once(¤t_thread_data_once, create_current_thread_data_key); pthread_key_delete(current_thread_data_key); } Q_DESTRUCTOR_FUNCTION(destroy_current_thread_data_key) @@ -333,40 +339,45 @@ void QThreadPrivate::finish(void *arg) { QThread *thr = reinterpret_cast<QThread *>(arg); QThreadPrivate *d = thr->d_func(); + #ifdef Q_OS_SYMBIAN - if (lockAnyway) + QMutexLocker locker(lockAnyway ? &d->mutex : 0); +#else + QMutexLocker locker(&d->mutex); #endif - d->mutex.lock(); + d->isInFinish = true; d->priority = QThread::InheritPriority; - d->running = false; - d->finished = true; - if (d->terminated) + bool terminated = d->terminated; + void *data = &d->data->tls; + locker.unlock(); + if (terminated) emit thr->terminated(); - d->terminated = false; emit thr->finished(); QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete); + QThreadStorageData::finish((void **)data); + locker.relock(); + d->terminated = false; - if (d->data->eventDispatcher) { - d->data->eventDispatcher->closingDown(); - QAbstractEventDispatcher *eventDispatcher = d->data->eventDispatcher; + QAbstractEventDispatcher *eventDispatcher = d->data->eventDispatcher; + if (eventDispatcher) { d->data->eventDispatcher = 0; + locker.unlock(); + eventDispatcher->closingDown(); delete eventDispatcher; + locker.relock(); } - void *data = &d->data->tls; - QThreadStorageData::finish((void **)data); - d->thread_id = 0; #ifdef Q_OS_SYMBIAN if (closeNativeHandle) d->data->symbian_thread_handle.Close(); #endif + d->running = false; + d->finished = true; + + d->isInFinish = false; d->thread_done.wakeAll(); -#ifdef Q_OS_SYMBIAN - if (lockAnyway) -#endif - d->mutex.unlock(); } @@ -506,10 +517,10 @@ void QThread::usleep(unsigned long usecs) thread_sleep(&ti); } +#ifdef QT_HAS_THREAD_PRIORITY_SCHEDULING // Does some magic and calculate the Unix scheduler priorities // sched_policy is IN/OUT: it must be set to a valid policy before calling this function // sched_priority is OUT only -#if defined(Q_OS_DARWIN) || !defined(Q_OS_OPENBSD) && defined(_POSIX_THREAD_PRIORITY_SCHEDULING) && (_POSIX_THREAD_PRIORITY_SCHEDULING-0 >= 0) static bool calculateUnixPriority(int priority, int *sched_policy, int *sched_priority) { #ifdef SCHED_IDLE @@ -543,6 +554,10 @@ void QThread::start(Priority priority) { Q_D(QThread); QMutexLocker locker(&d->mutex); + + if (d->isInFinish) + d->thread_done.wait(locker.mutex()); + if (d->running) return; @@ -558,7 +573,7 @@ void QThread::start(Priority priority) d->priority = priority; -#if defined(Q_OS_DARWIN) || !defined(Q_OS_OPENBSD) && !defined(Q_OS_SYMBIAN) && defined(_POSIX_THREAD_PRIORITY_SCHEDULING) && (_POSIX_THREAD_PRIORITY_SCHEDULING-0 >= 0) +#if defined(QT_HAS_THREAD_PRIORITY_SCHEDULING) && !defined(Q_OS_SYMBIAN) // ### Need to implement thread sheduling and priorities for symbian os. Implementation removed for now switch (priority) { case InheritPriority: @@ -599,7 +614,7 @@ void QThread::start(Priority priority) break; } } -#endif // _POSIX_THREAD_PRIORITY_SCHEDULING +#endif // QT_HAS_THREAD_PRIORITY_SCHEDULING #ifdef Q_OS_SYMBIAN if (d->stackSize == 0) @@ -762,7 +777,7 @@ void QThread::setPriority(Priority priority) // copied from start() with a few modifications: -#if defined(Q_OS_DARWIN) || !defined(Q_OS_OPENBSD) && defined(_POSIX_THREAD_PRIORITY_SCHEDULING) && (_POSIX_THREAD_PRIORITY_SCHEDULING-0 >= 0) +#ifdef QT_HAS_THREAD_PRIORITY_SCHEDULING int sched_policy; sched_param param; diff --git a/src/corelib/thread/qthread_win.cpp b/src/corelib/thread/qthread_win.cpp index 4a967ed..74fedd3 100644 --- a/src/corelib/thread/qthread_win.cpp +++ b/src/corelib/thread/qthread_win.cpp @@ -323,25 +323,33 @@ void QThreadPrivate::finish(void *arg, bool lockAnyway) QThread *thr = reinterpret_cast<QThread *>(arg); QThreadPrivate *d = thr->d_func(); - if (lockAnyway) - d->mutex.lock(); + QMutexLocker locker(lockAnyway ? &d->mutex : 0); + d->isInFinish = true; d->priority = QThread::InheritPriority; - d->running = false; - d->finished = true; - if (d->terminated) + bool terminated = d->terminated; + void **tls_data = reinterpret_cast<void **>(&d->data->tls); + locker.unlock(); + if (terminated) emit thr->terminated(); - d->terminated = false; emit thr->finished(); QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete); + QThreadStorageData::finish(tls_data); + locker.relock(); + + d->terminated = false; - if (d->data->eventDispatcher) { - d->data->eventDispatcher->closingDown(); - QAbstractEventDispatcher *eventDispatcher = d->data->eventDispatcher; + QAbstractEventDispatcher *eventDispatcher = d->data->eventDispatcher; + if (eventDispatcher) { d->data->eventDispatcher = 0; + locker.unlock(); + eventDispatcher->closingDown(); delete eventDispatcher; + locker.relock(); } - QThreadStorageData::finish(reinterpret_cast<void **>(&d->data->tls)); + d->running = false; + d->finished = true; + d->isInFinish = false; if (!d->waiters) { CloseHandle(d->handle); @@ -350,8 +358,6 @@ void QThreadPrivate::finish(void *arg, bool lockAnyway) d->id = 0; - if (lockAnyway) - d->mutex.unlock(); } /************************************************************************** @@ -400,6 +406,12 @@ void QThread::start(Priority priority) Q_D(QThread); QMutexLocker locker(&d->mutex); + if (d->isInFinish) { + locker.unlock(); + wait(); + locker.relock(); + } + if (d->running) return; diff --git a/src/corelib/thread/qthreadstorage.cpp b/src/corelib/thread/qthreadstorage.cpp index 2fc04f5..416fcfb 100644 --- a/src/corelib/thread/qthreadstorage.cpp +++ b/src/corelib/thread/qthreadstorage.cpp @@ -178,11 +178,12 @@ void QThreadStorageData::finish(void **p) return; // nothing to do DEBUG_MSG("QThreadStorageData: Destroying storage for thread %p", QThread::currentThread()); - - for(int i = tls->size() - 1; i >= 0; i--) { - void *&value = (*tls)[i]; + while (!tls->isEmpty()) { + void *&value = tls->last(); void *q = value; value = 0; + int i = tls->size() - 1; + tls->resize(i); if (!q) { // data already deleted @@ -200,6 +201,11 @@ void QThreadStorageData::finish(void **p) continue; } destructor(q); //crash here might mean the thread exited after qthreadstorage was destroyed + + if (tls->size() > i) { + //re reset the tls in case it has been recreated by its own destructor. + (*tls)[i] = 0; + } } tls->clear(); } @@ -215,19 +221,18 @@ void QThreadStorageData::finish(void **p) QThreadStorage is a template class that provides per-thread data storage. - \e{Note that due to compiler limitations, QThreadStorage can only - store pointers.} - The setLocalData() function stores a single thread-specific value for the calling thread. The data can be accessed later using - localData(). QThreadStorage takes ownership of the data (which - must be created on the heap with \c new) and deletes it when the - thread exits, either normally or via termination. + localData(). The hasLocalData() function allows the programmer to determine if data has previously been set using the setLocalData() function. This is also useful for lazy initializiation. + If T is a pointer type, QThreadStorage takes ownership of the data + (which must be created on the heap with \c new) and deletes it when + the thread exits, either normally or via termination. + For example, the following code uses QThreadStorage to store a single cache for each thread that calls the cacheObject() and removeFromCache() functions. The cache is automatically @@ -241,9 +246,6 @@ void QThreadStorageData::finish(void **p) \list - \o As noted above, QThreadStorage can only store pointers due to - compiler limitations. - \o The QThreadStorage destructor does not delete per-thread data. QThreadStorage only deletes per-thread data when the thread exits or when setLocalData() is called multiple times. @@ -279,8 +281,11 @@ void QThreadStorageData::finish(void **p) /*! \fn bool QThreadStorage::hasLocalData() const - Returns true if the calling thread has non-zero data available; - otherwise returns false. + If T is a pointer type, returns true if the calling thread has + non-zero data available. + + If T is a value type, returns whether the data has already been + constructed by calling setLocalData or localData. \sa localData() */ @@ -291,10 +296,8 @@ void QThreadStorageData::finish(void **p) Returns a reference to the data that was set by the calling thread. - Note: QThreadStorage can only store pointers. This function - returns a reference to the pointer that was set by the calling - thread. The value of this reference is 0 if no data was set by - the calling thread, + If no data has been set, this will create a default constructed + instance of type T. \sa hasLocalData() */ @@ -305,10 +308,6 @@ void QThreadStorageData::finish(void **p) Returns a copy of the data that was set by the calling thread. - Note: QThreadStorage can only store pointers. This function - returns a pointer to the data that was set by the calling thread. - If no data was set by the calling thread, this function returns 0. - \sa hasLocalData() */ @@ -318,19 +317,9 @@ void QThreadStorageData::finish(void **p) Sets the local data for the calling thread to \a data. It can be accessed later using the localData() functions. - If \a data is 0, this function deletes the previous data (if - any) and returns immediately. - - If \a data is non-zero, QThreadStorage takes ownership of the \a - data and deletes it automatically either when the thread exits - (either normally or via termination) or when setLocalData() is - called again. - - Note: QThreadStorage can only store pointers. The \a data - argument must be either a pointer to an object created on the heap - (i.e. using \c new) or 0. You should not delete \a data - yourself; QThreadStorage takes ownership and will delete the \a - data itself. + If T is a pointer type, QThreadStorage takes ownership of the data + and deletes it automatically either when the thread exits (either + normally or via termination) or when setLocalData() is called again. \sa localData(), hasLocalData() */ diff --git a/src/corelib/thread/qthreadstorage.h b/src/corelib/thread/qthreadstorage.h index 6264674..475d20d 100644 --- a/src/corelib/thread/qthreadstorage.h +++ b/src/corelib/thread/qthreadstorage.h @@ -91,6 +91,11 @@ inline void qThreadStorage_setLocalData(QThreadStorageData &d, T **t) { (void) d.set(*t); } +template <typename T> +inline +void qThreadStorage_deleteData(void *d, T **) +{ delete static_cast<T *>(d); } + // value-based specialization template <typename T> inline @@ -114,6 +119,12 @@ inline void qThreadStorage_setLocalData(QThreadStorageData &d, T *t) { (void) d.set(new T(*t)); } +template <typename T> +inline +void qThreadStorage_deleteData(void *d, T *) +{ delete static_cast<T *>(d); } + + // MOC_SKIP_END #endif @@ -126,7 +137,7 @@ private: Q_DISABLE_COPY(QThreadStorage) static inline void deleteData(void *x) - { delete static_cast<T>(x); } + { qThreadStorage_deleteData(x, reinterpret_cast<T*>(0)); } public: inline QThreadStorage() : d(deleteData) { } diff --git a/src/corelib/tools/qchar.cpp b/src/corelib/tools/qchar.cpp index bb777cd..a99b313 100644 --- a/src/corelib/tools/qchar.cpp +++ b/src/corelib/tools/qchar.cpp @@ -48,11 +48,11 @@ # undef QT_NO_CAST_TO_ASCII #endif #include "qchar.h" + #include "qdatastream.h" #include "qtextcodec.h" #include "qunicodetables_p.h" - #include "qunicodetables.cpp" QT_BEGIN_NAMESPACE @@ -1069,6 +1069,15 @@ QChar::UnicodeVersion QChar::unicodeVersion(ushort ucs2) return (QChar::UnicodeVersion) qGetProp(ucs2)->unicodeVersion; } +/*! + \since 4.8 + + Returns the most recent supported Unicode version. +*/ +QChar::UnicodeVersion QChar::currentUnicodeVersion() +{ + return UNICODE_DATA_VERSION; +} /*! Returns the lowercase equivalent if the character is uppercase or titlecase; @@ -1489,6 +1498,16 @@ static void decomposeHelper(QString *str, bool canonical, QChar::UnicodeVersion } +struct UCS2Pair { + ushort u1; + ushort u2; +}; + +inline bool operator<(ushort u1, const UCS2Pair &ligature) +{ return u1 < ligature.u1; } +inline bool operator<(const UCS2Pair &ligature, ushort u1) +{ return ligature.u1 < u1; } + static ushort ligatureHelper(ushort u1, ushort u2) { // hangul L-V pair @@ -1511,12 +1530,14 @@ static ushort ligatureHelper(ushort u1, ushort u2) if (index == 0xffff) return 0; const unsigned short *ligatures = uc_ligature_map+index; - ushort length = *ligatures; - ++ligatures; - // ### use bsearch - for (uint i = 0; i < length; ++i) - if (ligatures[2*i] == u1) - return ligatures[2*i+1]; + ushort length = *ligatures++; + { + const UCS2Pair *data = reinterpret_cast<const UCS2Pair *>(ligatures); + const UCS2Pair *r = qBinaryFind(data, data + length, u1); + if (r != data + length) + return r->u2; + } + return 0; } diff --git a/src/corelib/tools/qchar.h b/src/corelib/tools/qchar.h index b9e7e01..8991d07 100644 --- a/src/corelib/tools/qchar.h +++ b/src/corelib/tools/qchar.h @@ -105,7 +105,7 @@ public: enum Category { - NoCategory, + NoCategory, // ### Qt 5: replace with Other_NotAssigned Mark_NonSpacing, // Mn Mark_SpacingCombining, // Mc @@ -144,7 +144,7 @@ public: Symbol_Modifier, // Sk Symbol_Other, // So - Punctuation_Dask = Punctuation_Dash // oops + Punctuation_Dask = Punctuation_Dash // ### Qt 5: remove }; enum Direction @@ -210,7 +210,7 @@ public: }; enum UnicodeVersion { - Unicode_Unassigned, + Unicode_Unassigned, // ### Qt 5: assign with some constantly big value Unicode_1_1, Unicode_2_0, Unicode_2_1_2, @@ -334,6 +334,8 @@ public: static UnicodeVersion QT_FASTCALL unicodeVersion(uint ucs4); static UnicodeVersion QT_FASTCALL unicodeVersion(ushort ucs2); + static UnicodeVersion QT_FASTCALL currentUnicodeVersion(); + static QString QT_FASTCALL decomposition(uint ucs4); #ifdef QT3_SUPPORT diff --git a/src/corelib/tools/qsimd_p.h b/src/corelib/tools/qsimd_p.h index 87fa770..2dbed76 100644 --- a/src/corelib/tools/qsimd_p.h +++ b/src/corelib/tools/qsimd_p.h @@ -87,9 +87,13 @@ QT_BEGIN_HEADER #include <tmmintrin.h> #endif -// SSE4.1 and SSE4.2 intrinsics -#if (defined(QT_HAVE_SSE4_1) || defined(QT_HAVE_SSE4_2)) && (defined(__SSE4_1__) || defined(Q_CC_MSVC)) +// SSE4.1 intrinsics +#if defined(QT_HAVE_SSE4_1) && (defined(__SSE4_1__) || defined(Q_CC_MSVC)) #include <smmintrin.h> +#endif + +// SSE4.2 intrinsics +#if defined(QT_HAVE_SSE4_2) && (defined(__SSE4_2__) || defined(Q_CC_MSVC)) #include <nmmintrin.h> #endif diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp index bb496c6..36b01d2 100644 --- a/src/corelib/tools/qstring.cpp +++ b/src/corelib/tools/qstring.cpp @@ -714,7 +714,7 @@ const QString::Null QString::null = { }; formats, the \e precision represents the maximum number of significant digits (trailing zeroes are omitted). - \section1 More Efficient String Construction + \section1 More Efficient String Construction Using the QString \c{'+'} operator, it is easy to construct a complex string from multiple substrings. You will often write code @@ -924,7 +924,7 @@ int QString::grow(int size) /*! \since 4.2 - Returns a copy of the \a string, where the encoding of \a string depends on + Returns a copy of the \a string, where the encoding of \a string depends on the size of wchar. If wchar is 4 bytes, the \a string is interpreted as ucs-4, if wchar is 2 bytes it is interpreted as ucs-2. @@ -3606,7 +3606,7 @@ static QByteArray toLatin1_helper(const QChar *data, int length) } length = length % 16; } -#elif QT_ALWAYS_HAVE_NEON +#elif defined(QT_ALWAYS_HAVE_NEON) // Refer to the documentation of the SSE2 implementation // this use eactly the same method as for SSE except: // 1) neon has unsigned comparison @@ -6261,28 +6261,32 @@ void qt_string_normalize(QString *data, QString::NormalizationForm mode, QChar:: if (version == QChar::Unicode_Unassigned) { version = UNICODE_DATA_VERSION; } else if (version != UNICODE_DATA_VERSION) { - QString &s = *data; + const QString &s = *data; + QChar *d = 0; for (int i = 0; i < NumNormalizationCorrections; ++i) { const NormalizationCorrection &n = uc_normalization_corrections[i]; if (n.version > version) { int pos = from; - if (n.ucs4 > 0xffff) { + if (QChar::requiresSurrogates(n.ucs4)) { ushort ucs4High = QChar::highSurrogate(n.ucs4); ushort ucs4Low = QChar::lowSurrogate(n.ucs4); ushort oldHigh = QChar::highSurrogate(n.old_mapping); ushort oldLow = QChar::lowSurrogate(n.old_mapping); while (pos < s.length() - 1) { if (s.at(pos).unicode() == ucs4High && s.at(pos + 1).unicode() == ucs4Low) { - s[pos] = oldHigh; - s[pos + 1] = oldLow; - ++pos; + if (!d) + d = data->data(); + d[pos] = QChar(oldHigh); + d[++pos] = QChar(oldLow); } ++pos; } } else { while (pos < s.length()) { if (s.at(pos).unicode() == n.ucs4) { - s[pos] = n.old_mapping; + if (!d) + d = data->data(); + d[pos] = QChar(n.old_mapping); } ++pos; } diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp index 0f786e3..98c213c 100644 --- a/src/declarative/graphicsitems/qdeclarativeflickable.cpp +++ b/src/declarative/graphicsitems/qdeclarativeflickable.cpp @@ -281,7 +281,6 @@ void QDeclarativeFlickablePrivate::fixupY() void QDeclarativeFlickablePrivate::fixup(AxisData &data, qreal minExtent, qreal maxExtent) { - Q_Q(QDeclarativeFlickable); if (data.move.value() > minExtent || maxExtent > minExtent) { timeline.reset(data.move); if (data.move.value() != minExtent) { @@ -290,8 +289,7 @@ void QDeclarativeFlickablePrivate::fixup(AxisData &data, qreal minExtent, qreal timeline.move(data.move, minExtent - dist/2, QEasingCurve(QEasingCurve::InQuad), fixupDuration/4); timeline.move(data.move, minExtent, QEasingCurve(QEasingCurve::OutExpo), 3*fixupDuration/4); } else { - data.move.setValue(minExtent); - q->viewportMoved(); + timeline.set(data.move, minExtent); } } } else if (data.move.value() < maxExtent) { @@ -301,8 +299,7 @@ void QDeclarativeFlickablePrivate::fixup(AxisData &data, qreal minExtent, qreal timeline.move(data.move, maxExtent - dist/2, QEasingCurve(QEasingCurve::InQuad), fixupDuration/4); timeline.move(data.move, maxExtent, QEasingCurve(QEasingCurve::OutExpo), 3*fixupDuration/4); } else { - data.move.setValue(maxExtent); - q->viewportMoved(); + timeline.set(data.move, minExtent); } } vTime = timeline.time(); @@ -386,6 +383,13 @@ void QDeclarativeFlickablePrivate::updateBeginningEnd() \snippet doc/src/snippets/declarative/flickable.qml document \clearfloat + + Items declared as children of a Flickable are automatically parented to the + Flickable's \l contentItem. This should be taken into account when + operating on the children of the Flickable; it is usually the children of + \c contentItem that are relevant. For example, the bound of Items added + to the Flickable will be available by \c contentItem.childrenRect + \section1 Limitations \note Due to an implementation detail, items placed inside a Flickable cannot anchor to it by @@ -696,6 +700,9 @@ void QDeclarativeFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent bool rejectY = false; bool rejectX = false; + bool stealY = false; + bool stealX = false; + if (q->yflick()) { int dy = int(event->pos().y() - pressPos.y()); if (qAbs(dy) > QApplication::startDragDistance() || QDeclarativeItemPrivate::elapsed(pressTime) > 200) { @@ -724,7 +731,7 @@ void QDeclarativeFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent vMoved = true; } if (qAbs(dy) > QApplication::startDragDistance()) - stealMouse = true; + stealY = true; } } @@ -757,10 +764,12 @@ void QDeclarativeFlickablePrivate::handleMouseMoveEvent(QGraphicsSceneMouseEvent } if (qAbs(dx) > QApplication::startDragDistance()) - stealMouse = true; + stealX = true; } } + stealMouse = stealX || stealY; + if (!lastPos.isNull()) { qreal elapsed = qreal(QDeclarativeItemPrivate::restart(lastPosTime)) / 1000.; if (elapsed <= 0) diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index 6be49ba..450b6af 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -183,6 +183,7 @@ public: , ownModel(false), wrap(false), autoHighlight(true), haveHighlightRange(false) , correctFlick(false), inFlickCorrection(false), lazyRelease(false) , deferredRelease(false), layoutScheduled(false), currentIndexCleared(false) + , inViewportMoved(false) , minExtentDirty(true), maxExtentDirty(true) {} @@ -503,6 +504,7 @@ public: bool deferredRelease : 1; bool layoutScheduled : 1; bool currentIndexCleared : 1; + bool inViewportMoved : 1; mutable bool minExtentDirty : 1; mutable bool maxExtentDirty : 1; }; @@ -2281,6 +2283,10 @@ void QDeclarativeListView::viewportMoved() QDeclarativeFlickable::viewportMoved(); if (!d->itemCount) return; + // Recursion can occur due to refill changing the content size. + if (d->inViewportMoved) + return; + d->inViewportMoved = true; d->lazyRelease = true; refill(); if (d->flickingHorizontally || d->flickingVertically || d->movingHorizontally || d->movingVertically) @@ -2294,6 +2300,7 @@ void QDeclarativeListView::viewportMoved() pos = viewPos + d->highlightRangeEnd - d->highlight->size(); if (pos < viewPos + d->highlightRangeStart) pos = viewPos + d->highlightRangeStart; + d->highlightPosAnimator->stop(); d->highlight->setPosition(qRound(pos)); // update current index @@ -2341,6 +2348,7 @@ void QDeclarativeListView::viewportMoved() } d->inFlickCorrection = false; } + d->inViewportMoved = false; } qreal QDeclarativeListView::minYExtent() const diff --git a/src/declarative/graphicsitems/qdeclarativemousearea.cpp b/src/declarative/graphicsitems/qdeclarativemousearea.cpp index d9edd11..0a043a7 100644 --- a/src/declarative/graphicsitems/qdeclarativemousearea.cpp +++ b/src/declarative/graphicsitems/qdeclarativemousearea.cpp @@ -500,17 +500,9 @@ void QDeclarativeMouseArea::mouseMoveEvent(QGraphicsSceneMouseEvent *event) const int dragThreshold = QApplication::startDragDistance(); qreal dx = qAbs(curLocalPos.x() - startLocalPos.x()); qreal dy = qAbs(curLocalPos.y() - startLocalPos.y()); - if ((d->dragX && !(dx < dragThreshold)) || (d->dragY && !(dy < dragThreshold))) { + + if (keepMouseGrab() && d->stealMouse) d->drag->setActive(true); - d->stealMouse = true; - } - if (!keepMouseGrab()) { - if ((!d->dragY && dy < dragThreshold && d->dragX && dx > dragThreshold) - || (!d->dragX && dx < dragThreshold && d->dragY && dy > dragThreshold) - || (d->dragX && d->dragY)) { - setKeepMouseGrab(true); - } - } if (d->dragX && d->drag->active()) { qreal x = (curLocalPos.x() - startLocalPos.x()) + d->startX; @@ -528,6 +520,16 @@ void QDeclarativeMouseArea::mouseMoveEvent(QGraphicsSceneMouseEvent *event) y = drag()->ymax(); drag()->target()->setY(y); } + + if (!keepMouseGrab()) { + if ((!d->dragY && dy < dragThreshold && d->dragX && dx > dragThreshold) + || (!d->dragX && dx < dragThreshold && d->dragY && dy > dragThreshold) + || (d->dragX && d->dragY && (dx > dragThreshold || dy > dragThreshold))) { + setKeepMouseGrab(true); + d->stealMouse = true; + } + } + d->moved = true; } QDeclarativeMouseEvent me(d->lastPos.x(), d->lastPos.y(), d->lastButton, d->lastButtons, d->lastModifiers, false, d->longPress); @@ -618,6 +620,7 @@ bool QDeclarativeMouseArea::sceneEvent(QEvent *event) // if our mouse grab has been removed (probably by Flickable), fix our // state d->pressed = false; + d->stealMouse = false; setKeepMouseGrab(false); emit canceled(); emit pressedChanged(); @@ -672,8 +675,18 @@ bool QDeclarativeMouseArea::sendMouseEvent(QGraphicsSceneMouseEvent *event) return stealThisEvent; } if (mouseEvent.type() == QEvent::GraphicsSceneMouseRelease) { - d->stealMouse = false; - ungrabMouse(); + if (d->pressed) { + d->pressed = false; + d->stealMouse = false; + if (s && s->mouseGrabberItem() == this) + ungrabMouse(); + emit canceled(); + emit pressedChanged(); + if (d->hovered) { + d->hovered = false; + emit hoveredChanged(); + } + } } return false; } diff --git a/src/declarative/graphicsitems/qdeclarativerectangle.cpp b/src/declarative/graphicsitems/qdeclarativerectangle.cpp index fc3954f..7686dde 100644 --- a/src/declarative/graphicsitems/qdeclarativerectangle.cpp +++ b/src/declarative/graphicsitems/qdeclarativerectangle.cpp @@ -260,6 +260,9 @@ void QDeclarativeRectangle::doUpdate() A width of 1 creates a thin line. For no line, use a width of 0 or a transparent color. + \note The width of the rectangle's border does not affect the geometry of the + rectangle itself or its position relative to other items if anchors are used. + If \c border.width is an odd number, the rectangle is painted at a half-pixel offset to retain border smoothness. Also, the border is rendered evenly on either side of the rectangle's boundaries, and the spare pixel is rendered to the right and below the diff --git a/src/declarative/qml/qdeclarativecompileddata.cpp b/src/declarative/qml/qdeclarativecompileddata.cpp index a4ecc77..690f499 100644 --- a/src/declarative/qml/qdeclarativecompileddata.cpp +++ b/src/declarative/qml/qdeclarativecompileddata.cpp @@ -169,8 +169,8 @@ QDeclarativeCompiledData::QDeclarativeCompiledData(QDeclarativeEngine *engine) QDeclarativeCompiledData::~QDeclarativeCompiledData() { for (int ii = 0; ii < types.count(); ++ii) { - if (types.at(ii).ref) - types.at(ii).ref->release(); + if (types.at(ii).component) + types.at(ii).component->release(); } for (int ii = 0; ii < propertyCaches.count(); ++ii) diff --git a/src/declarative/qml/qdeclarativecompiler.cpp b/src/declarative/qml/qdeclarativecompiler.cpp index b2740b8..645402e 100644 --- a/src/declarative/qml/qdeclarativecompiler.cpp +++ b/src/declarative/qml/qdeclarativecompiler.cpp @@ -591,8 +591,6 @@ bool QDeclarativeCompiler::compile(QDeclarativeEngine *engine, } } else if (tref.typeData) { ref.component = tref.typeData->compiledData(); - ref.ref = tref.typeData; - ref.ref->addref(); } ref.className = parserRef->name.toUtf8(); out->types << ref; diff --git a/src/declarative/qml/qdeclarativecompiler_p.h b/src/declarative/qml/qdeclarativecompiler_p.h index 43a0901..5cd1fd2 100644 --- a/src/declarative/qml/qdeclarativecompiler_p.h +++ b/src/declarative/qml/qdeclarativecompiler_p.h @@ -89,14 +89,12 @@ public: struct TypeReference { TypeReference() - : type(0), component(0), ref(0) {} + : type(0), component(0) {} QByteArray className; QDeclarativeType *type; -// QDeclarativeComponent *component; QDeclarativeCompiledData *component; - QDeclarativeRefCount *ref; QObject *createInstance(QDeclarativeContextData *, const QBitField &, QList<QDeclarativeError> *) const; const QMetaObject *metaObject() const; }; diff --git a/src/declarative/qml/qdeclarativeworkerscript.cpp b/src/declarative/qml/qdeclarativeworkerscript.cpp index ae7a80d..75cc6f9 100644 --- a/src/declarative/qml/qdeclarativeworkerscript.cpp +++ b/src/declarative/qml/qdeclarativeworkerscript.cpp @@ -52,6 +52,7 @@ #include <QtCore/qwaitcondition.h> #include <QtScript/qscriptvalueiterator.h> #include <QtCore/qfile.h> +#include <QtCore/qdatetime.h> #include <QtNetwork/qnetworkaccessmanager.h> #include <QtDeclarative/qdeclarativeinfo.h> #include "qdeclarativenetworkaccessmanagerfactory.h" @@ -314,6 +315,12 @@ QVariant QDeclarativeWorkerScriptEnginePrivate::scriptValueToVariant(const QScri return QVariant(value.toString()); } else if (value.isNumber()) { return QVariant((qreal)value.toNumber()); + } else if (value.isDate()) { + return QVariant(value.toDateTime()); +#ifndef QT_NO_REGEXP + } else if (value.isRegExp()) { + return QVariant(value.toRegExp()); +#endif } else if (value.isArray()) { QVariantList list; @@ -364,6 +371,12 @@ QScriptValue QDeclarativeWorkerScriptEnginePrivate::variantToScriptValue(const Q return QScriptValue(value.toString()); } else if (value.userType() == QMetaType::QReal) { return QScriptValue(value.toReal()); + } else if (value.userType() == QVariant::DateTime) { + return engine->newDate(value.toDateTime()); +#ifndef QT_NO_REGEXP + } else if (value.userType() == QVariant::RegExp) { + return engine->newRegExp(value.toRegExp()); +#endif } else if (value.userType() == qMetaTypeId<QDeclarativeListModelWorkerAgent::VariantRef>()) { QDeclarativeListModelWorkerAgent::VariantRef vr = qvariant_cast<QDeclarativeListModelWorkerAgent::VariantRef>(value); if (vr.a->scriptEngine() == 0) diff --git a/src/declarative/util/qdeclarativeopenmetaobject.cpp b/src/declarative/util/qdeclarativeopenmetaobject.cpp index 40485bd..c611435 100644 --- a/src/declarative/util/qdeclarativeopenmetaobject.cpp +++ b/src/declarative/util/qdeclarativeopenmetaobject.cpp @@ -186,6 +186,7 @@ QDeclarativeOpenMetaObject::QDeclarativeOpenMetaObject(QObject *obj, bool automa d->type->d->referers.insert(this); QObjectPrivate *op = QObjectPrivate::get(obj); + d->parent = static_cast<QAbstractDynamicMetaObject *>(op->metaObject); *static_cast<QMetaObject *>(this) = *d->type->d->mem; op->metaObject = this; } @@ -201,6 +202,7 @@ QDeclarativeOpenMetaObject::QDeclarativeOpenMetaObject(QObject *obj, QDeclarativ d->type->d->referers.insert(this); QObjectPrivate *op = QObjectPrivate::get(obj); + d->parent = static_cast<QAbstractDynamicMetaObject *>(op->metaObject); *static_cast<QMetaObject *>(this) = *d->type->d->mem; op->metaObject = this; } diff --git a/src/gui/accessible/qaccessible_mac.mm b/src/gui/accessible/qaccessible_mac.mm index 57ea41b..3b1396a 100644 --- a/src/gui/accessible/qaccessible_mac.mm +++ b/src/gui/accessible/qaccessible_mac.mm @@ -774,7 +774,7 @@ QAInterface QAccessibleHierarchyManager::lookup(const AXUIElementRef &element) return factory->interface(id); #else return QAInterface(); -#endif; +#endif } QAInterface QAccessibleHierarchyManager::lookup(const QAElement &element) diff --git a/src/gui/dialogs/dialogs.pri b/src/gui/dialogs/dialogs.pri index cd8e71a..6ba707c 100644 --- a/src/gui/dialogs/dialogs.pri +++ b/src/gui/dialogs/dialogs.pri @@ -108,6 +108,15 @@ SOURCES += \ dialogs/qwizard.cpp \ dialogs/qprintpreviewdialog.cpp +symbian:contains(QT_CONFIG, s60) { + LIBS += -lCommonDialogs + SOURCES += dialogs/qfiledialog_symbian.cpp \ + dialogs/qcolordialog_symbian.cpp +} + FORMS += dialogs/qpagesetupwidget.ui RESOURCES += dialogs/qprintdialog.qrc RESOURCES += dialogs/qmessagebox.qrc + +# Compensate for lack of platform defines in Symbian3 +symbian: DEFINES += SYMBIAN_VERSION_$$upper($$replace(SYMBIAN_VERSION,\\.,_)) diff --git a/src/gui/dialogs/qabstractprintdialog.cpp b/src/gui/dialogs/qabstractprintdialog.cpp index 25d9ebb..641419f 100644 --- a/src/gui/dialogs/qabstractprintdialog.cpp +++ b/src/gui/dialogs/qabstractprintdialog.cpp @@ -65,6 +65,9 @@ class QPrintDialogPrivate : public QAbstractPrintDialogPrivate customize settings shown in print dialogs, but it is not used directly. Use QPrintDialog to display a print dialog in your application. + In Symbian, there is no support for printing. Hence, this dialog should not + be used in Symbian. + \sa QPrintDialog, QPrinter, {Printing with Qt} */ diff --git a/src/gui/dialogs/qcolordialog.cpp b/src/gui/dialogs/qcolordialog.cpp index e9b5720..a66a979 100644 --- a/src/gui/dialogs/qcolordialog.cpp +++ b/src/gui/dialogs/qcolordialog.cpp @@ -1952,6 +1952,12 @@ void QColorDialog::open(QObject *receiver, const char *member) \sa QDialog::open() */ +/* + For Symbian color dialogs +*/ +#ifdef Q_WS_S60 +extern QColor qtSymbianGetColor(const QColor &initial); +#endif /*! \since 4.5 @@ -1961,10 +1967,19 @@ void QColorDialog::open(QObject *receiver, const char *member) QColor::isValid()) color if the user cancels the dialog. The \a options argument allows you to customize the dialog. + + On Symbian, this static function will use the native color dialog and not a QColorDialog. + On Symbian the parameters \a title and \a parent has no relevance and the + \a options parameter is only used to define if the native color dialog is + used or not. */ QColor QColorDialog::getColor(const QColor &initial, QWidget *parent, const QString &title, ColorDialogOptions options) { +#ifdef Q_WS_S60 + if (!(options & DontUseNativeDialog)) + return qtSymbianGetColor(initial); +#endif QColorDialog dlg(parent); if (!title.isEmpty()) dlg.setWindowTitle(title); @@ -1979,10 +1994,16 @@ QColor QColorDialog::getColor(const QColor &initial, QWidget *parent, const QStr returns that color. The color is initially set to \a initial. The dialog is a child of \a parent. It returns an invalid (see QColor::isValid()) color if the user cancels the dialog. + + On Symbian, this static function will use the native + color dialog and not a QColorDialog. */ QColor QColorDialog::getColor(const QColor &initial, QWidget *parent) { +#ifdef Q_WS_S60 + return qtSymbianGetColor(initial); +#endif return getColor(initial, parent, QString(), ColorDialogOptions(0)); } diff --git a/src/gui/dialogs/qcolordialog_mac.mm b/src/gui/dialogs/qcolordialog_mac.mm index 82cfa24..655de08 100644 --- a/src/gui/dialogs/qcolordialog_mac.mm +++ b/src/gui/dialogs/qcolordialog_mac.mm @@ -185,7 +185,7 @@ QT_USE_NAMESPACE [self relayout]; } -- (void)colorChanged:(NSNotification *)notification; +- (void)colorChanged:(NSNotification *)notification { Q_UNUSED(notification); [self updateQtColor]; @@ -439,7 +439,7 @@ void QColorDialogPrivate::openCocoaColorPanel(const QColor &initial, priv:this]; [colorPanel setDelegate:static_cast<QT_MANGLE_NAMESPACE(QCocoaColorPanelDelegate) *>(delegate)]; } - [delegate setResultSet:false]; + [static_cast<QT_MANGLE_NAMESPACE(QCocoaColorPanelDelegate) *>(delegate) setResultSet:NO]; setCocoaPanelColor(initial); [static_cast<QT_MANGLE_NAMESPACE(QCocoaColorPanelDelegate) *>(delegate) showColorPanel]; } diff --git a/src/gui/dialogs/qcolordialog_symbian.cpp b/src/gui/dialogs/qcolordialog_symbian.cpp new file mode 100644 index 0000000..8f73f7c --- /dev/null +++ b/src/gui/dialogs/qcolordialog_symbian.cpp @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** 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 QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qcolordialog_p.h" + +#ifndef QT_NO_COLORDIALOG + + +#include "qcolor.h" +#include "private/qguiplatformplugin_p.h" + +#ifdef Q_WS_S60 +#include <AknColourSelectionGrid.h> +#endif + +#include "private/qt_s60_p.h" + +QT_BEGIN_NAMESPACE + +QColor launchSymbianColorDialog(QColor initial) +{ + QColor currentColor = QColor::Invalid; +#ifdef Q_WS_S60 + QT_TRAP_THROWING( + CArrayFixFlat<TRgb>* array = new( ELeave ) CArrayFixFlat<TRgb>(17); + CleanupStack::PushL(array); + array->AppendL(KRgbBlack); + array->AppendL(KRgbDarkGray); + array->AppendL(KRgbDarkRed); + array->AppendL(KRgbDarkGreen); + array->AppendL(KRgbDarkYellow); + array->AppendL(KRgbDarkBlue); + array->AppendL(KRgbDarkMagenta); + array->AppendL(KRgbDarkCyan); + array->AppendL(KRgbRed); + array->AppendL(KRgbGreen); + array->AppendL(KRgbYellow); + array->AppendL(KRgbBlue); + array->AppendL(KRgbMagenta); + array->AppendL(KRgbCyan); + array->AppendL(KRgbGray); + array->AppendL(KRgbWhite); + + TRgb initialColour(initial.red(), initial.green(), initial.blue(), initial.alpha()); + + TBool noneChosen = EFalse; // If true shows the default colour button + CAknColourSelectionGrid* colourSelectionGrid = + CAknColourSelectionGrid::NewL(array, EFalse, noneChosen, initialColour); + CleanupStack::PushL(colourSelectionGrid); + + if (colourSelectionGrid->ExecuteLD()) { + currentColor.setRgb(initialColour.Red(), initialColour.Green(), + initialColour.Blue(), initialColour.Alpha()); + } + CleanupStack::Pop(colourSelectionGrid); + CleanupStack::PopAndDestroy(array); + ); +#endif + return currentColor; +} + +QColor qtSymbianGetColor(const QColor &initial) +{ + return launchSymbianColorDialog(initial); +} + +QT_END_NAMESPACE + +#endif // QT_NO_COLORDIALOG diff --git a/src/gui/dialogs/qfiledialog.cpp b/src/gui/dialogs/qfiledialog.cpp index 1b9d127..9509330 100644 --- a/src/gui/dialogs/qfiledialog.cpp +++ b/src/gui/dialogs/qfiledialog.cpp @@ -1616,6 +1616,25 @@ extern QStringList qt_win_get_open_file_names(const QFileDialogArgs &args, extern QString qt_win_get_existing_directory(const QFileDialogArgs &args); #endif +/* + For Symbian file dialogs +*/ +#if defined(Q_WS_S60) +extern QString qtSymbianGetOpenFileName(const QString &caption, + const QString &dir, + const QString &filter); + +extern QStringList qtSymbianGetOpenFileNames(const QString &caption, + const QString &dir, + const QString &filter); + +extern QString qtSymbianGetSaveFileName(const QString &caption, + const QString &dir); + +extern QString qtSymbianGetExistingDirectory(const QString &caption, + const QString &dir); +#endif + /*! This is a convenience static function that returns an existing file selected by the user. If the user presses Cancel, it returns a null string. @@ -1644,8 +1663,8 @@ extern QString qt_win_get_existing_directory(const QFileDialogArgs &args); The dialog's caption is set to \a caption. If \a caption is not specified then a default caption will be used. - On Windows and Mac OS X, this static function will use the native file - dialog and not a QFileDialog. + On Windows, Mac OS X and Symbian^3, this static function will use the + native file dialog and not a QFileDialog. On Windows the dialog will spin a blocking modal event loop that will not dispatch any QTimers, and if \a parent is not 0 then it will position the @@ -1657,6 +1676,10 @@ extern QString qt_win_get_existing_directory(const QFileDialogArgs &args); \a options includes DontResolveSymlinks, the file dialog will treat symlinks as regular directories. + On Symbian^3 the parameter \a selectedFilter has no meaning and the + \a options parameter is only used to define if the native file dialog is + used. + \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog yourself using one of the QFileDialog constructors. @@ -1672,6 +1695,10 @@ QString QFileDialog::getOpenFileName(QWidget *parent, { if (qt_filedialog_open_filename_hook && !(options & DontUseNativeDialog)) return qt_filedialog_open_filename_hook(parent, caption, dir, filter, selectedFilter, options); +#if defined(Q_WS_S60) + if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0 && !(options & DontUseNativeDialog)) + return qtSymbianGetOpenFileName(caption, dir, filter); +#endif QFileDialogArgs args; args.parent = parent; args.caption = caption; @@ -1722,8 +1749,8 @@ QString QFileDialog::getOpenFileName(QWidget *parent, The dialog's caption is set to \a caption. If \a caption is not specified then a default caption will be used. - On Windows and Mac OS X, this static function will use the native file - dialog and not a QFileDialog. + On Windows, Mac OS X and Symbian^3, this static function will use the + native file dialog and not a QFileDialog. On Windows the dialog will spin a blocking modal event loop that will not dispatch any QTimers, and if \a parent is not 0 then it will position the @@ -1741,6 +1768,10 @@ QString QFileDialog::getOpenFileName(QWidget *parent, \snippet doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp 10 + On Symbian^3 the parameter \a selectedFilter has no meaning and the + \a options parameter is only used to define if the native file dialog is + used. + \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog yourself using one of the QFileDialog constructors. @@ -1756,6 +1787,10 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent, { if (qt_filedialog_open_filenames_hook && !(options & DontUseNativeDialog)) return qt_filedialog_open_filenames_hook(parent, caption, dir, filter, selectedFilter, options); +#if defined(Q_WS_S60) + if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0 && !(options & DontUseNativeDialog)) + return qtSymbianGetOpenFileNames(caption, dir, filter); +#endif QFileDialogArgs args; args.parent = parent; args.caption = caption; @@ -1813,8 +1848,8 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent, The dialog's caption is set to \a caption. If \a caption is not specified, a default caption will be used. - On Windows and Mac OS X, this static function will use the native file - dialog and not a QFileDialog. + On Windows, Mac OS X and Symbian^3, this static function will use the + native file dialog and not a QFileDialog. On Windows the dialog will spin a blocking modal event loop that will not dispatch any QTimers, and if \a parent is not 0 then it will position the @@ -1827,6 +1862,10 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent, \a options includes DontResolveSymlinks the file dialog will treat symlinks as regular directories. + On Symbian^3 the parameters \a filter and \a selectedFilter have no + meaning. The \a options parameter is only used to define if the native file + dialog is used. + \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog yourself using one of the QFileDialog constructors. @@ -1842,6 +1881,10 @@ QString QFileDialog::getSaveFileName(QWidget *parent, { if (qt_filedialog_save_filename_hook && !(options & DontUseNativeDialog)) return qt_filedialog_save_filename_hook(parent, caption, dir, filter, selectedFilter, options); +#if defined(Q_WS_S60) + if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0 && !(options & DontUseNativeDialog)) + return qtSymbianGetSaveFileName(caption, dir); +#endif QFileDialogArgs args; args.parent = parent; args.caption = caption; @@ -1890,9 +1933,9 @@ QString QFileDialog::getSaveFileName(QWidget *parent, pass. To ensure a native file dialog, \l{QFileDialog::}{ShowDirsOnly} must be set. - On Windows and Mac OS X, this static function will use the native file - dialog and not a QFileDialog. On Windows CE, if the device has no native - file dialog, a QFileDialog will be used. + On Windows, Mac OS X and Symbian^3, this static function will use the + native file dialog and not a QFileDialog. On Windows CE, if the device has + no native file dialog, a QFileDialog will be used. On Unix/X11, the normal behavior of the file dialog is to resolve and follow symlinks. For example, if \c{/usr/tmp} is a symlink to \c{/var/tmp}, @@ -1904,6 +1947,9 @@ QString QFileDialog::getSaveFileName(QWidget *parent, dispatch any QTimers, and if \a parent is not 0 then it will position the dialog just below the parent's title bar. + On Symbian^3 the \a options parameter is only used to define if the native + file dialog is used. + \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog yourself using one of the QFileDialog constructors. @@ -1917,6 +1963,10 @@ QString QFileDialog::getExistingDirectory(QWidget *parent, { if (qt_filedialog_existing_directory_hook && !(options & DontUseNativeDialog)) return qt_filedialog_existing_directory_hook(parent, caption, dir, options); +#if defined(Q_WS_S60) + if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0 && !(options & DontUseNativeDialog)) + return qtSymbianGetExistingDirectory(caption, dir); +#endif QFileDialogArgs args; args.parent = parent; args.caption = caption; diff --git a/src/gui/dialogs/qfiledialog_symbian.cpp b/src/gui/dialogs/qfiledialog_symbian.cpp new file mode 100644 index 0000000..1f70305 --- /dev/null +++ b/src/gui/dialogs/qfiledialog_symbian.cpp @@ -0,0 +1,196 @@ +/**************************************************************************** +** +** 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 QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qfiledialog.h" + +#ifndef QT_NO_FILEDIALOG + +#include <private/qfiledialog_p.h> +#if defined(Q_WS_S60) && defined(SYMBIAN_VERSION_SYMBIAN3) +#include <driveinfo.h> +#include <AknCommonDialogsDynMem.h> +#include <CAknMemorySelectionDialogMultiDrive.h> +#include <MAknFileFilter.h> +#endif +#include "private/qcore_symbian_p.h" + +QT_BEGIN_NAMESPACE + +enum DialogMode { DialogOpen, DialogSave, DialogFolder }; +#if defined(Q_WS_S60) && defined(SYMBIAN_VERSION_SYMBIAN3) +class CExtensionFilter : public MAknFileFilter +{ +public: + void setFilter(const QString filter) + { + filterList.clear(); + if (filter.left(2) == QLatin1String("*.")) { + //Filter has only extensions + filterList << filter.split(" "); + return; + } else { + //Extensions are in parenthesis and there may be several filters + QStringList separatedFilters(filter.split(QLatin1String(";;"))); + for (int i = 0; i < separatedFilters.size(); i++) { + if (separatedFilters.at(i).contains(QLatin1String("(*)"))) { + filterList << QLatin1String("(*)"); + return; + } + } + QRegExp rx("\\(([^\\)]*)\\)"); + int pos = 0; + while ((pos = rx.indexIn(filter, pos)) != -1) { + filterList << rx.cap(1).split(QLatin1String(" ")); + pos += rx.matchedLength(); + } + } + } + + TBool Accept(const TDesC &/*aDriveAndPath*/, const TEntry &aEntry) const + { + if (aEntry.IsDir()) + return ETrue; + + //If no filter for files, all can be accepted + if (filterList.isEmpty()) + return ETrue; + + if (filterList == QStringList(QLatin1String("(*)"))) + return ETrue; + + for (int i = 0; i < filterList.size(); ++i) { + QString extension = filterList.at(i); + //remove '*' from the beginning of the extension + if (extension.at(0) == QLatin1Char('*')) + extension = extension.mid(1); + + QString fileName = qt_TDesC2QString(aEntry.iName); + if (fileName.endsWith(extension)) + return ETrue; + } + return EFalse; + } + +private: + QStringList filterList; +}; +#endif + +static QString launchSymbianDialog(const QString dialogCaption, const QString startDirectory, + const QString filter, DialogMode dialogMode) +{ + QString selection; +#if defined(Q_WS_S60) && defined(SYMBIAN_VERSION_SYMBIAN3) + QT_TRAP_THROWING( + TFileName startFolder; + if (!startDirectory.isEmpty()) { + QString dir = QDir::toNativeSeparators(startDirectory); + startFolder = qt_QString2TPtrC(dir); + } + TInt types = AknCommonDialogsDynMem::EMemoryTypeMMCExternal| + AknCommonDialogsDynMem::EMemoryTypeInternalMassStorage| + AknCommonDialogsDynMem::EMemoryTypePhone; + + TPtrC titlePtr(qt_QString2TPtrC(dialogCaption)); + TFileName target; + bool select = false; + if (dialogMode == DialogOpen) { + CExtensionFilter* extensionFilter = new (ELeave) CExtensionFilter; + CleanupStack::PushL(extensionFilter); + extensionFilter->setFilter(filter); + select = AknCommonDialogsDynMem::RunSelectDlgLD(types, target, + startFolder, NULL, NULL, titlePtr, extensionFilter); + CleanupStack::Pop(extensionFilter); + } else if (dialogMode == DialogSave) { + select = AknCommonDialogsDynMem::RunSaveDlgLD(types, target, + startFolder, NULL, NULL, titlePtr); + } else if (dialogMode == DialogFolder) { + select = AknCommonDialogsDynMem::RunFolderSelectDlgLD(types, target, startFolder, + 0, 0, titlePtr, NULL, NULL); + } + if (select) + selection.append(qt_TDesC2QString(target)); + ); +#endif + return selection; +} + +QString qtSymbianGetOpenFileName(const QString &caption, + const QString &dir, + const QString &filter) +{ + return launchSymbianDialog(caption, dir, filter, DialogOpen); +} + +QStringList qtSymbianGetOpenFileNames(const QString &caption, + const QString &dir, + const QString &filter) +{ + QString fileName; + fileName.append(launchSymbianDialog(caption, dir, filter, DialogOpen)); + QStringList fileList; + fileList << fileName; + + return fileList; +} + +QString qtSymbianGetSaveFileName(const QString &caption, + const QString &dir) +{ + return launchSymbianDialog(caption, dir, QString(), DialogSave); +} + +QString qtSymbianGetExistingDirectory(const QString &caption, + const QString &dir) +{ + QString folderCaption; + if (!caption.isEmpty()) { + folderCaption.append(caption); + } else { + // Title for folder selection dialog is mandatory + folderCaption.append(QFileDialog::tr("Find Directory")); + } + return launchSymbianDialog(folderCaption, dir, QString(), DialogFolder); +} + +QT_END_NAMESPACE + +#endif diff --git a/src/gui/dialogs/qfontdialog_mac.mm b/src/gui/dialogs/qfontdialog_mac.mm index 6fb363b..e2c2fc2 100644 --- a/src/gui/dialogs/qfontdialog_mac.mm +++ b/src/gui/dialogs/qfontdialog_mac.mm @@ -339,7 +339,7 @@ static QFont qfontForCocoaFont(NSFont *cocoaFont, const QFont &resolveFont) [self relayoutToContentSize:[[mStolenContentView superview] frame].size]; } -- (void)relayoutToContentSize:(NSSize)frameSize; +- (void)relayoutToContentSize:(NSSize)frameSize { Q_ASSERT(mPanelHackedWithButtons); diff --git a/src/gui/dialogs/qmessagebox.cpp b/src/gui/dialogs/qmessagebox.cpp index f849996..224a176 100644 --- a/src/gui/dialogs/qmessagebox.cpp +++ b/src/gui/dialogs/qmessagebox.cpp @@ -776,10 +776,8 @@ QMessageBox::QMessageBox(QWidget *parent) added at any time using addButton(). The \a parent and \a f arguments are passed to the QDialog constructor. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. On Mac OS X, if \a parent is not 0 and you want your message box to appear as a Qt::Sheet of that parent, set the message box's @@ -1549,10 +1547,8 @@ static QMessageBox::StandardButton showNewMessageBox(QWidget *parent, \key Esc was pressed instead, the \l{Default and Escape Keys} {escape button} is returned. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. \sa question(), warning(), critical() */ @@ -1579,10 +1575,8 @@ QMessageBox::StandardButton QMessageBox::information(QWidget *parent, const QStr \key Esc was pressed instead, the \l{Default and Escape Keys} {escape button} is returned. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. \sa information(), warning(), critical() */ @@ -1607,10 +1601,8 @@ QMessageBox::StandardButton QMessageBox::question(QWidget *parent, const QString \key Esc was pressed instead, the \l{Default and Escape Keys} {escape button} is returned. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. \sa question(), information(), critical() */ @@ -1635,10 +1627,8 @@ QMessageBox::StandardButton QMessageBox::warning(QWidget *parent, const QString \key Esc was pressed instead, the \l{Default and Escape Keys} {escape button} is returned. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog @@ -1670,7 +1660,7 @@ QMessageBox::StandardButton QMessageBox::critical(QWidget *parent, const QString The about box has a single button labelled "OK". On Mac OS X, the about box is popped up as a modeless window; on other platforms, - it is currently a window modal. + it is currently application modal. \sa QWidget::windowIcon(), QApplication::activeWindow() */ @@ -1723,7 +1713,7 @@ void QMessageBox::about(QWidget *parent, const QString &title, const QString &te QApplication provides this functionality as a slot. On Mac OS X, the about box is popped up as a modeless window; on - other platforms, it is currently window modal. + other platforms, it is currently application modal. \sa QApplication::aboutQt() */ @@ -1983,10 +1973,8 @@ void QMessageBoxPrivate::retranslateStrings() \snippet doc/src/snippets/dialogs/dialogs.cpp 2 - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. The \a parent and \a f arguments are passed to the QDialog constructor. @@ -2035,10 +2023,8 @@ QMessageBox::QMessageBox(const QString &title, const QString &text, Icon icon, Returns the identity (QMessageBox::Ok, or QMessageBox::No, etc.) of the button that was clicked. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog @@ -2073,10 +2059,8 @@ int QMessageBox::information(QWidget *parent, const QString &title, const QStrin supply 0, 1 or 2 to make pressing \key Esc equivalent to clicking the relevant button. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog @@ -2125,10 +2109,8 @@ int QMessageBox::information(QWidget *parent, const QString &title, const QStrin Returns the identity (QMessageBox::Yes, or QMessageBox::No, etc.) of the button that was clicked. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog @@ -2163,10 +2145,8 @@ int QMessageBox::question(QWidget *parent, const QString &title, const QString& supply 0, 1 or 2 to make pressing Escape equivalent to clicking the relevant button. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog @@ -2215,10 +2195,8 @@ int QMessageBox::question(QWidget *parent, const QString &title, const QString& Returns the identity (QMessageBox::Ok or QMessageBox::No or ...) of the button that was clicked. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog @@ -2253,10 +2231,8 @@ int QMessageBox::warning(QWidget *parent, const QString &title, const QString& t supply 0, 1, or 2 to make pressing Escape equivalent to clicking the relevant button. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog @@ -2304,10 +2280,8 @@ int QMessageBox::warning(QWidget *parent, const QString &title, const QString& t Returns the identity (QMessageBox::Ok, or QMessageBox::No, etc.) of the button that was clicked. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog @@ -2343,10 +2317,8 @@ int QMessageBox::critical(QWidget *parent, const QString &title, const QString& supply 0, 1, or 2 to make pressing Escape equivalent to clicking the relevant button. - If \a parent is 0, the message box is an \l{Qt::ApplicationModal} - {application modal} dialog box. If \a parent is a widget, the - message box is \l{Qt::WindowModal} {window modal} relative to \a - parent. + The message box is an \l{Qt::ApplicationModal} {application modal} + dialog box. \warning Do not delete \a parent during the execution of the dialog. If you want to do this, you should create the dialog diff --git a/src/gui/dialogs/qpagesetupdialog.cpp b/src/gui/dialogs/qpagesetupdialog.cpp index 5d77de1..b5be942 100644 --- a/src/gui/dialogs/qpagesetupdialog.cpp +++ b/src/gui/dialogs/qpagesetupdialog.cpp @@ -62,6 +62,9 @@ QT_BEGIN_NAMESPACE page margins set on a QPrinter won't show in the native Mac OS X page setup dialog. + In Symbian, there is no support for printing. Hence, this dialog should not + be used in Symbian. + \sa QPrinter, QPrintDialog */ diff --git a/src/gui/dialogs/qpagesetupdialog_mac.mm b/src/gui/dialogs/qpagesetupdialog_mac.mm index 0302be4..f7a9aab 100644 --- a/src/gui/dialogs/qpagesetupdialog_mac.mm +++ b/src/gui/dialogs/qpagesetupdialog_mac.mm @@ -61,7 +61,7 @@ QT_USE_NAMESPACE @end @implementation QT_MANGLE_NAMESPACE(QCocoaPageLayoutDelegate) -- (id)initWithMacPrintEngine:(QMacPrintEnginePrivate *)printEngine; +- (id)initWithMacPrintEngine:(QMacPrintEnginePrivate *)printEngine { self = [super init]; if (self) { @@ -312,4 +312,4 @@ int QPageSetupDialog::exec() QT_END_NAMESPACE -#endif QT_NO_PRINTDIALOG +#endif /* QT_NO_PRINTDIALOG */ diff --git a/src/gui/dialogs/qprintpreviewdialog.cpp b/src/gui/dialogs/qprintpreviewdialog.cpp index f21343e..d74742a 100644 --- a/src/gui/dialogs/qprintpreviewdialog.cpp +++ b/src/gui/dialogs/qprintpreviewdialog.cpp @@ -676,6 +676,8 @@ void QPrintPreviewDialogPrivate::_q_zoomFactorChanged() Call QPrintPreviewDialog::exec() to show the preview dialog. \endlist + In Symbian, there is no support for printing. Hence, this dialog should not + be used in Symbian. \sa QPrinter, QPrintDialog, QPageSetupDialog, QPrintPreviewWidget */ diff --git a/src/gui/graphicsview/qgraphicsgridlayout.cpp b/src/gui/graphicsview/qgraphicsgridlayout.cpp index 4104834..477aea3 100644 --- a/src/gui/graphicsview/qgraphicsgridlayout.cpp +++ b/src/gui/graphicsview/qgraphicsgridlayout.cpp @@ -64,6 +64,17 @@ removeAt() will remove an item from the layout, without destroying it. + \section1 Size Hints and Size Policies in QGraphicsGridLayout + + QGraphicsGridLayout respects each item's size hints and size policies, + and when a cell in the grid has more space than the items can fill, each item + is arranged according to the layout's alignment for that item. You can set + an alignment for each item by calling setAlignment(), and check the + alignment for any item by calling alignment(). You can also set the alignment + for an entire row or column by calling setRowAlignment() and setColumnAlignment() + respectively. By default, items are aligned to the top left. + + \sa QGraphicsLinearLayout, QGraphicsWidget */ diff --git a/src/gui/graphicsview/qgraphicslayoutitem.cpp b/src/gui/graphicsview/qgraphicslayoutitem.cpp index fab1bbb..b650391 100644 --- a/src/gui/graphicsview/qgraphicslayoutitem.cpp +++ b/src/gui/graphicsview/qgraphicslayoutitem.cpp @@ -137,19 +137,28 @@ void QGraphicsLayoutItemPrivate::init() QSizeF *QGraphicsLayoutItemPrivate::effectiveSizeHints(const QSizeF &constraint) const { Q_Q(const QGraphicsLayoutItem); - if (!sizeHintCacheDirty && cachedConstraint == constraint) - return cachedSizeHints; + QSizeF *sizeHintCache; + const bool hasConstraint = constraint.width() >= 0 || constraint.height() >= 0; + if (hasConstraint) { + if (!sizeHintWithConstraintCacheDirty && constraint == cachedConstraint) + return cachedSizeHintsWithConstraints; + sizeHintCache = cachedSizeHintsWithConstraints; + } else { + if (!sizeHintCacheDirty) + return cachedSizeHints; + sizeHintCache = cachedSizeHints; + } for (int i = 0; i < Qt::NSizeHints; ++i) { - cachedSizeHints[i] = constraint; + sizeHintCache[i] = constraint; if (userSizeHints) - combineSize(cachedSizeHints[i], userSizeHints[i]); + combineSize(sizeHintCache[i], userSizeHints[i]); } - QSizeF &minS = cachedSizeHints[Qt::MinimumSize]; - QSizeF &prefS = cachedSizeHints[Qt::PreferredSize]; - QSizeF &maxS = cachedSizeHints[Qt::MaximumSize]; - QSizeF &descentS = cachedSizeHints[Qt::MinimumDescent]; + QSizeF &minS = sizeHintCache[Qt::MinimumSize]; + QSizeF &prefS = sizeHintCache[Qt::PreferredSize]; + QSizeF &maxS = sizeHintCache[Qt::MaximumSize]; + QSizeF &descentS = sizeHintCache[Qt::MinimumDescent]; normalizeHints(minS.rwidth(), prefS.rwidth(), maxS.rwidth(), descentS.rwidth()); normalizeHints(minS.rheight(), prefS.rheight(), maxS.rheight(), descentS.rheight()); @@ -175,9 +184,13 @@ QSizeF *QGraphicsLayoutItemPrivate::effectiveSizeHints(const QSizeF &constraint) // Not supported yet // COMBINE_SIZE(descentS, q->sizeHint(Qt::MinimumDescent, constraint)); - cachedConstraint = constraint; - sizeHintCacheDirty = false; - return cachedSizeHints; + if (hasConstraint) { + cachedConstraint = constraint; + sizeHintWithConstraintCacheDirty = false; + } else { + sizeHintCacheDirty = false; + } + return sizeHintCache; } diff --git a/src/gui/graphicsview/qgraphicslayoutitem_p.h b/src/gui/graphicsview/qgraphicslayoutitem_p.h index b752e03..d72ee9f 100644 --- a/src/gui/graphicsview/qgraphicslayoutitem_p.h +++ b/src/gui/graphicsview/qgraphicslayoutitem_p.h @@ -85,8 +85,10 @@ public: QSizeF *userSizeHints; mutable QSizeF cachedSizeHints[Qt::NSizeHints]; mutable QSizeF cachedConstraint; + mutable QSizeF cachedSizeHintsWithConstraints[Qt::NSizeHints]; mutable quint32 sizeHintCacheDirty : 1; + mutable quint32 sizeHintWithConstraintCacheDirty : 1; quint32 isLayout : 1; quint32 ownedByLayout : 1; diff --git a/src/gui/graphicsview/qgraphicslinearlayout.cpp b/src/gui/graphicsview/qgraphicslinearlayout.cpp index 7e8d19f..244a728 100644 --- a/src/gui/graphicsview/qgraphicslinearlayout.cpp +++ b/src/gui/graphicsview/qgraphicslinearlayout.cpp @@ -75,7 +75,7 @@ is arranged according to the layout's alignment for that item. You can set an alignment for each item by calling setAlignment(), and check the alignment for any item by calling alignment(). By default, items are - centered both vertically and horizontally. + aligned to the top left. \section1 Spacing within QGraphicsLinearLayout @@ -446,7 +446,7 @@ void QGraphicsLinearLayout::setAlignment(QGraphicsLayoutItem *item, Qt::Alignmen /*! Returns the alignment for \a item. The default alignment is - Qt::AlignCenter. + Qt::AlignTop | Qt::AlignLeft. The alignment decides how the item is positioned within its assigned space in the case where there's more space available in the layout than the diff --git a/src/gui/graphicsview/qgraphicstransform.cpp b/src/gui/graphicsview/qgraphicstransform.cpp index 1f155c6..d495da2 100644 --- a/src/gui/graphicsview/qgraphicstransform.cpp +++ b/src/gui/graphicsview/qgraphicstransform.cpp @@ -54,7 +54,7 @@ instances to one QGraphicsItem. Each QGraphicsTransform is applied in order, one at a time, to the QGraphicsItem it's assigned to. - QGraphicsTransform is particularily useful for animations. Whereas + QGraphicsTransform is particularly useful for animations. Whereas QGraphicsItem::setTransform() lets you assign any transform directly to an item, there is no direct way to interpolate between two different transformations (e.g., when transitioning between two states, each for diff --git a/src/gui/graphicsview/qgridlayoutengine.cpp b/src/gui/graphicsview/qgridlayoutengine.cpp index 7f8d574..75f1cf5 100644 --- a/src/gui/graphicsview/qgridlayoutengine.cpp +++ b/src/gui/graphicsview/qgridlayoutengine.cpp @@ -166,7 +166,7 @@ void QGridLayoutRowData::reset(int count) hasIgnoreFlag = false; } -void QGridLayoutRowData::distributeMultiCells() +void QGridLayoutRowData::distributeMultiCells(const QGridLayoutRowInfo &rowInfo) { MultiCellMap::const_iterator i = multiCellMap.constBegin(); for (; i != multiCellMap.constEnd(); ++i) { @@ -185,7 +185,7 @@ void QGridLayoutRowData::distributeMultiCells() qreal extra = compare(box, totalBox, j); if (extra > 0.0) { calculateGeometries(start, end, box.q_sizes(j), dummy.data(), newSizes.data(), - 0, totalBox); + 0, totalBox, rowInfo); for (int k = 0; k < span; ++k) extras[k].q_sizes(j) = newSizes[k]; @@ -202,11 +202,12 @@ void QGridLayoutRowData::distributeMultiCells() void QGridLayoutRowData::calculateGeometries(int start, int end, qreal targetSize, qreal *positions, qreal *sizes, qreal *descents, - const QGridLayoutBox &totalBox) + const QGridLayoutBox &totalBox, + const QGridLayoutRowInfo &rowInfo) { Q_ASSERT(end > start); - targetSize = qBound(totalBox.q_minimumSize, targetSize, totalBox.q_maximumSize); + targetSize = qMax(totalBox.q_minimumSize, targetSize); int n = end - start; QVarLengthArray<qreal> newSizes(n); @@ -246,16 +247,22 @@ void QGridLayoutRowData::calculateGeometries(int start, int end, qreal targetSiz } } } else { - stealBox(start, end, PreferredSize, positions, sizes); + bool isLargerThanMaximum = (targetSize > totalBox.q_maximumSize); + if (isLargerThanMaximum) { + stealBox(start, end, MaximumSize, positions, sizes); + sumAvailable = targetSize - totalBox.q_maximumSize; + } else { + stealBox(start, end, PreferredSize, positions, sizes); + sumAvailable = targetSize - totalBox.q_preferredSize; + } - sumAvailable = targetSize - totalBox.q_preferredSize; if (sumAvailable > 0.0) { qreal sumCurrentAvailable = sumAvailable; bool somethingHasAMaximumSize = false; - qreal sumPreferredSizes = 0.0; + qreal sumSizes = 0.0; for (int i = 0; i < n; ++i) - sumPreferredSizes += sizes[i]; + sumSizes += sizes[i]; for (int i = 0; i < n; ++i) { if (ignore.testBit(start + i)) { @@ -265,7 +272,16 @@ void QGridLayoutRowData::calculateGeometries(int start, int end, qreal targetSiz } const QGridLayoutBox &box = boxes.at(start + i); - qreal desired = box.q_maximumSize - box.q_preferredSize; + qreal boxSize; + + qreal desired; + if (isLargerThanMaximum) { + boxSize = box.q_maximumSize; + desired = rowInfo.boxes.value(start + i).q_maximumSize - boxSize; + } else { + boxSize = box.q_preferredSize; + desired = box.q_maximumSize - boxSize; + } if (desired == 0.0) { newSizes[i] = sizes[i]; factors[i] = 0.0; @@ -284,17 +300,17 @@ void QGridLayoutRowData::calculateGeometries(int start, int end, qreal targetSiz } else if (stretch <= 0) { factors[i] = 0.0; } else { - qreal ultimatePreferredSize; - qreal ultimateSumPreferredSizes; - qreal x = ((stretch * sumPreferredSizes) - - (sumStretches * box.q_preferredSize)) + qreal ultimateSize; + qreal ultimateSumSizes; + qreal x = ((stretch * sumSizes) + - (sumStretches * boxSize)) / (sumStretches - stretch); if (x >= 0.0) { - ultimatePreferredSize = box.q_preferredSize + x; - ultimateSumPreferredSizes = sumPreferredSizes + x; + ultimateSize = boxSize + x; + ultimateSumSizes = sumSizes + x; } else { - ultimatePreferredSize = box.q_preferredSize; - ultimateSumPreferredSizes = (sumStretches * box.q_preferredSize) + ultimateSize = boxSize; + ultimateSumSizes = (sumStretches * boxSize) / stretch; } @@ -303,17 +319,17 @@ void QGridLayoutRowData::calculateGeometries(int start, int end, qreal targetSiz (at the expense of the stretch factors, which are not fully respected during the transition). */ - ultimatePreferredSize = ultimatePreferredSize * 3 / 2; - ultimateSumPreferredSizes = ultimateSumPreferredSizes * 3 / 2; + ultimateSize = ultimateSize * 3 / 2; + ultimateSumSizes = ultimateSumSizes * 3 / 2; - qreal beta = ultimateSumPreferredSizes - sumPreferredSizes; + qreal beta = ultimateSumSizes - sumSizes; if (!beta) { factors[i] = 1; } else { qreal alpha = qMin(sumCurrentAvailable, beta); - qreal ultimateFactor = (stretch * ultimateSumPreferredSizes / sumStretches) - - (box.q_preferredSize); - qreal transitionalFactor = sumCurrentAvailable * (ultimatePreferredSize - box.q_preferredSize) / beta; + qreal ultimateFactor = (stretch * ultimateSumSizes / sumStretches) + - (boxSize); + qreal transitionalFactor = sumCurrentAvailable * (ultimateSize - boxSize) / beta; factors[i] = ((alpha * ultimateFactor) + ((beta - alpha) * transitionalFactor)) / beta; @@ -336,11 +352,16 @@ void QGridLayoutRowData::calculateGeometries(int start, int end, qreal targetSiz if (newSizes[i] >= 0.0) continue; - const QGridLayoutBox &box = boxes.at(start + i); + qreal maxBoxSize; + if (isLargerThanMaximum) + maxBoxSize = rowInfo.boxes.value(start + i).q_maximumSize; + else + maxBoxSize = boxes.at(start + i).q_maximumSize; + qreal avail = sumCurrentAvailable * factors[i] / sumFactors; - if (sizes[i] + avail >= box.q_maximumSize) { - newSizes[i] = box.q_maximumSize; - sumCurrentAvailable -= box.q_maximumSize - sizes[i]; + if (sizes[i] + avail >= maxBoxSize) { + newSizes[i] = maxBoxSize; + sumCurrentAvailable -= maxBoxSize - sizes[i]; sumFactors -= factors[i]; keepGoing = (sumCurrentAvailable > 0.0); if (!keepGoing) @@ -637,7 +658,7 @@ QRectF QGridLayoutItem::geometryWithin(qreal x, qreal y, qreal width, qreal heig if (dynamicConstraintOrientation() == Qt::Vertical) { if (size.width() > cellWidth) size = effectiveMaxSize(QSizeF(cellWidth, -1)); - } else if(size.height() > cellHeight) { + } else if (size.height() > cellHeight) { size = effectiveMaxSize(QSizeF(-1, cellHeight)); } } @@ -1116,63 +1137,58 @@ QSizeF QGridLayoutEngine::sizeHint(const QLayoutStyleInfo &styleInfo, Qt::SizeHi { QGridLayoutBox sizehint_totalBoxes[NOrientations]; - if(rowCount() < 1 || columnCount() < 1 || !hasDynamicConstraint()) { + bool sizeHintCalculated = false; + + if (hasDynamicConstraint() && rowCount() > 0 && columnCount() > 0) { + if (constraintOrientation() == Qt::Vertical) { + //We have items whose height depends on their width + if (constraint.width() >= 0) { + if (q_cachedDataForStyleInfo != styleInfo) + ensureColumnAndRowData(&q_columnData, &sizehint_totalBoxes[Hor], styleInfo, NULL, NULL, Qt::Horizontal); + else + sizehint_totalBoxes[Hor] = q_totalBoxes[Hor]; + QVector<qreal> sizehint_xx; + QVector<qreal> sizehint_widths; + + sizehint_xx.resize(columnCount()); + sizehint_widths.resize(columnCount()); + qreal width = constraint.width(); + //Calculate column widths and positions, and put results in q_xx.data() and q_widths.data() so that we can use this information as + //constraints to find the row heights + q_columnData.calculateGeometries(0, columnCount(), width, sizehint_xx.data(), sizehint_widths.data(), + 0, sizehint_totalBoxes[Hor], q_infos[Hor]); + ensureColumnAndRowData(&q_rowData, &sizehint_totalBoxes[Ver], styleInfo, sizehint_xx.data(), sizehint_widths.data(), Qt::Vertical); + sizeHintCalculated = true; + } + } else { + if (constraint.height() >= 0) { + //We have items whose width depends on their height + ensureColumnAndRowData(&q_rowData, &sizehint_totalBoxes[Ver], styleInfo, NULL, NULL, Qt::Vertical); + QVector<qreal> sizehint_yy; + QVector<qreal> sizehint_heights; + + sizehint_yy.resize(rowCount()); + sizehint_heights.resize(rowCount()); + qreal height = constraint.height(); + //Calculate row heights and positions, and put results in q_yy.data() and q_heights.data() so that we can use this information as + //constraints to find the column widths + q_rowData.calculateGeometries(0, rowCount(), height, sizehint_yy.data(), sizehint_heights.data(), + 0, sizehint_totalBoxes[Ver], q_infos[Ver]); + ensureColumnAndRowData(&q_columnData, &sizehint_totalBoxes[Hor], styleInfo, sizehint_yy.data(), sizehint_heights.data(), Qt::Vertical); + sizeHintCalculated = true; + } + } + } + + if (!sizeHintCalculated) { //No items with height for width, so it doesn't matter which order we do these in - if(q_cachedDataForStyleInfo != styleInfo) { + if (q_cachedDataForStyleInfo != styleInfo) { ensureColumnAndRowData(&q_columnData, &sizehint_totalBoxes[Hor], styleInfo, NULL, NULL, Qt::Horizontal); ensureColumnAndRowData(&q_rowData, &sizehint_totalBoxes[Ver], styleInfo, NULL, NULL, Qt::Vertical); } else { sizehint_totalBoxes[Hor] = q_totalBoxes[Hor]; sizehint_totalBoxes[Ver] = q_totalBoxes[Ver]; } - } else if(constraintOrientation() == Qt::Vertical) { - //We have items whose width depends on their height - if(q_cachedDataForStyleInfo != styleInfo) - ensureColumnAndRowData(&q_columnData, &sizehint_totalBoxes[Hor], styleInfo, NULL, NULL, Qt::Horizontal); - else - sizehint_totalBoxes[Hor] = q_totalBoxes[Hor]; - QVector<qreal> sizehint_xx; - QVector<qreal> sizehint_widths; - - sizehint_xx.resize(columnCount()); - sizehint_widths.resize(columnCount()); - qreal width = constraint.width(); - if(width < 0) { - /* It's not obvious what the behaviour should be. */ -/* if(which == Qt::MaximumSize) - width = sizehint_totalBoxes[Hor].q_maximumSize; - else if(which == Qt::MinimumSize) - width = sizehint_totalBoxes[Hor].q_minimumSize; - else*/ - width = sizehint_totalBoxes[Hor].q_preferredSize; - } - //Calculate column widths and positions, and put results in q_xx.data() and q_widths.data() so that we can use this information as - //constraints to find the row heights - q_columnData.calculateGeometries(0, columnCount(), width, sizehint_xx.data(), sizehint_widths.data(), - 0, sizehint_totalBoxes[Hor]); - ensureColumnAndRowData(&q_rowData, &sizehint_totalBoxes[Ver], styleInfo, sizehint_xx.data(), sizehint_widths.data(), Qt::Vertical); - } else { - //We have items whose height depends on their width - ensureColumnAndRowData(&q_rowData, &sizehint_totalBoxes[Ver], styleInfo, NULL, NULL, Qt::Vertical); - QVector<qreal> sizehint_yy; - QVector<qreal> sizehint_heights; - - sizehint_yy.resize(rowCount()); - sizehint_heights.resize(rowCount()); - qreal height = constraint.height(); - if(height < 0) { -/* if(which == Qt::MaximumSize) - height = sizehint_totalBoxes[Ver].q_maximumSize; - else if(which == Qt::MinimumSize) - height = sizehint_totalBoxes[Ver].q_minimumSize; - else*/ - height = sizehint_totalBoxes[Ver].q_preferredSize; - } - //Calculate row heights and positions, and put results in q_yy.data() and q_heights.data() so that we can use this information as - //constraints to find the column widths - q_rowData.calculateGeometries(0, rowCount(), height, sizehint_yy.data(), sizehint_heights.data(), - 0, sizehint_totalBoxes[Ver]); - ensureColumnAndRowData(&q_columnData, &sizehint_totalBoxes[Hor], styleInfo, sizehint_yy.data(), sizehint_heights.data(), Qt::Vertical); } switch (which) { @@ -1631,7 +1647,8 @@ void QGridLayoutEngine::ensureColumnAndRowData(QGridLayoutRowData *rowData, QGri { rowData->reset(rowCount(orientation)); fillRowData(rowData, styleInfo, colPositions, colSizes, orientation); - rowData->distributeMultiCells(); + const QGridLayoutRowInfo &rowInfo = q_infos[orientation == Qt::Vertical]; + rowData->distributeMultiCells(rowInfo); *totalBox = rowData->totalBox(0, rowCount(orientation)); //We have items whose width depends on their height } @@ -1694,28 +1711,28 @@ void QGridLayoutEngine::ensureGeometries(const QLayoutStyleInfo &styleInfo, q_heights.resize(rowCount()); q_descents.resize(rowCount()); - if(constraintOrientation() != Qt::Horizontal) { + if (constraintOrientation() != Qt::Horizontal) { //We might have items whose width depends on their height ensureColumnAndRowData(&q_columnData, &q_totalBoxes[Hor], styleInfo, NULL, NULL, Qt::Horizontal); //Calculate column widths and positions, and put results in q_xx.data() and q_widths.data() so that we can use this information as //constraints to find the row heights q_columnData.calculateGeometries(0, columnCount(), size.width(), q_xx.data(), q_widths.data(), - 0, q_totalBoxes[Hor]); + 0, q_totalBoxes[Hor], q_infos[Hor] ); ensureColumnAndRowData(&q_rowData, &q_totalBoxes[Ver], styleInfo, q_xx.data(), q_widths.data(), Qt::Vertical); //Calculate row heights and positions, and put results in q_yy.data() and q_heights.data() q_rowData.calculateGeometries(0, rowCount(), size.height(), q_yy.data(), q_heights.data(), - q_descents.data(), q_totalBoxes[Ver]); + q_descents.data(), q_totalBoxes[Ver], q_infos[Ver]); } else { //We have items whose height depends on their width ensureColumnAndRowData(&q_rowData, &q_totalBoxes[Ver], styleInfo, NULL, NULL, Qt::Vertical); //Calculate row heights and positions, and put results in q_yy.data() and q_heights.data() so that we can use this information as //constraints to find the column widths q_rowData.calculateGeometries(0, rowCount(), size.height(), q_yy.data(), q_heights.data(), - q_descents.data(), q_totalBoxes[Ver]); + q_descents.data(), q_totalBoxes[Ver], q_infos[Ver]); ensureColumnAndRowData(&q_columnData, &q_totalBoxes[Hor], styleInfo, q_yy.data(), q_heights.data(), Qt::Horizontal); //Calculate row heights and positions, and put results in q_yy.data() and q_heights.data() q_columnData.calculateGeometries(0, columnCount(), size.width(), q_xx.data(), q_widths.data(), - 0, q_totalBoxes[Hor]); + 0, q_totalBoxes[Hor], q_infos[Hor]); } } diff --git a/src/gui/graphicsview/qgridlayoutengine_p.h b/src/gui/graphicsview/qgridlayoutengine_p.h index 7c77b2a..1016bc8 100644 --- a/src/gui/graphicsview/qgridlayoutengine_p.h +++ b/src/gui/graphicsview/qgridlayoutengine_p.h @@ -224,13 +224,16 @@ public: typedef QMap<QPair<int, int>, QGridLayoutMultiCellData> MultiCellMap; +class QGridLayoutRowInfo; + class QGridLayoutRowData { public: void reset(int count); - void distributeMultiCells(); + void distributeMultiCells(const QGridLayoutRowInfo &rowInfo); void calculateGeometries(int start, int end, qreal targetSize, qreal *positions, qreal *sizes, - qreal *descents, const QGridLayoutBox &totalBox); + qreal *descents, const QGridLayoutBox &totalBox, + const QGridLayoutRowInfo &rowInfo); QGridLayoutBox totalBox(int start, int end) const; void stealBox(int start, int end, int which, qreal *positions, qreal *sizes); diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp index d86021cb9..747dd2f 100644 --- a/src/gui/image/qimage.cpp +++ b/src/gui/image/qimage.cpp @@ -139,42 +139,6 @@ QImageData::QImageData() { } -static int depthForFormat(QImage::Format format) -{ - int depth = 0; - switch(format) { - case QImage::Format_Invalid: - case QImage::NImageFormats: - Q_ASSERT(false); - case QImage::Format_Mono: - case QImage::Format_MonoLSB: - depth = 1; - break; - case QImage::Format_Indexed8: - depth = 8; - break; - case QImage::Format_RGB32: - case QImage::Format_ARGB32: - case QImage::Format_ARGB32_Premultiplied: - depth = 32; - break; - case QImage::Format_RGB555: - case QImage::Format_RGB16: - case QImage::Format_RGB444: - case QImage::Format_ARGB4444_Premultiplied: - depth = 16; - break; - case QImage::Format_RGB666: - case QImage::Format_ARGB6666_Premultiplied: - case QImage::Format_ARGB8565_Premultiplied: - case QImage::Format_ARGB8555_Premultiplied: - case QImage::Format_RGB888: - depth = 24; - break; - } - return depth; -} - /*! \fn QImageData * QImageData::create(const QSize &size, QImage::Format format, int numColors) \internal @@ -195,7 +159,7 @@ QImageData * QImageData::create(const QSize &size, QImage::Format format, int nu uint width = size.width(); uint height = size.height(); - uint depth = depthForFormat(format); + uint depth = qt_depthForFormat(format); switch (format) { case QImage::Format_Mono: @@ -871,7 +835,7 @@ QImageData *QImageData::create(uchar *data, int width, int height, int bpl, QIm return 0; } - const int depth = depthForFormat(format); + const int depth = qt_depthForFormat(format); const int calc_bytes_per_line = ((width * depth + 31)/32) * 4; const int min_bytes_per_line = (width * depth + 7)/8; @@ -6321,7 +6285,7 @@ int QImage::bitPlaneCount() const bpc = 12; break; default: - bpc = depthForFormat(d->format); + bpc = qt_depthForFormat(d->format); break; } return bpc; diff --git a/src/gui/image/qimage_p.h b/src/gui/image/qimage_p.h index c687448..e054814 100644 --- a/src/gui/image/qimage_p.h +++ b/src/gui/image/qimage_p.h @@ -112,6 +112,42 @@ struct Q_GUI_EXPORT QImageData { // internal image data void qInitImageConversions(); +inline int qt_depthForFormat(QImage::Format format) +{ + int depth = 0; + switch(format) { + case QImage::Format_Invalid: + case QImage::NImageFormats: + Q_ASSERT(false); + case QImage::Format_Mono: + case QImage::Format_MonoLSB: + depth = 1; + break; + case QImage::Format_Indexed8: + depth = 8; + break; + case QImage::Format_RGB32: + case QImage::Format_ARGB32: + case QImage::Format_ARGB32_Premultiplied: + depth = 32; + break; + case QImage::Format_RGB555: + case QImage::Format_RGB16: + case QImage::Format_RGB444: + case QImage::Format_ARGB4444_Premultiplied: + depth = 16; + break; + case QImage::Format_RGB666: + case QImage::Format_ARGB6666_Premultiplied: + case QImage::Format_ARGB8565_Premultiplied: + case QImage::Format_ARGB8555_Premultiplied: + case QImage::Format_RGB888: + depth = 24; + break; + } + return depth; +} + QT_END_NAMESPACE #endif diff --git a/src/gui/image/qnativeimage.cpp b/src/gui/image/qnativeimage.cpp index 0f7872e..c154740 100644 --- a/src/gui/image/qnativeimage.cpp +++ b/src/gui/image/qnativeimage.cpp @@ -256,6 +256,8 @@ QNativeImage::QNativeImage(int width, int height, QImage::Format format, bool /* case QImage::Format_ARGB4444_Premultiplied: cgflags = kCGImageAlphaPremultipliedFirst; break; + default: + break; } #ifdef kCGBitmapByteOrder32Host //only needed because CGImage.h added symbols in the minor version diff --git a/src/gui/image/qpixmap_raster.cpp b/src/gui/image/qpixmap_raster.cpp index 53f3559..65c0344 100644 --- a/src/gui/image/qpixmap_raster.cpp +++ b/src/gui/image/qpixmap_raster.cpp @@ -206,7 +206,13 @@ void QRasterPixmapData::fill(const QColor &color) else #endif toFormat = QImage::Format_ARGB32_Premultiplied; - image = QImage(image.width(), image.height(), toFormat); + + if (!image.isNull() && qt_depthForFormat(image.format()) == qt_depthForFormat(toFormat)) { + image.detach(); + image.d->format = toFormat; + } else { + image = QImage(image.width(), image.height(), toFormat); + } } switch (image.format()) { diff --git a/src/gui/kernel/qapplication_win.cpp b/src/gui/kernel/qapplication_win.cpp index 1dab738..49f780c 100644 --- a/src/gui/kernel/qapplication_win.cpp +++ b/src/gui/kernel/qapplication_win.cpp @@ -1053,7 +1053,12 @@ const QString qt_reg_winclass(QWidget *w) // register window class if (winclassNames()->contains(cname)) // already registered in our list return cname; +#ifndef Q_WS_WINCE + WNDCLASSEX wc; + wc.cbSize = sizeof(WNDCLASSEX); +#else WNDCLASS wc; +#endif wc.style = style; wc.lpfnWndProc = (WNDPROC)QtWndProc; wc.cbClsExtra = 0; @@ -1062,11 +1067,20 @@ const QString qt_reg_winclass(QWidget *w) // register window class if (icon) { wc.hIcon = (HICON)LoadImage(qWinAppInst(), L"IDI_ICON1", IMAGE_ICON, 0, 0, LR_DEFAULTSIZE); #ifndef Q_WS_WINCE - if (!wc.hIcon) + if (wc.hIcon) { + int sw = GetSystemMetrics(SM_CXSMICON); + int sh = GetSystemMetrics(SM_CYSMICON); + wc.hIconSm = (HICON)LoadImage(qWinAppInst(), L"IDI_ICON1", IMAGE_ICON, sw, sh, 0); + } else { wc.hIcon = (HICON)LoadImage(0, IDI_APPLICATION, IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_SHARED); + wc.hIconSm = 0; + } #endif } else { wc.hIcon = 0; +#ifndef Q_WS_WINCE + wc.hIconSm = 0; +#endif } wc.hCursor = 0; #ifndef Q_WS_WINCE @@ -1080,7 +1094,11 @@ const QString qt_reg_winclass(QWidget *w) // register window class wc.lpszMenuName = 0; wc.lpszClassName = (wchar_t*)cname.utf16(); +#ifndef Q_WS_WINCE + ATOM atom = RegisterClassEx(&wc); +#else ATOM atom = RegisterClass(&wc); +#endif #ifndef QT_NO_DEBUG if (!atom) @@ -3289,7 +3307,7 @@ bool QETWidget::translateMouseEvent(const MSG &msg) if (type == QEvent::MouseButtonPress && QApplication::activePopupWidget() != activePopupWidget && replayPopupMouseEvent) { - // the popup dissappeared. Replay the event + // the popup disappeared. Replay the event QWidget* w = QApplication::widgetAt(gpos.x, gpos.y); if (w && !QApplicationPrivate::isBlockedByModal(w)) { Q_ASSERT(w->testAttribute(Qt::WA_WState_Created)); @@ -3526,7 +3544,7 @@ static void tabletInit(const quint64 uniqueId, const UINT csr_type, HCTX hTab) } #endif // QT_NO_TABLETEVENT -// Update the "dynamic" informations of a cursor device (pen, airbrush, etc). +// Update the "dynamic" information of a cursor device (pen, airbrush, etc). // The dynamic information is the information of QTabletDeviceData that can change // in time (eraser or pen if a device is turned around). #ifndef QT_NO_TABLETEVENT diff --git a/src/gui/kernel/qclipboard_mac.cpp b/src/gui/kernel/qclipboard_mac.cpp index 49a6cc8..482a3a3 100644 --- a/src/gui/kernel/qclipboard_mac.cpp +++ b/src/gui/kernel/qclipboard_mac.cpp @@ -623,7 +623,7 @@ QMacPasteboard::sync() const #ifdef DEBUG_PASTEBOARD if(fromGlobal) - qDebug("Pasteboard: Syncronize!"); + qDebug("Pasteboard: Synchronize!"); #endif return fromGlobal; } diff --git a/src/gui/kernel/qcocoaapplicationdelegate_mac.mm b/src/gui/kernel/qcocoaapplicationdelegate_mac.mm index 9b07d64..036cb3b 100644 --- a/src/gui/kernel/qcocoaapplicationdelegate_mac.mm +++ b/src/gui/kernel/qcocoaapplicationdelegate_mac.mm @@ -78,6 +78,7 @@ #import <private/qcocoaapplicationdelegate_mac_p.h> #import <private/qcocoamenuloader_mac_p.h> +#import <private/qcocoaapplication_mac_p.h> #include <private/qapplication_p.h> #include <private/qt_mac_p.h> #include <private/qt_cocoa_helpers_mac_p.h> @@ -173,7 +174,7 @@ static void cleanupCocoaApplicationDelegate() qtMenuLoader = menuLoader; } -- (QT_MANGLE_NAMESPACE(QCocoaMenuLoader) *)menuLoader; +- (QT_MANGLE_NAMESPACE(QCocoaMenuLoader) *)menuLoader { return [[qtMenuLoader retain] autorelease]; } @@ -256,7 +257,7 @@ static void cleanupCocoaApplicationDelegate() onApplicationChangedActivation(true); } -- (void)applicationDidResignActive:(NSNotification *)notification; +- (void)applicationDidResignActive:(NSNotification *)notification { if (reflectionDelegate && [reflectionDelegate respondsToSelector:@selector(applicationDidResignActive:)]) diff --git a/src/gui/kernel/qcocoamenuloader_mac.mm b/src/gui/kernel/qcocoamenuloader_mac.mm index b963b3c..d351831 100644 --- a/src/gui/kernel/qcocoamenuloader_mac.mm +++ b/src/gui/kernel/qcocoamenuloader_mac.mm @@ -170,12 +170,12 @@ QT_USE_NAMESPACE return [[aboutQtItem retain] autorelease]; } -- (NSMenuItem *)hideMenuItem; +- (NSMenuItem *)hideMenuItem { return [[hideItem retain] autorelease]; } -- (NSMenuItem *)appSpecificMenuItem; +- (NSMenuItem *)appSpecificMenuItem { // Create an App-Specific menu item, insert it into the menu and return // it as an autorelease item. diff --git a/src/gui/kernel/qcocoaview_mac.mm b/src/gui/kernel/qcocoaview_mac.mm index dfcc2e6..e02cf11 100644 --- a/src/gui/kernel/qcocoaview_mac.mm +++ b/src/gui/kernel/qcocoaview_mac.mm @@ -302,7 +302,6 @@ static int qCocoaViewCount = 0; QMimeData *mimeData = dropData; if (QDragManager::self()->source()) mimeData = QDragManager::self()->dragPrivate()->data; - NSPoint globalPoint = [[sender draggingDestinationWindow] convertBaseToScreen:windowPoint]; NSPoint localPoint = [self convertPoint:windowPoint fromView:nil]; QPoint posDrag(localPoint.x, localPoint.y); NSDragOperation nsActions = [sender draggingSourceOperationMask]; @@ -365,7 +364,6 @@ static int qCocoaViewCount = 0; return NSDragOperationNone; } // return last value, if we are still in the answerRect. - NSPoint globalPoint = [[sender draggingDestinationWindow] convertBaseToScreen:windowPoint]; NSPoint localPoint = [self convertPoint:windowPoint fromView:nil]; NSDragOperation nsActions = [sender draggingSourceOperationMask]; QPoint posDrag(localPoint.x, localPoint.y); @@ -434,7 +432,6 @@ static int qCocoaViewCount = 0; dragEnterSequence = -1; [self addDropData:sender]; - NSPoint globalPoint = [[sender draggingDestinationWindow] convertBaseToScreen:windowPoint]; NSPoint localPoint = [self convertPoint:windowPoint fromView:nil]; QPoint posDrop(localPoint.x, localPoint.y); @@ -470,14 +467,14 @@ static int qCocoaViewCount = 0; [super dealloc]; } -- (BOOL)isOpaque; +- (BOOL)isOpaque { if (!qwidgetprivate) return [super isOpaque]; return qwidgetprivate->isOpaque; } -- (BOOL)isFlipped; +- (BOOL)isFlipped { return YES; } @@ -557,6 +554,7 @@ static int qCocoaViewCount = 0; } CGContextRef cg = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort]; + CGContextRetain(cg); qwidgetprivate->hd = cg; // We steal the CGContext for flushing in the unified toolbar with the raster engine. @@ -620,8 +618,8 @@ static int qCocoaViewCount = 0; // is the case. This makes sure child widgets are drawn as well, Cocoa does not know about // those and wont send them drawRect calls. if (qwidget->testAttribute(Qt::WA_NativeWindow) && qt_widget_private(qwidget)->hasAlienChildren == false) { - if (engine && !qwidget->testAttribute(Qt::WA_NoSystemBackground) - && (qwidget->isWindow() || qwidget->autoFillBackground()) + if ((engine && !qwidget->testAttribute(Qt::WA_NoSystemBackground) + && (qwidget->isWindow() || qwidget->autoFillBackground())) || qwidget->testAttribute(Qt::WA_TintedBackground) || qwidget->testAttribute(Qt::WA_StyledBackground)) { #ifdef DEBUG_WIDGET_PAINT @@ -656,6 +654,7 @@ static int qCocoaViewCount = 0; } qwidgetprivate->hd = 0; CGContextRestoreGState(cg); + CGContextRelease(cg); } - (BOOL)acceptsFirstMouse:(NSEvent *)theEvent @@ -978,32 +977,32 @@ static int qCocoaViewCount = 0; } #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 -- (void)touchesBeganWithEvent:(NSEvent *)event; +- (void)touchesBeganWithEvent:(NSEvent *)event { bool all = qwidget->testAttribute(Qt::WA_TouchPadAcceptSingleTouchEvents); qt_translateRawTouchEvent(qwidget, QTouchEvent::TouchPad, QCocoaTouch::getCurrentTouchPointList(event, all)); } -- (void)touchesMovedWithEvent:(NSEvent *)event; +- (void)touchesMovedWithEvent:(NSEvent *)event { bool all = qwidget->testAttribute(Qt::WA_TouchPadAcceptSingleTouchEvents); qt_translateRawTouchEvent(qwidget, QTouchEvent::TouchPad, QCocoaTouch::getCurrentTouchPointList(event, all)); } -- (void)touchesEndedWithEvent:(NSEvent *)event; +- (void)touchesEndedWithEvent:(NSEvent *)event { bool all = qwidget->testAttribute(Qt::WA_TouchPadAcceptSingleTouchEvents); qt_translateRawTouchEvent(qwidget, QTouchEvent::TouchPad, QCocoaTouch::getCurrentTouchPointList(event, all)); } -- (void)touchesCancelledWithEvent:(NSEvent *)event; +- (void)touchesCancelledWithEvent:(NSEvent *)event { bool all = qwidget->testAttribute(Qt::WA_TouchPadAcceptSingleTouchEvents); qt_translateRawTouchEvent(qwidget, QTouchEvent::TouchPad, QCocoaTouch::getCurrentTouchPointList(event, all)); } #endif // MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6 -- (void)magnifyWithEvent:(NSEvent *)event; +- (void)magnifyWithEvent:(NSEvent *)event { if (!QApplicationPrivate::tryModalHelper(qwidget, 0)) return; @@ -1018,7 +1017,7 @@ static int qCocoaViewCount = 0; #endif // QT_NO_GESTURES } -- (void)rotateWithEvent:(NSEvent *)event; +- (void)rotateWithEvent:(NSEvent *)event { if (!QApplicationPrivate::tryModalHelper(qwidget, 0)) return; @@ -1033,7 +1032,7 @@ static int qCocoaViewCount = 0; #endif // QT_NO_GESTURES } -- (void)swipeWithEvent:(NSEvent *)event; +- (void)swipeWithEvent:(NSEvent *)event { if (!QApplicationPrivate::tryModalHelper(qwidget, 0)) return; @@ -1055,7 +1054,7 @@ static int qCocoaViewCount = 0; #endif // QT_NO_GESTURES } -- (void)beginGestureWithEvent:(NSEvent *)event; +- (void)beginGestureWithEvent:(NSEvent *)event { if (!QApplicationPrivate::tryModalHelper(qwidget, 0)) return; @@ -1069,7 +1068,7 @@ static int qCocoaViewCount = 0; #endif // QT_NO_GESTURES } -- (void)endGestureWithEvent:(NSEvent *)event; +- (void)endGestureWithEvent:(NSEvent *)event { if (!QApplicationPrivate::tryModalHelper(qwidget, 0)) return; @@ -1609,7 +1608,6 @@ Qt::DropAction QDragManager::drag(QDrag *o) dndParams.localPoint.y + pix.height() - hotspot.y()}; NSSize mouseOffset = {0.0, 0.0}; NSPasteboard *pboard = [NSPasteboard pasteboardWithName:NSDragPboard]; - NSPoint windowPoint = [dndParams.theEvent locationInWindow]; dragPrivate()->executed_action = Qt::ActionMask; // do the drag [dndParams.view retain]; diff --git a/src/gui/kernel/qcocoawindow_mac.mm b/src/gui/kernel/qcocoawindow_mac.mm index f1b642b..8d44003 100644 --- a/src/gui/kernel/qcocoawindow_mac.mm +++ b/src/gui/kernel/qcocoawindow_mac.mm @@ -55,7 +55,7 @@ QT_USE_NAMESPACE @implementation NSWindow (QT_MANGLE_NAMESPACE(QWidgetIntegration)) -- (id)QT_MANGLE_NAMESPACE(qt_initWithQWidget):(QWidget*)widget contentRect:(NSRect)rect styleMask:(NSUInteger)mask; +- (id)QT_MANGLE_NAMESPACE(qt_initWithQWidget):(QWidget*)widget contentRect:(NSRect)rect styleMask:(NSUInteger)mask { self = [self initWithContentRect:rect styleMask:mask backing:NSBackingStoreBuffered defer:YES]; if (self) { diff --git a/src/gui/kernel/qcocoawindowdelegate_mac.mm b/src/gui/kernel/qcocoawindowdelegate_mac.mm index ffba6c2..6ce7b35 100644 --- a/src/gui/kernel/qcocoawindowdelegate_mac.mm +++ b/src/gui/kernel/qcocoawindowdelegate_mac.mm @@ -138,7 +138,7 @@ static void cleanupCocoaWindowDelegate() } } -- (void)dumpMaximizedStateforWidget:(QWidget*)qwidget window:(NSWindow *)window; +- (void)dumpMaximizedStateforWidget:(QWidget*)qwidget window:(NSWindow *)window { if (!window) return; // Nothing to do. diff --git a/src/gui/kernel/qevent.cpp b/src/gui/kernel/qevent.cpp index d2b2098..5633cb8 100644 --- a/src/gui/kernel/qevent.cpp +++ b/src/gui/kernel/qevent.cpp @@ -1970,7 +1970,7 @@ void QInputMethodEvent::setCommitString(const QString &commitString, int replace is usually given by a wheel on 4D mouse. If the device does not support a Z-axis, pass zero here. - The \a tangentialPressure paramater contins the tangential pressure of an air + The \a tangentialPressure parameter contins the tangential pressure of an air brush. If the device does not support tangential pressure, pass 0 here. \a rotation contains the device's rotation in degrees. 4D mice support diff --git a/src/gui/kernel/qgesturemanager.cpp b/src/gui/kernel/qgesturemanager.cpp index 930ca10..136fb51 100644 --- a/src/gui/kernel/qgesturemanager.cpp +++ b/src/gui/kernel/qgesturemanager.cpp @@ -189,7 +189,7 @@ void QGestureManager::cleanupCachedGestures(QObject *target, Qt::GestureType typ QGesture *QGestureManager::getState(QObject *object, QGestureRecognizer *recognizer, Qt::GestureType type) { // if the widget is being deleted we should be careful not to - // create a new state, as it will create QWeakPointer which doesnt work + // create a new state, as it will create QWeakPointer which doesn't work // from the destructor. if (object->isWidgetType()) { if (static_cast<QWidget *>(object)->d_func()->data.in_destructor) diff --git a/src/gui/kernel/qgesturemanager_p.h b/src/gui/kernel/qgesturemanager_p.h index a5a3482..92310f5 100644 --- a/src/gui/kernel/qgesturemanager_p.h +++ b/src/gui/kernel/qgesturemanager_p.h @@ -101,7 +101,7 @@ private: NotGesture, MaybeGesture // this means timers are up and waiting for some // more events, and input events are handled by - // gesture recognizer explicitely + // gesture recognizer explicitly } state; struct ObjectGesture diff --git a/src/gui/kernel/qguiplatformplugin.cpp b/src/gui/kernel/qguiplatformplugin.cpp index 98b9c4a..5243115 100644 --- a/src/gui/kernel/qguiplatformplugin.cpp +++ b/src/gui/kernel/qguiplatformplugin.cpp @@ -187,7 +187,7 @@ QString QGuiPlatformPlugin::styleName() #endif } -/* return an aditional default palette (only work on X11) */ +/* return an additional default palette (only work on X11) */ QPalette QGuiPlatformPlugin::palette() { #ifdef Q_WS_X11 diff --git a/src/gui/kernel/qkeymapper_mac.cpp b/src/gui/kernel/qkeymapper_mac.cpp index 300e5ca..b8f08bf 100644 --- a/src/gui/kernel/qkeymapper_mac.cpp +++ b/src/gui/kernel/qkeymapper_mac.cpp @@ -765,7 +765,7 @@ bool QKeyMapperPrivate::translateKeyEvent(QWidget *widget, EventHandlerCallRef e &handled_event) == false) return handled_event; QString text(ourChar); - /* This is actually wrong - but unfortunatly it is the best that can be + /* This is actually wrong - but unfortunately it is the best that can be done for now because of the Control/Meta mapping problems */ if (modifiers & (Qt::ControlModifier | Qt::MetaModifier) && !qApp->testAttribute(Qt::AA_MacDontSwapCtrlAndMeta)) { diff --git a/src/gui/kernel/qkeysequence.cpp b/src/gui/kernel/qkeysequence.cpp index b4a360a..33c5f44 100644 --- a/src/gui/kernel/qkeysequence.cpp +++ b/src/gui/kernel/qkeysequence.cpp @@ -1104,7 +1104,7 @@ QKeySequence QKeySequence::mnemonic(const QString &text) #else found = true; } else { - qWarning("QKeySequence::mnemonic: \"%s\" contains multiple occurences of '&'", qPrintable(text)); + qWarning("QKeySequence::mnemonic: \"%s\" contains multiple occurrences of '&'", qPrintable(text)); #endif } } diff --git a/src/gui/kernel/qsound_s60.cpp b/src/gui/kernel/qsound_s60.cpp index df2830b..accfce2 100644 --- a/src/gui/kernel/qsound_s60.cpp +++ b/src/gui/kernel/qsound_s60.cpp @@ -150,7 +150,7 @@ void QAuServerS60::playCompleted(QAuBucketS60 *bucket, int error) } else { // We don't have a way to inform about errors -> just decrement loops // in order that QSound::isFinished will return true; - while (decLoop(sound)) {} + while (decLoop(sound) > 0) {} if (staticPlayingSounds.removeAll(sound)) delete sound; } diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index cd1c9f0..16f64ff 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -1690,13 +1690,8 @@ void QWidgetPrivate::setWinId(WId id) // set widget identifier } if(oldWinId != id) { - // Do not emit an event when the old winId is destroyed. This only - // happens (a) during widget destruction, and (b) immediately prior - // to creation of a new winId, for example as a result of re-parenting. - if(id != 0) { - QEvent e(QEvent::WinIdChange); - QCoreApplication::sendEvent(q, &e); - } + QEvent e(QEvent::WinIdChange); + QCoreApplication::sendEvent(q, &e); } } @@ -8866,7 +8861,7 @@ void QWidget::mousePressEvent(QMouseEvent *event) QWidget* w; while ((w = QApplication::activePopupWidget()) && w != this){ w->close(); - if (QApplication::activePopupWidget() == w) // widget does not want to dissappear + if (QApplication::activePopupWidget() == w) // widget does not want to disappear w->hide(); // hide at least } if (!rect().contains(event->pos())){ @@ -9335,7 +9330,7 @@ void QWidget::setInputMethodHints(Qt::InputMethodHints hints) #ifndef QT_NO_IM Q_D(QWidget); d->imHints = hints; - // Optimisation to update input context only it has already been created. + // Optimization to update input context only it has already been created. if (d->ic || qApp->d_func()->inputContext) { QInputContext *ic = inputContext(); if (ic) diff --git a/src/gui/kernel/qwidget_mac.mm b/src/gui/kernel/qwidget_mac.mm index fc94616..bcddae5 100644 --- a/src/gui/kernel/qwidget_mac.mm +++ b/src/gui/kernel/qwidget_mac.mm @@ -2294,7 +2294,10 @@ void QWidgetPrivate::finishCreateWindow_sys_Cocoa(void * /*NSWindow * */ voidWin } else { [windowRef setHidesOnDeactivate:NO]; } - [windowRef setHasShadow:YES]; + if (q->testAttribute(Qt::WA_MacNoShadow)) + [windowRef setHasShadow:NO]; + else + [windowRef setHasShadow:YES]; Q_UNUSED(parentWidget); Q_UNUSED(dialog); @@ -2931,7 +2934,7 @@ void QWidgetPrivate::setParent_sys(QWidget *parent, Qt::WindowFlags f) // unless this is an alien widget. ) const bool nonWindowWithCreatedParent = !q->isWindow() && parent->testAttribute(Qt::WA_WState_Created); const bool nativeWidget = q->internalWinId() != 0; - if (wasCreated || nativeWidget && nonWindowWithCreatedParent) { + if (wasCreated || (nativeWidget && nonWindowWithCreatedParent)) { createWinId(); if (q->isWindow()) { #ifndef QT_MAC_USE_COCOA diff --git a/src/gui/kernel/qwidget_p.h b/src/gui/kernel/qwidget_p.h index 4b35238..6b85391 100644 --- a/src/gui/kernel/qwidget_p.h +++ b/src/gui/kernel/qwidget_p.h @@ -229,6 +229,7 @@ struct QTLWExtra { #endif #elif defined(Q_OS_SYMBIAN) uint inExpose : 1; // Prevents drawing recursion + uint nativeWindowTransparencyEnabled : 1; // Tracks native window transparency #elif defined(Q_WS_QPA) QPlatformWindow *platformWindow; QPlatformWindowFormat platformWindowFormat; diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp index 636b306..13b48e9 100644 --- a/src/gui/kernel/qwidget_s60.cpp +++ b/src/gui/kernel/qwidget_s60.cpp @@ -57,7 +57,7 @@ #include <eikbtgpc.h> #endif -// This is necessary in order to be able to perform delayed invokation on slots +// This is necessary in order to be able to perform delayed invocation on slots // which take arguments of type WId. One example is // QWidgetPrivate::_q_delayedDestroy, which is used to delay destruction of // CCoeControl objects until after the CONE event handler has finished running. @@ -771,17 +771,24 @@ void QWidgetPrivate::s60UpdateIsOpaque() if (!q->testAttribute(Qt::WA_WState_Created) || !q->testAttribute(Qt::WA_TranslucentBackground)) return; + createTLExtra(); + RWindow *const window = static_cast<RWindow *>(q->effectiveWinId()->DrawableWindow()); #ifdef Q_SYMBIAN_SEMITRANSPARENT_BG_SURFACE window->SetSurfaceTransparency(!isOpaque); + extra->topextra->nativeWindowTransparencyEnabled = !isOpaque; #else if (!isOpaque) { const TDisplayMode displayMode = static_cast<TDisplayMode>(window->SetRequiredDisplayMode(EColor16MA)); - if (window->SetTransparencyAlphaChannel() == KErrNone) + if (window->SetTransparencyAlphaChannel() == KErrNone) { window->SetBackgroundColor(TRgb(255, 255, 255, 0)); - } else + extra->topextra->nativeWindowTransparencyEnabled = 1; + } + } else if (extra->topextra->nativeWindowTransparencyEnabled) { window->SetTransparentRegion(TRegionFix<1>()); + extra->topextra->nativeWindowTransparencyEnabled = 0; + } #endif } @@ -940,6 +947,7 @@ void QWidgetPrivate::registerDropSite(bool /* on */) void QWidgetPrivate::createTLSysExtra() { extra->topextra->inExpose = 0; + extra->topextra->nativeWindowTransparencyEnabled = 0; } void QWidgetPrivate::deleteTLSysExtra() diff --git a/src/gui/kernel/qx11embed_x11.cpp b/src/gui/kernel/qx11embed_x11.cpp index 9f1b1f8..e6e3bfb 100644 --- a/src/gui/kernel/qx11embed_x11.cpp +++ b/src/gui/kernel/qx11embed_x11.cpp @@ -1136,7 +1136,7 @@ void QX11EmbedContainer::paintEvent(QPaintEvent *) /*! \internal - Returns wether or not the windows' embedded flag is set. + Returns whether or not the windows' embedded flag is set. */ bool QX11EmbedContainerPrivate::isEmbedded() const { diff --git a/src/gui/painting/qpaintengine_mac.cpp b/src/gui/painting/qpaintengine_mac.cpp index e5323d8..601cf86 100644 --- a/src/gui/painting/qpaintengine_mac.cpp +++ b/src/gui/painting/qpaintengine_mac.cpp @@ -131,8 +131,9 @@ QMacCGContext::QMacCGContext(QPainter *p) CGContextTranslateCTM(context, native.dx(), native.dy()); } + } else { + CGContextRetain(context); } - CGContextRetain(context); } diff --git a/src/gui/painting/qtextureglyphcache.cpp b/src/gui/painting/qtextureglyphcache.cpp index 4a6c03f..de59524 100644 --- a/src/gui/painting/qtextureglyphcache.cpp +++ b/src/gui/painting/qtextureglyphcache.cpp @@ -117,7 +117,7 @@ QFixed QTextureGlyphCache::subPixelPositionForX(QFixed x) const return subPixelPosition; } -void QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const glyph_t *glyphs, +bool QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const glyph_t *glyphs, const QFixedPoint *positions) { #ifdef CACHE_DEBUG @@ -196,7 +196,7 @@ void QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const rowHeight = qMax(rowHeight, glyph_height); } if (listItemCoordinates.isEmpty()) - return; + return true; rowHeight += margin * 2 + paddingDoubled; @@ -238,6 +238,8 @@ void QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const m_cx += c.w + paddingDoubled; ++iter; } + return true; + } void QTextureGlyphCache::fillInPendingGlyphs() @@ -368,11 +370,14 @@ void QImageTextureGlyphCache::fillTexture(const Coord &c, glyph_t g, QFixed subP } #endif - if (m_type == QFontEngineGlyphCache::Raster_RGBMask) { - QPainter p(&m_image); + if (m_type == QFontEngineGlyphCache::Raster_RGBMask) { + QImage ref(m_image.bits() + (c.x * 4 + c.y * m_image.bytesPerLine()), + qMax(mask.width(), c.w), qMax(mask.height(), c.h), m_image.bytesPerLine(), + m_image.format()); + QPainter p(&ref); p.setCompositionMode(QPainter::CompositionMode_Source); - p.fillRect(c.x, c.y, c.w, c.h, QColor(0,0,0,0)); // TODO optimize this - p.drawImage(c.x, c.y, mask); + p.fillRect(0, 0, c.w, c.h, QColor(0,0,0,0)); // TODO optimize this + p.drawImage(0, 0, mask); p.end(); } else if (m_type == QFontEngineGlyphCache::Raster_Mono) { if (mask.depth() > 1) { diff --git a/src/gui/painting/qtextureglyphcache_p.h b/src/gui/painting/qtextureglyphcache_p.h index 82aaf0d..4227e9a 100644 --- a/src/gui/painting/qtextureglyphcache_p.h +++ b/src/gui/painting/qtextureglyphcache_p.h @@ -109,7 +109,7 @@ public: int baseLineY; }; - void populate(QFontEngine *fontEngine, int numGlyphs, const glyph_t *glyphs, + bool populate(QFontEngine *fontEngine, int numGlyphs, const glyph_t *glyphs, const QFixedPoint *positions); void fillInPendingGlyphs(); @@ -137,7 +137,7 @@ public: QHash<GlyphAndSubPixelPosition, Coord> coords; virtual int maxTextureWidth() const { return QT_DEFAULT_TEXTURE_GLYPH_CACHE_WIDTH; } - virtual int maxTextureHeight() const { return 32768; } + virtual int maxTextureHeight() const { return -1; } QImage textureMapForGlyph(glyph_t g, QFixed subPixelPosition) const; diff --git a/src/gui/painting/qunifiedtoolbarsurface_mac.cpp b/src/gui/painting/qunifiedtoolbarsurface_mac.cpp index b25757b..ace0a46 100644 --- a/src/gui/painting/qunifiedtoolbarsurface_mac.cpp +++ b/src/gui/painting/qunifiedtoolbarsurface_mac.cpp @@ -188,6 +188,8 @@ void QUnifiedToolbarSurface::flush(QWidget *widget, const QRegion &rgn, const QP // Restore context. CGContextRestoreGState(context); + CGContextRelease(context); + widget->d_func()->cgContext = 0; widget->d_func()->hasOwnContext = false; } diff --git a/src/gui/painting/qwindowsurface_mac.cpp b/src/gui/painting/qwindowsurface_mac.cpp index 1c97ebb..9f24532 100644 --- a/src/gui/painting/qwindowsurface_mac.cpp +++ b/src/gui/painting/qwindowsurface_mac.cpp @@ -82,6 +82,7 @@ void QMacWindowSurface::flush(QWidget *widget, const QRegion &rgn, const QPoint extern CGContextRef qt_mac_graphicsContextFor(QWidget *); CGContextRef context = qt_mac_graphicsContextFor(widget); #endif + CGContextRetain(context); CGContextSaveGState(context); // Flip context. @@ -109,6 +110,7 @@ void QMacWindowSurface::flush(QWidget *widget, const QRegion &rgn, const QPoint #else CGContextFlush(context); #endif + CGContextRelease(context); } void QMacWindowSurface::setGeometry(const QRect &rect) diff --git a/src/gui/painting/qwindowsurface_raster.cpp b/src/gui/painting/qwindowsurface_raster.cpp index ae73d7d..2b4e125 100644 --- a/src/gui/painting/qwindowsurface_raster.cpp +++ b/src/gui/painting/qwindowsurface_raster.cpp @@ -285,6 +285,7 @@ void QRasterWindowSurface::flush(QWidget *widget, const QRegion &rgn, const QPoi extern CGContextRef qt_mac_graphicsContextFor(QWidget *); CGContextRef context = qt_mac_graphicsContextFor(widget); #endif + CGContextRetain(context); CGContextSaveGState(context); // Flip context. @@ -317,6 +318,8 @@ void QRasterWindowSurface::flush(QWidget *widget, const QRegion &rgn, const QPoi // Restore context. CGContextRestoreGState(context); + CGContextRelease(context); + #endif // Q_WS_MAC diff --git a/src/gui/styles/qgtkstyle.cpp b/src/gui/styles/qgtkstyle.cpp index 9cc64b3..f3ec746 100644 --- a/src/gui/styles/qgtkstyle.cpp +++ b/src/gui/styles/qgtkstyle.cpp @@ -1706,12 +1706,17 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom fakePos = maximum; else if (scrollBar->sliderPosition > scrollBar->minimum) fakePos = maximum - 1; - GtkObject *adjustment = d->gtk_adjustment_new(fakePos, 0, maximum, 0, 0, 0); - if (horizontal) - d->gtk_range_set_adjustment((GtkRange*)(gtkHScrollBar), (GtkAdjustment*)(adjustment)); - else - d->gtk_range_set_adjustment((GtkRange*)(gtkVScrollBar), (GtkAdjustment*)(adjustment)); + + GtkRange *range = (GtkRange*)(horizontal ? gtkHScrollBar : gtkVScrollBar); + GtkAdjustment *adjustment = d->gtk_range_get_adjustment(range); + + if (adjustment) { + d->gtk_adjustment_configure(adjustment, fakePos, 0, maximum, 0, 0, 0); + } else { + adjustment = (GtkAdjustment*)d->gtk_adjustment_new(fakePos, 0, maximum, 0, 0, 0); + d->gtk_range_set_adjustment(range, adjustment); + } if (scrollBar->subControls & SC_ScrollBarGroove) { GtkStateType state = GTK_STATE_ACTIVE; @@ -1990,15 +1995,29 @@ void QGtkStyle::drawComplexControl(ComplexControl control, const QStyleOptionCom style = scaleWidget->style; if ((option->subControls & SC_SliderGroove) && groove.isValid()) { - GtkObject *adjustment = d->gtk_adjustment_new(slider->sliderPosition, - slider->minimum, - slider->maximum, - slider->singleStep, - slider->singleStep, - slider->pageStep); + + GtkRange *range = (GtkRange*)scaleWidget; + GtkAdjustment *adjustment = d->gtk_range_get_adjustment(range); + if (adjustment) { + d->gtk_adjustment_configure(adjustment, + slider->sliderPosition, + slider->minimum, + slider->maximum, + slider->singleStep, + slider->singleStep, + slider->pageStep); + } else { + adjustment = (GtkAdjustment*)d->gtk_adjustment_new(slider->sliderPosition, + slider->minimum, + slider->maximum, + slider->singleStep, + slider->singleStep, + slider->pageStep); + d->gtk_range_set_adjustment(range, adjustment); + } + int outerSize; - d->gtk_range_set_adjustment ((GtkRange*)(scaleWidget), (GtkAdjustment*)(adjustment)); - d->gtk_range_set_inverted((GtkRange*)(scaleWidget), !horizontal); + d->gtk_range_set_inverted(range, !horizontal); d->gtk_widget_style_get(scaleWidget, "trough-border", &outerSize, NULL); outerSize++; @@ -2998,8 +3017,13 @@ void QGtkStyle::drawControl(ControlElement element, else if (bar->progress > bar->minimum) fakePos = maximum - 1; - GtkObject *adjustment = d->gtk_adjustment_new(fakePos, 0, maximum, 0, 0, 0); - d->gtk_progress_set_adjustment((GtkProgress*)(gtkProgressBar), (GtkAdjustment*)(adjustment)); + GtkAdjustment *adjustment = d->gtk_progress_get_adjustment((GtkProgress*)gtkProgressBar); + if (adjustment) { + d->gtk_adjustment_configure(adjustment, fakePos, 0, maximum, 0, 0, 0); + } else { + adjustment = (GtkAdjustment*)d->gtk_adjustment_new(fakePos, 0, maximum, 0, 0, 0); + d->gtk_progress_set_adjustment((GtkProgress*)(gtkProgressBar), adjustment); + } QRect progressBar; diff --git a/src/gui/styles/qgtkstyle_p.cpp b/src/gui/styles/qgtkstyle_p.cpp index fdbe1f8..dd20253 100644 --- a/src/gui/styles/qgtkstyle_p.cpp +++ b/src/gui/styles/qgtkstyle_p.cpp @@ -121,7 +121,9 @@ Ptr_gtk_combo_box_entry_new QGtkStylePrivate::gtk_combo_box_entry_new = 0; Ptr_gtk_progress_bar_new QGtkStylePrivate::gtk_progress_bar_new = 0; Ptr_gtk_container_add QGtkStylePrivate::gtk_container_add = 0; Ptr_gtk_menu_shell_append QGtkStylePrivate::gtk_menu_shell_append = 0; +Ptr_gtk_progress_get_adjustment QGtkStylePrivate::gtk_progress_get_adjustment = 0; Ptr_gtk_progress_set_adjustment QGtkStylePrivate::gtk_progress_set_adjustment = 0; +Ptr_gtk_range_get_adjustment QGtkStylePrivate::gtk_range_get_adjustment = 0; Ptr_gtk_range_set_adjustment QGtkStylePrivate::gtk_range_set_adjustment = 0; Ptr_gtk_range_set_inverted QGtkStylePrivate::gtk_range_set_inverted = 0; Ptr_gtk_icon_factory_lookup_default QGtkStylePrivate::gtk_icon_factory_lookup_default = 0; @@ -145,6 +147,7 @@ Ptr_gtk_paint_focus QGtkStylePrivate::gtk_paint_focus = 0; Ptr_gtk_paint_arrow QGtkStylePrivate::gtk_paint_arrow = 0; Ptr_gtk_paint_handle QGtkStylePrivate::gtk_paint_handle = 0; Ptr_gtk_paint_expander QGtkStylePrivate::gtk_paint_expander = 0; +Ptr_gtk_adjustment_configure QGtkStylePrivate::gtk_adjustment_configure = 0; Ptr_gtk_adjustment_new QGtkStylePrivate::gtk_adjustment_new = 0; Ptr_gtk_paint_hline QGtkStylePrivate::gtk_paint_hline = 0; Ptr_gtk_paint_vline QGtkStylePrivate::gtk_paint_vline = 0; @@ -376,7 +379,9 @@ void QGtkStylePrivate::resolveGtk() const gtk_entry_new = (Ptr_gtk_entry_new)libgtk.resolve("gtk_entry_new"); gtk_tree_view_new = (Ptr_gtk_tree_view_new)libgtk.resolve("gtk_tree_view_new"); gtk_combo_box_new = (Ptr_gtk_combo_box_new)libgtk.resolve("gtk_combo_box_new"); + gtk_progress_get_adjustment = (Ptr_gtk_progress_get_adjustment)libgtk.resolve("gtk_progress_get_adjustment"); gtk_progress_set_adjustment = (Ptr_gtk_progress_set_adjustment)libgtk.resolve("gtk_progress_set_adjustment"); + gtk_range_get_adjustment = (Ptr_gtk_range_get_adjustment)libgtk.resolve("gtk_range_get_adjustment"); gtk_range_set_adjustment = (Ptr_gtk_range_set_adjustment)libgtk.resolve("gtk_range_set_adjustment"); gtk_range_set_inverted = (Ptr_gtk_range_set_inverted)libgtk.resolve("gtk_range_set_inverted"); gtk_container_add = (Ptr_gtk_container_add)libgtk.resolve("gtk_container_add"); @@ -405,6 +410,7 @@ void QGtkStylePrivate::resolveGtk() const gtk_paint_extension = (Ptr_gtk_paint_extension)libgtk.resolve("gtk_paint_extension"); gtk_paint_hline = (Ptr_gtk_paint_hline)libgtk.resolve("gtk_paint_hline"); gtk_paint_vline = (Ptr_gtk_paint_vline)libgtk.resolve("gtk_paint_vline"); + gtk_adjustment_configure = (Ptr_gtk_adjustment_configure)libgtk.resolve("gtk_adjustment_configure"); gtk_adjustment_new = (Ptr_gtk_adjustment_new)libgtk.resolve("gtk_adjustment_new"); gtk_menu_item_set_submenu = (Ptr_gtk_menu_item_set_submenu)libgtk.resolve("gtk_menu_item_set_submenu"); gtk_settings_get_default = (Ptr_gtk_settings_get_default)libgtk.resolve("gtk_settings_get_default"); diff --git a/src/gui/styles/qgtkstyle_p.h b/src/gui/styles/qgtkstyle_p.h index 4e1d07a..57fa2fc 100644 --- a/src/gui/styles/qgtkstyle_p.h +++ b/src/gui/styles/qgtkstyle_p.h @@ -174,7 +174,9 @@ typedef GtkWidget* (*Ptr_gtk_frame_new)(const gchar *); typedef GtkWidget* (*Ptr_gtk_expander_new)(const gchar*); typedef GtkWidget* (*Ptr_gtk_statusbar_new)(void); typedef GtkSettings* (*Ptr_gtk_settings_get_default)(void); +typedef GtkAdjustment* (*Ptr_gtk_range_get_adjustment)(GtkRange *); typedef void (*Ptr_gtk_range_set_adjustment)(GtkRange *, GtkAdjustment *); +typedef GtkAdjustment* (*Ptr_gtk_progress_get_adjustment)(GtkProgress *); typedef void (*Ptr_gtk_progress_set_adjustment)(GtkProgress *, GtkAdjustment *); typedef void (*Ptr_gtk_range_set_inverted)(GtkRange*, bool); typedef void (*Ptr_gtk_container_add)(GtkContainer *container, GtkWidget *widget); @@ -198,6 +200,7 @@ typedef void (*Ptr_gtk_paint_arrow) (GtkStyle*,GdkWindow*, GtkStateType, GtkSha typedef void (*Ptr_gtk_paint_option) (GtkStyle*,GdkWindow*, GtkStateType, GtkShadowType, const GdkRectangle *, GtkWidget *, const gchar *, gint , gint , gint , gint); typedef void (*Ptr_gtk_paint_flat_box) (GtkStyle*,GdkWindow*, GtkStateType, GtkShadowType, const GdkRectangle *, GtkWidget *, const gchar *, gint , gint , gint , gint); typedef void (*Ptr_gtk_paint_extension) (GtkStyle *, GdkWindow *, GtkStateType, GtkShadowType, const GdkRectangle *, GtkWidget *, const gchar *, gint, gint, gint, gint, GtkPositionType); +typedef void (*Ptr_gtk_adjustment_configure) (GtkAdjustment *, double, double, double, double, double, double); typedef GtkObject* (*Ptr_gtk_adjustment_new) (double, double, double, double, double, double); typedef void (*Ptr_gtk_paint_hline) (GtkStyle *, GdkWindow *, GtkStateType, const GdkRectangle *, GtkWidget *, const gchar *, gint, gint, gint y); typedef void (*Ptr_gtk_paint_vline) (GtkStyle *, GdkWindow *, GtkStateType, const GdkRectangle *, GtkWidget *, const gchar *, gint, gint, gint); @@ -393,7 +396,9 @@ public: static Ptr_gtk_progress_bar_new gtk_progress_bar_new; static Ptr_gtk_container_add gtk_container_add; static Ptr_gtk_menu_shell_append gtk_menu_shell_append; + static Ptr_gtk_progress_get_adjustment gtk_progress_get_adjustment; static Ptr_gtk_progress_set_adjustment gtk_progress_set_adjustment; + static Ptr_gtk_range_get_adjustment gtk_range_get_adjustment; static Ptr_gtk_range_set_adjustment gtk_range_set_adjustment; static Ptr_gtk_range_set_inverted gtk_range_set_inverted; static Ptr_gtk_icon_factory_lookup_default gtk_icon_factory_lookup_default; @@ -416,6 +421,7 @@ public: static Ptr_gtk_paint_arrow gtk_paint_arrow; static Ptr_gtk_paint_handle gtk_paint_handle; static Ptr_gtk_paint_expander gtk_paint_expander; + static Ptr_gtk_adjustment_configure gtk_adjustment_configure; static Ptr_gtk_adjustment_new gtk_adjustment_new; static Ptr_gtk_paint_vline gtk_paint_vline; static Ptr_gtk_paint_hline gtk_paint_hline; diff --git a/src/gui/styles/qmacstyle_mac.mm b/src/gui/styles/qmacstyle_mac.mm index a05ec6b..9ef2f02 100644 --- a/src/gui/styles/qmacstyle_mac.mm +++ b/src/gui/styles/qmacstyle_mac.mm @@ -1566,8 +1566,7 @@ void QMacStylePrivate::timerEvent(QTimerEvent *) progressBars.removeAt(i); } else { if (QProgressBar *pb = qobject_cast<QProgressBar *>(maybeProgress)) { - if (pb->maximum() == 0 || pb->value() > 0 - && pb->value() < pb->maximum()) { + if (pb->maximum() == 0 || (pb->value() > 0 && pb->value() < pb->maximum())) { if (doAnimate(AquaProgressBar)) pb->update(); } @@ -3608,7 +3607,7 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter break; } } - bool stretchTabs = (!verticalTabs && tabRect.height() > 22 || verticalTabs && tabRect.width() > 22); + bool stretchTabs = (!verticalTabs && tabRect.height() > 22) || (verticalTabs && tabRect.width() > 22); switch (tp) { case QStyleOptionTab::Beginning: @@ -4033,7 +4032,6 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter bdi.version = qt_mac_hitheme_version; bdi.state = kThemeMenuBarNormal; bdi.attributes = 0; - HIRect hirect = qt_hirectForQRect(mi->rect); HIThemeDrawMenuBarBackground(&menuRect, &bdi, cg, kHIThemeOrientationNormal); } @@ -5335,8 +5333,8 @@ QRect QMacStyle::subControlRect(ComplexControl cc, const QStyleOptionComplex *op case SC_GroupBoxCheckBox: { // Cheat and use the smaller font if we need to bool checkable = groupBox->subControls & SC_GroupBoxCheckBox; - bool fontIsSet = (widget && widget->testAttribute(Qt::WA_SetFont) - || !QApplication::desktopSettingsAware()); + bool fontIsSet = (widget && widget->testAttribute(Qt::WA_SetFont)) + || !QApplication::desktopSettingsAware(); int tw; int h; int margin = flat || hasNoText ? 0 : 12; diff --git a/src/gui/styles/qs60style.cpp b/src/gui/styles/qs60style.cpp index 087907f..3326c48 100644 --- a/src/gui/styles/qs60style.cpp +++ b/src/gui/styles/qs60style.cpp @@ -1438,10 +1438,11 @@ void QS60Style::drawControl(ControlElement element, const QStyleOption *option, const QRect iconRect = subElementRect(SE_ItemViewItemDecoration, &voptAdj, widget); QRect textRect = subElementRect(SE_ItemViewItemText, &voptAdj, widget); const QAbstractItemView *itemView = qobject_cast<const QAbstractItemView *>(widget); - const bool singleSelection = - (itemView->selectionMode() == QAbstractItemView::SingleSelection || - itemView->selectionMode() == QAbstractItemView::NoSelection); - const bool selectItems = (itemView->selectionBehavior() == QAbstractItemView::SelectItems); + + const bool singleSelection = itemView && + ((itemView->selectionMode() == QAbstractItemView::SingleSelection || + itemView->selectionMode() == QAbstractItemView::NoSelection)); + const bool selectItems = itemView && (itemView->selectionBehavior() == QAbstractItemView::SelectItems); // draw themed background for itemview unless background brush has been defined. if (vopt->backgroundBrush == Qt::NoBrush) { @@ -2536,6 +2537,56 @@ QSize QS60Style::sizeFromContents(ContentsType ct, const QStyleOption *opt, if (const QStyleOptionToolButton *toolBtn = qstyleoption_cast<const QStyleOptionToolButton *>(opt)) if (toolBtn->subControls & SC_ToolButtonMenu) sz += QSize(pixelMetric(PM_MenuButtonIndicator), 0); + + //Make toolbuttons in toolbar stretch the whole screen area + if (widget && qobject_cast<const QToolBar *>(widget->parentWidget())) { + const QToolBar *tb = qobject_cast<const QToolBar *>(widget->parentWidget()); + const bool parentCanGrowHorizontally = !(tb->sizePolicy().horizontalPolicy() == QSizePolicy::Fixed || + tb->sizePolicy().horizontalPolicy() == QSizePolicy::Maximum) && tb->orientation() == Qt::Horizontal; + + if (parentCanGrowHorizontally) { + int visibleButtons = 0; + //Make the auto-stretch to happen only for horizontal orientation + if (tb && tb->orientation() == Qt::Horizontal) { + QList<QAction*> actionList = tb->actions(); + for (int i = 0; i < actionList.count(); i++) { + if (actionList.at(i)->isVisible()) + visibleButtons++; + } + } + + if (widget->parentWidget() && visibleButtons > 0) { + QWidget *w = const_cast<QWidget *>(widget); + int toolBarMaxWidth = 0; + int totalMargin = 0; + while (w) { + //honor fixed width parents + if (w->maximumWidth() == w->minimumWidth()) + toolBarMaxWidth = qMax(toolBarMaxWidth, w->maximumWidth()); + if (w->layout() && w->windowType() == Qt::Widget) { + totalMargin += w->layout()->contentsMargins().left() + + w->layout()->contentsMargins().right(); + } + w = w->parentWidget(); + } + totalMargin += 2 * pixelMetric(QStyle::PM_ToolBarFrameWidth); + + if (toolBarMaxWidth == 0) + toolBarMaxWidth = + QApplication::desktop()->availableGeometry(widget->parentWidget()).width(); + //Reduce the margins, toolbar frame, item spacing and internal margin from available area + toolBarMaxWidth -= totalMargin; + + //ensure that buttons are side-by-side and not on top of each other + const int toolButtonWidth = (toolBarMaxWidth / visibleButtons) + - pixelMetric(QStyle::PM_ToolBarItemSpacing) + - pixelMetric(QStyle::PM_ToolBarItemMargin) + //toolbar frame needs to be reduced again, since QToolBarLayout adds it for each toolbar action + - 2 * pixelMetric(QStyle::PM_ToolBarFrameWidth) - 1; + sz.setWidth(qMax(toolButtonWidth, sz.width())); + } + } + } break; case CT_PushButton: sz = QCommonStyle::sizeFromContents( ct, opt, csz, widget); diff --git a/src/gui/styles/qstyle.cpp b/src/gui/styles/qstyle.cpp index 3ebfab2..be8f794 100644 --- a/src/gui/styles/qstyle.cpp +++ b/src/gui/styles/qstyle.cpp @@ -2456,6 +2456,8 @@ QDebug operator<<(QDebug debug, QStyle::State state) qSort(states); debug << states.join(QLatin1String(" | ")); debug << ')'; +#else + Q_UNUSED(state); #endif return debug; } diff --git a/src/gui/styles/qstyleoption.cpp b/src/gui/styles/qstyleoption.cpp index 4780edf..05ca793 100644 --- a/src/gui/styles/qstyleoption.cpp +++ b/src/gui/styles/qstyleoption.cpp @@ -5483,6 +5483,8 @@ QDebug operator<<(QDebug debug, const QStyleOption::OptionType &optionType) case QStyleOption::SO_GraphicsItem: debug << "SO_GraphicsItem"; break; } +#else + Q_UNUSED(optionType); #endif return debug; } @@ -5496,6 +5498,8 @@ QDebug operator<<(QDebug debug, const QStyleOption &option) debug << ',' << option.state; debug << ',' << option.rect; debug << ')'; +#else + Q_UNUSED(option); #endif return debug; } diff --git a/src/gui/text/qfontengine_x11.cpp b/src/gui/text/qfontengine_x11.cpp index aee21f6..af2ce98 100644 --- a/src/gui/text/qfontengine_x11.cpp +++ b/src/gui/text/qfontengine_x11.cpp @@ -429,7 +429,7 @@ void QFontEngineXLFD::recalcAdvances(QGlyphLayout *glyphs, QTextEngine::ShaperFl { int i = glyphs->numGlyphs; XCharStruct *xcs; - // inlined for better perfomance + // inlined for better performance if (!_fs->per_char) { xcs = &_fs->min_bounds; while (i != 0) { diff --git a/src/gui/util/qdesktopservices_s60.cpp b/src/gui/util/qdesktopservices_s60.cpp index cd023cb..56c2b98 100644 --- a/src/gui/util/qdesktopservices_s60.cpp +++ b/src/gui/util/qdesktopservices_s60.cpp @@ -45,32 +45,29 @@ #include <qurl.h> #include <private/qcore_symbian_p.h> -#include <txtrich.h> // CRichText #include <f32file.h> // TDriveUnit etc +#include <pathinfo.h> // PathInfo + +#ifndef USE_SCHEMEHANDLER +#ifdef Q_WS_S60 +// This flag changes the implementation to use S60 CDcoumentHandler +// instead of apparc when opening the files +#define USE_DOCUMENTHANDLER +#endif + +#include <txtrich.h> // CRichText #include <eikenv.h> // CEikonEnv #include <apgcli.h> // RApaLsSession #include <apgtask.h> // TApaTaskList, TApaTask #include <rsendas.h> // RSendAs #include <rsendasmessage.h> // RSendAsMessage -#ifdef Q_WS_S60 -// This flag changes the implementation to use S60 CDcoumentHandler -// instead of apparch when opening the files -#define USE_DOCUMENTHANDLER +#ifdef USE_DOCUMENTHANDLER +#include <DocumentHandler.h> // CDocumentHandler +#include <AknServerApp.h> #endif - -// copied from miutset.h, so we don't get a dependency into the app layer -const TUid KUidMsgTypeSMTP = {0x10001028}; // 268439592 - -#ifdef Q_OS_SYMBIAN -# include <pathinfo.h> // PathInfo -# ifdef USE_DOCUMENTHANDLER -# include <DocumentHandler.h> // CDocumentHandler -# include <AknServerApp.h> -# endif -#else -# warning CDocumentHandler requires support for S60 -# undef USE_DOCUMENTHANDLER // Fallback to RApaLsSession based implementation +#else // USE_SCHEMEHANDLER +#include <schemehandler.h> #endif QT_BEGIN_NAMESPACE @@ -79,6 +76,10 @@ _LIT(KCacheSubDir, "Cache\\"); _LIT(KSysBin, "\\Sys\\Bin\\"); _LIT(KBrowserPrefix, "4 " ); _LIT(KFontsDir, "z:\\resource\\Fonts\\"); + +#ifndef USE_SCHEMEHANDLER +// copied from miutset.h, so we don't get a dependency into the app layer +const TUid KUidMsgTypeSMTP = {0x10001028}; // 268439592 const TUid KUidBrowser = { 0x10008D39 }; template<class R> @@ -137,7 +138,6 @@ private: Q_GLOBAL_STATIC(QS60DocumentHandler, qt_s60_documenthandler); #endif - static void handleMailtoSchemeLX(const QUrl &url) { // this function has many intermingled leaves and throws. Qt and Symbian objects do not have @@ -155,12 +155,10 @@ static void handleMailtoSchemeLX(const QUrl &url) QStringList ccs = cc.split(QLatin1String(","), QString::SkipEmptyParts); QStringList bccs = bcc.split(QLatin1String(","), QString::SkipEmptyParts); - RSendAs sendAs; User::LeaveIfError(sendAs.Connect()); QAutoClose<RSendAs> sendAsCleanup(sendAs); - CSendAsAccounts* accounts = CSendAsAccounts::NewL(); CleanupStack::PushL(accounts); sendAs.AvailableAccountsL(KUidMsgTypeSMTP, *accounts); @@ -249,47 +247,6 @@ static bool handleOtherSchemes(const QUrl &url) return err ? false : true; } -static TDriveUnit exeDrive() -{ - RProcess me; - TFileName processFileName = me.FileName(); - TDriveUnit drive(processFileName); - return drive; -} - -static TDriveUnit writableExeDrive() -{ - TDriveUnit drive = exeDrive(); - if(drive.operator TInt() == EDriveZ) - return TDriveUnit(EDriveC); - return drive; -} - -static TPtrC writableDataRoot() -{ - TDriveUnit drive = exeDrive(); -#ifdef Q_OS_SYMBIAN - switch(drive.operator TInt()){ - case EDriveC: - return PathInfo::PhoneMemoryRootPath(); - break; - case EDriveE: - return PathInfo::MemoryCardRootPath(); - break; - case EDriveZ: - // It is not possible to write on ROM drive -> - // return phone mem root path instead - return PathInfo::PhoneMemoryRootPath(); - break; - default: - return PathInfo::PhoneMemoryRootPath(); - break; - } -#else -#warning No fallback implementation of writableDataRoot() - return 0; -#endif -} static void openDocumentL(const TDesC& aUrl) { @@ -314,13 +271,44 @@ static void openDocumentL(const TDesC& aUrl) #endif } -#ifdef USE_SCHEMEHANDLER +static bool launchWebBrowser(const QUrl &url) +{ + if (!url.isValid()) + return false; + + if (url.scheme() == QLatin1String("mailto")) { + return handleMailtoScheme(url); + } + return handleOtherSchemes( url ); +} + +static bool openDocument(const QUrl &file) +{ + if (!file.isValid()) + return false; + + QString filePath = file.toLocalFile(); + filePath = QDir::toNativeSeparators(filePath); + TPtrC filePathPtr(qt_QString2TPtrC(filePath)); + TRAPD(err, openDocumentL(filePathPtr)); + return err ? false : true; +} + +#else //USE_SCHEMEHANDLER // The schemehandler component only exist in private SDK. This implementation // exist here just for convenience in case that we need to use it later on // The schemehandle based implementation is not yet tested. // The biggest advantage of schemehandler is that it can handle // wide range of schemes and is extensible by plugins +static void handleUrlL(const TDesC& aUrl) +{ + CSchemeHandler* schemeHandler = CSchemeHandler::NewL(aUrl); + CleanupStack::PushL(schemeHandler); + schemeHandler->HandleUrlStandaloneL(); // Process the Url in standalone mode + CleanupStack::PopAndDestroy(); +} + static bool handleUrl(const QUrl &url) { if (!url.isValid()) @@ -332,13 +320,6 @@ static bool handleUrl(const QUrl &url) return err ? false : true; } -static void handleUrlL(const TDesC& aUrl) -{ - CSchemeHandler* schemeHandler = CSchemeHandler::NewL(aUrl); - CleanupStack::PushL(schemeHandler); - schemeHandler->HandleUrlStandaloneL(); // Process the Url in standalone mode - CleanupStack::PopAndDestroy(); -} static bool launchWebBrowser(const QUrl &url) { return handleUrl(url); @@ -346,31 +327,48 @@ static bool launchWebBrowser(const QUrl &url) static bool openDocument(const QUrl &file) { - return handleUrl(url); + return handleUrl(file); } -#endif -static bool launchWebBrowser(const QUrl &url) -{ - if (!url.isValid()) - return false; +#endif //USE_SCHEMEHANDLER - if (url.scheme() == QLatin1String("mailto")) { - return handleMailtoScheme(url); - } - return handleOtherSchemes( url ); +// Common functions to all implementations + +static TDriveUnit exeDrive() +{ + RProcess me; + TFileName processFileName = me.FileName(); + TDriveUnit drive(processFileName); + return drive; } -static bool openDocument(const QUrl &file) +static TDriveUnit writableExeDrive() { - if (!file.isValid()) - return false; + TDriveUnit drive = exeDrive(); + if (drive.operator TInt() == EDriveZ) + return TDriveUnit(EDriveC); + return drive; +} - QString filePath = file.toLocalFile(); - filePath = QDir::toNativeSeparators(filePath); - TPtrC filePathPtr(qt_QString2TPtrC(filePath)); - TRAPD(err, openDocumentL(filePathPtr)); - return err ? false : true; +static TPtrC writableDataRoot() +{ + TDriveUnit drive = exeDrive(); + switch (drive.operator TInt()){ + case EDriveC: + return PathInfo::PhoneMemoryRootPath(); + break; + case EDriveE: + return PathInfo::MemoryCardRootPath(); + break; + case EDriveZ: + // It is not possible to write on ROM drive -> + // return phone mem root path instead + return PathInfo::PhoneMemoryRootPath(); + break; + default: + return PathInfo::PhoneMemoryRootPath(); + break; + } } QString QDesktopServices::storageLocation(StandardLocation type) @@ -395,21 +393,15 @@ QString QDesktopServices::storageLocation(StandardLocation type) break; case MusicLocation: path.Append(writableDataRoot()); -#ifdef Q_OS_SYMBIAN path.Append(PathInfo::SoundsPath()); -#endif break; case MoviesLocation: path.Append(writableDataRoot()); -#ifdef Q_OS_SYMBIAN path.Append(PathInfo::VideosPath()); -#endif break; case PicturesLocation: path.Append(writableDataRoot()); -#ifdef Q_OS_SYMBIAN path.Append(PathInfo::ImagesPath()); -#endif break; case TempLocation: return QDir::tempPath(); diff --git a/src/gui/util/qundostack.cpp b/src/gui/util/qundostack.cpp index 919ac3c..04cfca9 100644 --- a/src/gui/util/qundostack.cpp +++ b/src/gui/util/qundostack.cpp @@ -441,7 +441,7 @@ bool QUndoStackPrivate::checkUndoLimit() /*! Constructs an empty undo stack with the parent \a parent. The - stack will initally be in the clean state. If \a parent is a + stack will initially be in the clean state. If \a parent is a QUndoGroup object, the stack is automatically added to the group. \sa push() diff --git a/src/gui/util/util.pri b/src/gui/util/util.pri index af6218a..f125f82 100644 --- a/src/gui/util/util.pri +++ b/src/gui/util/util.pri @@ -43,12 +43,17 @@ embedded|qpa { } symbian { - LIBS += -lsendas2 -letext -lapmime -lplatformenv - contains(QT_CONFIG, s60) { - contains(CONFIG, is_using_gnupoc) { - LIBS += -lcommonui - } else { - LIBS += -lCommonUI + LIBS += -letext -lplatformenv + contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2)|contains(S60_VERSION, 5.0) { + LIBS += -lsendas2 -lapmime + contains(QT_CONFIG, s60) { + contains(CONFIG, is_using_gnupoc) { + LIBS += -lcommonui + } else { + LIBS += -lCommonUI + } } + } else { + DEFINES += USE_SCHEMEHANDLER } } diff --git a/src/gui/widgets/qabstractslider_p.h b/src/gui/widgets/qabstractslider_p.h index 19d1fca..d044131 100644 --- a/src/gui/widgets/qabstractslider_p.h +++ b/src/gui/widgets/qabstractslider_p.h @@ -117,7 +117,7 @@ public: ; } - inline int bound(int val) const { return qMax(minimum, qMin(maximum, val)); } + virtual int bound(int val) const { return qMax(minimum, qMin(maximum, val)); } inline int overflowSafeAdd(int add) const { int newValue = value + add; diff --git a/src/gui/widgets/qcocoamenu_mac.mm b/src/gui/widgets/qcocoamenu_mac.mm index b670186..8e7223f 100644 --- a/src/gui/widgets/qcocoamenu_mac.mm +++ b/src/gui/widgets/qcocoamenu_mac.mm @@ -44,6 +44,7 @@ #ifdef QT_MAC_USE_COCOA #import <private/qcocoamenu_mac_p.h> #import <private/qcocoamenuloader_mac_p.h> +#import <private/qcocoaapplication_mac_p.h> #include <private/qt_cocoa_helpers_mac_p.h> #include <private/qapplication_p.h> #include <private/qaction_p.h> @@ -60,6 +61,7 @@ QT_FORWARD_DECLARE_CLASS(QEvent) QT_BEGIN_NAMESPACE extern bool qt_sendSpontaneousEvent(QObject*, QEvent*); //qapplication.cpp +extern NSString *qt_mac_removePrivateUnicode(NSString* string); QT_END_NAMESPACE QT_USE_NAMESPACE @@ -78,7 +80,7 @@ QT_USE_NAMESPACE return self; } -- (void)menu:(NSMenu*)menu willHighlightItem:(NSMenuItem*)item; +- (void)menu:(NSMenu*)menu willHighlightItem:(NSMenuItem*)item { Q_UNUSED(menu); @@ -99,7 +101,7 @@ QT_USE_NAMESPACE } } -- (void)menuWillOpen:(NSMenu*)menu; +- (void)menuWillOpen:(NSMenu*)menu { while (QWidget *popup = QApplication::activePopupWidget()) @@ -109,7 +111,7 @@ QT_USE_NAMESPACE qt_mac_menu_collapseSeparators(menu, qtmenu->separatorsCollapsible()); } -- (void)menuDidClose:(NSMenu*)menu; +- (void)menuDidClose:(NSMenu*)menu { qt_mac_emit_menuSignals(((QT_MANGLE_NAMESPACE(QCocoaMenu) *)menu)->qmenu, false); if (previousAction) { @@ -157,7 +159,6 @@ QT_USE_NAMESPACE // (i.e., fire the menu action). NSMenuItem *whichItem; // Change the private unicode keys to the ones used in setting the "Key Equivalents" - extern NSString *qt_mac_removePrivateUnicode(NSString* string); NSString *characters = qt_mac_removePrivateUnicode([event characters]); if ([self hasShortcut:menu forKey:characters diff --git a/src/gui/widgets/qdial.cpp b/src/gui/widgets/qdial.cpp index a8d739f..bca5019 100644 --- a/src/gui/widgets/qdial.cpp +++ b/src/gui/widgets/qdial.cpp @@ -83,6 +83,7 @@ public: int valueFromPoint(const QPoint &) const; double angle(const QPoint &, const QPoint &) const; void init(); + virtual int bound(int val) const; }; void QDialPrivate::init() @@ -97,6 +98,20 @@ void QDialPrivate::init() #endif } +int QDialPrivate::bound(int val) const +{ + if (wrapping) { + if ((val >= minimum) && (val <= maximum)) + return val; + val = minimum + ((val - minimum) % (maximum - minimum)); + if (val < minimum) + val += maximum - minimum; + return val; + } else { + return QAbstractSliderPrivate::bound(val); + } +} + /*! Initialize \a option with the values from this QDial. This method is useful for subclasses when they need a QStyleOptionSlider, but don't want diff --git a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp index 25622a4..3617d24 100644 --- a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp +++ b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.cpp @@ -63,7 +63,9 @@ QAudioDeviceInfoInternal::QAudioDeviceInfoInternal(QByteArray dev, QAudio::Mode device = QLatin1String(dev); this->mode = mode; +#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) checkSurround(); +#endif } QAudioDeviceInfoInternal::~QAudioDeviceInfoInternal() @@ -394,9 +396,11 @@ void QAudioDeviceInfoInternal::updateLists() } channelz.append(1); channelz.append(2); +#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) if (surround40) channelz.append(4); if (surround51) channelz.append(6); if (surround71) channelz.append(8); +#endif sizez.append(8); sizez.append(16); sizez.append(32); @@ -494,6 +498,7 @@ QByteArray QAudioDeviceInfoInternal::defaultOutputDevice() return devices.first(); } +#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) void QAudioDeviceInfoInternal::checkSurround() { QList<QByteArray> devices; @@ -534,5 +539,6 @@ void QAudioDeviceInfoInternal::checkSurround() } snd_device_name_free_hint(hints); } +#endif QT_END_NAMESPACE diff --git a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.h b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.h index 8525980..5f7e5e8 100644 --- a/src/multimedia/audio/qaudiodeviceinfo_alsa_p.h +++ b/src/multimedia/audio/qaudiodeviceinfo_alsa_p.h @@ -98,10 +98,12 @@ private: bool open(); void close(); +#if (SND_LIB_MAJOR == 1 && SND_LIB_MINOR == 0 && SND_LIB_SUBMINOR >= 14) void checkSurround(); bool surround40; bool surround51; bool surround71; +#endif QString device; QAudio::Mode mode; diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp index 70ef7ba..99b5a95 100644 --- a/src/network/ssl/qsslsocket_openssl.cpp +++ b/src/network/ssl/qsslsocket_openssl.cpp @@ -656,8 +656,16 @@ TInt CSymbianCertificateRetriever::ThreadEntryPoint(TAny* aParams) void CSymbianCertificateRetriever::ConstructL() { - User::LeaveIfError(iThread.Create(_L("CertWorkerThread"), - CSymbianCertificateRetriever::ThreadEntryPoint, 16384, NULL, this)); + TInt err; + int i=0; + QString name(QLatin1String("CertWorkerThread-%1")); + //recently closed thread names remain in use for a while until all handles have been closed + //including users of RUndertaker + do { + err = iThread.Create(qt_QString2TPtrC(name.arg(i++)), + CSymbianCertificateRetriever::ThreadEntryPoint, 16384, NULL, this); + } while (err == KErrAlreadyExists); + User::LeaveIfError(err); } void CSymbianCertificateRetriever::DoCancel() @@ -728,7 +736,7 @@ void CSymbianCertificateRetriever::RunL() if (iStatus.Int() == KErrNone) iCertificates->append(iCertificateData); else - qWarning() << "CSymbianCertificateRetriever: failed to retreive a certificate, error " << iStatus.Int(); + qWarning() << "CSymbianCertificateRetriever: failed to retrieve a certificate, error " << iStatus.Int(); GetCertificateL(); break; } diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp index 85e4eab..735aab1 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp @@ -1241,6 +1241,9 @@ void QGL2PaintEngineExPrivate::stroke(const QVectorPath &path, const QPen &pen) stroker.process(dashStroke, pen, clip); } + if (!stroker.vertexCount()) + return; + if (opaque) { prepareForDraw(opaque); setVertexAttributePointer(QT_VERTEX_COORDS_ATTR, stroker.vertices()); @@ -1510,6 +1513,8 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp cache = new QGLTextureGlyphCache(ctx, glyphType, QTransform()); staticTextItem->fontEngine()->setGlyphCache(cacheKey, cache); cache->insert(ctx, cache); + } else if (cache->context() == 0) { // Old context has been destroyed, new context has same ptr value + cache->setContext(ctx); } bool recreateVertexArrays = false; diff --git a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp index 7954d77..538b09e 100644 --- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp +++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp @@ -55,7 +55,7 @@ extern Q_GUI_EXPORT bool qt_cleartype_enabled; QGLTextureGlyphCache::QGLTextureGlyphCache(const QGLContext *context, QFontEngineGlyphCache::Type type, const QTransform &matrix) : QImageTextureGlyphCache(type, matrix), QGLContextGroupResourceBase() - , ctx(context) + , ctx(0) , pex(0) , m_blitProgram(0) , m_filterMode(Nearest) @@ -89,7 +89,6 @@ QGLTextureGlyphCache::~QGLTextureGlyphCache() #ifdef QT_GL_TEXTURE_GLYPH_CACHE_DEBUG qDebug(" -> ~QGLTextureGlyphCache() %p.", this); #endif - delete m_blitProgram; } diff --git a/src/opengl/gl2paintengineex/qtriangulator.cpp b/src/opengl/gl2paintengineex/qtriangulator.cpp index 85f604a..75d5ce2 100644 --- a/src/opengl/gl2paintengineex/qtriangulator.cpp +++ b/src/opengl/gl2paintengineex/qtriangulator.cpp @@ -339,7 +339,7 @@ static inline qint64 qPointDistanceFromLine(const QPodPoint &p, const QPodPoint static inline bool qPointIsLeftOfLine(const QPodPoint &p, const QPodPoint &v1, const QPodPoint &v2) { - return qPointDistanceFromLine(p, v1, v2) < 0; + return QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(p, v1, v2) < 0; } // Return: @@ -1741,7 +1741,7 @@ bool QTriangulator<T>::ComplexToSimple::calculateIntersection(int left, int righ Intersection intersection; intersection.leftEdge = left; intersection.rightEdge = right; - intersection.intersectionPoint = qIntersectionPoint(u1, u2, v1, v2); + intersection.intersectionPoint = QT_PREPEND_NAMESPACE(qIntersectionPoint)(u1, u2, v1, v2); if (!intersection.intersectionPoint.isValid()) return false; @@ -1767,10 +1767,10 @@ bool QTriangulator<T>::ComplexToSimple::edgeIsLeftOfEdge(int leftEdgeIndex, int return true; if (upper.x > qMax(l.x, u.x)) return false; - qint64 d = qPointDistanceFromLine(upper, l, u); + qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(upper, l, u); // d < 0: left, d > 0: right, d == 0: on top if (d == 0) - d = qPointDistanceFromLine(m_parent->m_vertices.at(leftEdge.lower()), l, u); + d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(m_parent->m_vertices.at(leftEdge.lower()), l, u); return d < 0; } @@ -1814,7 +1814,7 @@ QPair<QRBTree<int>::Node *, QRBTree<int>::Node *> QTriangulator<T>::ComplexToSim while (current) { const QPodPoint &v1 = m_parent->m_vertices.at(m_edges.at(current->data).lower()); const QPodPoint &v2 = m_parent->m_vertices.at(m_edges.at(current->data).upper()); - qint64 d = qPointDistanceFromLine(point, v1, v2); + qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(point, v1, v2); if (d == 0) { result.first = result.second = current; break; @@ -1828,7 +1828,7 @@ QPair<QRBTree<int>::Node *, QRBTree<int>::Node *> QTriangulator<T>::ComplexToSim while (current) { const QPodPoint &v1 = m_parent->m_vertices.at(m_edges.at(current->data).lower()); const QPodPoint &v2 = m_parent->m_vertices.at(m_edges.at(current->data).upper()); - qint64 d = qPointDistanceFromLine(point, v1, v2); + qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(point, v1, v2); Q_ASSERT(d >= 0); if (d == 0) { result.first = current; @@ -1842,7 +1842,7 @@ QPair<QRBTree<int>::Node *, QRBTree<int>::Node *> QTriangulator<T>::ComplexToSim while (current) { const QPodPoint &v1 = m_parent->m_vertices.at(m_edges.at(current->data).lower()); const QPodPoint &v2 = m_parent->m_vertices.at(m_edges.at(current->data).upper()); - qint64 d = qPointDistanceFromLine(point, v1, v2); + qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(point, v1, v2); Q_ASSERT(d <= 0); if (d == 0) { result.second = current; @@ -1864,7 +1864,7 @@ QPair<QRBTree<int>::Node *, QRBTree<int>::Node *> QTriangulator<T>::ComplexToSim while (current) { const QPodPoint &v1 = m_parent->m_vertices.at(m_edges.at(current->data).lower()); const QPodPoint &v2 = m_parent->m_vertices.at(m_edges.at(current->data).upper()); - qint64 d = qPointDistanceFromLine(point, v1, v2); + qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(point, v1, v2); if (d == 0) break; if (d < 0) { @@ -1885,7 +1885,7 @@ QPair<QRBTree<int>::Node *, QRBTree<int>::Node *> QTriangulator<T>::ComplexToSim while (current) { const QPodPoint &v1 = m_parent->m_vertices.at(m_edges.at(current->data).lower()); const QPodPoint &v2 = m_parent->m_vertices.at(m_edges.at(current->data).upper()); - qint64 d = qPointDistanceFromLine(point, v1, v2); + qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(point, v1, v2); Q_ASSERT(d >= 0); if (d == 0) { current = current->left; @@ -1899,7 +1899,7 @@ QPair<QRBTree<int>::Node *, QRBTree<int>::Node *> QTriangulator<T>::ComplexToSim while (current) { const QPodPoint &v1 = m_parent->m_vertices.at(m_edges.at(current->data).lower()); const QPodPoint &v2 = m_parent->m_vertices.at(m_edges.at(current->data).upper()); - qint64 d = qPointDistanceFromLine(point, v1, v2); + qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(point, v1, v2); Q_ASSERT(d <= 0); if (d == 0) { current = current->right; @@ -1962,7 +1962,7 @@ void QTriangulator<T>::ComplexToSimple::reorderEdgeListRange(QRBTree<int>::Node template <typename T> void QTriangulator<T>::ComplexToSimple::sortEdgeList(const QPodPoint eventPoint) { - QIntersectionPoint eventPoint2 = qIntersectionPoint(eventPoint); + QIntersectionPoint eventPoint2 = QT_PREPEND_NAMESPACE(qIntersectionPoint)(eventPoint); while (!m_topIntersection.isEmpty() && m_topIntersection.top().intersectionPoint < eventPoint2) { Intersection intersection = m_topIntersection.pop(); @@ -2056,7 +2056,7 @@ void QTriangulator<T>::ComplexToSimple::calculateIntersections() QPair<QRBTree<int>::Node *, QRBTree<int>::Node *> range = bounds(event.point); QRBTree<int>::Node *leftNode = range.first ? m_edgeList.previous(range.first) : 0; int vertex = (event.type == Event::Upper ? m_edges.at(event.edge).upper() : m_edges.at(event.edge).lower()); - QIntersectionPoint eventPoint = qIntersectionPoint(event.point); + QIntersectionPoint eventPoint = QT_PREPEND_NAMESPACE(qIntersectionPoint)(event.point); if (range.first != 0) { splitEdgeListRange(range.first, range.second, vertex, eventPoint); @@ -2213,7 +2213,7 @@ void QTriangulator<T>::ComplexToSimple::removeUnwantedEdgesAndConnect() while (current != b.second) { Q_ASSERT(current); Q_ASSERT(m_edges.at(current->data).node == current); - Q_ASSERT(qIntersectionPoint(event.point).isOnLine(m_parent->m_vertices.at(m_edges.at(current->data).from), m_parent->m_vertices.at(m_edges.at(current->data).to))); + Q_ASSERT(QT_PREPEND_NAMESPACE(qIntersectionPoint)(event.point).isOnLine(m_parent->m_vertices.at(m_edges.at(current->data).from), m_parent->m_vertices.at(m_edges.at(current->data).to))); Q_ASSERT(m_parent->m_vertices.at(m_edges.at(current->data).from) == event.point || m_parent->m_vertices.at(m_edges.at(current->data).to) == event.point); insertEdgeIntoVectorIfWanted(orderedEdges, current->data); current = m_edgeList.next(current); @@ -2612,10 +2612,10 @@ bool QTriangulator<T>::SimpleToMonotone::edgeIsLeftOfEdge(int leftEdgeIndex, int const Edge &rightEdge = m_edges.at(rightEdgeIndex); const QPodPoint &u = m_parent->m_vertices.at(rightEdge.upper()); const QPodPoint &l = m_parent->m_vertices.at(rightEdge.lower()); - qint64 d = qPointDistanceFromLine(m_parent->m_vertices.at(leftEdge.upper()), l, u); + qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(m_parent->m_vertices.at(leftEdge.upper()), l, u); // d < 0: left, d > 0: right, d == 0: on top if (d == 0) - d = qPointDistanceFromLine(m_parent->m_vertices.at(leftEdge.lower()), l, u); + d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(m_parent->m_vertices.at(leftEdge.lower()), l, u); return d < 0; } @@ -2645,7 +2645,7 @@ QRBTree<int>::Node *QTriangulator<T>::SimpleToMonotone::searchEdgeLeftOfPoint(in while (current) { const QPodPoint &p1 = m_parent->m_vertices.at(m_edges.at(current->data).lower()); const QPodPoint &p2 = m_parent->m_vertices.at(m_edges.at(current->data).upper()); - qint64 d = qPointDistanceFromLine(m_parent->m_vertices.at(pointIndex), p1, p2); + qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(m_parent->m_vertices.at(pointIndex), p1, p2); if (d <= 0) { current = current->left; } else { @@ -2668,7 +2668,7 @@ void QTriangulator<T>::SimpleToMonotone::classifyVertex(int i) const QPodPoint &p1 = m_parent->m_vertices.at(e1.from); const QPodPoint &p2 = m_parent->m_vertices.at(e2.from); const QPodPoint &p3 = m_parent->m_vertices.at(e2.to); - qint64 d = qPointDistanceFromLine(p1, p2, p3); + qint64 d = QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(p1, p2, p3); Q_ASSERT(d != 0 || (!startOrSplit && !endOrMerge)); e2.type = RegularVertex; diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h index 8285f06..547e457 100644 --- a/src/opengl/qgl_p.h +++ b/src/opengl/qgl_p.h @@ -519,7 +519,8 @@ private slots: // when you come to delete the context. QGLContextPrivate::unbindPixmapFromTexture(boundPixmap); glDeleteTextures(1, &id); - oldContext->makeCurrent(); + if (oldContext) + oldContext->makeCurrent(); return; } #endif diff --git a/src/opengl/qglframebufferobject.cpp b/src/opengl/qglframebufferobject.cpp index 8915b5e..a7e81b2 100644 --- a/src/opengl/qglframebufferobject.cpp +++ b/src/opengl/qglframebufferobject.cpp @@ -202,6 +202,35 @@ int QGLFramebufferObjectFormat::samples() const } /*! + \since 4.8 + + Enables or disables mipmapping. Mipmapping is disabled by default. + If mipmapping is enabled, additional memory will be allocated for + the mipmap levels. The mipmap levels can be updated by binding the + texture and calling glGenerateMipmap(). Mipmapping cannot be enabled + for multisampled framebuffer objects. + + \sa mipmap(), texture() +*/ +void QGLFramebufferObjectFormat::setMipmap(bool enabled) +{ + detach(); + d->mipmap = enabled; +} + +/*! + \since 4.8 + + Returns true if mipmapping is enabled. + + \sa setMipmap() +*/ +bool QGLFramebufferObjectFormat::mipmap() const +{ + return d->mipmap; +} + +/*! Sets the attachment configuration of a framebuffer object to \a attachment. \sa attachment() @@ -398,7 +427,8 @@ bool QGLFramebufferObjectPrivate::checkFramebufferStatus() const void QGLFramebufferObjectPrivate::init(QGLFramebufferObject *q, const QSize &sz, QGLFramebufferObject::Attachment attachment, - GLenum texture_target, GLenum internal_format, GLint samples) + GLenum texture_target, GLenum internal_format, + GLint samples, bool mipmap) { QGLContext *ctx = const_cast<QGLContext *>(QGLContext::currentContext()); fbo_guard.setContext(ctx); @@ -426,6 +456,8 @@ void QGLFramebufferObjectPrivate::init(QGLFramebufferObject *q, const QSize &sz, glBindTexture(target, texture); glTexImage2D(target, 0, internal_format, size.width(), size.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); + if (mipmap) + glGenerateMipmap(GL_TEXTURE_2D); #ifndef QT_OPENGL_ES glTexParameteri(target, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(target, GL_TEXTURE_MAG_FILTER, GL_NEAREST); @@ -446,6 +478,7 @@ void QGLFramebufferObjectPrivate::init(QGLFramebufferObject *q, const QSize &sz, color_buffer = 0; } else { + mipmap = false; GLint maxSamples; glGetIntegerv(GL_MAX_SAMPLES_EXT, &maxSamples); @@ -606,6 +639,7 @@ void QGLFramebufferObjectPrivate::init(QGLFramebufferObject *q, const QSize &sz, format.setSamples(int(samples)); format.setAttachment(fbo_attachment); format.setInternalTextureFormat(internal_format); + format.setMipmap(mipmap); } /*! @@ -777,7 +811,7 @@ QGLFramebufferObject::QGLFramebufferObject(const QSize &size, const QGLFramebuff { Q_D(QGLFramebufferObject); d->init(this, size, format.attachment(), format.textureTarget(), format.internalTextureFormat(), - format.samples()); + format.samples(), format.mipmap()); } /*! \overload @@ -791,7 +825,7 @@ QGLFramebufferObject::QGLFramebufferObject(int width, int height, const QGLFrame { Q_D(QGLFramebufferObject); d->init(this, QSize(width, height), format.attachment(), format.textureTarget(), - format.internalTextureFormat(), format.samples()); + format.internalTextureFormat(), format.samples(), format.mipmap()); } #ifdef Q_MAC_COMPAT_GL_FUNCTIONS diff --git a/src/opengl/qglframebufferobject.h b/src/opengl/qglframebufferobject.h index 6ff6645..70d6eb2 100644 --- a/src/opengl/qglframebufferobject.h +++ b/src/opengl/qglframebufferobject.h @@ -148,6 +148,9 @@ public: void setSamples(int samples); int samples() const; + void setMipmap(bool enabled); + bool mipmap() const; + void setAttachment(QGLFramebufferObject::Attachment attachment); QGLFramebufferObject::Attachment attachment() const; diff --git a/src/opengl/qglframebufferobject_p.h b/src/opengl/qglframebufferobject_p.h index 58b4e9e..3738780 100644 --- a/src/opengl/qglframebufferobject_p.h +++ b/src/opengl/qglframebufferobject_p.h @@ -77,7 +77,8 @@ public: samples(0), attachment(QGLFramebufferObject::NoAttachment), target(GL_TEXTURE_2D), - internal_format(DEFAULT_FORMAT) + internal_format(DEFAULT_FORMAT), + mipmap(false) { } QGLFramebufferObjectFormatPrivate @@ -86,7 +87,8 @@ public: samples(other->samples), attachment(other->attachment), target(other->target), - internal_format(other->internal_format) + internal_format(other->internal_format), + mipmap(other->mipmap) { } bool equals(const QGLFramebufferObjectFormatPrivate *other) @@ -94,7 +96,8 @@ public: return samples == other->samples && attachment == other->attachment && target == other->target && - internal_format == other->internal_format; + internal_format == other->internal_format && + mipmap == other->mipmap; } QAtomicInt ref; @@ -102,6 +105,7 @@ public: QGLFramebufferObject::Attachment attachment; GLenum target; GLenum internal_format; + uint mipmap : 1; }; class QGLFBOGLPaintDevice : public QGLPaintDevice @@ -132,7 +136,8 @@ public: void init(QGLFramebufferObject *q, const QSize& sz, QGLFramebufferObject::Attachment attachment, - GLenum internal_format, GLenum texture_target, GLint samples = 0); + GLenum internal_format, GLenum texture_target, + GLint samples = 0, bool mipmap = false); bool checkFramebufferStatus() const; QGLSharedResourceGuard fbo_guard; GLuint texture; diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp index aea203f..b8e8bad 100644 --- a/src/openvg/qpaintengine_vg.cpp +++ b/src/openvg/qpaintengine_vg.cpp @@ -1502,7 +1502,10 @@ void QVGPaintEnginePrivate::fill(VGPath path, const QBrush& brush, VGint rule) return; ensureBrush(brush); setFillRule(rule); + QPen savedPen = currentPen; + currentPen = Qt::NoPen; ensurePathTransform(); + currentPen = savedPen; vgDrawPath(path, VG_FILL_PATH); } @@ -3543,8 +3546,8 @@ void QVGPaintEngine::drawStaticTextItem(QStaticTextItem *textItem) // Set the glyph drawing origin. VGfloat origin[2]; - origin[0] = positions[0].x.toReal(); - origin[1] = positions[0].y.toReal(); + origin[0] = positions[0].x.round().toReal(); + origin[1] = positions[0].y.round().toReal(); vgSetfv(VG_GLYPH_ORIGIN, 2, origin); // Fast anti-aliasing for paths, better for images. diff --git a/src/openvg/qpixmapdata_vg.cpp b/src/openvg/qpixmapdata_vg.cpp index 509882b..c3c7def 100644 --- a/src/openvg/qpixmapdata_vg.cpp +++ b/src/openvg/qpixmapdata_vg.cpp @@ -214,7 +214,7 @@ void QVGPixmapData::createPixmapForImage(QImage &image, Qt::ImageConversionFlags else if (!(flags & Qt::NoOpaqueDetection) && const_cast<QImage &>(image).data_ptr()->checkForAlphaPixels()) format = sourceFormat(); else - format = QImage::Format_RGB32; + format = image.hasAlphaChannel() ? sourceFormat() : QImage::Format_RGB32; if (inPlace && image.data_ptr()->convertInPlace(format, flags)) source = image; diff --git a/src/plugins/bearer/symbian/symbianengine.cpp b/src/plugins/bearer/symbian/symbianengine.cpp index 33fa508..f025d86 100644 --- a/src/plugins/bearer/symbian/symbianengine.cpp +++ b/src/plugins/bearer/symbian/symbianengine.cpp @@ -981,7 +981,7 @@ void SymbianEngine::RunL() QMutexLocker locker(&mutex); if (iStatus != KErrCancel) { - // By default, start relistening notifications. Stop only if interesting event occured. + // By default, start relistening notifications. Stop only if interesting event occurred. iWaitingCommsDatabaseNotifications = true; RDbNotifier::TEvent event = STATIC_CAST(RDbNotifier::TEvent, iStatus.Int()); switch (event) { diff --git a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp index 2eeee24..fbc539b 100644 --- a/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp +++ b/src/plugins/gfxdrivers/directfb/qdirectfbwindowsurface.cpp @@ -344,9 +344,11 @@ void QDirectFBWindowSurface::flush(QWidget *widget, const QRegion ®ion, if (!win) return; +#ifndef QT_NO_QWS_PROXYSCREEN QWExtra *extra = qt_widget_private(widget)->extraData(); if (extra && extra->proxyWidget) return; +#endif const quint8 windowOpacity = quint8(win->windowOpacity() * 0xff); const QRect windowGeometry = geometry(); diff --git a/src/plugins/graphicssystems/meego/qmeegographicssystem.cpp b/src/plugins/graphicssystems/meego/qmeegographicssystem.cpp index 063af13..507f70b 100644 --- a/src/plugins/graphicssystems/meego/qmeegographicssystem.cpp +++ b/src/plugins/graphicssystems/meego/qmeegographicssystem.cpp @@ -83,7 +83,7 @@ QWindowSurface* QMeeGoGraphicsSystem::createWindowSurface(QWidget *widget) const QPixmapData *QMeeGoGraphicsSystem::createPixmapData(QPixmapData::PixelType type) const { // Long story short: without this it's possible to hit an - // unitialized paintDevice due to a Qt bug too complex to even + // uninitialized paintDevice due to a Qt bug too complex to even // explain here... not to mention fix without going crazy. // MDK QGLShareContextScope ctx(qt_gl_share_widget()->context()); diff --git a/src/plugins/s60/feedback/feedback.pro b/src/plugins/s60/feedback/feedback.pro index 1069220..5e577ec 100644 --- a/src/plugins/s60/feedback/feedback.pro +++ b/src/plugins/s60/feedback/feedback.pro @@ -6,7 +6,7 @@ QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/s60/feedback INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE -contains(S60_VERSION, 5.0)|contains(S60_VERSION, symbian3) { +!contains(S60_VERSION, 3.1):!contains(S60_VERSION, 3.2) { HEADERS += qtactileFeedback.h SOURCES += qtactileFeedback_s60.cpp diff --git a/src/plugins/s60/s60.pro b/src/plugins/s60/s60.pro index ffcd170..1ddf326 100644 --- a/src/plugins/s60/s60.pro +++ b/src/plugins/s60/s60.pro @@ -6,7 +6,7 @@ symbian { SUBDIRS += 3_1 3_2 } - contains(S60_VERSION, 5.0)|contains(S60_VERSION, symbian3) { + !contains(S60_VERSION, 3.1):!contains(S60_VERSION, 3.2) { SUBDIRS += feedback } diff --git a/src/qbase.pri b/src/qbase.pri index 76079f2..d3fa426 100644 --- a/src/qbase.pri +++ b/src/qbase.pri @@ -35,7 +35,7 @@ CONFIG += qt warn_on depend_includepath CONFIG += qmake_cache target_qt CONFIG -= fix_output_dirs win32|mac:!macx-xcode:CONFIG += debug_and_release -linux*-g++*:QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF +linux*:QMAKE_LFLAGS += $$QMAKE_LFLAGS_NOUNDEF contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols unix:contains(QT_CONFIG, reduce_relocations):CONFIG += bsymbolic_functions diff --git a/src/s60installs/bwins/QtCoreu.def b/src/s60installs/bwins/QtCoreu.def index a3c7fbb..b678b4e 100644 --- a/src/s60installs/bwins/QtCoreu.def +++ b/src/s60installs/bwins/QtCoreu.def @@ -4486,109 +4486,103 @@ EXPORTS ?objectNameChanged@QAbstractDeclarativeData@@2P6AXPAV1@PAVQObject@@@ZA @ 4485 NONAME ; void (*QAbstractDeclarativeData::objectNameChanged)(class QAbstractDeclarativeData *, class QObject *) ?queueDeferredActiveObjectsCompletion@QEventDispatcherSymbian@@QAEXXZ @ 4486 NONAME ; void QEventDispatcherSymbian::queueDeferredActiveObjectsCompletion(void) ?reactivateDeferredActiveObjects@QEventDispatcherSymbian@@UAEXXZ @ 4487 NONAME ; void QEventDispatcherSymbian::reactivateDeferredActiveObjects(void) - ??0QAnimationDriver@@IAE@AAVQAnimationDriverPrivate@@PAVQObject@@@Z @ 4488 NONAME ; QAnimationDriver::QAnimationDriver(class QAnimationDriverPrivate &, class QObject *) - ??0QAnimationDriver@@QAE@PAVQObject@@@Z @ 4489 NONAME ; QAnimationDriver::QAnimationDriver(class QObject *) - ??0QAnimationDriverPrivate@@QAE@XZ @ 4490 NONAME ; QAnimationDriverPrivate::QAnimationDriverPrivate(void) - ??0QCoreApplication@@QAE@AAHPAPADH@Z @ 4491 NONAME ; QCoreApplication::QCoreApplication(int &, char * *, int) - ??0QCoreApplicationPrivate@@QAE@AAHPAPADI@Z @ 4492 NONAME ; QCoreApplicationPrivate::QCoreApplicationPrivate(int &, char * *, unsigned int) - ??0QFileInfo@@QAE@PAVQFileInfoPrivate@@@Z @ 4493 NONAME ; QFileInfo::QFileInfo(class QFileInfoPrivate *) - ??0QSystemError@@QAE@HW4ErrorScope@0@@Z @ 4494 NONAME ; QSystemError::QSystemError(int, enum QSystemError::ErrorScope) - ??0QSystemError@@QAE@XZ @ 4495 NONAME ; QSystemError::QSystemError(void) - ??0QUnifiedTimer@@AAE@XZ @ 4496 NONAME ; QUnifiedTimer::QUnifiedTimer(void) - ??0QXmlStreamAttributes@@QAE@XZ @ 4497 NONAME ; QXmlStreamAttributes::QXmlStreamAttributes(void) - ??1QAnimationDriver@@UAE@XZ @ 4498 NONAME ; QAnimationDriver::~QAnimationDriver(void) - ??1QAnimationDriverPrivate@@UAE@XZ @ 4499 NONAME ; QAnimationDriverPrivate::~QAnimationDriverPrivate(void) - ??1QUnifiedTimer@@UAE@XZ @ 4500 NONAME ; QUnifiedTimer::~QUnifiedTimer(void) - ??_EQAnimationDriver@@UAE@I@Z @ 4501 NONAME ; QAnimationDriver::~QAnimationDriver(unsigned int) - ??_EQAnimationDriverPrivate@@UAE@I@Z @ 4502 NONAME ; QAnimationDriverPrivate::~QAnimationDriverPrivate(unsigned int) - ??_EQUnifiedTimer@@UAE@I@Z @ 4503 NONAME ; QUnifiedTimer::~QUnifiedTimer(unsigned int) - ?advance@QAnimationDriver@@QAEXXZ @ 4504 NONAME ; void QAnimationDriver::advance(void) - ?cast@QMetaObject@@QBEPBVQObject@@PBV2@@Z @ 4505 NONAME ; class QObject const * QMetaObject::cast(class QObject const *) const - ?closestPauseAnimationTimeToFinish@QUnifiedTimer@@AAEHXZ @ 4506 NONAME ; int QUnifiedTimer::closestPauseAnimationTimeToFinish(void) - ?connect@QObject@@SA_NPBV1@ABVQMetaMethod@@01W4ConnectionType@Qt@@@Z @ 4507 NONAME ; bool QObject::connect(class QObject const *, class QMetaMethod const &, class QObject const *, class QMetaMethod const &, enum Qt::ConnectionType) - ?contains@QString@@QBE?AVQBool@@ABVQStringRef@@W4CaseSensitivity@Qt@@@Z @ 4508 NONAME ; class QBool QString::contains(class QStringRef const &, enum Qt::CaseSensitivity) const - ?contains@QStringRef@@QBE?AVQBool@@ABV1@W4CaseSensitivity@Qt@@@Z @ 4509 NONAME ; class QBool QStringRef::contains(class QStringRef const &, enum Qt::CaseSensitivity) const - ?contains@QStringRef@@QBE?AVQBool@@ABVQString@@W4CaseSensitivity@Qt@@@Z @ 4510 NONAME ; class QBool QStringRef::contains(class QString const &, enum Qt::CaseSensitivity) const - ?contains@QStringRef@@QBE?AVQBool@@VQChar@@W4CaseSensitivity@Qt@@@Z @ 4511 NONAME ; class QBool QStringRef::contains(class QChar, enum Qt::CaseSensitivity) const - ?contains@QStringRef@@QBE?AVQBool@@VQLatin1String@@W4CaseSensitivity@Qt@@@Z @ 4512 NONAME ; class QBool QStringRef::contains(class QLatin1String, enum Qt::CaseSensitivity) const - ?count@QString@@QBEHABVQStringRef@@W4CaseSensitivity@Qt@@@Z @ 4513 NONAME ; int QString::count(class QStringRef const &, enum Qt::CaseSensitivity) const - ?count@QStringRef@@QBEHABV1@W4CaseSensitivity@Qt@@@Z @ 4514 NONAME ; int QStringRef::count(class QStringRef const &, enum Qt::CaseSensitivity) const - ?count@QStringRef@@QBEHABVQString@@W4CaseSensitivity@Qt@@@Z @ 4515 NONAME ; int QStringRef::count(class QString const &, enum Qt::CaseSensitivity) const - ?count@QStringRef@@QBEHVQChar@@W4CaseSensitivity@Qt@@@Z @ 4516 NONAME ; int QStringRef::count(class QChar, enum Qt::CaseSensitivity) const - ?d_func@QAnimationDriver@@AAEPAVQAnimationDriverPrivate@@XZ @ 4517 NONAME ; class QAnimationDriverPrivate * QAnimationDriver::d_func(void) - ?d_func@QAnimationDriver@@ABEPBVQAnimationDriverPrivate@@XZ @ 4518 NONAME ; class QAnimationDriverPrivate const * QAnimationDriver::d_func(void) const + ?contains@QString@@QBE?AVQBool@@ABVQStringRef@@W4CaseSensitivity@Qt@@@Z @ 4488 NONAME ; class QBool QString::contains(class QStringRef const &, enum Qt::CaseSensitivity) const + ?swap@QRegExp@@QAEXAAV1@@Z @ 4489 NONAME ; void QRegExp::swap(class QRegExp &) + ?indexOf@QStringRef@@QBEHABVQString@@HW4CaseSensitivity@Qt@@@Z @ 4490 NONAME ; int QStringRef::indexOf(class QString const &, int, enum Qt::CaseSensitivity) const + ?indexOf@QStringRef@@QBEHABV1@HW4CaseSensitivity@Qt@@@Z @ 4491 NONAME ; int QStringRef::indexOf(class QStringRef const &, int, enum Qt::CaseSensitivity) const + ?count@QString@@QBEHABVQStringRef@@W4CaseSensitivity@Qt@@@Z @ 4492 NONAME ; int QString::count(class QStringRef const &, enum Qt::CaseSensitivity) const + ?swap@QString@@QAEXAAV1@@Z @ 4493 NONAME ; void QString::swap(class QString &) + ?trUtf8@QAnimationDriver@@SA?AVQString@@PBD0H@Z @ 4494 NONAME ; class QString QAnimationDriver::trUtf8(char const *, char const *, int) + ?startsWith@QStringRef@@QBE_NVQChar@@W4CaseSensitivity@Qt@@@Z @ 4495 NONAME ; bool QStringRef::startsWith(class QChar, enum Qt::CaseSensitivity) const + ?setNativeKey@QSharedMemory@@QAEXABVQString@@@Z @ 4496 NONAME ; void QSharedMemory::setNativeKey(class QString const &) + ??0QAnimationDriver@@IAE@AAVQAnimationDriverPrivate@@PAVQObject@@@Z @ 4497 NONAME ; QAnimationDriver::QAnimationDriver(class QAnimationDriverPrivate &, class QObject *) + ?timerEvent@QUnifiedTimer@@MAEXPAVQTimerEvent@@@Z @ 4498 NONAME ; void QUnifiedTimer::timerEvent(class QTimerEvent *) + ?registerAnimation@QUnifiedTimer@@SAXPAVQAbstractAnimation@@_N@Z @ 4499 NONAME ; void QUnifiedTimer::registerAnimation(class QAbstractAnimation *, bool) + ?startsWith@QStringRef@@QBE_NABV1@W4CaseSensitivity@Qt@@@Z @ 4500 NONAME ; bool QStringRef::startsWith(class QStringRef const &, enum Qt::CaseSensitivity) const + ?contains@QStringRef@@QBE?AVQBool@@ABV1@W4CaseSensitivity@Qt@@@Z @ 4501 NONAME ; class QBool QStringRef::contains(class QStringRef const &, enum Qt::CaseSensitivity) const + ?startsWith@QStringRef@@QBE_NVQLatin1String@@W4CaseSensitivity@Qt@@@Z @ 4502 NONAME ; bool QStringRef::startsWith(class QLatin1String, enum Qt::CaseSensitivity) const + ?cast@QMetaObject@@QBEPBVQObject@@PBV2@@Z @ 4503 NONAME ; class QObject const * QMetaObject::cast(class QObject const *) const + ?ensureTimerUpdate@QUnifiedTimer@@SAXXZ @ 4504 NONAME ; void QUnifiedTimer::ensureTimerUpdate(void) + ?contains@QStringRef@@QBE?AVQBool@@VQLatin1String@@W4CaseSensitivity@Qt@@@Z @ 4505 NONAME ; class QBool QStringRef::contains(class QLatin1String, enum Qt::CaseSensitivity) const + ?d_func@QAnimationDriver@@ABEPBVQAnimationDriverPrivate@@XZ @ 4506 NONAME ; class QAnimationDriverPrivate const * QAnimationDriver::d_func(void) const + ?swap@QVariant@@QAEXAAV1@@Z @ 4507 NONAME ; void QVariant::swap(class QVariant &) + ?lastIndexOf@QStringRef@@QBEHABV1@HW4CaseSensitivity@Qt@@@Z @ 4508 NONAME ; int QStringRef::lastIndexOf(class QStringRef const &, int, enum Qt::CaseSensitivity) const + ?indexOf@QStringRef@@QBEHVQLatin1String@@HW4CaseSensitivity@Qt@@@Z @ 4509 NONAME ; int QStringRef::indexOf(class QLatin1String, int, enum Qt::CaseSensitivity) const + ?senderSignalIndex@QObject@@IBEHXZ @ 4510 NONAME ; int QObject::senderSignalIndex(void) const + ?toUtf8@QStringRef@@QBE?AVQByteArray@@XZ @ 4511 NONAME ; class QByteArray QStringRef::toUtf8(void) const + ?startsWith@QString@@QBE_NABVQStringRef@@W4CaseSensitivity@Qt@@@Z @ 4512 NONAME ; bool QString::startsWith(class QStringRef const &, enum Qt::CaseSensitivity) const + ?unlockInternal@QMutex@@AAEXXZ @ 4513 NONAME ; void QMutex::unlockInternal(void) + ?updateAnimationsTime@QUnifiedTimer@@QAEXXZ @ 4514 NONAME ; void QUnifiedTimer::updateAnimationsTime(void) + ?swap@QBitArray@@QAEXAAV1@@Z @ 4515 NONAME ; void QBitArray::swap(class QBitArray &) + ?nativeKey@QSharedMemory@@QBE?AVQString@@XZ @ 4516 NONAME ; class QString QSharedMemory::nativeKey(void) const + ?connect@QObject@@SA_NPBV1@ABVQMetaMethod@@01W4ConnectionType@Qt@@@Z @ 4517 NONAME ; bool QObject::connect(class QObject const *, class QMetaMethod const &, class QObject const *, class QMetaMethod const &, enum Qt::ConnectionType) + ?registerRunningAnimation@QUnifiedTimer@@AAEXPAVQAbstractAnimation@@@Z @ 4518 NONAME ; void QUnifiedTimer::registerRunningAnimation(class QAbstractAnimation *) ?disconnect@QObject@@SA_NPBV1@ABVQMetaMethod@@01@Z @ 4519 NONAME ; bool QObject::disconnect(class QObject const *, class QMetaMethod const &, class QObject const *, class QMetaMethod const &) - ?endsWith@QString@@QBE_NABVQStringRef@@W4CaseSensitivity@Qt@@@Z @ 4520 NONAME ; bool QString::endsWith(class QStringRef const &, enum Qt::CaseSensitivity) const - ?endsWith@QStringRef@@QBE_NABV1@W4CaseSensitivity@Qt@@@Z @ 4521 NONAME ; bool QStringRef::endsWith(class QStringRef const &, enum Qt::CaseSensitivity) const - ?endsWith@QStringRef@@QBE_NABVQString@@W4CaseSensitivity@Qt@@@Z @ 4522 NONAME ; bool QStringRef::endsWith(class QString const &, enum Qt::CaseSensitivity) const - ?endsWith@QStringRef@@QBE_NVQChar@@W4CaseSensitivity@Qt@@@Z @ 4523 NONAME ; bool QStringRef::endsWith(class QChar, enum Qt::CaseSensitivity) const - ?endsWith@QStringRef@@QBE_NVQLatin1String@@W4CaseSensitivity@Qt@@@Z @ 4524 NONAME ; bool QStringRef::endsWith(class QLatin1String, enum Qt::CaseSensitivity) const - ?ensureTimerUpdate@QUnifiedTimer@@SAXXZ @ 4525 NONAME ; void QUnifiedTimer::ensureTimerUpdate(void) - ?error@QSystemError@@QAEHXZ @ 4526 NONAME ; int QSystemError::error(void) - ?getStaticMetaObject@QAnimationDriver@@SAABUQMetaObject@@XZ @ 4527 NONAME ; struct QMetaObject const & QAnimationDriver::getStaticMetaObject(void) - ?indexOf@QString@@QBEHABVQStringRef@@HW4CaseSensitivity@Qt@@@Z @ 4528 NONAME ; int QString::indexOf(class QStringRef const &, int, enum Qt::CaseSensitivity) const - ?indexOf@QStringRef@@QBEHABV1@HW4CaseSensitivity@Qt@@@Z @ 4529 NONAME ; int QStringRef::indexOf(class QStringRef const &, int, enum Qt::CaseSensitivity) const - ?indexOf@QStringRef@@QBEHABVQString@@HW4CaseSensitivity@Qt@@@Z @ 4530 NONAME ; int QStringRef::indexOf(class QString const &, int, enum Qt::CaseSensitivity) const - ?indexOf@QStringRef@@QBEHVQChar@@HW4CaseSensitivity@Qt@@@Z @ 4531 NONAME ; int QStringRef::indexOf(class QChar, int, enum Qt::CaseSensitivity) const - ?indexOf@QStringRef@@QBEHVQLatin1String@@HW4CaseSensitivity@Qt@@@Z @ 4532 NONAME ; int QStringRef::indexOf(class QLatin1String, int, enum Qt::CaseSensitivity) const - ?install@QAnimationDriver@@QAEXXZ @ 4533 NONAME ; void QAnimationDriver::install(void) - ?installAnimationDriver@QUnifiedTimer@@QAEXPAVQAnimationDriver@@@Z @ 4534 NONAME ; void QUnifiedTimer::installAnimationDriver(class QAnimationDriver *) - ?instance@QUnifiedTimer@@SAPAV1@_N@Z @ 4535 NONAME ; class QUnifiedTimer * QUnifiedTimer::instance(bool) - ?isLocalFile@QUrl@@QBE_NXZ @ 4536 NONAME ; bool QUrl::isLocalFile(void) const - ?isRunning@QAnimationDriver@@QBE_NXZ @ 4537 NONAME ; bool QAnimationDriver::isRunning(void) const - ?lastIndexOf@QString@@QBEHABVQStringRef@@HW4CaseSensitivity@Qt@@@Z @ 4538 NONAME ; int QString::lastIndexOf(class QStringRef const &, int, enum Qt::CaseSensitivity) const - ?lastIndexOf@QStringRef@@QBEHABV1@HW4CaseSensitivity@Qt@@@Z @ 4539 NONAME ; int QStringRef::lastIndexOf(class QStringRef const &, int, enum Qt::CaseSensitivity) const - ?lastIndexOf@QStringRef@@QBEHABVQString@@HW4CaseSensitivity@Qt@@@Z @ 4540 NONAME ; int QStringRef::lastIndexOf(class QString const &, int, enum Qt::CaseSensitivity) const - ?lastIndexOf@QStringRef@@QBEHVQChar@@HW4CaseSensitivity@Qt@@@Z @ 4541 NONAME ; int QStringRef::lastIndexOf(class QChar, int, enum Qt::CaseSensitivity) const - ?lastIndexOf@QStringRef@@QBEHVQLatin1String@@HW4CaseSensitivity@Qt@@@Z @ 4542 NONAME ; int QStringRef::lastIndexOf(class QLatin1String, int, enum Qt::CaseSensitivity) const - ?lockInline@QMutex@@QAEXXZ @ 4543 NONAME ; void QMutex::lockInline(void) - ?lockInternal@QMutex@@AAEXXZ @ 4544 NONAME ; void QMutex::lockInternal(void) - ?metaObject@QAnimationDriver@@UBEPBUQMetaObject@@XZ @ 4545 NONAME ; struct QMetaObject const * QAnimationDriver::metaObject(void) const - ?nativeKey@QSharedMemory@@QBE?AVQString@@XZ @ 4546 NONAME ; class QString QSharedMemory::nativeKey(void) const - ?qt_metacall@QAnimationDriver@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 4547 NONAME ; int QAnimationDriver::qt_metacall(enum QMetaObject::Call, int, void * *) - ?qt_metacast@QAnimationDriver@@UAEPAXPBD@Z @ 4548 NONAME ; void * QAnimationDriver::qt_metacast(char const *) - ?registerAnimation@QUnifiedTimer@@SAXPAVQAbstractAnimation@@_N@Z @ 4549 NONAME ; void QUnifiedTimer::registerAnimation(class QAbstractAnimation *, bool) - ?registerRunningAnimation@QUnifiedTimer@@AAEXPAVQAbstractAnimation@@@Z @ 4550 NONAME ; void QUnifiedTimer::registerRunningAnimation(class QAbstractAnimation *) - ?restartAnimationTimer@QUnifiedTimer@@QAEXXZ @ 4551 NONAME ; void QUnifiedTimer::restartAnimationTimer(void) - ?scope@QSystemError@@QAE?AW4ErrorScope@1@XZ @ 4552 NONAME ; enum QSystemError::ErrorScope QSystemError::scope(void) - ?senderSignalIndex@QObject@@IBEHXZ @ 4553 NONAME ; int QObject::senderSignalIndex(void) const - ?setConsistentTiming@QUnifiedTimer@@QAEX_N@Z @ 4554 NONAME ; void QUnifiedTimer::setConsistentTiming(bool) - ?setNativeKey@QSharedMemory@@QAEXABVQString@@@Z @ 4555 NONAME ; void QSharedMemory::setNativeKey(class QString const &) - ?setSlowModeEnabled@QUnifiedTimer@@QAEX_N@Z @ 4556 NONAME ; void QUnifiedTimer::setSlowModeEnabled(bool) - ?setSlowdownFactor@QUnifiedTimer@@QAEXM@Z @ 4557 NONAME ; void QUnifiedTimer::setSlowdownFactor(float) - ?setTimingInterval@QUnifiedTimer@@QAEXH@Z @ 4558 NONAME ; void QUnifiedTimer::setTimingInterval(int) - ?start@QAnimationDriver@@AAEXXZ @ 4559 NONAME ; void QAnimationDriver::start(void) - ?startsWith@QString@@QBE_NABVQStringRef@@W4CaseSensitivity@Qt@@@Z @ 4560 NONAME ; bool QString::startsWith(class QStringRef const &, enum Qt::CaseSensitivity) const - ?startsWith@QStringRef@@QBE_NABV1@W4CaseSensitivity@Qt@@@Z @ 4561 NONAME ; bool QStringRef::startsWith(class QStringRef const &, enum Qt::CaseSensitivity) const - ?startsWith@QStringRef@@QBE_NABVQString@@W4CaseSensitivity@Qt@@@Z @ 4562 NONAME ; bool QStringRef::startsWith(class QString const &, enum Qt::CaseSensitivity) const - ?startsWith@QStringRef@@QBE_NVQChar@@W4CaseSensitivity@Qt@@@Z @ 4563 NONAME ; bool QStringRef::startsWith(class QChar, enum Qt::CaseSensitivity) const - ?startsWith@QStringRef@@QBE_NVQLatin1String@@W4CaseSensitivity@Qt@@@Z @ 4564 NONAME ; bool QStringRef::startsWith(class QLatin1String, enum Qt::CaseSensitivity) const - ?stop@QAnimationDriver@@AAEXXZ @ 4565 NONAME ; void QAnimationDriver::stop(void) - ?swap@QBitArray@@QAEXAAV1@@Z @ 4566 NONAME ; void QBitArray::swap(class QBitArray &) - ?swap@QByteArray@@QAEXAAV1@@Z @ 4567 NONAME ; void QByteArray::swap(class QByteArray &) - ?swap@QRegExp@@QAEXAAV1@@Z @ 4568 NONAME ; void QRegExp::swap(class QRegExp &) - ?swap@QString@@QAEXAAV1@@Z @ 4569 NONAME ; void QString::swap(class QString &) - ?swap@QUrl@@QAEXAAV1@@Z @ 4570 NONAME ; void QUrl::swap(class QUrl &) - ?swap@QVariant@@QAEXAAV1@@Z @ 4571 NONAME ; void QVariant::swap(class QVariant &) - ?timerEvent@QUnifiedTimer@@MAEXPAVQTimerEvent@@@Z @ 4572 NONAME ; void QUnifiedTimer::timerEvent(class QTimerEvent *) - ?toAscii@QStringRef@@QBE?AVQByteArray@@XZ @ 4573 NONAME ; class QByteArray QStringRef::toAscii(void) const - ?toLatin1@QStringRef@@QBE?AVQByteArray@@XZ @ 4574 NONAME ; class QByteArray QStringRef::toLatin1(void) const - ?toLocal8Bit@QStringRef@@QBE?AVQByteArray@@XZ @ 4575 NONAME ; class QByteArray QStringRef::toLocal8Bit(void) const - ?toString@QSystemError@@QAE?AVQString@@XZ @ 4576 NONAME ; class QString QSystemError::toString(void) - ?toUcs4@QStringRef@@QBE?AV?$QVector@I@@XZ @ 4577 NONAME ; class QVector<unsigned int> QStringRef::toUcs4(void) const - ?toUtf8@QStringRef@@QBE?AVQByteArray@@XZ @ 4578 NONAME ; class QByteArray QStringRef::toUtf8(void) const - ?tr@QAnimationDriver@@SA?AVQString@@PBD0@Z @ 4579 NONAME ; class QString QAnimationDriver::tr(char const *, char const *) - ?tr@QAnimationDriver@@SA?AVQString@@PBD0H@Z @ 4580 NONAME ; class QString QAnimationDriver::tr(char const *, char const *, int) - ?trUtf8@QAnimationDriver@@SA?AVQString@@PBD0@Z @ 4581 NONAME ; class QString QAnimationDriver::trUtf8(char const *, char const *) - ?trUtf8@QAnimationDriver@@SA?AVQString@@PBD0H@Z @ 4582 NONAME ; class QString QAnimationDriver::trUtf8(char const *, char const *, int) - ?tryLockInline@QMutex@@QAE_NXZ @ 4583 NONAME ; bool QMutex::tryLockInline(void) - ?unlockInline@QMutex@@QAEXXZ @ 4584 NONAME ; void QMutex::unlockInline(void) - ?unlockInternal@QMutex@@AAEXXZ @ 4585 NONAME ; void QMutex::unlockInternal(void) - ?unregisterAnimation@QUnifiedTimer@@SAXPAVQAbstractAnimation@@@Z @ 4586 NONAME ; void QUnifiedTimer::unregisterAnimation(class QAbstractAnimation *) - ?unregisterRunningAnimation@QUnifiedTimer@@AAEXPAVQAbstractAnimation@@@Z @ 4587 NONAME ; void QUnifiedTimer::unregisterRunningAnimation(class QAbstractAnimation *) - ?updateAnimationTimer@QUnifiedTimer@@SAXXZ @ 4588 NONAME ; void QUnifiedTimer::updateAnimationTimer(void) - ?updateAnimationsTime@QUnifiedTimer@@QAEXXZ @ 4589 NONAME ; void QUnifiedTimer::updateAnimationsTime(void) - ?waitForDone@QThreadPool@@QAE_NH@Z @ 4590 NONAME ; bool QThreadPool::waitForDone(int) - ?app_compile_version@QCoreApplicationPrivate@@2HA @ 4591 NONAME ; int QCoreApplicationPrivate::app_compile_version - ?staticMetaObject@QAnimationDriver@@2UQMetaObject@@B @ 4592 NONAME ; struct QMetaObject const QAnimationDriver::staticMetaObject + ?installAnimationDriver@QUnifiedTimer@@QAEXPAVQAnimationDriver@@@Z @ 4520 NONAME ; void QUnifiedTimer::installAnimationDriver(class QAnimationDriver *) + ?startsWith@QStringRef@@QBE_NABVQString@@W4CaseSensitivity@Qt@@@Z @ 4521 NONAME ; bool QStringRef::startsWith(class QString const &, enum Qt::CaseSensitivity) const + ?contains@QStringRef@@QBE?AVQBool@@VQChar@@W4CaseSensitivity@Qt@@@Z @ 4522 NONAME ; class QBool QStringRef::contains(class QChar, enum Qt::CaseSensitivity) const + ?unregisterAnimation@QUnifiedTimer@@SAXPAVQAbstractAnimation@@@Z @ 4523 NONAME ; void QUnifiedTimer::unregisterAnimation(class QAbstractAnimation *) + ?qt_metacast@QAnimationDriver@@UAEPAXPBD@Z @ 4524 NONAME ; void * QAnimationDriver::qt_metacast(char const *) + ?count@QStringRef@@QBEHABVQString@@W4CaseSensitivity@Qt@@@Z @ 4525 NONAME ; int QStringRef::count(class QString const &, enum Qt::CaseSensitivity) const + ?endsWith@QStringRef@@QBE_NVQChar@@W4CaseSensitivity@Qt@@@Z @ 4526 NONAME ; bool QStringRef::endsWith(class QChar, enum Qt::CaseSensitivity) const + ??0QUnifiedTimer@@AAE@XZ @ 4527 NONAME ; QUnifiedTimer::QUnifiedTimer(void) + ??0QCoreApplicationPrivate@@QAE@AAHPAPADI@Z @ 4528 NONAME ; QCoreApplicationPrivate::QCoreApplicationPrivate(int &, char * *, unsigned int) + ??0QCoreApplication@@QAE@AAHPAPADH@Z @ 4529 NONAME ; QCoreApplication::QCoreApplication(int &, char * *, int) + ??0QAnimationDriver@@QAE@PAVQObject@@@Z @ 4530 NONAME ; QAnimationDriver::QAnimationDriver(class QObject *) + ?lastIndexOf@QStringRef@@QBEHVQLatin1String@@HW4CaseSensitivity@Qt@@@Z @ 4531 NONAME ; int QStringRef::lastIndexOf(class QLatin1String, int, enum Qt::CaseSensitivity) const + ??0QAnimationDriverPrivate@@QAE@XZ @ 4532 NONAME ; QAnimationDriverPrivate::QAnimationDriverPrivate(void) + ?endsWith@QString@@QBE_NABVQStringRef@@W4CaseSensitivity@Qt@@@Z @ 4533 NONAME ; bool QString::endsWith(class QStringRef const &, enum Qt::CaseSensitivity) const + ?trUtf8@QAnimationDriver@@SA?AVQString@@PBD0@Z @ 4534 NONAME ; class QString QAnimationDriver::trUtf8(char const *, char const *) + ?install@QAnimationDriver@@QAEXXZ @ 4535 NONAME ; void QAnimationDriver::install(void) + ?qt_metacall@QAnimationDriver@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 4536 NONAME ; int QAnimationDriver::qt_metacall(enum QMetaObject::Call, int, void * *) + ?endsWith@QStringRef@@QBE_NABVQString@@W4CaseSensitivity@Qt@@@Z @ 4537 NONAME ; bool QStringRef::endsWith(class QString const &, enum Qt::CaseSensitivity) const + ?lockInline@QMutex@@QAEXXZ @ 4538 NONAME ; void QMutex::lockInline(void) + ?endsWith@QStringRef@@QBE_NABV1@W4CaseSensitivity@Qt@@@Z @ 4539 NONAME ; bool QStringRef::endsWith(class QStringRef const &, enum Qt::CaseSensitivity) const + ??_EQUnifiedTimer@@UAE@I@Z @ 4540 NONAME ; QUnifiedTimer::~QUnifiedTimer(unsigned int) + ?setTimingInterval@QUnifiedTimer@@QAEXH@Z @ 4541 NONAME ; void QUnifiedTimer::setTimingInterval(int) + ?closestPauseAnimationTimeToFinish@QUnifiedTimer@@AAEHXZ @ 4542 NONAME ; int QUnifiedTimer::closestPauseAnimationTimeToFinish(void) + ??0QXmlStreamAttributes@@QAE@XZ @ 4543 NONAME ; QXmlStreamAttributes::QXmlStreamAttributes(void) + ?lastIndexOf@QString@@QBEHABVQStringRef@@HW4CaseSensitivity@Qt@@@Z @ 4544 NONAME ; int QString::lastIndexOf(class QStringRef const &, int, enum Qt::CaseSensitivity) const + ??1QAnimationDriverPrivate@@UAE@XZ @ 4545 NONAME ; QAnimationDriverPrivate::~QAnimationDriverPrivate(void) + ?swap@QUrl@@QAEXAAV1@@Z @ 4546 NONAME ; void QUrl::swap(class QUrl &) + ??_EQAnimationDriverPrivate@@UAE@I@Z @ 4547 NONAME ; QAnimationDriverPrivate::~QAnimationDriverPrivate(unsigned int) + ??_EQAnimationDriver@@UAE@I@Z @ 4548 NONAME ; QAnimationDriver::~QAnimationDriver(unsigned int) + ?instance@QUnifiedTimer@@SAPAV1@_N@Z @ 4549 NONAME ; class QUnifiedTimer * QUnifiedTimer::instance(bool) + ?setSlowdownFactor@QUnifiedTimer@@QAEXM@Z @ 4550 NONAME ; void QUnifiedTimer::setSlowdownFactor(float) + ?isRunning@QAnimationDriver@@QBE_NXZ @ 4551 NONAME ; bool QAnimationDriver::isRunning(void) const + ?count@QStringRef@@QBEHABV1@W4CaseSensitivity@Qt@@@Z @ 4552 NONAME ; int QStringRef::count(class QStringRef const &, enum Qt::CaseSensitivity) const + ?contains@QStringRef@@QBE?AVQBool@@ABVQString@@W4CaseSensitivity@Qt@@@Z @ 4553 NONAME ; class QBool QStringRef::contains(class QString const &, enum Qt::CaseSensitivity) const + ?tryLockInline@QMutex@@QAE_NXZ @ 4554 NONAME ; bool QMutex::tryLockInline(void) + ?lastIndexOf@QStringRef@@QBEHABVQString@@HW4CaseSensitivity@Qt@@@Z @ 4555 NONAME ; int QStringRef::lastIndexOf(class QString const &, int, enum Qt::CaseSensitivity) const + ?lockInternal@QMutex@@AAEXXZ @ 4556 NONAME ; void QMutex::lockInternal(void) + ?toLocal8Bit@QStringRef@@QBE?AVQByteArray@@XZ @ 4557 NONAME ; class QByteArray QStringRef::toLocal8Bit(void) const + ?indexOf@QStringRef@@QBEHVQChar@@HW4CaseSensitivity@Qt@@@Z @ 4558 NONAME ; int QStringRef::indexOf(class QChar, int, enum Qt::CaseSensitivity) const + ?toUcs4@QStringRef@@QBE?AV?$QVector@I@@XZ @ 4559 NONAME ; class QVector<unsigned int> QStringRef::toUcs4(void) const + ?staticMetaObject@QAnimationDriver@@2UQMetaObject@@B @ 4560 NONAME ; struct QMetaObject const QAnimationDriver::staticMetaObject + ?unregisterRunningAnimation@QUnifiedTimer@@AAEXPAVQAbstractAnimation@@@Z @ 4561 NONAME ; void QUnifiedTimer::unregisterRunningAnimation(class QAbstractAnimation *) + ?isLocalFile@QUrl@@QBE_NXZ @ 4562 NONAME ; bool QUrl::isLocalFile(void) const + ?swap@QByteArray@@QAEXAAV1@@Z @ 4563 NONAME ; void QByteArray::swap(class QByteArray &) + ?tr@QAnimationDriver@@SA?AVQString@@PBD0H@Z @ 4564 NONAME ; class QString QAnimationDriver::tr(char const *, char const *, int) + ?toLatin1@QStringRef@@QBE?AVQByteArray@@XZ @ 4565 NONAME ; class QByteArray QStringRef::toLatin1(void) const + ??1QAnimationDriver@@UAE@XZ @ 4566 NONAME ; QAnimationDriver::~QAnimationDriver(void) + ?tr@QAnimationDriver@@SA?AVQString@@PBD0@Z @ 4567 NONAME ; class QString QAnimationDriver::tr(char const *, char const *) + ?waitForDone@QThreadPool@@QAE_NH@Z @ 4568 NONAME ; bool QThreadPool::waitForDone(int) + ?endsWith@QStringRef@@QBE_NVQLatin1String@@W4CaseSensitivity@Qt@@@Z @ 4569 NONAME ; bool QStringRef::endsWith(class QLatin1String, enum Qt::CaseSensitivity) const + ?stop@QAnimationDriver@@AAEXXZ @ 4570 NONAME ; void QAnimationDriver::stop(void) + ?getStaticMetaObject@QAnimationDriver@@SAABUQMetaObject@@XZ @ 4571 NONAME ; struct QMetaObject const & QAnimationDriver::getStaticMetaObject(void) + ?metaObject@QAnimationDriver@@UBEPBUQMetaObject@@XZ @ 4572 NONAME ; struct QMetaObject const * QAnimationDriver::metaObject(void) const + ?d_func@QAnimationDriver@@AAEPAVQAnimationDriverPrivate@@XZ @ 4573 NONAME ; class QAnimationDriverPrivate * QAnimationDriver::d_func(void) + ?app_compile_version@QCoreApplicationPrivate@@2HA @ 4574 NONAME ; int QCoreApplicationPrivate::app_compile_version + ?restartAnimationTimer@QUnifiedTimer@@QAEXXZ @ 4575 NONAME ; void QUnifiedTimer::restartAnimationTimer(void) + ?count@QStringRef@@QBEHVQChar@@W4CaseSensitivity@Qt@@@Z @ 4576 NONAME ; int QStringRef::count(class QChar, enum Qt::CaseSensitivity) const + ?toAscii@QStringRef@@QBE?AVQByteArray@@XZ @ 4577 NONAME ; class QByteArray QStringRef::toAscii(void) const + ?setConsistentTiming@QUnifiedTimer@@QAEX_N@Z @ 4578 NONAME ; void QUnifiedTimer::setConsistentTiming(bool) + ??1QUnifiedTimer@@UAE@XZ @ 4579 NONAME ; QUnifiedTimer::~QUnifiedTimer(void) + ?setSlowModeEnabled@QUnifiedTimer@@QAEX_N@Z @ 4580 NONAME ; void QUnifiedTimer::setSlowModeEnabled(bool) + ?updateAnimationTimer@QUnifiedTimer@@SAXXZ @ 4581 NONAME ; void QUnifiedTimer::updateAnimationTimer(void) + ?indexOf@QString@@QBEHABVQStringRef@@HW4CaseSensitivity@Qt@@@Z @ 4582 NONAME ; int QString::indexOf(class QStringRef const &, int, enum Qt::CaseSensitivity) const + ?lastIndexOf@QStringRef@@QBEHVQChar@@HW4CaseSensitivity@Qt@@@Z @ 4583 NONAME ; int QStringRef::lastIndexOf(class QChar, int, enum Qt::CaseSensitivity) const + ?advance@QAnimationDriver@@QAEXXZ @ 4584 NONAME ; void QAnimationDriver::advance(void) + ?start@QAnimationDriver@@AAEXXZ @ 4585 NONAME ; void QAnimationDriver::start(void) + ?unlockInline@QMutex@@QAEXXZ @ 4586 NONAME ; void QMutex::unlockInline(void) diff --git a/src/s60installs/bwins/QtGuiu.def b/src/s60installs/bwins/QtGuiu.def index 8d8f500..8dcc235 100644 --- a/src/s60installs/bwins/QtGuiu.def +++ b/src/s60installs/bwins/QtGuiu.def @@ -12852,7 +12852,7 @@ EXPORTS ?drawStaticText@QPainter@@QAEXABVQPointF@@ABVQStaticText@@@Z @ 12851 NONAME ; void QPainter::drawStaticText(class QPointF const &, class QStaticText const &) ?updateAll@QGraphicsViewPrivate@@QAEXXZ @ 12852 NONAME ; void QGraphicsViewPrivate::updateAll(void) ?updateMicroFocus@QGraphicsItem@@IAEXXZ @ 12853 NONAME ; void QGraphicsItem::updateMicroFocus(void) - ?populate@QTextureGlyphCache@@QAEXPAVQFontEngine@@HPBIPBUQFixedPoint@@@Z @ 12854 NONAME ; void QTextureGlyphCache::populate(class QFontEngine *, int, unsigned int const *, struct QFixedPoint const *) + ?populate@QTextureGlyphCache@@QAEXPAVQFontEngine@@HPBIPBUQFixedPoint@@@Z @ 12854 NONAME ABSENT ; void QTextureGlyphCache::populate(class QFontEngine *, int, unsigned int const *, struct QFixedPoint const *) ?hasPartialUpdateSupport@QWindowSurface@@QBE_NXZ @ 12855 NONAME ; bool QWindowSurface::hasPartialUpdateSupport(void) const ?scroll@QRuntimePixmapData@@UAE_NHHABVQRect@@@Z @ 12856 NONAME ; bool QRuntimePixmapData::scroll(int, int, class QRect const &) ?qt_draw_glyphs@@YAXPAVQPainter@@PBIPBVQPointF@@H@Z @ 12857 NONAME ; void qt_draw_glyphs(class QPainter *, unsigned int const *, class QPointF const *, int) @@ -12898,156 +12898,157 @@ EXPORTS ?qmljsDebugArgumentsString@QApplicationPrivate@@SA?AVQString@@XZ @ 12897 NONAME ; class QString QApplicationPrivate::qmljsDebugArgumentsString(void) ?convertToPostscriptFontFamilyName@QFontEngine@@SA?AVQByteArray@@ABV2@@Z @ 12898 NONAME ; class QByteArray QFontEngine::convertToPostscriptFontFamilyName(class QByteArray const &) ?lastResortFont@QFont@@QBE?AVQString@@XZ @ 12899 NONAME ; class QString QFont::lastResortFont(void) const - ??0QApplicationPrivate@@QAE@AAHPAPADW4Type@QApplication@@H@Z @ 12900 NONAME ; QApplicationPrivate::QApplicationPrivate(int &, char * *, enum QApplication::Type, int) - ??0QBlittable@@QAE@ABVQSize@@V?$QFlags@W4Capability@QBlittable@@@@@Z @ 12901 NONAME ; QBlittable::QBlittable(class QSize const &, class QFlags<enum QBlittable::Capability>) - ??0QBlittablePixmapData@@QAE@XZ @ 12902 NONAME ; QBlittablePixmapData::QBlittablePixmapData(void) - ??0QBlitterPaintEngine@@QAE@PAVQBlittablePixmapData@@@Z @ 12903 NONAME ; QBlitterPaintEngine::QBlitterPaintEngine(class QBlittablePixmapData *) - ??0QGlyphs@@QAE@ABV0@@Z @ 12904 NONAME ; QGlyphs::QGlyphs(class QGlyphs const &) - ??0QGlyphs@@QAE@XZ @ 12905 NONAME ; QGlyphs::QGlyphs(void) - ??0QRasterWindowSurface@@QAE@PAVQWidget@@_N@Z @ 12906 NONAME ; QRasterWindowSurface::QRasterWindowSurface(class QWidget *, bool) - ??0QStaticTextItem@@QAE@ABV0@@Z @ 12907 NONAME ; QStaticTextItem::QStaticTextItem(class QStaticTextItem const &) - ??0QWindowSurface@@QAE@PAVQWidget@@_N@Z @ 12908 NONAME ; QWindowSurface::QWindowSurface(class QWidget *, bool) - ??1QBlittable@@UAE@XZ @ 12909 NONAME ; QBlittable::~QBlittable(void) - ??1QBlittablePixmapData@@UAE@XZ @ 12910 NONAME ; QBlittablePixmapData::~QBlittablePixmapData(void) - ??1QBlitterPaintEngine@@UAE@XZ @ 12911 NONAME ; QBlitterPaintEngine::~QBlitterPaintEngine(void) - ??1QGlyphs@@QAE@XZ @ 12912 NONAME ; QGlyphs::~QGlyphs(void) - ??4QGlyphs@@QAEAAV0@ABV0@@Z @ 12913 NONAME ; class QGlyphs & QGlyphs::operator=(class QGlyphs const &) - ??4QStaticTextItem@@QAEXABV0@@Z @ 12914 NONAME ; void QStaticTextItem::operator=(class QStaticTextItem const &) - ??6@YA?AVQDebug@@V0@PBVQSymbianEvent@@@Z @ 12915 NONAME ; class QDebug operator<<(class QDebug, class QSymbianEvent const *) - ??8QGlyphs@@QBE_NABV0@@Z @ 12916 NONAME ; bool QGlyphs::operator==(class QGlyphs const &) const - ??9QGlyphs@@QBE_NABV0@@Z @ 12917 NONAME ; bool QGlyphs::operator!=(class QGlyphs const &) const - ??HQGlyphs@@ABE?AV0@ABV0@@Z @ 12918 NONAME ; class QGlyphs QGlyphs::operator+(class QGlyphs const &) const + ?setFontEngine@QStaticTextItem@@QAEXPAVQFontEngine@@@Z @ 12900 NONAME ; void QStaticTextItem::setFontEngine(class QFontEngine *) + ??0QStaticTextItem@@QAE@ABV0@@Z @ 12901 NONAME ; QStaticTextItem::QStaticTextItem(class QStaticTextItem const &) + ??4QStaticTextItem@@QAEXABV0@@Z @ 12902 NONAME ; void QStaticTextItem::operator=(class QStaticTextItem const &) + ?fontEngine@QStaticTextItem@@QBEPAVQFontEngine@@XZ @ 12903 NONAME ; class QFontEngine * QStaticTextItem::fontEngine(void) const + ?reactivateDeferredActiveObjects@QEventDispatcherS60@@UAEXXZ @ 12904 NONAME ; void QEventDispatcherS60::reactivateDeferredActiveObjects(void) + ?userData@QStaticTextItem@@QBEPAVQStaticTextUserData@@XZ @ 12905 NONAME ; class QStaticTextUserData * QStaticTextItem::userData(void) const + ?populate@QTextureGlyphCache@@QAE_NPAVQFontEngine@@HPBIPBUQFixedPoint@@@Z @ 12906 NONAME ; bool QTextureGlyphCache::populate(class QFontEngine *, int, unsigned int const *, struct QFixedPoint const *) + ?clipEnabledChanged@QBlitterPaintEngine@@UAEXXZ @ 12907 NONAME ; void QBlitterPaintEngine::clipEnabledChanged(void) + ?supportsSubPixelPositions@QFontEngine@@UBE_NXZ @ 12908 NONAME ; bool QFontEngine::supportsSubPixelPositions(void) const + ?heightForWidth@QTabWidget@@UBEHH@Z @ 12909 NONAME ; int QTabWidget::heightForWidth(int) const + ??0QRasterWindowSurface@@QAE@PAVQWidget@@_N@Z @ 12910 NONAME ; QRasterWindowSurface::QRasterWindowSurface(class QWidget *, bool) + ?brushChanged@QBlitterPaintEngine@@UAEXXZ @ 12911 NONAME ; void QBlitterPaintEngine::brushChanged(void) + ?clip@QBlitterPaintEngine@@UAEXABVQRect@@W4ClipOperation@Qt@@@Z @ 12912 NONAME ; void QBlitterPaintEngine::clip(class QRect const &, enum Qt::ClipOperation) + ?detach@QGlyphs@@AAEXXZ @ 12913 NONAME ; void QGlyphs::detach(void) + ?capabilities@QBlittable@@QBE?AV?$QFlags@W4Capability@QBlittable@@@@XZ @ 12914 NONAME ; class QFlags<enum QBlittable::Capability> QBlittable::capabilities(void) const + ?swap@QBrush@@QAEXAAV1@@Z @ 12915 NONAME ; void QBrush::swap(class QBrush &) + ?swap@QPixmap@@QAEXAAV1@@Z @ 12916 NONAME ; void QPixmap::swap(class QPixmap &) + ??0QBlitterPaintEngine@@QAE@PAVQBlittablePixmapData@@@Z @ 12917 NONAME ; QBlitterPaintEngine::QBlitterPaintEngine(class QBlittablePixmapData *) + ?numberPrefix@QTextListFormat@@QBE?AVQString@@XZ @ 12918 NONAME ; class QString QTextListFormat::numberPrefix(void) const ??MQItemSelectionRange@@QBE_NABV0@@Z @ 12919 NONAME ; bool QItemSelectionRange::operator<(class QItemSelectionRange const &) const - ??YQGlyphs@@AAEAAV0@ABV0@@Z @ 12920 NONAME ; class QGlyphs & QGlyphs::operator+=(class QGlyphs const &) - ??_EQBlittable@@UAE@I@Z @ 12921 NONAME ; QBlittable::~QBlittable(unsigned int) - ??_EQBlittablePixmapData@@UAE@I@Z @ 12922 NONAME ; QBlittablePixmapData::~QBlittablePixmapData(unsigned int) - ??_EQBlitterPaintEngine@@UAE@I@Z @ 12923 NONAME ; QBlitterPaintEngine::~QBlitterPaintEngine(unsigned int) - ?alphaMapBoundingBox@QFontEngine@@UAE?AUglyph_metrics_t@@IABVQTransform@@W4GlyphFormat@1@@Z @ 12924 NONAME ; struct glyph_metrics_t QFontEngine::alphaMapBoundingBox(unsigned int, class QTransform const &, enum QFontEngine::GlyphFormat) - ?alphaMapForGlyph@QFontEngine@@UAE?AVQImage@@IUQFixed@@@Z @ 12925 NONAME ; class QImage QFontEngine::alphaMapForGlyph(unsigned int, struct QFixed) - ?alphaMapForGlyph@QFontEngine@@UAE?AVQImage@@IUQFixed@@ABVQTransform@@@Z @ 12926 NONAME ; class QImage QFontEngine::alphaMapForGlyph(unsigned int, struct QFixed, class QTransform const &) - ?alphaRGBMapForGlyph@QFontEngine@@UAE?AVQImage@@IUQFixed@@HABVQTransform@@@Z @ 12927 NONAME ; class QImage QFontEngine::alphaRGBMapForGlyph(unsigned int, struct QFixed, int, class QTransform const &) - ?begin@QBlitterPaintEngine@@UAE_NPAVQPaintDevice@@@Z @ 12928 NONAME ; bool QBlitterPaintEngine::begin(class QPaintDevice *) - ?blittable@QBlittablePixmapData@@QBEPAVQBlittable@@XZ @ 12929 NONAME ; class QBlittable * QBlittablePixmapData::blittable(void) const - ?brushChanged@QBlitterPaintEngine@@UAEXXZ @ 12930 NONAME ; void QBlitterPaintEngine::brushChanged(void) - ?brushOriginChanged@QBlitterPaintEngine@@UAEXXZ @ 12931 NONAME ; void QBlitterPaintEngine::brushOriginChanged(void) - ?buddy@QAbstractProxyModel@@UBE?AVQModelIndex@@ABV2@@Z @ 12932 NONAME ; class QModelIndex QAbstractProxyModel::buddy(class QModelIndex const &) const - ?buffer@QBlittablePixmapData@@UAEPAVQImage@@XZ @ 12933 NONAME ; class QImage * QBlittablePixmapData::buffer(void) - ?calculateSubPixelPositionCount@QTextureGlyphCache@@IBEHI@Z @ 12934 NONAME ; int QTextureGlyphCache::calculateSubPixelPositionCount(unsigned int) const - ?canFetchMore@QAbstractProxyModel@@UBE_NABVQModelIndex@@@Z @ 12935 NONAME ; bool QAbstractProxyModel::canFetchMore(class QModelIndex const &) const - ?capabilities@QBlittable@@QBE?AV?$QFlags@W4Capability@QBlittable@@@@XZ @ 12936 NONAME ; class QFlags<enum QBlittable::Capability> QBlittable::capabilities(void) const - ?clear@QGlyphs@@QAEXXZ @ 12937 NONAME ; void QGlyphs::clear(void) - ?clip@QBlitterPaintEngine@@QAEPBVQClipData@@XZ @ 12938 NONAME ; class QClipData const * QBlitterPaintEngine::clip(void) - ?clip@QBlitterPaintEngine@@UAEXABVQRect@@W4ClipOperation@Qt@@@Z @ 12939 NONAME ; void QBlitterPaintEngine::clip(class QRect const &, enum Qt::ClipOperation) - ?clip@QBlitterPaintEngine@@UAEXABVQRegion@@W4ClipOperation@Qt@@@Z @ 12940 NONAME ; void QBlitterPaintEngine::clip(class QRegion const &, enum Qt::ClipOperation) - ?clip@QBlitterPaintEngine@@UAEXABVQVectorPath@@W4ClipOperation@Qt@@@Z @ 12941 NONAME ; void QBlitterPaintEngine::clip(class QVectorPath const &, enum Qt::ClipOperation) - ?clipBoundingRect@QPainter@@QBE?AVQRectF@@XZ @ 12942 NONAME ; class QRectF QPainter::clipBoundingRect(void) const - ?clipEnabledChanged@QBlitterPaintEngine@@UAEXXZ @ 12943 NONAME ; void QBlitterPaintEngine::clipEnabledChanged(void) - ?compositionModeChanged@QBlitterPaintEngine@@UAEXXZ @ 12944 NONAME ; void QBlitterPaintEngine::compositionModeChanged(void) - ?createExplicitFont@QFontEngine@@UBE?AVQFont@@XZ @ 12945 NONAME ; class QFont QFontEngine::createExplicitFont(void) const - ?createExplicitFontWithName@QFontEngine@@IBE?AVQFont@@ABVQString@@@Z @ 12946 NONAME ; class QFont QFontEngine::createExplicitFontWithName(class QString const &) const - ?createState@QBlitterPaintEngine@@UBEPAVQPainterState@@PAV2@@Z @ 12947 NONAME ; class QPainterState * QBlitterPaintEngine::createState(class QPainterState *) const - ?d_func@QBlittable@@AAEPAVQBlittablePrivate@@XZ @ 12948 NONAME ; class QBlittablePrivate * QBlittable::d_func(void) - ?d_func@QBlittable@@ABEPBVQBlittablePrivate@@XZ @ 12949 NONAME ; class QBlittablePrivate const * QBlittable::d_func(void) const - ?d_func@QBlitterPaintEngine@@AAEPAVQBlitterPaintEnginePrivate@@XZ @ 12950 NONAME ; class QBlitterPaintEnginePrivate * QBlitterPaintEngine::d_func(void) - ?d_func@QBlitterPaintEngine@@ABEPBVQBlitterPaintEnginePrivate@@XZ @ 12951 NONAME ; class QBlitterPaintEnginePrivate const * QBlitterPaintEngine::d_func(void) const - ?detach@QGlyphs@@AAEXXZ @ 12952 NONAME ; void QGlyphs::detach(void) - ?drawEllipse@QBlitterPaintEngine@@UAEXABVQRectF@@@Z @ 12953 NONAME ; void QBlitterPaintEngine::drawEllipse(class QRectF const &) - ?drawGlyphs@QPainter@@QAEXABVQPointF@@ABVQGlyphs@@@Z @ 12954 NONAME ; void QPainter::drawGlyphs(class QPointF const &, class QGlyphs const &) - ?drawImage@QBlitterPaintEngine@@UAEXABVQRectF@@ABVQImage@@0V?$QFlags@W4ImageConversionFlag@Qt@@@@@Z @ 12955 NONAME ; void QBlitterPaintEngine::drawImage(class QRectF const &, class QImage const &, class QRectF const &, class QFlags<enum Qt::ImageConversionFlag>) - ?drawPixmap@QBlitterPaintEngine@@UAEXABVQRectF@@ABVQPixmap@@0@Z @ 12956 NONAME ; void QBlitterPaintEngine::drawPixmap(class QRectF const &, class QPixmap const &, class QRectF const &) - ?drawRects@QBlitterPaintEngine@@UAEXPBVQRect@@H@Z @ 12957 NONAME ; void QBlitterPaintEngine::drawRects(class QRect const *, int) - ?drawRects@QBlitterPaintEngine@@UAEXPBVQRectF@@H@Z @ 12958 NONAME ; void QBlitterPaintEngine::drawRects(class QRectF const *, int) - ?drawStaticTextItem@QBlitterPaintEngine@@UAEXPAVQStaticTextItem@@@Z @ 12959 NONAME ; void QBlitterPaintEngine::drawStaticTextItem(class QStaticTextItem *) - ?drawTextItem@QBlitterPaintEngine@@UAEXABVQPointF@@ABVQTextItem@@@Z @ 12960 NONAME ; void QBlitterPaintEngine::drawTextItem(class QPointF const &, class QTextItem const &) - ?end@QBlitterPaintEngine@@UAE_NXZ @ 12961 NONAME ; bool QBlitterPaintEngine::end(void) - ?fetchMore@QAbstractProxyModel@@UAEXABVQModelIndex@@@Z @ 12962 NONAME ; void QAbstractProxyModel::fetchMore(class QModelIndex const &) - ?fill@QBlittablePixmapData@@UAEXABVQColor@@@Z @ 12963 NONAME ; void QBlittablePixmapData::fill(class QColor const &) - ?fill@QBlitterPaintEngine@@UAEXABVQVectorPath@@ABVQBrush@@@Z @ 12964 NONAME ; void QBlitterPaintEngine::fill(class QVectorPath const &, class QBrush const &) - ?fill@QImage@@QAEXABVQColor@@@Z @ 12965 NONAME ; void QImage::fill(class QColor const &) - ?fill@QImage@@QAEXW4GlobalColor@Qt@@@Z @ 12966 NONAME ; void QImage::fill(enum Qt::GlobalColor) - ?fillInPendingGlyphs@QTextureGlyphCache@@QAEXXZ @ 12967 NONAME ; void QTextureGlyphCache::fillInPendingGlyphs(void) - ?fillRect@QBlitterPaintEngine@@UAEXABVQRectF@@ABVQBrush@@@Z @ 12968 NONAME ; void QBlitterPaintEngine::fillRect(class QRectF const &, class QBrush const &) - ?fillRect@QBlitterPaintEngine@@UAEXABVQRectF@@ABVQColor@@@Z @ 12969 NONAME ; void QBlitterPaintEngine::fillRect(class QRectF const &, class QColor const &) - ?fillTexture@QImageTextureGlyphCache@@UAEXABUCoord@QTextureGlyphCache@@IUQFixed@@@Z @ 12970 NONAME ; void QImageTextureGlyphCache::fillTexture(struct QTextureGlyphCache::Coord const &, unsigned int, struct QFixed) - ?font@QGlyphs@@QBE?AVQFont@@XZ @ 12971 NONAME ; class QFont QGlyphs::font(void) const - ?fontEngine@QStaticTextItem@@QBEPAVQFontEngine@@XZ @ 12972 NONAME ; class QFontEngine * QStaticTextItem::fontEngine(void) const - ?fromImage@QBlittablePixmapData@@UAEXABVQImage@@V?$QFlags@W4ImageConversionFlag@Qt@@@@@Z @ 12973 NONAME ; void QBlittablePixmapData::fromImage(class QImage const &, class QFlags<enum Qt::ImageConversionFlag>) - ?get@QFontPrivate@@SAPAV1@ABVQFont@@@Z @ 12974 NONAME ; class QFontPrivate * QFontPrivate::get(class QFont const &) - ?getItem@QInputDialog@@SA?AVQString@@PAVQWidget@@ABV2@1ABVQStringList@@H_NPA_NV?$QFlags@W4WindowType@Qt@@@@V?$QFlags@W4InputMethodHint@Qt@@@@@Z @ 12975 NONAME ; class QString QInputDialog::getItem(class QWidget *, class QString const &, class QString const &, class QStringList const &, int, bool, bool *, class QFlags<enum Qt::WindowType>, class QFlags<enum Qt::InputMethodHint>) - ?getText@QInputDialog@@SA?AVQString@@PAVQWidget@@ABV2@1W4EchoMode@QLineEdit@@1PA_NV?$QFlags@W4WindowType@Qt@@@@V?$QFlags@W4InputMethodHint@Qt@@@@@Z @ 12976 NONAME ; class QString QInputDialog::getText(class QWidget *, class QString const &, class QString const &, enum QLineEdit::EchoMode, class QString const &, bool *, class QFlags<enum Qt::WindowType>, class QFlags<enum Qt::InputMethodHint>) - ?glyphIndexes@QGlyphs@@QBE?AV?$QVector@I@@XZ @ 12977 NONAME ; class QVector<unsigned int> QGlyphs::glyphIndexes(void) const - ?glyphs@QTextFragment@@QBE?AV?$QList@VQGlyphs@@@@XZ @ 12978 NONAME ; class QList<class QGlyphs> QTextFragment::glyphs(void) const - ?glyphs@QTextLayout@@QBE?AV?$QList@VQGlyphs@@@@XZ @ 12979 NONAME ; class QList<class QGlyphs> QTextLayout::glyphs(void) const - ?glyphs@QTextLine@@ABE?AV?$QList@VQGlyphs@@@@HH@Z @ 12980 NONAME ; class QList<class QGlyphs> QTextLine::glyphs(int, int) const - ?hasAlphaChannel@QBlittablePixmapData@@UBE_NXZ @ 12981 NONAME ; bool QBlittablePixmapData::hasAlphaChannel(void) const - ?hasChildren@QAbstractProxyModel@@UBE_NABVQModelIndex@@@Z @ 12982 NONAME ; bool QAbstractProxyModel::hasChildren(class QModelIndex const &) const - ?hasHeightForWidth@QWidgetPrivate@@UBE_NXZ @ 12983 NONAME ; bool QWidgetPrivate::hasHeightForWidth(void) const - ?hasWidthForHeight@QSizePolicy@@QBE_NXZ @ 12984 NONAME ; bool QSizePolicy::hasWidthForHeight(void) const - ?heightForWidth@QTabWidget@@UBEHH@Z @ 12985 NONAME ; int QTabWidget::heightForWidth(int) const - ?inFontUcs4@QFontMetrics@@QBE_NI@Z @ 12986 NONAME ; bool QFontMetrics::inFontUcs4(unsigned int) const - ?inFontUcs4@QFontMetricsF@@QBE_NI@Z @ 12987 NONAME ; bool QFontMetricsF::inFontUcs4(unsigned int) const - ?lock@QBlittable@@QAEPAVQImage@@XZ @ 12988 NONAME ; class QImage * QBlittable::lock(void) - ?markRasterOverlay@QBlittablePixmapData@@QAEXABVQPointF@@ABVQTextItem@@@Z @ 12989 NONAME ; void QBlittablePixmapData::markRasterOverlay(class QPointF const &, class QTextItem const &) - ?markRasterOverlay@QBlittablePixmapData@@QAEXABVQRectF@@@Z @ 12990 NONAME ; void QBlittablePixmapData::markRasterOverlay(class QRectF const &) - ?markRasterOverlay@QBlittablePixmapData@@QAEXABVQVectorPath@@@Z @ 12991 NONAME ; void QBlittablePixmapData::markRasterOverlay(class QVectorPath const &) - ?markRasterOverlay@QBlittablePixmapData@@QAEXPBVQRect@@H@Z @ 12992 NONAME ; void QBlittablePixmapData::markRasterOverlay(class QRect const *, int) - ?markRasterOverlay@QBlittablePixmapData@@QAEXPBVQRectF@@H@Z @ 12993 NONAME ; void QBlittablePixmapData::markRasterOverlay(class QRectF const *, int) - ?metric@QBlittablePixmapData@@UBEHW4PaintDeviceMetric@QPaintDevice@@@Z @ 12994 NONAME ; int QBlittablePixmapData::metric(enum QPaintDevice::PaintDeviceMetric) const - ?mimeData@QAbstractProxyModel@@UBEPAVQMimeData@@ABV?$QList@VQModelIndex@@@@@Z @ 12995 NONAME ; class QMimeData * QAbstractProxyModel::mimeData(class QList<class QModelIndex> const &) const - ?mimeTypes@QAbstractProxyModel@@UBE?AVQStringList@@XZ @ 12996 NONAME ; class QStringList QAbstractProxyModel::mimeTypes(void) const - ?minimumSizeHint@QCheckBox@@UBE?AVQSize@@XZ @ 12997 NONAME ; class QSize QCheckBox::minimumSizeHint(void) const - ?minimumSizeHint@QRadioButton@@UBE?AVQSize@@XZ @ 12998 NONAME ; class QSize QRadioButton::minimumSizeHint(void) const - ?numberPrefix@QTextListFormat@@QBE?AVQString@@XZ @ 12999 NONAME ; class QString QTextListFormat::numberPrefix(void) const - ?numberSuffix@QTextListFormat@@QBE?AVQString@@XZ @ 13000 NONAME ; class QString QTextListFormat::numberSuffix(void) const - ?opacityChanged@QBlitterPaintEngine@@UAEXXZ @ 13001 NONAME ; void QBlitterPaintEngine::opacityChanged(void) - ?paintEngine@QBlittablePixmapData@@UBEPAVQPaintEngine@@XZ @ 13002 NONAME ; class QPaintEngine * QBlittablePixmapData::paintEngine(void) const - ?penChanged@QBlitterPaintEngine@@UAEXXZ @ 13003 NONAME ; void QBlitterPaintEngine::penChanged(void) - ?positions@QGlyphs@@QBE?AV?$QVector@VQPointF@@@@XZ @ 13004 NONAME ; class QVector<class QPointF> QGlyphs::positions(void) const - ?qt_addBitmapToPath@@YAXMMPBEHHHPAVQPainterPath@@@Z @ 13005 NONAME ; void qt_addBitmapToPath(float, float, unsigned char const *, int, int, int, class QPainterPath *) - ?qt_fontdata_from_index@@YA?AVQByteArray@@H@Z @ 13006 NONAME ; class QByteArray qt_fontdata_from_index(int) - ?raster@QBlitterPaintEngine@@ABEPAVQRasterPaintEngine@@XZ @ 13007 NONAME ; class QRasterPaintEngine * QBlitterPaintEngine::raster(void) const - ?reactivateDeferredActiveObjects@QEventDispatcherS60@@UAEXXZ @ 13008 NONAME ; void QEventDispatcherS60::reactivateDeferredActiveObjects(void) - ?removeItem@QGraphicsGridLayout@@QAEXPAVQGraphicsLayoutItem@@@Z @ 13009 NONAME ; void QGraphicsGridLayout::removeItem(class QGraphicsLayoutItem *) - ?renderHintsChanged@QBlitterPaintEngine@@UAEXXZ @ 13010 NONAME ; void QBlitterPaintEngine::renderHintsChanged(void) - ?resetInternalData@QAbstractProxyModel@@IAEXXZ @ 13011 NONAME ; void QAbstractProxyModel::resetInternalData(void) - ?resize@QBlittablePixmapData@@UAEXHH@Z @ 13012 NONAME ; void QBlittablePixmapData::resize(int, int) - ?resizeCache@QTextureGlyphCache@@QAEXHH@Z @ 13013 NONAME ; void QTextureGlyphCache::resizeCache(int, int) - ?setBlittable@QBlittablePixmapData@@QAEXPAVQBlittable@@@Z @ 13014 NONAME ; void QBlittablePixmapData::setBlittable(class QBlittable *) - ?setFont@QGlyphs@@QAEXABVQFont@@@Z @ 13015 NONAME ; void QGlyphs::setFont(class QFont const &) - ?setFontEngine@QStaticTextItem@@QAEXPAVQFontEngine@@@Z @ 13016 NONAME ; void QStaticTextItem::setFontEngine(class QFontEngine *) - ?setGlyphIndexes@QGlyphs@@QAEXABV?$QVector@I@@@Z @ 13017 NONAME ; void QGlyphs::setGlyphIndexes(class QVector<unsigned int> const &) - ?setItemData@QAbstractProxyModel@@UAE_NABVQModelIndex@@ABV?$QMap@HVQVariant@@@@@Z @ 13018 NONAME ; bool QAbstractProxyModel::setItemData(class QModelIndex const &, class QMap<int, class QVariant> const &) - ?setNumberPrefix@QTextListFormat@@QAEXABVQString@@@Z @ 13019 NONAME ; void QTextListFormat::setNumberPrefix(class QString const &) - ?setNumberSuffix@QTextListFormat@@QAEXABVQString@@@Z @ 13020 NONAME ; void QTextListFormat::setNumberSuffix(class QString const &) - ?setPositions@QGlyphs@@QAEXABV?$QVector@VQPointF@@@@@Z @ 13021 NONAME ; void QGlyphs::setPositions(class QVector<class QPointF> const &) - ?setState@QBlitterPaintEngine@@UAEXPAVQPainterState@@@Z @ 13022 NONAME ; void QBlitterPaintEngine::setState(class QPainterState *) - ?setWidthForHeight@QSizePolicy@@QAEX_N@Z @ 13023 NONAME ; void QSizePolicy::setWidthForHeight(bool) - ?size@QBlittable@@QBE?AVQSize@@XZ @ 13024 NONAME ; class QSize QBlittable::size(void) const - ?sort@QAbstractProxyModel@@UAEXHW4SortOrder@Qt@@@Z @ 13025 NONAME ; void QAbstractProxyModel::sort(int, enum Qt::SortOrder) - ?span@QAbstractProxyModel@@UBE?AVQSize@@ABVQModelIndex@@@Z @ 13026 NONAME ; class QSize QAbstractProxyModel::span(class QModelIndex const &) const - ?state@QBlitterPaintEngine@@QAEPAVQPainterState@@XZ @ 13027 NONAME ; class QPainterState * QBlitterPaintEngine::state(void) - ?state@QBlitterPaintEngine@@QBEPBVQPainterState@@XZ @ 13028 NONAME ; class QPainterState const * QBlitterPaintEngine::state(void) const - ?stroke@QBlitterPaintEngine@@UAEXABVQVectorPath@@ABVQPen@@@Z @ 13029 NONAME ; void QBlitterPaintEngine::stroke(class QVectorPath const &, class QPen const &) - ?subPixelPositionForX@QTextureGlyphCache@@QBE?AUQFixed@@U2@@Z @ 13030 NONAME ; struct QFixed QTextureGlyphCache::subPixelPositionForX(struct QFixed) const - ?supportedDropActions@QAbstractProxyModel@@UBE?AV?$QFlags@W4DropAction@Qt@@@@XZ @ 13031 NONAME ; class QFlags<enum Qt::DropAction> QAbstractProxyModel::supportedDropActions(void) const - ?supportsSubPixelPositions@QFontEngine@@UBE_NXZ @ 13032 NONAME ; bool QFontEngine::supportsSubPixelPositions(void) const - ?swap@QBitmap@@QAEXAAV1@@Z @ 13033 NONAME ; void QBitmap::swap(class QBitmap &) - ?swap@QBrush@@QAEXAAV1@@Z @ 13034 NONAME ; void QBrush::swap(class QBrush &) - ?swap@QIcon@@QAEXAAV1@@Z @ 13035 NONAME ; void QIcon::swap(class QIcon &) - ?swap@QImage@@QAEXAAV1@@Z @ 13036 NONAME ; void QImage::swap(class QImage &) - ?swap@QKeySequence@@QAEXAAV1@@Z @ 13037 NONAME ; void QKeySequence::swap(class QKeySequence &) - ?swap@QPainterPath@@QAEXAAV1@@Z @ 13038 NONAME ; void QPainterPath::swap(class QPainterPath &) - ?swap@QPen@@QAEXAAV1@@Z @ 13039 NONAME ; void QPen::swap(class QPen &) - ?swap@QPicture@@QAEXAAV1@@Z @ 13040 NONAME ; void QPicture::swap(class QPicture &) - ?swap@QPixmap@@QAEXAAV1@@Z @ 13041 NONAME ; void QPixmap::swap(class QPixmap &) - ?swap@QPolygon@@QAEXAAV1@@Z @ 13042 NONAME ; void QPolygon::swap(class QPolygon &) - ?swap@QPolygonF@@QAEXAAV1@@Z @ 13043 NONAME ; void QPolygonF::swap(class QPolygonF &) - ?swap@QRegion@@QAEXAAV1@@Z @ 13044 NONAME ; void QRegion::swap(class QRegion &) - ?textureMapForGlyph@QTextureGlyphCache@@QBE?AVQImage@@IUQFixed@@@Z @ 13045 NONAME ; class QImage QTextureGlyphCache::textureMapForGlyph(unsigned int, struct QFixed) const - ?toImage@QBlittablePixmapData@@UBE?AVQImage@@XZ @ 13046 NONAME ; class QImage QBlittablePixmapData::toImage(void) const - ?transformChanged@QBlitterPaintEngine@@UAEXXZ @ 13047 NONAME ; void QBlitterPaintEngine::transformChanged(void) - ?type@QBlitterPaintEngine@@UBE?AW4Type@QPaintEngine@@XZ @ 13048 NONAME ; enum QPaintEngine::Type QBlitterPaintEngine::type(void) const - ?unlock@QBlittable@@QAEXXZ @ 13049 NONAME ; void QBlittable::unlock(void) - ?unmarkRasterOverlay@QBlittablePixmapData@@QAEXABVQRectF@@@Z @ 13050 NONAME ; void QBlittablePixmapData::unmarkRasterOverlay(class QRectF const &) - ?userData@QStaticTextItem@@QBEPAVQStaticTextUserData@@XZ @ 13051 NONAME ; class QStaticTextUserData * QStaticTextItem::userData(void) const + ?setWidthForHeight@QSizePolicy@@QAEX_N@Z @ 12920 NONAME ; void QSizePolicy::setWidthForHeight(bool) + ?qt_fontdata_from_index@@YA?AVQByteArray@@H@Z @ 12921 NONAME ; class QByteArray qt_fontdata_from_index(int) + ?swap@QImage@@QAEXAAV1@@Z @ 12922 NONAME ; void QImage::swap(class QImage &) + ?compositionModeChanged@QBlitterPaintEngine@@UAEXXZ @ 12923 NONAME ; void QBlitterPaintEngine::compositionModeChanged(void) + ?drawRects@QBlitterPaintEngine@@UAEXPBVQRectF@@H@Z @ 12924 NONAME ; void QBlitterPaintEngine::drawRects(class QRectF const *, int) + ??1QBlitterPaintEngine@@UAE@XZ @ 12925 NONAME ; QBlitterPaintEngine::~QBlitterPaintEngine(void) + ?markRasterOverlay@QBlittablePixmapData@@QAEXPBVQRectF@@H@Z @ 12926 NONAME ; void QBlittablePixmapData::markRasterOverlay(class QRectF const *, int) + ?drawTextItem@QBlitterPaintEngine@@UAEXABVQPointF@@ABVQTextItem@@@Z @ 12927 NONAME ; void QBlitterPaintEngine::drawTextItem(class QPointF const &, class QTextItem const &) + ??8QGlyphs@@QBE_NABV0@@Z @ 12928 NONAME ; bool QGlyphs::operator==(class QGlyphs const &) const + ?drawImage@QBlitterPaintEngine@@UAEXABVQRectF@@ABVQImage@@0V?$QFlags@W4ImageConversionFlag@Qt@@@@@Z @ 12929 NONAME ; void QBlitterPaintEngine::drawImage(class QRectF const &, class QImage const &, class QRectF const &, class QFlags<enum Qt::ImageConversionFlag>) + ?mimeTypes@QAbstractProxyModel@@UBE?AVQStringList@@XZ @ 12930 NONAME ; class QStringList QAbstractProxyModel::mimeTypes(void) const + ?createState@QBlitterPaintEngine@@UBEPAVQPainterState@@PAV2@@Z @ 12931 NONAME ; class QPainterState * QBlitterPaintEngine::createState(class QPainterState *) const + ?removeItem@QGraphicsGridLayout@@QAEXPAVQGraphicsLayoutItem@@@Z @ 12932 NONAME ; void QGraphicsGridLayout::removeItem(class QGraphicsLayoutItem *) + ?clipBoundingRect@QPainter@@QBE?AVQRectF@@XZ @ 12933 NONAME ; class QRectF QPainter::clipBoundingRect(void) const + ?raster@QBlitterPaintEngine@@ABEPAVQRasterPaintEngine@@XZ @ 12934 NONAME ; class QRasterPaintEngine * QBlitterPaintEngine::raster(void) const + ?sort@QAbstractProxyModel@@UAEXHW4SortOrder@Qt@@@Z @ 12935 NONAME ; void QAbstractProxyModel::sort(int, enum Qt::SortOrder) + ?d_func@QBlittable@@AAEPAVQBlittablePrivate@@XZ @ 12936 NONAME ; class QBlittablePrivate * QBlittable::d_func(void) + ?type@QBlitterPaintEngine@@UBE?AW4Type@QPaintEngine@@XZ @ 12937 NONAME ; enum QPaintEngine::Type QBlitterPaintEngine::type(void) const + ?buddy@QAbstractProxyModel@@UBE?AVQModelIndex@@ABV2@@Z @ 12938 NONAME ; class QModelIndex QAbstractProxyModel::buddy(class QModelIndex const &) const + ?fill@QImage@@QAEXABVQColor@@@Z @ 12939 NONAME ; void QImage::fill(class QColor const &) + ?fill@QImage@@QAEXW4GlobalColor@Qt@@@Z @ 12940 NONAME ; void QImage::fill(enum Qt::GlobalColor) + ?canFetchMore@QAbstractProxyModel@@UBE_NABVQModelIndex@@@Z @ 12941 NONAME ; bool QAbstractProxyModel::canFetchMore(class QModelIndex const &) const + ?setFont@QGlyphs@@QAEXABVQFont@@@Z @ 12942 NONAME ; void QGlyphs::setFont(class QFont const &) + ?resize@QBlittablePixmapData@@UAEXHH@Z @ 12943 NONAME ; void QBlittablePixmapData::resize(int, int) + ?getText@QInputDialog@@SA?AVQString@@PAVQWidget@@ABV2@1W4EchoMode@QLineEdit@@1PA_NV?$QFlags@W4WindowType@Qt@@@@V?$QFlags@W4InputMethodHint@Qt@@@@@Z @ 12944 NONAME ; class QString QInputDialog::getText(class QWidget *, class QString const &, class QString const &, enum QLineEdit::EchoMode, class QString const &, bool *, class QFlags<enum Qt::WindowType>, class QFlags<enum Qt::InputMethodHint>) + ?hasWidthForHeight@QSizePolicy@@QBE_NXZ @ 12945 NONAME ; bool QSizePolicy::hasWidthForHeight(void) const + ?transformChanged@QBlitterPaintEngine@@UAEXXZ @ 12946 NONAME ; void QBlitterPaintEngine::transformChanged(void) + ??0QBlittablePixmapData@@QAE@XZ @ 12947 NONAME ; QBlittablePixmapData::QBlittablePixmapData(void) + ?size@QBlittable@@QBE?AVQSize@@XZ @ 12948 NONAME ; class QSize QBlittable::size(void) const + ?setBlittable@QBlittablePixmapData@@QAEXPAVQBlittable@@@Z @ 12949 NONAME ; void QBlittablePixmapData::setBlittable(class QBlittable *) + ?opacityChanged@QBlitterPaintEngine@@UAEXXZ @ 12950 NONAME ; void QBlitterPaintEngine::opacityChanged(void) + ?createExplicitFontWithName@QFontEngine@@IBE?AVQFont@@ABVQString@@@Z @ 12951 NONAME ; class QFont QFontEngine::createExplicitFontWithName(class QString const &) const + ?setState@QBlitterPaintEngine@@UAEXPAVQPainterState@@@Z @ 12952 NONAME ; void QBlitterPaintEngine::setState(class QPainterState *) + ?clip@QBlitterPaintEngine@@UAEXABVQRegion@@W4ClipOperation@Qt@@@Z @ 12953 NONAME ; void QBlitterPaintEngine::clip(class QRegion const &, enum Qt::ClipOperation) + ?subPixelPositionForX@QTextureGlyphCache@@QBE?AUQFixed@@U2@@Z @ 12954 NONAME ; struct QFixed QTextureGlyphCache::subPixelPositionForX(struct QFixed) const + ?hasAlphaChannel@QBlittablePixmapData@@UBE_NXZ @ 12955 NONAME ; bool QBlittablePixmapData::hasAlphaChannel(void) const + ?numberSuffix@QTextListFormat@@QBE?AVQString@@XZ @ 12956 NONAME ; class QString QTextListFormat::numberSuffix(void) const + ??HQGlyphs@@ABE?AV0@ABV0@@Z @ 12957 NONAME ; class QGlyphs QGlyphs::operator+(class QGlyphs const &) const + ?end@QBlitterPaintEngine@@UAE_NXZ @ 12958 NONAME ; bool QBlitterPaintEngine::end(void) + ?fill@QBlitterPaintEngine@@UAEXABVQVectorPath@@ABVQBrush@@@Z @ 12959 NONAME ; void QBlitterPaintEngine::fill(class QVectorPath const &, class QBrush const &) + ?drawPixmap@QBlitterPaintEngine@@UAEXABVQRectF@@ABVQPixmap@@0@Z @ 12960 NONAME ; void QBlitterPaintEngine::drawPixmap(class QRectF const &, class QPixmap const &, class QRectF const &) + ?glyphIndexes@QGlyphs@@QBE?AV?$QVector@I@@XZ @ 12961 NONAME ; class QVector<unsigned int> QGlyphs::glyphIndexes(void) const + ?get@QFontPrivate@@SAPAV1@ABVQFont@@@Z @ 12962 NONAME ; class QFontPrivate * QFontPrivate::get(class QFont const &) + ?fetchMore@QAbstractProxyModel@@UAEXABVQModelIndex@@@Z @ 12963 NONAME ; void QAbstractProxyModel::fetchMore(class QModelIndex const &) + ?glyphs@QTextLine@@ABE?AV?$QList@VQGlyphs@@@@HH@Z @ 12964 NONAME ; class QList<class QGlyphs> QTextLine::glyphs(int, int) const + ?alphaRGBMapForGlyph@QFontEngine@@UAE?AVQImage@@IUQFixed@@HABVQTransform@@@Z @ 12965 NONAME ; class QImage QFontEngine::alphaRGBMapForGlyph(unsigned int, struct QFixed, int, class QTransform const &) + ?swap@QBitmap@@QAEXAAV1@@Z @ 12966 NONAME ; void QBitmap::swap(class QBitmap &) + ??0QWindowSurface@@QAE@PAVQWidget@@_N@Z @ 12967 NONAME ; QWindowSurface::QWindowSurface(class QWidget *, bool) + ?fill@QBlittablePixmapData@@UAEXABVQColor@@@Z @ 12968 NONAME ; void QBlittablePixmapData::fill(class QColor const &) + ?metric@QBlittablePixmapData@@UBEHW4PaintDeviceMetric@QPaintDevice@@@Z @ 12969 NONAME ; int QBlittablePixmapData::metric(enum QPaintDevice::PaintDeviceMetric) const + ?fillRect@QBlitterPaintEngine@@UAEXABVQRectF@@ABVQColor@@@Z @ 12970 NONAME ; void QBlitterPaintEngine::fillRect(class QRectF const &, class QColor const &) + ??6@YA?AVQDebug@@V0@PBVQSymbianEvent@@@Z @ 12971 NONAME ; class QDebug operator<<(class QDebug, class QSymbianEvent const *) + ??_EQBlittablePixmapData@@UAE@I@Z @ 12972 NONAME ; QBlittablePixmapData::~QBlittablePixmapData(unsigned int) + ?mimeData@QAbstractProxyModel@@UBEPAVQMimeData@@ABV?$QList@VQModelIndex@@@@@Z @ 12973 NONAME ; class QMimeData * QAbstractProxyModel::mimeData(class QList<class QModelIndex> const &) const + ?minimumSizeHint@QRadioButton@@UBE?AVQSize@@XZ @ 12974 NONAME ; class QSize QRadioButton::minimumSizeHint(void) const + ?setPositions@QGlyphs@@QAEXABV?$QVector@VQPointF@@@@@Z @ 12975 NONAME ; void QGlyphs::setPositions(class QVector<class QPointF> const &) + ?drawRects@QBlitterPaintEngine@@UAEXPBVQRect@@H@Z @ 12976 NONAME ; void QBlitterPaintEngine::drawRects(class QRect const *, int) + ?fillInPendingGlyphs@QTextureGlyphCache@@QAEXXZ @ 12977 NONAME ; void QTextureGlyphCache::fillInPendingGlyphs(void) + ?renderHintsChanged@QBlitterPaintEngine@@UAEXXZ @ 12978 NONAME ; void QBlitterPaintEngine::renderHintsChanged(void) + ?supportedDropActions@QAbstractProxyModel@@UBE?AV?$QFlags@W4DropAction@Qt@@@@XZ @ 12979 NONAME ; class QFlags<enum Qt::DropAction> QAbstractProxyModel::supportedDropActions(void) const + ?fillRect@QBlitterPaintEngine@@UAEXABVQRectF@@ABVQBrush@@@Z @ 12980 NONAME ; void QBlitterPaintEngine::fillRect(class QRectF const &, class QBrush const &) + ?setGlyphIndexes@QGlyphs@@QAEXABV?$QVector@I@@@Z @ 12981 NONAME ; void QGlyphs::setGlyphIndexes(class QVector<unsigned int> const &) + ?alphaMapBoundingBox@QFontEngine@@UAE?AUglyph_metrics_t@@IABVQTransform@@W4GlyphFormat@1@@Z @ 12982 NONAME ; struct glyph_metrics_t QFontEngine::alphaMapBoundingBox(unsigned int, class QTransform const &, enum QFontEngine::GlyphFormat) + ?d_func@QBlittable@@ABEPBVQBlittablePrivate@@XZ @ 12983 NONAME ; class QBlittablePrivate const * QBlittable::d_func(void) const + ?state@QBlitterPaintEngine@@QBEPBVQPainterState@@XZ @ 12984 NONAME ; class QPainterState const * QBlitterPaintEngine::state(void) const + ?clear@QGlyphs@@QAEXXZ @ 12985 NONAME ; void QGlyphs::clear(void) + ??1QBlittablePixmapData@@UAE@XZ @ 12986 NONAME ; QBlittablePixmapData::~QBlittablePixmapData(void) + ?font@QGlyphs@@QBE?AVQFont@@XZ @ 12987 NONAME ; class QFont QGlyphs::font(void) const + ?paintEngine@QBlittablePixmapData@@UBEPAVQPaintEngine@@XZ @ 12988 NONAME ; class QPaintEngine * QBlittablePixmapData::paintEngine(void) const + ?hasChildren@QAbstractProxyModel@@UBE_NABVQModelIndex@@@Z @ 12989 NONAME ; bool QAbstractProxyModel::hasChildren(class QModelIndex const &) const + ?swap@QPen@@QAEXAAV1@@Z @ 12990 NONAME ; void QPen::swap(class QPen &) + ?span@QAbstractProxyModel@@UBE?AVQSize@@ABVQModelIndex@@@Z @ 12991 NONAME ; class QSize QAbstractProxyModel::span(class QModelIndex const &) const + ?textureMapForGlyph@QTextureGlyphCache@@QBE?AVQImage@@IUQFixed@@@Z @ 12992 NONAME ; class QImage QTextureGlyphCache::textureMapForGlyph(unsigned int, struct QFixed) const + ??0QGlyphs@@QAE@XZ @ 12993 NONAME ; QGlyphs::QGlyphs(void) + ?begin@QBlitterPaintEngine@@UAE_NPAVQPaintDevice@@@Z @ 12994 NONAME ; bool QBlitterPaintEngine::begin(class QPaintDevice *) + ?inFontUcs4@QFontMetricsF@@QBE_NI@Z @ 12995 NONAME ; bool QFontMetricsF::inFontUcs4(unsigned int) const + ?markRasterOverlay@QBlittablePixmapData@@QAEXABVQRectF@@@Z @ 12996 NONAME ; void QBlittablePixmapData::markRasterOverlay(class QRectF const &) + ?d_func@QBlitterPaintEngine@@AAEPAVQBlitterPaintEnginePrivate@@XZ @ 12997 NONAME ; class QBlitterPaintEnginePrivate * QBlitterPaintEngine::d_func(void) + ?setNumberPrefix@QTextListFormat@@QAEXABVQString@@@Z @ 12998 NONAME ; void QTextListFormat::setNumberPrefix(class QString const &) + ?getItem@QInputDialog@@SA?AVQString@@PAVQWidget@@ABV2@1ABVQStringList@@H_NPA_NV?$QFlags@W4WindowType@Qt@@@@V?$QFlags@W4InputMethodHint@Qt@@@@@Z @ 12999 NONAME ; class QString QInputDialog::getItem(class QWidget *, class QString const &, class QString const &, class QStringList const &, int, bool, bool *, class QFlags<enum Qt::WindowType>, class QFlags<enum Qt::InputMethodHint>) + ?clip@QBlitterPaintEngine@@UAEXABVQVectorPath@@W4ClipOperation@Qt@@@Z @ 13000 NONAME ; void QBlitterPaintEngine::clip(class QVectorPath const &, enum Qt::ClipOperation) + ?positions@QGlyphs@@QBE?AV?$QVector@VQPointF@@@@XZ @ 13001 NONAME ; class QVector<class QPointF> QGlyphs::positions(void) const + ?glyphs@QTextLayout@@QBE?AV?$QList@VQGlyphs@@@@XZ @ 13002 NONAME ; class QList<class QGlyphs> QTextLayout::glyphs(void) const + ?alphaMapForGlyph@QFontEngine@@UAE?AVQImage@@IUQFixed@@ABVQTransform@@@Z @ 13003 NONAME ; class QImage QFontEngine::alphaMapForGlyph(unsigned int, struct QFixed, class QTransform const &) + ?fromImage@QBlittablePixmapData@@UAEXABVQImage@@V?$QFlags@W4ImageConversionFlag@Qt@@@@@Z @ 13004 NONAME ; void QBlittablePixmapData::fromImage(class QImage const &, class QFlags<enum Qt::ImageConversionFlag>) + ??4QGlyphs@@QAEAAV0@ABV0@@Z @ 13005 NONAME ; class QGlyphs & QGlyphs::operator=(class QGlyphs const &) + ??0QBlittable@@QAE@ABVQSize@@V?$QFlags@W4Capability@QBlittable@@@@@Z @ 13006 NONAME ; QBlittable::QBlittable(class QSize const &, class QFlags<enum QBlittable::Capability>) + ?markRasterOverlay@QBlittablePixmapData@@QAEXPBVQRect@@H@Z @ 13007 NONAME ; void QBlittablePixmapData::markRasterOverlay(class QRect const *, int) + ?calculateSubPixelPositionCount@QTextureGlyphCache@@IBEHI@Z @ 13008 NONAME ; int QTextureGlyphCache::calculateSubPixelPositionCount(unsigned int) const + ?glyphs@QTextFragment@@QBE?AV?$QList@VQGlyphs@@@@XZ @ 13009 NONAME ; class QList<class QGlyphs> QTextFragment::glyphs(void) const + ?resetInternalData@QAbstractProxyModel@@IAEXXZ @ 13010 NONAME ; void QAbstractProxyModel::resetInternalData(void) + ?markRasterOverlay@QBlittablePixmapData@@QAEXABVQVectorPath@@@Z @ 13011 NONAME ; void QBlittablePixmapData::markRasterOverlay(class QVectorPath const &) + ?clip@QBlitterPaintEngine@@QAEPBVQClipData@@XZ @ 13012 NONAME ; class QClipData const * QBlitterPaintEngine::clip(void) + ?setNumberSuffix@QTextListFormat@@QAEXABVQString@@@Z @ 13013 NONAME ; void QTextListFormat::setNumberSuffix(class QString const &) + ?swap@QPicture@@QAEXAAV1@@Z @ 13014 NONAME ; void QPicture::swap(class QPicture &) + ?swap@QPainterPath@@QAEXAAV1@@Z @ 13015 NONAME ; void QPainterPath::swap(class QPainterPath &) + ?minimumSizeHint@QCheckBox@@UBE?AVQSize@@XZ @ 13016 NONAME ; class QSize QCheckBox::minimumSizeHint(void) const + ?createExplicitFont@QFontEngine@@UBE?AVQFont@@XZ @ 13017 NONAME ; class QFont QFontEngine::createExplicitFont(void) const + ?alphaMapForGlyph@QFontEngine@@UAE?AVQImage@@IUQFixed@@@Z @ 13018 NONAME ; class QImage QFontEngine::alphaMapForGlyph(unsigned int, struct QFixed) + ?fillTexture@QImageTextureGlyphCache@@UAEXABUCoord@QTextureGlyphCache@@IUQFixed@@@Z @ 13019 NONAME ; void QImageTextureGlyphCache::fillTexture(struct QTextureGlyphCache::Coord const &, unsigned int, struct QFixed) + ?swap@QIcon@@QAEXAAV1@@Z @ 13020 NONAME ; void QIcon::swap(class QIcon &) + ?unmarkRasterOverlay@QBlittablePixmapData@@QAEXABVQRectF@@@Z @ 13021 NONAME ; void QBlittablePixmapData::unmarkRasterOverlay(class QRectF const &) + ?brushOriginChanged@QBlitterPaintEngine@@UAEXXZ @ 13022 NONAME ; void QBlitterPaintEngine::brushOriginChanged(void) + ??0QApplicationPrivate@@QAE@AAHPAPADW4Type@QApplication@@H@Z @ 13023 NONAME ; QApplicationPrivate::QApplicationPrivate(int &, char * *, enum QApplication::Type, int) + ?inFontUcs4@QFontMetrics@@QBE_NI@Z @ 13024 NONAME ; bool QFontMetrics::inFontUcs4(unsigned int) const + ?unlock@QBlittable@@QAEXXZ @ 13025 NONAME ; void QBlittable::unlock(void) + ?swap@QRegion@@QAEXAAV1@@Z @ 13026 NONAME ; void QRegion::swap(class QRegion &) + ?setItemData@QAbstractProxyModel@@UAE_NABVQModelIndex@@ABV?$QMap@HVQVariant@@@@@Z @ 13027 NONAME ; bool QAbstractProxyModel::setItemData(class QModelIndex const &, class QMap<int, class QVariant> const &) + ?swap@QPolygonF@@QAEXAAV1@@Z @ 13028 NONAME ; void QPolygonF::swap(class QPolygonF &) + ?swap@QPolygon@@QAEXAAV1@@Z @ 13029 NONAME ; void QPolygon::swap(class QPolygon &) + ?d_func@QBlitterPaintEngine@@ABEPBVQBlitterPaintEnginePrivate@@XZ @ 13030 NONAME ; class QBlitterPaintEnginePrivate const * QBlitterPaintEngine::d_func(void) const + ?swap@QKeySequence@@QAEXAAV1@@Z @ 13031 NONAME ; void QKeySequence::swap(class QKeySequence &) + ??1QGlyphs@@QAE@XZ @ 13032 NONAME ; QGlyphs::~QGlyphs(void) + ?stroke@QBlitterPaintEngine@@UAEXABVQVectorPath@@ABVQPen@@@Z @ 13033 NONAME ; void QBlitterPaintEngine::stroke(class QVectorPath const &, class QPen const &) + ??9QGlyphs@@QBE_NABV0@@Z @ 13034 NONAME ; bool QGlyphs::operator!=(class QGlyphs const &) const + ??1QBlittable@@UAE@XZ @ 13035 NONAME ; QBlittable::~QBlittable(void) + ??_EQBlitterPaintEngine@@UAE@I@Z @ 13036 NONAME ; QBlitterPaintEngine::~QBlitterPaintEngine(unsigned int) + ?buffer@QBlittablePixmapData@@UAEPAVQImage@@XZ @ 13037 NONAME ; class QImage * QBlittablePixmapData::buffer(void) + ?drawStaticTextItem@QBlitterPaintEngine@@UAEXPAVQStaticTextItem@@@Z @ 13038 NONAME ; void QBlitterPaintEngine::drawStaticTextItem(class QStaticTextItem *) + ??0QGlyphs@@QAE@ABV0@@Z @ 13039 NONAME ; QGlyphs::QGlyphs(class QGlyphs const &) + ?lock@QBlittable@@QAEPAVQImage@@XZ @ 13040 NONAME ; class QImage * QBlittable::lock(void) + ?markRasterOverlay@QBlittablePixmapData@@QAEXABVQPointF@@ABVQTextItem@@@Z @ 13041 NONAME ; void QBlittablePixmapData::markRasterOverlay(class QPointF const &, class QTextItem const &) + ??YQGlyphs@@AAEAAV0@ABV0@@Z @ 13042 NONAME ; class QGlyphs & QGlyphs::operator+=(class QGlyphs const &) + ?drawEllipse@QBlitterPaintEngine@@UAEXABVQRectF@@@Z @ 13043 NONAME ; void QBlitterPaintEngine::drawEllipse(class QRectF const &) + ?blittable@QBlittablePixmapData@@QBEPAVQBlittable@@XZ @ 13044 NONAME ; class QBlittable * QBlittablePixmapData::blittable(void) const + ?resizeCache@QTextureGlyphCache@@QAEXHH@Z @ 13045 NONAME ; void QTextureGlyphCache::resizeCache(int, int) + ?state@QBlitterPaintEngine@@QAEPAVQPainterState@@XZ @ 13046 NONAME ; class QPainterState * QBlitterPaintEngine::state(void) + ?penChanged@QBlitterPaintEngine@@UAEXXZ @ 13047 NONAME ; void QBlitterPaintEngine::penChanged(void) + ?hasHeightForWidth@QWidgetPrivate@@UBE_NXZ @ 13048 NONAME ; bool QWidgetPrivate::hasHeightForWidth(void) const + ?toImage@QBlittablePixmapData@@UBE?AVQImage@@XZ @ 13049 NONAME ; class QImage QBlittablePixmapData::toImage(void) const + ??_EQBlittable@@UAE@I@Z @ 13050 NONAME ; QBlittable::~QBlittable(unsigned int) + ?qt_addBitmapToPath@@YAXMMPBEHHHPAVQPainterPath@@@Z @ 13051 NONAME ; void qt_addBitmapToPath(float, float, unsigned char const *, int, int, int, class QPainterPath *) + ?drawGlyphs@QPainter@@QAEXABVQPointF@@ABVQGlyphs@@@Z @ 13052 NONAME ; void QPainter::drawGlyphs(class QPointF const &, class QGlyphs const &) diff --git a/src/s60installs/bwins/QtNetworku.def b/src/s60installs/bwins/QtNetworku.def index ef43370..865aa54 100644 --- a/src/s60installs/bwins/QtNetworku.def +++ b/src/s60installs/bwins/QtNetworku.def @@ -1145,11 +1145,11 @@ EXPORTS ?setNetworkAccessible@QNetworkAccessManager@@QAEXW4NetworkAccessibility@1@@Z @ 1144 NONAME ; void QNetworkAccessManager::setNetworkAccessible(enum QNetworkAccessManager::NetworkAccessibility) ??_EQBearerEngineFactoryInterface@@UAE@I@Z @ 1145 NONAME ; QBearerEngineFactoryInterface::~QBearerEngineFactoryInterface(unsigned int) ?enablePolling@QNetworkConfigurationManagerPrivate@@QAEXXZ @ 1146 NONAME ; void QNetworkConfigurationManagerPrivate::enablePolling(void) - ?joinMulticastGroup@QUdpSocket@@QAE_NABVQHostAddress@@@Z @ 1147 NONAME ; bool QUdpSocket::joinMulticastGroup(class QHostAddress const &) - ?joinMulticastGroup@QUdpSocket@@QAE_NABVQHostAddress@@ABVQNetworkInterface@@@Z @ 1148 NONAME ; bool QUdpSocket::joinMulticastGroup(class QHostAddress const &, class QNetworkInterface const &) - ?leaveMulticastGroup@QUdpSocket@@QAE_NABVQHostAddress@@@Z @ 1149 NONAME ; bool QUdpSocket::leaveMulticastGroup(class QHostAddress const &) - ?leaveMulticastGroup@QUdpSocket@@QAE_NABVQHostAddress@@ABVQNetworkInterface@@@Z @ 1150 NONAME ; bool QUdpSocket::leaveMulticastGroup(class QHostAddress const &, class QNetworkInterface const &) - ?multicastInterface@QUdpSocket@@QBE?AVQNetworkInterface@@XZ @ 1151 NONAME ; class QNetworkInterface QUdpSocket::multicastInterface(void) const - ?setFinished@QNetworkReply@@IAEX_N@Z @ 1152 NONAME ; void QNetworkReply::setFinished(bool) - ?setMulticastInterface@QUdpSocket@@QAEXABVQNetworkInterface@@@Z @ 1153 NONAME ; void QUdpSocket::setMulticastInterface(class QNetworkInterface const &) + ?joinMulticastGroup@QUdpSocket@@QAE_NABVQHostAddress@@ABVQNetworkInterface@@@Z @ 1147 NONAME ; bool QUdpSocket::joinMulticastGroup(class QHostAddress const &, class QNetworkInterface const &) + ?setMulticastInterface@QUdpSocket@@QAEXABVQNetworkInterface@@@Z @ 1148 NONAME ; void QUdpSocket::setMulticastInterface(class QNetworkInterface const &) + ?setFinished@QNetworkReply@@IAEX_N@Z @ 1149 NONAME ; void QNetworkReply::setFinished(bool) + ?multicastInterface@QUdpSocket@@QBE?AVQNetworkInterface@@XZ @ 1150 NONAME ; class QNetworkInterface QUdpSocket::multicastInterface(void) const + ?joinMulticastGroup@QUdpSocket@@QAE_NABVQHostAddress@@@Z @ 1151 NONAME ; bool QUdpSocket::joinMulticastGroup(class QHostAddress const &) + ?leaveMulticastGroup@QUdpSocket@@QAE_NABVQHostAddress@@ABVQNetworkInterface@@@Z @ 1152 NONAME ; bool QUdpSocket::leaveMulticastGroup(class QHostAddress const &, class QNetworkInterface const &) + ?leaveMulticastGroup@QUdpSocket@@QAE_NABVQHostAddress@@@Z @ 1153 NONAME ; bool QUdpSocket::leaveMulticastGroup(class QHostAddress const &) diff --git a/src/s60installs/bwins/QtOpenGLu.def b/src/s60installs/bwins/QtOpenGLu.def index fa340e4..620fcb9 100644 --- a/src/s60installs/bwins/QtOpenGLu.def +++ b/src/s60installs/bwins/QtOpenGLu.def @@ -8,7 +8,7 @@ EXPORTS ?d_func@QGLShader@@AAEPAVQGLShaderPrivate@@XZ @ 7 NONAME ; class QGLShaderPrivate * QGLShader::d_func(void) ?bindToDynamicTexture@QGLPixelBuffer@@QAE_NI@Z @ 8 NONAME ; bool QGLPixelBuffer::bindToDynamicTexture(unsigned int) ??0QGLWidget@@QAE@PAVQGLContext@@PAVQWidget@@PBV0@V?$QFlags@W4WindowType@Qt@@@@@Z @ 9 NONAME ; QGLWidget::QGLWidget(class QGLContext *, class QWidget *, class QGLWidget const *, class QFlags<enum Qt::WindowType>) - ??_EQGLFormat@@QAE@I@Z @ 10 NONAME ; QGLFormat::~QGLFormat(unsigned int) + ??_EQGLFormat@@QAE@I@Z @ 10 NONAME ABSENT ; QGLFormat::~QGLFormat(unsigned int) ?drawPixmapFragments@QGL2PaintEngineEx@@UAEXPBVPixmapFragment@QPainter@@HABVQPixmap@@V?$QFlags@W4PixmapFragmentHint@QPainter@@@@@Z @ 11 NONAME ; void QGL2PaintEngineEx::drawPixmapFragments(class QPainter::PixmapFragment const *, int, class QPixmap const &, class QFlags<enum QPainter::PixmapFragmentHint>) ?paintEngine@QGLWidget@@UBEPAVQPaintEngine@@XZ @ 12 NONAME ; class QPaintEngine * QGLWidget::paintEngine(void) const ?setPreferredPaintEngine@QGL@@YAXW4Type@QPaintEngine@@@Z @ 13 NONAME ; void QGL::setPreferredPaintEngine(enum QPaintEngine::Type) @@ -107,7 +107,7 @@ EXPORTS ??0QGLContext@@QAE@ABVQGLFormat@@@Z @ 106 NONAME ; QGLContext::QGLContext(class QGLFormat const &) ?geometryOutputVertexCount@QGLShaderProgram@@QBEHXZ @ 107 NONAME ; int QGLShaderProgram::geometryOutputVertexCount(void) const ?setAccum@QGLFormat@@QAEX_N@Z @ 108 NONAME ; void QGLFormat::setAccum(bool) - ??0QGLSignalProxy@@QAE@XZ @ 109 NONAME ; QGLSignalProxy::QGLSignalProxy(void) + ??0QGLSignalProxy@@QAE@XZ @ 109 NONAME ABSENT ; QGLSignalProxy::QGLSignalProxy(void) ?isUninitialized@QGLPixmapData@@ABE_NXZ @ 110 NONAME ; bool QGLPixmapData::isUninitialized(void) const ??0QGLFramebufferObjectFormat@@QAE@XZ @ 111 NONAME ; QGLFramebufferObjectFormat::QGLFramebufferObjectFormat(void) ??8@YA_NABVQGLFormat@@0@Z @ 112 NONAME ; bool operator==(class QGLFormat const &, class QGLFormat const &) @@ -496,7 +496,7 @@ EXPORTS ?setUniformValue@QGLShaderProgram@@QAEXPBDABVQSize@@@Z @ 495 NONAME ; void QGLShaderProgram::setUniformValue(char const *, class QSize const &) ?convertToGLFormat@QGLWidget@@SA?AVQImage@@ABV2@@Z @ 496 NONAME ; class QImage QGLWidget::convertToGLFormat(class QImage const &) ?staticMetaObject@QGLTextureGlyphCache@@2UQMetaObject@@B @ 497 NONAME ; struct QMetaObject const QGLTextureGlyphCache::staticMetaObject - ??_EQGLContextResource@@QAE@I@Z @ 498 NONAME ; QGLContextResource::~QGLContextResource(unsigned int) + ??_EQGLContextResource@@QAE@I@Z @ 498 NONAME ABSENT ; QGLContextResource::~QGLContextResource(unsigned int) ?handle@QGLColormap@@IAEKXZ @ 499 NONAME ; unsigned long QGLColormap::handle(void) ?isCreated@QGLBuffer@@QBE_NXZ @ 500 NONAME ; bool QGLBuffer::isCreated(void) const ?setColormap@QGLWidget@@QAEXABVQGLColormap@@@Z @ 501 NONAME ; void QGLWidget::setColormap(class QGLColormap const &) @@ -698,4 +698,9 @@ EXPORTS ?setProfile@QGLFormat@@QAEXW4OpenGLContextProfile@1@@Z @ 697 NONAME ; void QGLFormat::setProfile(enum QGLFormat::OpenGLContextProfile) ?updateDynamicTexture@QGLPixelBuffer@@QBEXI@Z @ 698 NONAME ; void QGLPixelBuffer::updateDynamicTexture(unsigned int) const ?setUniformValue@QGLShaderProgram@@QAEXHH@Z @ 699 NONAME ; void QGLShaderProgram::setUniformValue(int, int) + ?maxTextureHeight@QGLTextureGlyphCache@@UBEHXZ @ 700 NONAME ; int QGLTextureGlyphCache::maxTextureHeight(void) const + ?initializeOffscreenTexture@QGLWindowSurface@@AAE_NABVQSize@@@Z @ 701 NONAME ; bool QGLWindowSurface::initializeOffscreenTexture(class QSize const &) + ?maxTextureWidth@QGLTextureGlyphCache@@UBEHXZ @ 702 NONAME ; int QGLTextureGlyphCache::maxTextureWidth(void) const + ?filterMode@QGLTextureGlyphCache@@QBE?AW4FilterMode@1@XZ @ 703 NONAME ; enum QGLTextureGlyphCache::FilterMode QGLTextureGlyphCache::filterMode(void) const + ?setFilterMode@QGLTextureGlyphCache@@QAEXW4FilterMode@1@@Z @ 704 NONAME ; void QGLTextureGlyphCache::setFilterMode(enum QGLTextureGlyphCache::FilterMode) diff --git a/src/s60installs/eabi/QtCoreu.def b/src/s60installs/eabi/QtCoreu.def index 5939010..02e72a1 100644 --- a/src/s60installs/eabi/QtCoreu.def +++ b/src/s60installs/eabi/QtCoreu.def @@ -3715,83 +3715,80 @@ EXPORTS _ZN24QAbstractDeclarativeData17objectNameChangedE @ 3714 NONAME DATA 4 _ZN23QEventDispatcherSymbian36queueDeferredActiveObjectsCompletionEv @ 3715 NONAME _ZN11QThreadPool11waitForDoneEi @ 3716 NONAME - _ZN12QSystemError8toStringEv @ 3717 NONAME - _ZN13QSharedMemory12setNativeKeyERK7QString @ 3718 NONAME - _ZN13QUnifiedTimer10timerEventEP11QTimerEvent @ 3719 NONAME - _ZN13QUnifiedTimer17ensureTimerUpdateEv @ 3720 NONAME - _ZN13QUnifiedTimer17registerAnimationEP18QAbstractAnimationb @ 3721 NONAME - _ZN13QUnifiedTimer17setTimingIntervalEi @ 3722 NONAME - _ZN13QUnifiedTimer19unregisterAnimationEP18QAbstractAnimation @ 3723 NONAME - _ZN13QUnifiedTimer20updateAnimationTimerEv @ 3724 NONAME - _ZN13QUnifiedTimer20updateAnimationsTimeEv @ 3725 NONAME - _ZN13QUnifiedTimer21restartAnimationTimerEv @ 3726 NONAME - _ZN13QUnifiedTimer22installAnimationDriverEP16QAnimationDriver @ 3727 NONAME - _ZN13QUnifiedTimer24registerRunningAnimationEP18QAbstractAnimation @ 3728 NONAME - _ZN13QUnifiedTimer26unregisterRunningAnimationEP18QAbstractAnimation @ 3729 NONAME - _ZN13QUnifiedTimer33closestPauseAnimationTimeToFinishEv @ 3730 NONAME - _ZN13QUnifiedTimer8instanceEb @ 3731 NONAME - _ZN13QUnifiedTimerC1Ev @ 3732 NONAME - _ZN13QUnifiedTimerC2Ev @ 3733 NONAME - _ZN16QAnimationDriver11qt_metacallEN11QMetaObject4CallEiPPv @ 3734 NONAME - _ZN16QAnimationDriver11qt_metacastEPKc @ 3735 NONAME - _ZN16QAnimationDriver16staticMetaObjectE @ 3736 NONAME DATA 16 - _ZN16QAnimationDriver19getStaticMetaObjectEv @ 3737 NONAME - _ZN16QAnimationDriver4stopEv @ 3738 NONAME - _ZN16QAnimationDriver5startEv @ 3739 NONAME - _ZN16QAnimationDriver7advanceEv @ 3740 NONAME - _ZN16QAnimationDriver7installEv @ 3741 NONAME - _ZN16QAnimationDriverC2EP7QObject @ 3742 NONAME - _ZN16QAnimationDriverC2ER23QAnimationDriverPrivateP7QObject @ 3743 NONAME - _ZN16QCoreApplicationC1ERiPPci @ 3744 NONAME - _ZN16QCoreApplicationC2ERiPPci @ 3745 NONAME - _ZN23QCoreApplicationPrivate19app_compile_versionE @ 3746 NONAME DATA 4 - _ZN23QCoreApplicationPrivateC1ERiPPcj @ 3747 NONAME - _ZN23QCoreApplicationPrivateC2ERiPPcj @ 3748 NONAME - _ZN6QMutex12lockInternalEv @ 3749 NONAME - _ZN6QMutex14unlockInternalEv @ 3750 NONAME - _ZN7QObject10disconnectEPKS_RK11QMetaMethodS1_S4_ @ 3751 NONAME - _ZN7QObject7connectEPKS_RK11QMetaMethodS1_S4_N2Qt14ConnectionTypeE @ 3752 NONAME - _ZN9QFileInfoC1EP16QFileInfoPrivate @ 3753 NONAME - _ZN9QFileInfoC2EP16QFileInfoPrivate @ 3754 NONAME - _ZNK10QStringRef10startsWithE13QLatin1StringN2Qt15CaseSensitivityE @ 3755 NONAME - _ZNK10QStringRef10startsWithE5QCharN2Qt15CaseSensitivityE @ 3756 NONAME - _ZNK10QStringRef10startsWithERK7QStringN2Qt15CaseSensitivityE @ 3757 NONAME - _ZNK10QStringRef10startsWithERKS_N2Qt15CaseSensitivityE @ 3758 NONAME - _ZNK10QStringRef11lastIndexOfE13QLatin1StringiN2Qt15CaseSensitivityE @ 3759 NONAME - _ZNK10QStringRef11lastIndexOfE5QChariN2Qt15CaseSensitivityE @ 3760 NONAME - _ZNK10QStringRef11lastIndexOfERK7QStringiN2Qt15CaseSensitivityE @ 3761 NONAME - _ZNK10QStringRef11lastIndexOfERKS_iN2Qt15CaseSensitivityE @ 3762 NONAME - _ZNK10QStringRef11toLocal8BitEv @ 3763 NONAME - _ZNK10QStringRef5countE5QCharN2Qt15CaseSensitivityE @ 3764 NONAME - _ZNK10QStringRef5countERK7QStringN2Qt15CaseSensitivityE @ 3765 NONAME - _ZNK10QStringRef5countERKS_N2Qt15CaseSensitivityE @ 3766 NONAME - _ZNK10QStringRef6toUcs4Ev @ 3767 NONAME - _ZNK10QStringRef6toUtf8Ev @ 3768 NONAME - _ZNK10QStringRef7indexOfE13QLatin1StringiN2Qt15CaseSensitivityE @ 3769 NONAME - _ZNK10QStringRef7indexOfE5QChariN2Qt15CaseSensitivityE @ 3770 NONAME - _ZNK10QStringRef7indexOfERK7QStringiN2Qt15CaseSensitivityE @ 3771 NONAME - _ZNK10QStringRef7indexOfERKS_iN2Qt15CaseSensitivityE @ 3772 NONAME - _ZNK10QStringRef7toAsciiEv @ 3773 NONAME - _ZNK10QStringRef8endsWithE13QLatin1StringN2Qt15CaseSensitivityE @ 3774 NONAME - _ZNK10QStringRef8endsWithE5QCharN2Qt15CaseSensitivityE @ 3775 NONAME - _ZNK10QStringRef8endsWithERK7QStringN2Qt15CaseSensitivityE @ 3776 NONAME - _ZNK10QStringRef8endsWithERKS_N2Qt15CaseSensitivityE @ 3777 NONAME - _ZNK10QStringRef8toLatin1Ev @ 3778 NONAME - _ZNK11QMetaObject4castEPK7QObject @ 3779 NONAME - _ZNK13QSharedMemory9nativeKeyEv @ 3780 NONAME - _ZNK16QAnimationDriver10metaObjectEv @ 3781 NONAME - _ZNK16QAnimationDriver9isRunningEv @ 3782 NONAME - _ZNK4QUrl11isLocalFileEv @ 3783 NONAME - _ZNK7QObject17senderSignalIndexEv @ 3784 NONAME - _ZNK7QString10startsWithERK10QStringRefN2Qt15CaseSensitivityE @ 3785 NONAME - _ZNK7QString11lastIndexOfERK10QStringRefiN2Qt15CaseSensitivityE @ 3786 NONAME - _ZNK7QString5countERK10QStringRefN2Qt15CaseSensitivityE @ 3787 NONAME - _ZNK7QString7indexOfERK10QStringRefiN2Qt15CaseSensitivityE @ 3788 NONAME - _ZNK7QString8endsWithERK10QStringRefN2Qt15CaseSensitivityE @ 3789 NONAME - _ZTI13QUnifiedTimer @ 3790 NONAME - _ZTI16QAnimationDriver @ 3791 NONAME - _ZTI23QAnimationDriverPrivate @ 3792 NONAME - _ZTV13QUnifiedTimer @ 3793 NONAME - _ZTV16QAnimationDriver @ 3794 NONAME - _ZTV23QAnimationDriverPrivate @ 3795 NONAME + _ZN13QSharedMemory12setNativeKeyERK7QString @ 3717 NONAME + _ZN13QUnifiedTimer10timerEventEP11QTimerEvent @ 3718 NONAME + _ZN13QUnifiedTimer17ensureTimerUpdateEv @ 3719 NONAME + _ZN13QUnifiedTimer17registerAnimationEP18QAbstractAnimationb @ 3720 NONAME + _ZN13QUnifiedTimer17setTimingIntervalEi @ 3721 NONAME + _ZN13QUnifiedTimer19unregisterAnimationEP18QAbstractAnimation @ 3722 NONAME + _ZN13QUnifiedTimer20updateAnimationTimerEv @ 3723 NONAME + _ZN13QUnifiedTimer20updateAnimationsTimeEv @ 3724 NONAME + _ZN13QUnifiedTimer21restartAnimationTimerEv @ 3725 NONAME + _ZN13QUnifiedTimer22installAnimationDriverEP16QAnimationDriver @ 3726 NONAME + _ZN13QUnifiedTimer24registerRunningAnimationEP18QAbstractAnimation @ 3727 NONAME + _ZN13QUnifiedTimer26unregisterRunningAnimationEP18QAbstractAnimation @ 3728 NONAME + _ZN13QUnifiedTimer33closestPauseAnimationTimeToFinishEv @ 3729 NONAME + _ZN13QUnifiedTimer8instanceEb @ 3730 NONAME + _ZN13QUnifiedTimerC1Ev @ 3731 NONAME + _ZN13QUnifiedTimerC2Ev @ 3732 NONAME + _ZN16QAnimationDriver11qt_metacallEN11QMetaObject4CallEiPPv @ 3733 NONAME + _ZN16QAnimationDriver11qt_metacastEPKc @ 3734 NONAME + _ZN16QAnimationDriver16staticMetaObjectE @ 3735 NONAME DATA 16 + _ZN16QAnimationDriver19getStaticMetaObjectEv @ 3736 NONAME + _ZN16QAnimationDriver4stopEv @ 3737 NONAME + _ZN16QAnimationDriver5startEv @ 3738 NONAME + _ZN16QAnimationDriver7advanceEv @ 3739 NONAME + _ZN16QAnimationDriver7installEv @ 3740 NONAME + _ZN16QAnimationDriverC2EP7QObject @ 3741 NONAME + _ZN16QAnimationDriverC2ER23QAnimationDriverPrivateP7QObject @ 3742 NONAME + _ZN16QCoreApplicationC1ERiPPci @ 3743 NONAME + _ZN16QCoreApplicationC2ERiPPci @ 3744 NONAME + _ZN23QCoreApplicationPrivate19app_compile_versionE @ 3745 NONAME DATA 4 + _ZN23QCoreApplicationPrivateC1ERiPPcj @ 3746 NONAME + _ZN23QCoreApplicationPrivateC2ERiPPcj @ 3747 NONAME + _ZN6QMutex12lockInternalEv @ 3748 NONAME + _ZN6QMutex14unlockInternalEv @ 3749 NONAME + _ZN7QObject10disconnectEPKS_RK11QMetaMethodS1_S4_ @ 3750 NONAME + _ZN7QObject7connectEPKS_RK11QMetaMethodS1_S4_N2Qt14ConnectionTypeE @ 3751 NONAME + _ZNK10QStringRef10startsWithE13QLatin1StringN2Qt15CaseSensitivityE @ 3752 NONAME + _ZNK10QStringRef10startsWithE5QCharN2Qt15CaseSensitivityE @ 3753 NONAME + _ZNK10QStringRef10startsWithERK7QStringN2Qt15CaseSensitivityE @ 3754 NONAME + _ZNK10QStringRef10startsWithERKS_N2Qt15CaseSensitivityE @ 3755 NONAME + _ZNK10QStringRef11lastIndexOfE13QLatin1StringiN2Qt15CaseSensitivityE @ 3756 NONAME + _ZNK10QStringRef11lastIndexOfE5QChariN2Qt15CaseSensitivityE @ 3757 NONAME + _ZNK10QStringRef11lastIndexOfERK7QStringiN2Qt15CaseSensitivityE @ 3758 NONAME + _ZNK10QStringRef11lastIndexOfERKS_iN2Qt15CaseSensitivityE @ 3759 NONAME + _ZNK10QStringRef11toLocal8BitEv @ 3760 NONAME + _ZNK10QStringRef5countE5QCharN2Qt15CaseSensitivityE @ 3761 NONAME + _ZNK10QStringRef5countERK7QStringN2Qt15CaseSensitivityE @ 3762 NONAME + _ZNK10QStringRef5countERKS_N2Qt15CaseSensitivityE @ 3763 NONAME + _ZNK10QStringRef6toUcs4Ev @ 3764 NONAME + _ZNK10QStringRef6toUtf8Ev @ 3765 NONAME + _ZNK10QStringRef7indexOfE13QLatin1StringiN2Qt15CaseSensitivityE @ 3766 NONAME + _ZNK10QStringRef7indexOfE5QChariN2Qt15CaseSensitivityE @ 3767 NONAME + _ZNK10QStringRef7indexOfERK7QStringiN2Qt15CaseSensitivityE @ 3768 NONAME + _ZNK10QStringRef7indexOfERKS_iN2Qt15CaseSensitivityE @ 3769 NONAME + _ZNK10QStringRef7toAsciiEv @ 3770 NONAME + _ZNK10QStringRef8endsWithE13QLatin1StringN2Qt15CaseSensitivityE @ 3771 NONAME + _ZNK10QStringRef8endsWithE5QCharN2Qt15CaseSensitivityE @ 3772 NONAME + _ZNK10QStringRef8endsWithERK7QStringN2Qt15CaseSensitivityE @ 3773 NONAME + _ZNK10QStringRef8endsWithERKS_N2Qt15CaseSensitivityE @ 3774 NONAME + _ZNK10QStringRef8toLatin1Ev @ 3775 NONAME + _ZNK11QMetaObject4castEPK7QObject @ 3776 NONAME + _ZNK13QSharedMemory9nativeKeyEv @ 3777 NONAME + _ZNK16QAnimationDriver10metaObjectEv @ 3778 NONAME + _ZNK16QAnimationDriver9isRunningEv @ 3779 NONAME + _ZNK4QUrl11isLocalFileEv @ 3780 NONAME + _ZNK7QObject17senderSignalIndexEv @ 3781 NONAME + _ZNK7QString10startsWithERK10QStringRefN2Qt15CaseSensitivityE @ 3782 NONAME + _ZNK7QString11lastIndexOfERK10QStringRefiN2Qt15CaseSensitivityE @ 3783 NONAME + _ZNK7QString5countERK10QStringRefN2Qt15CaseSensitivityE @ 3784 NONAME + _ZNK7QString7indexOfERK10QStringRefiN2Qt15CaseSensitivityE @ 3785 NONAME + _ZNK7QString8endsWithERK10QStringRefN2Qt15CaseSensitivityE @ 3786 NONAME + _ZTI13QUnifiedTimer @ 3787 NONAME + _ZTI16QAnimationDriver @ 3788 NONAME + _ZTI23QAnimationDriverPrivate @ 3789 NONAME + _ZTV13QUnifiedTimer @ 3790 NONAME + _ZTV16QAnimationDriver @ 3791 NONAME + _ZTV23QAnimationDriverPrivate @ 3792 NONAME diff --git a/src/s60installs/eabi/QtDeclarativeu.def b/src/s60installs/eabi/QtDeclarativeu.def index b0efab4..bb0bd5a 100644 --- a/src/s60installs/eabi/QtDeclarativeu.def +++ b/src/s60installs/eabi/QtDeclarativeu.def @@ -1883,6 +1883,6 @@ EXPORTS _ZThn8_N29QDeclarativeAbstractAnimation9setTargetERK20QDeclarativeProperty @ 1882 NONAME ABSENT _ZThn8_N29QDeclarativeAbstractAnimationD0Ev @ 1883 NONAME ABSENT _ZThn8_N29QDeclarativeAbstractAnimationD1Ev @ 1884 NONAME ABSENT - _ZN23QDeclarativeDebugHelper15enableDebuggingEv @ 1885 NONAME + _ZN23QDeclarativeDebugHelper15enableDebuggingEv @ 1885 NONAME ABSENT _ZN27QDeclarativePropertyPrivate7connectEPK7QObjectiS2_iiPi @ 1886 NONAME ABSENT diff --git a/src/s60installs/eabi/QtGuiu.def b/src/s60installs/eabi/QtGuiu.def index d6fbdd3..703d11b 100644 --- a/src/s60installs/eabi/QtGuiu.def +++ b/src/s60installs/eabi/QtGuiu.def @@ -12105,7 +12105,7 @@ EXPORTS _ZN15QStaticTextItemD1Ev @ 12104 NONAME _ZN15QStaticTextItemD2Ev @ 12105 NONAME _ZN19QEventDispatcherS6031reactivateDeferredActiveObjectsEv @ 12106 NONAME - _Z18qt_addBitmapToPathffPKhiiiP12QPainterPath @ 12107 NONAME + _Z18qt_addBitmapToPathffPKhiiiP12QPainterPath @ 12107 NONAME ABSENT _Z22qt_fontdata_from_indexi @ 12108 NONAME _ZN10QBlittable4lockEv @ 12109 NONAME _ZN10QBlittable6unlockEv @ 12110 NONAME @@ -12113,120 +12113,124 @@ EXPORTS _ZN10QBlittableD0Ev @ 12112 NONAME _ZN10QBlittableD1Ev @ 12113 NONAME _ZN10QBlittableD2Ev @ 12114 NONAME - _ZN11QFontEngine16alphaMapForGlyphEj6QFixed @ 12115 NONAME - _ZN11QFontEngine16alphaMapForGlyphEj6QFixedRK10QTransform @ 12116 NONAME - _ZN11QFontEngine19alphaRGBMapForGlyphEj6QFixediRK10QTransform @ 12117 NONAME - _ZN12QInputDialog7getItemEP7QWidgetRK7QStringS4_RK11QStringListibPb6QFlagsIN2Qt10WindowTypeEES9_INSA_15InputMethodHintEE @ 12118 NONAME - _ZN12QInputDialog7getTextEP7QWidgetRK7QStringS4_N9QLineEdit8EchoModeES4_Pb6QFlagsIN2Qt10WindowTypeEES8_INS9_15InputMethodHintEE @ 12119 NONAME - _ZN14QWindowSurfaceC2EP7QWidgetb @ 12120 NONAME - _ZN18QTextureGlyphCache19fillInPendingGlyphsEv @ 12121 NONAME - _ZN19QAbstractProxyModel11setItemDataERK11QModelIndexRK4QMapIi8QVariantE @ 12122 NONAME - _ZN19QAbstractProxyModel17resetInternalDataEv @ 12123 NONAME - _ZN19QAbstractProxyModel4sortEiN2Qt9SortOrderE @ 12124 NONAME - _ZN19QAbstractProxyModel9fetchMoreERK11QModelIndex @ 12125 NONAME - _ZN19QApplicationPrivateC1ERiPPcN12QApplication4TypeEi @ 12126 NONAME - _ZN19QApplicationPrivateC2ERiPPcN12QApplication4TypeEi @ 12127 NONAME - _ZN19QBlitterPaintEngine10drawPixmapERK6QRectFRK7QPixmapS2_ @ 12128 NONAME - _ZN19QBlitterPaintEngine10penChangedEv @ 12129 NONAME - _ZN19QBlitterPaintEngine11drawEllipseERK6QRectF @ 12130 NONAME - _ZN19QBlitterPaintEngine12brushChangedEv @ 12131 NONAME - _ZN19QBlitterPaintEngine12drawTextItemERK7QPointFRK9QTextItem @ 12132 NONAME - _ZN19QBlitterPaintEngine14opacityChangedEv @ 12133 NONAME - _ZN19QBlitterPaintEngine16transformChangedEv @ 12134 NONAME - _ZN19QBlitterPaintEngine18brushOriginChangedEv @ 12135 NONAME - _ZN19QBlitterPaintEngine18clipEnabledChangedEv @ 12136 NONAME - _ZN19QBlitterPaintEngine18drawStaticTextItemEP15QStaticTextItem @ 12137 NONAME - _ZN19QBlitterPaintEngine18renderHintsChangedEv @ 12138 NONAME - _ZN19QBlitterPaintEngine22compositionModeChangedEv @ 12139 NONAME - _ZN19QBlitterPaintEngine3endEv @ 12140 NONAME - _ZN19QBlitterPaintEngine4clipERK11QVectorPathN2Qt13ClipOperationE @ 12141 NONAME - _ZN19QBlitterPaintEngine4clipERK5QRectN2Qt13ClipOperationE @ 12142 NONAME - _ZN19QBlitterPaintEngine4clipERK7QRegionN2Qt13ClipOperationE @ 12143 NONAME - _ZN19QBlitterPaintEngine4fillERK11QVectorPathRK6QBrush @ 12144 NONAME - _ZN19QBlitterPaintEngine5beginEP12QPaintDevice @ 12145 NONAME - _ZN19QBlitterPaintEngine6strokeERK11QVectorPathRK4QPen @ 12146 NONAME - _ZN19QBlitterPaintEngine8fillRectERK6QRectFRK6QBrush @ 12147 NONAME - _ZN19QBlitterPaintEngine8fillRectERK6QRectFRK6QColor @ 12148 NONAME - _ZN19QBlitterPaintEngine8setStateEP13QPainterState @ 12149 NONAME - _ZN19QBlitterPaintEngine9drawImageERK6QRectFRK6QImageS2_6QFlagsIN2Qt19ImageConversionFlagEE @ 12150 NONAME - _ZN19QBlitterPaintEngine9drawRectsEPK5QRecti @ 12151 NONAME - _ZN19QBlitterPaintEngine9drawRectsEPK6QRectFi @ 12152 NONAME - _ZN19QBlitterPaintEngineC1EP20QBlittablePixmapData @ 12153 NONAME - _ZN19QBlitterPaintEngineC2EP20QBlittablePixmapData @ 12154 NONAME - _ZN19QBlitterPaintEngineD0Ev @ 12155 NONAME - _ZN19QBlitterPaintEngineD1Ev @ 12156 NONAME - _ZN19QBlitterPaintEngineD2Ev @ 12157 NONAME - _ZN19QGraphicsGridLayout10removeItemEP19QGraphicsLayoutItem @ 12158 NONAME - _ZN20QBlittablePixmapData12setBlittableEP10QBlittable @ 12159 NONAME - _ZN20QBlittablePixmapData4fillERK6QColor @ 12160 NONAME - _ZN20QBlittablePixmapData6bufferEv @ 12161 NONAME - _ZN20QBlittablePixmapData6resizeEii @ 12162 NONAME - _ZN20QBlittablePixmapData9fromImageERK6QImage6QFlagsIN2Qt19ImageConversionFlagEE @ 12163 NONAME - _ZN20QBlittablePixmapDataC2Ev @ 12164 NONAME - _ZN20QBlittablePixmapDataD0Ev @ 12165 NONAME - _ZN20QBlittablePixmapDataD1Ev @ 12166 NONAME - _ZN20QBlittablePixmapDataD2Ev @ 12167 NONAME - _ZN20QRasterWindowSurfaceC1EP7QWidgetb @ 12168 NONAME - _ZN20QRasterWindowSurfaceC2EP7QWidgetb @ 12169 NONAME - _ZN23QImageTextureGlyphCache11fillTextureERKN18QTextureGlyphCache5CoordEj6QFixed @ 12170 NONAME - _ZN6QImage4fillEN2Qt11GlobalColorE @ 12171 NONAME - _ZN6QImage4fillERK6QColor @ 12172 NONAME - _ZN7QGlyphs12setPositionsERK7QVectorI7QPointFE @ 12173 NONAME - _ZN7QGlyphs15setGlyphIndexesERK7QVectorIjE @ 12174 NONAME - _ZN7QGlyphs5clearEv @ 12175 NONAME - _ZN7QGlyphs6detachEv @ 12176 NONAME - _ZN7QGlyphs7setFontERK5QFont @ 12177 NONAME - _ZN7QGlyphsC1ERKS_ @ 12178 NONAME - _ZN7QGlyphsC1Ev @ 12179 NONAME - _ZN7QGlyphsC2ERKS_ @ 12180 NONAME - _ZN7QGlyphsC2Ev @ 12181 NONAME - _ZN7QGlyphsD1Ev @ 12182 NONAME - _ZN7QGlyphsD2Ev @ 12183 NONAME - _ZN7QGlyphsaSERKS_ @ 12184 NONAME - _ZN7QGlyphspLERKS_ @ 12185 NONAME - _ZN8QPainter10drawGlyphsERK7QPointFRK7QGlyphs @ 12186 NONAME - _ZNK10QBlittable12capabilitiesEv @ 12187 NONAME - _ZNK10QBlittable4sizeEv @ 12188 NONAME - _ZNK10QTabWidget14heightForWidthEi @ 12189 NONAME - _ZNK11QFontEngine18createExplicitFontEv @ 12190 NONAME - _ZNK11QFontEngine26createExplicitFontWithNameERK7QString @ 12191 NONAME - _ZNK11QTextLayout6glyphsEv @ 12192 NONAME - _ZNK12QFontMetrics10inFontUcs4Ej @ 12193 NONAME - _ZNK12QRadioButton15minimumSizeHintEv @ 12194 NONAME - _ZNK13QFontMetricsF10inFontUcs4Ej @ 12195 NONAME - _ZNK13QTextFragment6glyphsEv @ 12196 NONAME - _ZNK14QWidgetPrivate17hasHeightForWidthEv @ 12197 NONAME - _ZNK16QFileSystemModel5rmdirERK11QModelIndex @ 12198 NONAME - _ZNK18QTextureGlyphCache18textureMapForGlyphEj6QFixed @ 12199 NONAME - _ZNK18QTextureGlyphCache20subPixelPositionForXE6QFixed @ 12200 NONAME - _ZNK18QTextureGlyphCache30calculateSubPixelPositionCountEj @ 12201 NONAME - _ZNK19QAbstractProxyModel11hasChildrenERK11QModelIndex @ 12202 NONAME - _ZNK19QAbstractProxyModel12canFetchMoreERK11QModelIndex @ 12203 NONAME - _ZNK19QAbstractProxyModel20supportedDropActionsEv @ 12204 NONAME - _ZNK19QAbstractProxyModel4spanERK11QModelIndex @ 12205 NONAME - _ZNK19QAbstractProxyModel5buddyERK11QModelIndex @ 12206 NONAME - _ZNK19QAbstractProxyModel8mimeDataERK5QListI11QModelIndexE @ 12207 NONAME - _ZNK19QAbstractProxyModel9mimeTypesEv @ 12208 NONAME - _ZNK19QBlitterPaintEngine11createStateEP13QPainterState @ 12209 NONAME - _ZNK20QBlittablePixmapData11paintEngineEv @ 12210 NONAME - _ZNK20QBlittablePixmapData15hasAlphaChannelEv @ 12211 NONAME - _ZNK20QBlittablePixmapData6metricEN12QPaintDevice17PaintDeviceMetricE @ 12212 NONAME - _ZNK20QBlittablePixmapData7toImageEv @ 12213 NONAME - _ZNK20QBlittablePixmapData9blittableEv @ 12214 NONAME - _ZNK7QGlyphs12glyphIndexesEv @ 12215 NONAME - _ZNK7QGlyphs4fontEv @ 12216 NONAME - _ZNK7QGlyphs9positionsEv @ 12217 NONAME - _ZNK7QGlyphseqERKS_ @ 12218 NONAME - _ZNK7QGlyphsneERKS_ @ 12219 NONAME - _ZNK7QGlyphsplERKS_ @ 12220 NONAME - _ZNK8QPainter16clipBoundingRectEv @ 12221 NONAME - _ZNK9QCheckBox15minimumSizeHintEv @ 12222 NONAME - _ZNK9QTextLine6glyphsEii @ 12223 NONAME - _ZTI10QBlittable @ 12224 NONAME - _ZTI19QBlitterPaintEngine @ 12225 NONAME - _ZTI20QBlittablePixmapData @ 12226 NONAME - _ZTV10QBlittable @ 12227 NONAME - _ZTV19QBlitterPaintEngine @ 12228 NONAME - _ZTV20QBlittablePixmapData @ 12229 NONAME - _Zls6QDebugPK13QSymbianEvent @ 12230 NONAME + _ZN11QFontEngine19alphaRGBMapForGlyphEj6QFixediRK10QTransform @ 12115 NONAME + _ZN12QInputDialog7getItemEP7QWidgetRK7QStringS4_RK11QStringListibPb6QFlagsIN2Qt10WindowTypeEES9_INSA_15InputMethodHintEE @ 12116 NONAME + _ZN12QInputDialog7getTextEP7QWidgetRK7QStringS4_N9QLineEdit8EchoModeES4_Pb6QFlagsIN2Qt10WindowTypeEES8_INS9_15InputMethodHintEE @ 12117 NONAME + _ZN14QWindowSurfaceC2EP7QWidgetb @ 12118 NONAME + _ZN18QTextureGlyphCache19fillInPendingGlyphsEv @ 12119 NONAME + _ZN19QAbstractProxyModel11setItemDataERK11QModelIndexRK4QMapIi8QVariantE @ 12120 NONAME + _ZN19QAbstractProxyModel17resetInternalDataEv @ 12121 NONAME + _ZN19QAbstractProxyModel4sortEiN2Qt9SortOrderE @ 12122 NONAME + _ZN19QAbstractProxyModel9fetchMoreERK11QModelIndex @ 12123 NONAME + _ZN19QApplicationPrivateC1ERiPPcN12QApplication4TypeEi @ 12124 NONAME + _ZN19QApplicationPrivateC2ERiPPcN12QApplication4TypeEi @ 12125 NONAME + _ZN19QBlitterPaintEngine10drawPixmapERK6QRectFRK7QPixmapS2_ @ 12126 NONAME + _ZN19QBlitterPaintEngine10penChangedEv @ 12127 NONAME + _ZN19QBlitterPaintEngine11drawEllipseERK6QRectF @ 12128 NONAME + _ZN19QBlitterPaintEngine12brushChangedEv @ 12129 NONAME + _ZN19QBlitterPaintEngine12drawTextItemERK7QPointFRK9QTextItem @ 12130 NONAME + _ZN19QBlitterPaintEngine14opacityChangedEv @ 12131 NONAME + _ZN19QBlitterPaintEngine16transformChangedEv @ 12132 NONAME + _ZN19QBlitterPaintEngine18brushOriginChangedEv @ 12133 NONAME + _ZN19QBlitterPaintEngine18clipEnabledChangedEv @ 12134 NONAME + _ZN19QBlitterPaintEngine18drawStaticTextItemEP15QStaticTextItem @ 12135 NONAME + _ZN19QBlitterPaintEngine18renderHintsChangedEv @ 12136 NONAME + _ZN19QBlitterPaintEngine22compositionModeChangedEv @ 12137 NONAME + _ZN19QBlitterPaintEngine3endEv @ 12138 NONAME + _ZN19QBlitterPaintEngine4clipERK11QVectorPathN2Qt13ClipOperationE @ 12139 NONAME + _ZN19QBlitterPaintEngine4clipERK5QRectN2Qt13ClipOperationE @ 12140 NONAME + _ZN19QBlitterPaintEngine4clipERK7QRegionN2Qt13ClipOperationE @ 12141 NONAME + _ZN19QBlitterPaintEngine4fillERK11QVectorPathRK6QBrush @ 12142 NONAME + _ZN19QBlitterPaintEngine5beginEP12QPaintDevice @ 12143 NONAME + _ZN19QBlitterPaintEngine6strokeERK11QVectorPathRK4QPen @ 12144 NONAME + _ZN19QBlitterPaintEngine8fillRectERK6QRectFRK6QBrush @ 12145 NONAME + _ZN19QBlitterPaintEngine8fillRectERK6QRectFRK6QColor @ 12146 NONAME + _ZN19QBlitterPaintEngine8setStateEP13QPainterState @ 12147 NONAME + _ZN19QBlitterPaintEngine9drawImageERK6QRectFRK6QImageS2_6QFlagsIN2Qt19ImageConversionFlagEE @ 12148 NONAME + _ZN19QBlitterPaintEngine9drawRectsEPK5QRecti @ 12149 NONAME + _ZN19QBlitterPaintEngine9drawRectsEPK6QRectFi @ 12150 NONAME + _ZN19QBlitterPaintEngineC1EP20QBlittablePixmapData @ 12151 NONAME + _ZN19QBlitterPaintEngineC2EP20QBlittablePixmapData @ 12152 NONAME + _ZN19QBlitterPaintEngineD0Ev @ 12153 NONAME + _ZN19QBlitterPaintEngineD1Ev @ 12154 NONAME + _ZN19QBlitterPaintEngineD2Ev @ 12155 NONAME + _ZN19QGraphicsGridLayout10removeItemEP19QGraphicsLayoutItem @ 12156 NONAME + _ZN20QBlittablePixmapData12setBlittableEP10QBlittable @ 12157 NONAME + _ZN20QBlittablePixmapData4fillERK6QColor @ 12158 NONAME + _ZN20QBlittablePixmapData6bufferEv @ 12159 NONAME + _ZN20QBlittablePixmapData6resizeEii @ 12160 NONAME + _ZN20QBlittablePixmapData9fromImageERK6QImage6QFlagsIN2Qt19ImageConversionFlagEE @ 12161 NONAME + _ZN20QBlittablePixmapDataC2Ev @ 12162 NONAME + _ZN20QBlittablePixmapDataD0Ev @ 12163 NONAME + _ZN20QBlittablePixmapDataD1Ev @ 12164 NONAME + _ZN20QBlittablePixmapDataD2Ev @ 12165 NONAME + _ZN20QRasterWindowSurfaceC1EP7QWidgetb @ 12166 NONAME + _ZN20QRasterWindowSurfaceC2EP7QWidgetb @ 12167 NONAME + _ZN23QImageTextureGlyphCache11fillTextureERKN18QTextureGlyphCache5CoordEj6QFixed @ 12168 NONAME + _ZN6QImage4fillEN2Qt11GlobalColorE @ 12169 NONAME + _ZN6QImage4fillERK6QColor @ 12170 NONAME + _ZN7QGlyphs12setPositionsERK7QVectorI7QPointFE @ 12171 NONAME + _ZN7QGlyphs15setGlyphIndexesERK7QVectorIjE @ 12172 NONAME + _ZN7QGlyphs5clearEv @ 12173 NONAME + _ZN7QGlyphs6detachEv @ 12174 NONAME + _ZN7QGlyphs7setFontERK5QFont @ 12175 NONAME + _ZN7QGlyphsC1ERKS_ @ 12176 NONAME + _ZN7QGlyphsC1Ev @ 12177 NONAME + _ZN7QGlyphsC2ERKS_ @ 12178 NONAME + _ZN7QGlyphsC2Ev @ 12179 NONAME + _ZN7QGlyphsD1Ev @ 12180 NONAME + _ZN7QGlyphsD2Ev @ 12181 NONAME + _ZN7QGlyphsaSERKS_ @ 12182 NONAME + _ZN7QGlyphspLERKS_ @ 12183 NONAME + _ZN8QPainter10drawGlyphsERK7QPointFRK7QGlyphs @ 12184 NONAME + _ZNK10QBlittable12capabilitiesEv @ 12185 NONAME + _ZNK10QBlittable4sizeEv @ 12186 NONAME + _ZNK10QTabWidget14heightForWidthEi @ 12187 NONAME + _ZNK11QFontEngine18createExplicitFontEv @ 12188 NONAME + _ZNK11QFontEngine26createExplicitFontWithNameERK7QString @ 12189 NONAME + _ZNK11QTextLayout6glyphsEv @ 12190 NONAME + _ZNK12QFontMetrics10inFontUcs4Ej @ 12191 NONAME + _ZNK12QRadioButton15minimumSizeHintEv @ 12192 NONAME + _ZNK13QFontMetricsF10inFontUcs4Ej @ 12193 NONAME + _ZNK13QTextFragment6glyphsEv @ 12194 NONAME + _ZNK14QWidgetPrivate17hasHeightForWidthEv @ 12195 NONAME + _ZNK16QFileSystemModel5rmdirERK11QModelIndex @ 12196 NONAME + _ZNK18QTextureGlyphCache18textureMapForGlyphEj6QFixed @ 12197 NONAME + _ZNK18QTextureGlyphCache20subPixelPositionForXE6QFixed @ 12198 NONAME + _ZNK18QTextureGlyphCache30calculateSubPixelPositionCountEj @ 12199 NONAME + _ZNK19QAbstractProxyModel11hasChildrenERK11QModelIndex @ 12200 NONAME + _ZNK19QAbstractProxyModel12canFetchMoreERK11QModelIndex @ 12201 NONAME + _ZNK19QAbstractProxyModel20supportedDropActionsEv @ 12202 NONAME + _ZNK19QAbstractProxyModel4spanERK11QModelIndex @ 12203 NONAME + _ZNK19QAbstractProxyModel5buddyERK11QModelIndex @ 12204 NONAME + _ZNK19QAbstractProxyModel8mimeDataERK5QListI11QModelIndexE @ 12205 NONAME + _ZNK19QAbstractProxyModel9mimeTypesEv @ 12206 NONAME + _ZNK19QBlitterPaintEngine11createStateEP13QPainterState @ 12207 NONAME + _ZNK20QBlittablePixmapData11paintEngineEv @ 12208 NONAME + _ZNK20QBlittablePixmapData15hasAlphaChannelEv @ 12209 NONAME + _ZNK20QBlittablePixmapData6metricEN12QPaintDevice17PaintDeviceMetricE @ 12210 NONAME + _ZNK20QBlittablePixmapData7toImageEv @ 12211 NONAME + _ZNK20QBlittablePixmapData9blittableEv @ 12212 NONAME + _ZNK7QGlyphs12glyphIndexesEv @ 12213 NONAME + _ZNK7QGlyphs4fontEv @ 12214 NONAME + _ZNK7QGlyphs9positionsEv @ 12215 NONAME + _ZNK7QGlyphseqERKS_ @ 12216 NONAME + _ZNK7QGlyphsneERKS_ @ 12217 NONAME + _ZNK7QGlyphsplERKS_ @ 12218 NONAME + _ZNK8QPainter16clipBoundingRectEv @ 12219 NONAME + _ZNK9QCheckBox15minimumSizeHintEv @ 12220 NONAME + _ZNK9QTextLine6glyphsEii @ 12221 NONAME + _ZTI10QBlittable @ 12222 NONAME + _ZTI19QBlitterPaintEngine @ 12223 NONAME + _ZTI20QBlittablePixmapData @ 12224 NONAME + _ZTV10QBlittable @ 12225 NONAME + _ZTV19QBlitterPaintEngine @ 12226 NONAME + _ZTV20QBlittablePixmapData @ 12227 NONAME + _Zls6QDebugPK13QSymbianEvent @ 12228 NONAME + _ZN13QS60MainAppUi25ProcessCommandParametersLE11TApaCommandR4TBufILi256EERK6TDesC8 @ 12229 NONAME ABSENT + _ZN14QFileOpenEventC1ERK5RFile @ 12230 NONAME ABSENT + _ZN14QFileOpenEventC2ERK5RFile @ 12231 NONAME ABSENT + _ZNK14QFileOpenEvent8openFileER5QFile6QFlagsIN9QIODevice12OpenModeFlagEE @ 12232 NONAME ABSENT + _ZN11QFontEngine16alphaMapForGlyphEj6QFixed @ 12233 NONAME + _ZN11QFontEngine16alphaMapForGlyphEj6QFixedRK10QTransform @ 12234 NONAME diff --git a/src/s60installs/eabi/QtOpenGLu.def b/src/s60installs/eabi/QtOpenGLu.def index 7ceade4..c92d99e 100644 --- a/src/s60installs/eabi/QtOpenGLu.def +++ b/src/s60installs/eabi/QtOpenGLu.def @@ -702,4 +702,9 @@ EXPORTS _ZeqRK9QGLFormatS1_ @ 701 NONAME _Zls6QDebugRK9QGLFormat @ 702 NONAME _ZneRK9QGLFormatS1_ @ 703 NONAME + _ZN16QGLWindowSurface26initializeOffscreenTextureERK5QSize @ 704 NONAME + _ZNK20QGLTextureGlyphCache15maxTextureWidthEv @ 705 NONAME + _ZNK20QGLTextureGlyphCache16maxTextureHeightEv @ 706 NONAME + _ZThn8_NK20QGLTextureGlyphCache15maxTextureWidthEv @ 707 NONAME + _ZThn8_NK20QGLTextureGlyphCache16maxTextureHeightEv @ 708 NONAME diff --git a/src/s60installs/s60installs.pro b/src/s60installs/s60installs.pro index 2b3229e..fc364bc 100644 --- a/src/s60installs/s60installs.pro +++ b/src/s60installs/s60installs.pro @@ -87,7 +87,7 @@ symbian: { DEPLOYMENT += bearer_plugin } - contains(S60_VERSION, 5.0)|contains(S60_VERSION, symbian3) { + !contains(S60_VERSION, 3.1):!contains(S60_VERSION, 3.2) { feedback_plugin.sources = $$QT_BUILD_TREE/plugins/s60/feedback/qtactilefeedback$${QT_LIBINFIX}.dll feedback_plugin.path = c:$$QT_PLUGINS_BASE_DIR/feedback DEPLOYMENT += feedback_plugin @@ -191,11 +191,9 @@ symbian: { qtlibraries.files += $$QMAKE_LIBDIR_QT/QtOpenVG$${QT_LIBINFIX}.dll graphicssystems_plugins.files += $$QT_BUILD_TREE/plugins/graphicssystems/qvggraphicssystem$${QT_LIBINFIX}.dll # OpenVG requires Symbian^3 or later - pkg_platform_dependencies -= \ - "[0x101F7961],0,0,0,{\"S60ProductID\"}" \ - "[0x102032BE],0,0,0,{\"S60ProductID\"}" \ - "[0x102752AE],0,0,0,{\"S60ProductID\"}" \ - "[0x1028315F],0,0,0,{\"S60ProductID\"}" + pkg_platform_dependencies = \ + "[0x20022E6D],0,0,0,{\"S60ProductID\"}" \ + "[0x20032DE7],0,0,0,{\"S60ProductID\"}" } contains(QT_CONFIG, opengl) { diff --git a/src/script/api/qscriptcontextinfo.cpp b/src/script/api/qscriptcontextinfo.cpp index a90e014..8528dec 100644 --- a/src/script/api/qscriptcontextinfo.cpp +++ b/src/script/api/qscriptcontextinfo.cpp @@ -177,7 +177,7 @@ QScriptContextInfoPrivate::QScriptContextInfoPrivate(const QScriptContext *conte fileName = source->url(); } - // Get the others informations: + // Get the others information: JSC::JSObject *callee = frame->callee(); if (callee && callee->inherits(&JSC::InternalFunction::info)) functionName = JSC::asInternalFunction(callee)->name(frame); diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp index 69abcad..1fcbd73 100644 --- a/src/script/api/qscriptengine.cpp +++ b/src/script/api/qscriptengine.cpp @@ -1744,7 +1744,9 @@ QVariant QScriptEnginePrivate::toVariant(JSC::ExecState *exec, JSC::JSValue valu else if (QScriptDeclarativeClass *dc = declarativeClass(value)) return dc->toVariant(declarativeObject(value)); return variantMapFromObject(exec, JSC::asObject(value)); - } else if (value.isNumber()) { + } else if (value.isInt32()) { + return QVariant(toInt32(exec, value)); + } else if (value.isDouble()) { return QVariant(toNumber(exec, value)); } else if (value.isString()) { return QVariant(toString(exec, value)); diff --git a/src/script/api/qscriptvalue.cpp b/src/script/api/qscriptvalue.cpp index 8cd4057..6ce54f5 100644 --- a/src/script/api/qscriptvalue.cpp +++ b/src/script/api/qscriptvalue.cpp @@ -1716,7 +1716,14 @@ QScriptValue QScriptValue::construct(const QScriptValueList &args) QVarLengthArray<JSC::JSValue, 8> argsVector(args.size()); for (int i = 0; i < args.size(); ++i) { - if (!args.at(i).isValid()) + QScriptValue arg = args.at(i); + if (QScriptValuePrivate::getEngine(arg) != d->engine && QScriptValuePrivate::getEngine(arg)) { + qWarning("QScriptValue::construct() failed: " + "cannot construct function with argument created in " + "a different engine"); + return QScriptValue(); + } + if (!arg.isValid()) argsVector[i] = JSC::jsUndefined(); else argsVector[i] = d->engine->scriptValueToJSCValue(args.at(i)); @@ -1766,6 +1773,12 @@ QScriptValue QScriptValue::construct(const QScriptValue &arguments) JSC::ExecState *exec = d->engine->currentFrame; + if (QScriptValuePrivate::getEngine(arguments) != d->engine && QScriptValuePrivate::getEngine(arguments)) { + qWarning("QScriptValue::construct() failed: " + "cannot construct function with argument created in " + "a different engine"); + return QScriptValue(); + } JSC::JSValue array = d->engine->scriptValueToJSCValue(arguments); // copied from runtime/FunctionPrototype.cpp, functionProtoFuncApply() JSC::MarkedArgumentBuffer applyArgs; diff --git a/src/sql/models/qsqlrelationaldelegate.h b/src/sql/models/qsqlrelationaldelegate.h index 7600e52..96760e1 100644 --- a/src/sql/models/qsqlrelationaldelegate.h +++ b/src/sql/models/qsqlrelationaldelegate.h @@ -59,23 +59,23 @@ class QSqlRelationalDelegate: public QItemDelegate { public: -explicit QSqlRelationalDelegate(QObject *parent = 0) - : QItemDelegate(parent) +explicit QSqlRelationalDelegate(QObject *aParent = 0) + : QItemDelegate(aParent) {} ~QSqlRelationalDelegate() {} -QWidget *createEditor(QWidget *parent, +QWidget *createEditor(QWidget *aParent, const QStyleOptionViewItem &option, const QModelIndex &index) const { const QSqlRelationalTableModel *sqlModel = qobject_cast<const QSqlRelationalTableModel *>(index.model()); QSqlTableModel *childModel = sqlModel ? sqlModel->relationModel(index.column()) : 0; if (!childModel) - return QItemDelegate::createEditor(parent, option, index); + return QItemDelegate::createEditor(aParent, option, index); - QComboBox *combo = new QComboBox(parent); + QComboBox *combo = new QComboBox(aParent); combo->setModel(childModel); combo->setModelColumn(childModel->fieldIndex(sqlModel->relation(index.column()).displayColumn())); combo->installEventFilter(const_cast<QSqlRelationalDelegate *>(this)); diff --git a/src/testlib/qtesttouch.h b/src/testlib/qtesttouch.h index 1beef85..6c58e4c 100644 --- a/src/testlib/qtesttouch.h +++ b/src/testlib/qtesttouch.h @@ -106,8 +106,8 @@ namespace QTest } private: - QTouchEventSequence(QWidget *widget, QTouchEvent::DeviceType deviceType) - : targetWidget(widget), deviceType(deviceType) + QTouchEventSequence(QWidget *widget, QTouchEvent::DeviceType aDeviceType) + : targetWidget(widget), deviceType(aDeviceType) { } QTouchEventSequence(const QTouchEventSequence &v); diff --git a/src/xmlpatterns/expr/qarithmeticexpression_p.h b/src/xmlpatterns/expr/qarithmeticexpression_p.h index 66c1f13..6ff8219 100644 --- a/src/xmlpatterns/expr/qarithmeticexpression_p.h +++ b/src/xmlpatterns/expr/qarithmeticexpression_p.h @@ -62,7 +62,7 @@ QT_BEGIN_NAMESPACE namespace QPatternist { /** - * @short Implements arithmetics, such as multiplication and substraction. + * @short Implements arithmetics, such as multiplication and subtraction. * * * Optimizations: there's some operator/value combos that are no ops. For diff --git a/tests/arthur/baselineserver/src/baselineserver.cpp b/tests/arthur/baselineserver/src/baselineserver.cpp index 7679f13..0399224 100644 --- a/tests/arthur/baselineserver/src/baselineserver.cpp +++ b/tests/arthur/baselineserver/src/baselineserver.cpp @@ -51,6 +51,7 @@ #include <QHostInfo> #include <QTextStream> #include <QProcess> +#include <QDirIterator> QString BaselineServer::storage; @@ -97,8 +98,8 @@ void BaselineServer::heartbeat() if (me.lastModified() == meLastMod) return; - // (could close() here to avoid accepting new connections, to avoid livelock) - // also, could check for a timeout to force exit, to avoid hung threads blocking + //# (could close() here to avoid accepting new connections, to avoid livelock) + //# also, could check for a timeout to force exit, to avoid hung threads blocking bool isServing = false; foreach(BaselineThread *thread, findChildren<BaselineThread *>()) { if (thread->isRunning()) { @@ -304,10 +305,13 @@ void BaselineHandler::mapPlatformInfo() if (host.isEmpty() || host == QLS("localhost")) { host = plat.value(PI_HostAddress); } else { - // remove index postfix typical of vm hostnames - host.remove(QRegExp(QLS("\\d+$"))); - if (host.endsWith(QLC('-'))) - host.chop(1); + //# Site specific, should be in a config file + if (!host.startsWith(QLS("oldhcp"))) { + // remove index postfix typical of vm hostnames + host.remove(QRegExp(QLS("\\d+$"))); + if (host.endsWith(QLC('-'))) + host.chop(1); + } } if (host.isEmpty()) host = QLS("unknownhost"); @@ -349,43 +353,18 @@ QString BaselineHandler::pathForItem(const ImageItem &item, bool isBaseline, boo } -QString BaselineHandler::updateAllBaselines(const QString &host, const QString &id, - const QString &engine, const QString &format) +QString BaselineHandler::clearAllBaselines(const QString &context) { -#if 0 - QString basePath(BaselineServer::storagePath()); - QString srcDir(basePath + host + QLC('/') + itemSubPath(engine, format, false) + id); - QString dstDir(basePath + host + QLC('/') + itemSubPath(engine, format)); - - QDir dir(srcDir); - QStringList nameFilter; - nameFilter << "*.metadata" << "*.png"; - QStringList fileList = dir.entryList(nameFilter, QDir::Files | QDir::NoDotAndDotDot); - - // remove the generated _fuzzycompared.png and _compared.png files from the list - QMutableStringListIterator it(fileList); + int tot = 0; + int failed = 0; + QDirIterator it(BaselineServer::storagePath() + QLC('/') + context, + QStringList() << QLS("*.png") << QLS("*.metadata")); while (it.hasNext()) { - it.next(); - if (it.value().endsWith(QLS("compared.png"))) - it.remove(); + tot++; + if (!QFile::remove(it.next())) + failed++; } - - QString res; - QProcess proc; - proc.setWorkingDirectory(srcDir); - proc.setProcessChannelMode(QProcess::MergedChannels); - proc.start(QLS("cp"), QStringList() << QLS("-f") << fileList << dstDir); - proc.waitForFinished(); - if (proc.exitCode() == 0) - res = QLS("Successfully updated baseline for all failed tests."); - else - res = QString("Error updating baseline: %1<br>" - "Command output: <pre>%2</pre>").arg(proc.errorString(), proc.readAll().constData()); - - return res; -#else - return QString(); -#endif + return QString(QLS("%1 of %2 baselines cleared from context ")).arg((tot-failed)/2).arg(tot/2) + context; } QString BaselineHandler::updateSingleBaseline(const QString &oldBaseline, const QString &newBaseline) diff --git a/tests/arthur/baselineserver/src/baselineserver.h b/tests/arthur/baselineserver/src/baselineserver.h index d49aedb..c5cb45e 100644 --- a/tests/arthur/baselineserver/src/baselineserver.h +++ b/tests/arthur/baselineserver/src/baselineserver.h @@ -100,8 +100,7 @@ public: BaselineHandler(int socketDescriptor = -1); void testPathMapping(); - static QString updateAllBaselines(const QString &host, const QString &id, - const QString &engine, const QString &format); + static QString clearAllBaselines(const QString &context); static QString updateSingleBaseline(const QString &oldBaseline, const QString &newBaseline); static QString blacklistTest(const QString &context, const QString &itemId, bool removeFromBlacklist = false); diff --git a/tests/arthur/baselineserver/src/htmlpage.cpp b/tests/arthur/baselineserver/src/htmlpage.cpp index f75da88..9659505 100644 --- a/tests/arthur/baselineserver/src/htmlpage.cpp +++ b/tests/arthur/baselineserver/src/htmlpage.cpp @@ -69,7 +69,8 @@ void HTMLPage::start(const QString &storagepath, const QString &runId, const Pla ctx = context; root = storagepath + QLC('/'); imageItems = itemList; - QString dir = root + QLS("reports/"); + reportDir = pinfo.value(PI_PulseGitBranch).isEmpty() ? QLS("reports/adhoc/") : QLS("reports/pulse/"); + QString dir = root + reportDir; QDir cwd; if (!cwd.exists(dir)) cwd.mkpath(dir); @@ -78,7 +79,7 @@ void HTMLPage::start(const QString &storagepath, const QString &runId, const Pla void HTMLPage::writeHeader(const ImageItem &item) { - path = QLS("reports/") + id + QLC('_') + item.engineAsString() + path = reportDir + id + QLC('_') + item.engineAsString() + QLC('_') + item.formatAsString() + QLS(".html"); QString pageUrl = BaselineServer::baseUrl() + path; @@ -89,24 +90,21 @@ void HTMLPage::writeHeader(const ImageItem &item) out.setDevice(&file); out << "<html><body><h1>Lancelot results from run " << id << "</h1>\n\n"; - out << "<h3>Platform Info:</h3>\n"; + out << "<p><h3>Platform Info:</h3>\n"; out << "<table>\n"; foreach (QString key, plat.keys()) out << "<tr><td>" << key << "</td><td>" << plat.value(key) << "</td></tr>\n"; - out << "</table>\n"; - -#if 0 - out << "<h3><a href=\"/cgi-bin/server.cgi?cmd=updateAllBaselines&id="<< id << "&host=" << plat.hostName - << "&engine=" << item.engineAsString() << "&format=" << item.formatAsString() - << "&url=" << pageUrl - << "\">Update all baselines</a><br>"; -#endif - out << "<table border=\"2\">\n" + out << "</table></p>\n\n"; + + out << "<p><a href=\"/cgi-bin/server.cgi?cmd=clearAllBaselines&context=" << ctx << "&url=" << pageUrl + << "\"><b><big>Clear all baselines</big></b></a></h3> (They will be recreated by the next run)</p>\n\n"; + + out << "<p><table border=\"2\">\n" "<tr>\n" "<td><b>Script</b></td>\n" "<td><b>Baseline</b></td>\n" "<td><b>Rendered</b></td>\n" - "<td><b>Comparison</b></td>\n" + "<td><b>Comparison</b> (diffs are <span style=\"color:red\">RED</span>)</td>\n" "<td><b>Info/Action</b></td>\n" "</b></tr><br>"; } @@ -114,7 +112,7 @@ void HTMLPage::writeHeader(const ImageItem &item) void HTMLPage::writeFooter() { - out << "</table>\n</body></html>\n"; + out << "</table></p>\n</body></html>\n"; } @@ -131,7 +129,7 @@ void HTMLPage::addItem(const QString &baseline, const QString &rendered, const I out << "<td>" << item.scriptName << "</td>\n"; QStringList images = QStringList() << baseline << rendered << compared; foreach(const QString& img, images) - out << "<td><a href=\"/" << img << "\"><img src=\"/" << img << "\" width=240 height=240></a></td>\n"; + out << "<td><a href=\"/" << img << "\"><img src=\"/" << generateThumbnail(img) << "\" width=240 height=240></a></td>\n"; out << "<td><p><a href=\"/cgi-bin/server.cgi?cmd=updateSingleBaseline&oldBaseline=" << baseline << "&newBaseline=" << rendered << "&url=" << pageUrl << "\">Replace baseline with rendered</a></p>" @@ -193,6 +191,22 @@ QString HTMLPage::generateCompared(const QString &baseline, const QString &rende } +QString HTMLPage::generateThumbnail(const QString &image) +{ + QString res = image; + QFileInfo imgFI(root+image); + res.chop(imgFI.suffix().length() + 1); + res += QLS("_thumbnail.jpg"); + QFileInfo resFI(root+res); + if (resFI.exists() && resFI.lastModified() > imgFI.lastModified()) + return res; + QStringList args; + args << root+image << QLS("-resize") << QLS("240x240") << QLS("-quality") << QLS("50") << root+res; + QProcess::execute(QLS("convert"), args); + return res; +} + + void HTMLPage::handleCGIQuery(const QString &query) { QUrl cgiUrl(QLS("http://dummy/cgi-bin/dummy.cgi?") + query); @@ -207,11 +221,8 @@ void HTMLPage::handleCGIQuery(const QString &query) if (command == QLS("updateSingleBaseline")) { s << BaselineHandler::updateSingleBaseline(cgiUrl.queryItemValue(QLS("oldBaseline")), cgiUrl.queryItemValue(QLS("newBaseline"))); - } else if (command == QLS("updateAllBaselines")) { - s << BaselineHandler::updateAllBaselines(cgiUrl.queryItemValue(QLS("host")), - cgiUrl.queryItemValue(QLS("id")), - cgiUrl.queryItemValue(QLS("engine")), - cgiUrl.queryItemValue(QLS("format"))); + } else if (command == QLS("clearAllBaselines")) { + s << BaselineHandler::clearAllBaselines(cgiUrl.queryItemValue(QLS("context"))); } else if (command == QLS("blacklist")) { // blacklist a test s << BaselineHandler::blacklistTest(cgiUrl.queryItemValue(QLS("context")), diff --git a/tests/arthur/baselineserver/src/htmlpage.h b/tests/arthur/baselineserver/src/htmlpage.h index fa4d1ed..5f1e051 100644 --- a/tests/arthur/baselineserver/src/htmlpage.h +++ b/tests/arthur/baselineserver/src/htmlpage.h @@ -62,9 +62,11 @@ private: void writeHeader(const ImageItem &item); void writeFooter(); QString generateCompared(const QString &baseline, const QString &rendered, bool fuzzy = false); + QString generateThumbnail(const QString &image); QString root; QString path; + QString reportDir; QFile file; QTextStream out; QString id; diff --git a/tests/arthur/common/baselineprotocol.cpp b/tests/arthur/common/baselineprotocol.cpp index 6d26e9a..5ed58b4 100644 --- a/tests/arthur/common/baselineprotocol.cpp +++ b/tests/arthur/common/baselineprotocol.cpp @@ -206,10 +206,52 @@ QString ImageItem::formatAsString() const return QLS(formatNames[renderFormat]); } +void ImageItem::writeImageToStream(QDataStream &out) const +{ + if (image.isNull() || image.format() == QImage::Format_Invalid) { + out << quint8(0); + return; + } + out << quint8('Q') << quint8(image.format()); + out << quint8(QSysInfo::ByteOrder) << quint8(0); // pad to multiple of 4 bytes + out << quint32(image.width()) << quint32(image.height()) << quint32(image.bytesPerLine()); + out << qCompress((const uchar *)image.constBits(), image.byteCount()); + //# can be followed by colormap for formats that use it +} + +void ImageItem::readImageFromStream(QDataStream &in) +{ + quint8 hdr, fmt, endian, pad; + quint32 width, height, bpl; + QByteArray data; + + in >> hdr; + if (hdr != 'Q') { + image = QImage(); + return; + } + in >> fmt >> endian >> pad; + if (!fmt || fmt >= QImage::NImageFormats) { + image = QImage(); + return; + } + if (endian != QSysInfo::ByteOrder) { + qWarning("ImageItem cannot read streamed image with different endianness"); + image = QImage(); + return; + } + in >> width >> height >> bpl; + in >> data; + data = qUncompress(data); + QImage res((const uchar *)data.constData(), width, height, bpl, QImage::Format(fmt)); + image = res.copy(); //# yuck, seems there is currently no way to avoid data copy +} + QDataStream & operator<< (QDataStream &stream, const ImageItem &ii) { stream << ii.scriptName << ii.scriptChecksum << quint8(ii.status) << quint8(ii.renderFormat) - << quint8(ii.engine) << ii.image << ii.imageChecksums; + << quint8(ii.engine) << ii.imageChecksums; + ii.writeImageToStream(stream); return stream; } @@ -217,10 +259,11 @@ QDataStream & operator>> (QDataStream &stream, ImageItem &ii) { quint8 encFormat, encStatus, encEngine; stream >> ii.scriptName >> ii.scriptChecksum >> encStatus >> encFormat - >> encEngine >> ii.image >> ii.imageChecksums; + >> encEngine >> ii.imageChecksums; ii.renderFormat = QImage::Format(encFormat); ii.status = ImageItem::ItemStatus(encStatus); ii.engine = ImageItem::GraphicsEngine(encEngine); + ii.readImageFromStream(stream); return stream; } diff --git a/tests/arthur/common/baselineprotocol.h b/tests/arthur/common/baselineprotocol.h index 9f59454..baffb4a 100644 --- a/tests/arthur/common/baselineprotocol.h +++ b/tests/arthur/common/baselineprotocol.h @@ -84,6 +84,9 @@ public: QString engineAsString() const; QString formatAsString() const; + void writeImageToStream(QDataStream &stream) const; + void readImageFromStream(QDataStream &stream); + enum ItemStatus { Ok = 0, BaselineNotFound = 1, @@ -105,7 +108,7 @@ public: quint16 scriptChecksum; }; QDataStream & operator<< (QDataStream &stream, const ImageItem &ii); -QDataStream & operator>> (QDataStream& stream, ImageItem& ii); +QDataStream & operator>> (QDataStream &stream, ImageItem& ii); Q_DECLARE_METATYPE(ImageItem); @@ -121,7 +124,7 @@ public: // Important constants here // **************************************************** enum Constant { - ProtocolVersion = 2, + ProtocolVersion = 3, ServerPort = 54129, Timeout = 5000 }; diff --git a/tests/auto/collections/tst_collections.cpp b/tests/auto/collections/tst_collections.cpp index 8a0ca3e..225fe79 100644 --- a/tests/auto/collections/tst_collections.cpp +++ b/tests/auto/collections/tst_collections.cpp @@ -1225,7 +1225,7 @@ void tst_Collections::vector() } } - // this used to trigger an unitialized read in valgrind + // this used to trigger an uninitialized read in valgrind QVector<char> foo; foo.resize(144); diff --git a/tests/auto/declarative/qdeclarativelistview/data/qtbug14821.qml b/tests/auto/declarative/qdeclarativelistview/data/qtbug14821.qml new file mode 100644 index 0000000..e0303ec --- /dev/null +++ b/tests/auto/declarative/qdeclarativelistview/data/qtbug14821.qml @@ -0,0 +1,31 @@ +import QtQuick 1.0 + +ListView { + id: view + width: 300; height: 200 + focus: true + keyNavigationWraps: true + + model: 100 + + preferredHighlightBegin: 90 + preferredHighlightEnd: 110 + + highlightRangeMode: ListView.StrictlyEnforceRange + highlight: Component { + Rectangle { + border.color: "blue" + border.width: 3 + color: "transparent" + width: 300; height: 15 + } + } + + delegate: Component { + Item { + height: 15 + (view.currentIndex == index ? 20 : 0) + width: 200 + Text { text: 'Index: ' + index; anchors.verticalCenter: parent.verticalCenter } + } + } +} diff --git a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp index a4b4f21..37d836d 100644 --- a/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp +++ b/tests/auto/declarative/qdeclarativelistview/tst_qdeclarativelistview.cpp @@ -101,6 +101,7 @@ private slots: void footer(); void resizeView(); void sizeLessThan1(); + void QTBUG_14821(); private: template <class T> void items(); @@ -1768,6 +1769,26 @@ void tst_QDeclarativeListView::sizeLessThan1() delete canvas; } +void tst_QDeclarativeListView::QTBUG_14821() +{ + QDeclarativeView *canvas = createView(); + + canvas->setSource(QUrl::fromLocalFile(SRCDIR "/data/qtbug14821.qml")); + qApp->processEvents(); + + QDeclarativeListView *listview = qobject_cast<QDeclarativeListView*>(canvas->rootObject()); + QVERIFY(listview != 0); + + QDeclarativeItem *contentItem = listview->contentItem(); + QVERIFY(contentItem != 0); + + listview->decrementCurrentIndex(); + QCOMPARE(listview->currentIndex(), 99); + + listview->incrementCurrentIndex(); + QCOMPARE(listview->currentIndex(), 0); +} + void tst_QDeclarativeListView::qListModelInterface_items() { items<TestModel>(); diff --git a/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp b/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp index 57a58e9..9d7cc05 100644 --- a/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp +++ b/tests/auto/declarative/qdeclarativemousearea/tst_qdeclarativemousearea.cpp @@ -216,7 +216,14 @@ void tst_QDeclarativeMouseArea::dragging() QCOMPARE(blackRect->x(), 50.0); QCOMPARE(blackRect->y(), 50.0); + // First move event triggers drag, second is acted upon. + // This is due to possibility of higher stacked area taking precedence. QGraphicsSceneMouseEvent moveEvent(QEvent::GraphicsSceneMouseMove); + moveEvent.setScenePos(QPointF(106, 106)); + moveEvent.setButton(Qt::LeftButton); + moveEvent.setButtons(Qt::LeftButton); + QApplication::sendEvent(scene, &moveEvent); + moveEvent.setScenePos(QPointF(110, 110)); moveEvent.setButton(Qt::LeftButton); moveEvent.setButtons(Qt::LeftButton); diff --git a/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp b/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp index 1c1c04b..21c7197 100644 --- a/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp +++ b/tests/auto/declarative/qdeclarativeviewer/tst_qdeclarativeviewer.cpp @@ -45,6 +45,7 @@ #include <QtDeclarative/qdeclarativeitem.h> #include <QtDeclarative/qdeclarativecontext.h> #include <QtGui/qmenubar.h> +#include <QSignalSpy> #include "../../../shared/util.h" #include "qmlruntime.h" #include "deviceorientation.h" @@ -194,7 +195,9 @@ void tst_QDeclarativeViewer::loading() QCOMPARE(viewer->size(), QSize(250, 350)); QCOMPARE(viewer->size(), viewer->sizeHint()); + QSignalSpy statusSpy(viewer->view(), SIGNAL(statusChanged(QDeclarativeView::Status))); viewer->reload(); + QTRY_VERIFY(statusSpy.count() == 1); rootItem = qobject_cast<QDeclarativeItem*>(viewer->view()->rootObject()); QVERIFY(rootItem); diff --git a/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp index 3140265..5a6cf3c 100644 --- a/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp +++ b/tests/auto/declarative/qdeclarativeworkerscript/tst_qdeclarativeworkerscript.cpp @@ -137,6 +137,11 @@ void tst_QDeclarativeWorkerScript::messaging_data() QTest::newRow("real") << qVariantFromValue(10334.375); QTest::newRow("string") << qVariantFromValue(QString("More cheeeese, Gromit!")); QTest::newRow("variant list") << qVariantFromValue((QVariantList() << "a" << "b" << "c")); + QTest::newRow("date time") << qVariantFromValue(QDateTime::currentDateTime()); +#ifndef QT_NO_REGEXP + // QtScript's QScriptValue -> QRegExp uses RegExp2 pattern syntax + QTest::newRow("regexp") << qVariantFromValue(QRegExp("^\\d\\d?$", Qt::CaseInsensitive, QRegExp::RegExp2)); +#endif } void tst_QDeclarativeWorkerScript::messaging_sendQObjectList() diff --git a/tests/auto/declarative/qmlvisual/TEST_GUIDELINES b/tests/auto/declarative/qmlvisual/TEST_GUIDELINES index cb53b6e..469832f 100644 --- a/tests/auto/declarative/qmlvisual/TEST_GUIDELINES +++ b/tests/auto/declarative/qmlvisual/TEST_GUIDELINES @@ -4,4 +4,4 @@ Guidelines for creating new visual tests: 2. Keep it short. It is hoped that these tests can be run regularly, perhaps even for every commit, and if you add up ten seconds for every time someone commits a change to QML then we'll be sitting here for a long time. Completeness is more important than haste, but consider the most time efficient ways to achieve said completeness. Do not forget about snapshot mode (tst_qmlvisual -help for details on -recordsnapshot) when testing that a static scene looks right. -3. Avoid text. Text is relatively unstable due to platform specific peculiarities. If you need to identify an area, consider a unique color as opposed to a unique text label. If you must use Text, TextEdit, or TextInput, use the test-friendlier versions in the 'shared' directory. +3. Avoid text. Text is relatively unstable due to platform specific peculiarities. If you need to identify an area, consider a unique color as opposed to a unique text label. If you must use Text, TextEdit, or TextInput, use the test-friendlier versions in the 'shared' directory. Also keep in mind that text anti-aliasing is disabled during tests for greater consistency, and you should never use point sizes in tests. Text autotests can thus only test some aspects of the elements. 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 differdeleted file mode 100644 index 99748a7..0000000 --- a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.0.png +++ /dev/null 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 differdeleted file mode 100644 index 5393dd8..0000000 --- a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.1.png +++ /dev/null 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 differdeleted file mode 100644 index 8c17bf7..0000000 --- a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.2.png +++ /dev/null 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 deleted file mode 100644 index dd2aeb4..0000000 --- a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.qml +++ /dev/null @@ -1,951 +0,0 @@ -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: 0 - 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/animation/colorAnimation/data/colorAnimation-visual.0.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.0.png Binary files differindex e6ea16d..2a79113 100644 --- a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.0.png +++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.0.png diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.1.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.1.png Binary files differindex b75ba61..ebd1802 100644 --- a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.1.png +++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.1.png diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.2.png b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.2.png Binary files differindex 4320f6f..9b8ecbb 100644 --- a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.2.png +++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/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/colorAnimation-visual.3.png Binary files differindex 1317eef..277cb9e 100644 --- a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data-X11/colorAnimation-visual.3.png +++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.3.png diff --git a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.qml b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.qml index 9611d27..2b664d4 100644 --- a/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.qml +++ b/tests/auto/declarative/qmlvisual/animation/colorAnimation/data/colorAnimation-visual.qml @@ -6,7 +6,7 @@ VisualTest { } Frame { msec: 16 - hash: "acc736435c9f84aa82941ba561bc5dbc" + image: "colorAnimation-visual.0.png" } Frame { msec: 32 @@ -258,11 +258,11 @@ VisualTest { } Frame { msec: 960 - image: "colorAnimation-visual.0.png" + hash: "2d133e7ee60c97386f57838b3f0976c7" } Frame { msec: 976 - hash: "85b1821cc50f2a9f3ed6944f792b7a2f" + image: "colorAnimation-visual.1.png" } Frame { msec: 992 @@ -498,11 +498,11 @@ VisualTest { } Frame { msec: 1920 - image: "colorAnimation-visual.1.png" + hash: "02bafb5a81ca66f7670ac93de5123860" } Frame { msec: 1936 - hash: "e7aa6374c73832e57ceb2427a1e258aa" + image: "colorAnimation-visual.2.png" } Frame { msec: 1952 @@ -738,11 +738,11 @@ VisualTest { } Frame { msec: 2880 - image: "colorAnimation-visual.2.png" + hash: "8c0fcda4f8956394c53fc4ba18caa850" } Frame { msec: 2896 - hash: "8c0fcda4f8956394c53fc4ba18caa850" + image: "colorAnimation-visual.3.png" } Frame { msec: 2912 @@ -931,7 +931,7 @@ VisualTest { Key { type: 6 key: 16777249 - modifiers: 67108864 + modifiers: 0 text: "" autorep: false count: 1 diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.0.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.0.png Binary files differdeleted file mode 100644 index e469a79..0000000 --- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.0.png +++ /dev/null diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.1.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.1.png Binary files differdeleted file mode 100644 index 905603f..0000000 --- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.1.png +++ /dev/null diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.2.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.2.png Binary files differdeleted file mode 100644 index 5cbd3bd..0000000 --- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.2.png +++ /dev/null diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.3.png b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.3.png Binary files differdeleted file mode 100644 index 851c1ba..0000000 --- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.3.png +++ /dev/null diff --git a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.qml b/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.qml deleted file mode 100644 index 0c9747e..0000000 --- a/tests/auto/declarative/qmlvisual/focusscope/data-MAC/test3.qml +++ /dev/null @@ -1,1327 +0,0 @@ -import Qt.VisualTest 4.7 - -VisualTest { - Frame { - msec: 0 - } - Frame { - msec: 16 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 32 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 48 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 64 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 80 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 96 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 112 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 128 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 144 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 160 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 176 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 192 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 208 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 224 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 240 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 256 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 272 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 288 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 304 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 320 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 336 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 352 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 368 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 384 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 400 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 416 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 432 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 448 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 464 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 480 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 496 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 512 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 528 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Key { - type: 6 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 544 - hash: "be06cc567f08fbc0cd60d753a19df162" - } - Frame { - msec: 560 - hash: "c4cf6807b423553872e848146e79efb3" - } - Frame { - msec: 576 - hash: "b83923f1eef68a4a8dd36acad0f4b592" - } - Frame { - msec: 592 - hash: "5599829a04f2c2a6c6181c5857762ba0" - } - Frame { - msec: 608 - hash: "95da52b5add95150dd446bc5055a2b60" - } - Key { - type: 7 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 624 - hash: "9bb2757c3b1bbc051edd9ebd240611f8" - } - Frame { - msec: 640 - hash: "25213fbced4c67f42ce35d07db93bb32" - } - Frame { - msec: 656 - hash: "2a9ded25ed2dbb9563f9c14084234a22" - } - Frame { - msec: 672 - hash: "2f532511a50d743aa1c7ebcc9b2b7350" - } - Frame { - msec: 688 - hash: "2f532511a50d743aa1c7ebcc9b2b7350" - } - Frame { - msec: 704 - hash: "2f532511a50d743aa1c7ebcc9b2b7350" - } - Frame { - msec: 720 - hash: "2f532511a50d743aa1c7ebcc9b2b7350" - } - Key { - type: 6 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 736 - hash: "8c9f7d72e077a7e75d185a2ecbdcc77c" - } - Frame { - msec: 752 - hash: "55a417e91f182ebd28dd7264d8b76363" - } - Frame { - msec: 768 - hash: "01a637de9f60c82bfd9140e852e17574" - } - Frame { - msec: 784 - hash: "01194b2c3489ea7298e961979064aab3" - } - Key { - type: 7 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 800 - hash: "f6126328d483536d3f161f71d40821df" - } - Frame { - msec: 816 - hash: "b99dd9793a63bbdab37cfe236d56c589" - } - Frame { - msec: 832 - hash: "825f39b42d0b2e0d894874713b731cfc" - } - Frame { - msec: 848 - hash: "7729b9c2133c52e50f43d6100a24e9c2" - } - Frame { - msec: 864 - hash: "e2f3bec9571b08b451309221b34ace5e" - } - Frame { - msec: 880 - hash: "e2f3bec9571b08b451309221b34ace5e" - } - Key { - type: 6 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 896 - hash: "8e59b002437ec17043d11c92556365fd" - } - Frame { - msec: 912 - hash: "3809a54af9c9a4b15aa8b82caa5b703f" - } - Frame { - msec: 928 - hash: "96cb1ab7123c54d4fa0d93b6501a439d" - } - Key { - type: 7 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 944 - hash: "de74cd5be709954522dd02945d6da9c9" - } - Frame { - msec: 960 - image: "test3.0.png" - } - Frame { - msec: 976 - hash: "d3ff94471da3620701d62b87f37fca8b" - } - Frame { - msec: 992 - hash: "15bccb078b9061ef50c73a974e2f43fa" - } - Frame { - msec: 1008 - hash: "ea2059d511fdab60e77e9261f81aadfb" - } - Frame { - msec: 1024 - hash: "ea2059d511fdab60e77e9261f81aadfb" - } - Frame { - msec: 1040 - hash: "ea2059d511fdab60e77e9261f81aadfb" - } - Frame { - msec: 1056 - hash: "ea2059d511fdab60e77e9261f81aadfb" - } - Key { - type: 6 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 1072 - hash: "5b68568968d0de3a9bad8d053045f45c" - } - Frame { - msec: 1088 - hash: "6b6da385fbc00e3542d7007524ff87f6" - } - Key { - type: 7 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 1104 - hash: "bba5021ad78a5a142cf54d4db8d8689e" - } - Frame { - msec: 1120 - hash: "5c223d5dcf028cd3bac18b21359253f3" - } - Frame { - msec: 1136 - hash: "c5b09a11d466fd90e1014f58755ec77b" - } - Frame { - msec: 1152 - hash: "f4ba8fcc4f955e25c2364d8ee1054d0d" - } - Frame { - msec: 1168 - hash: "2a6009e790cd98e3a67c107b0f08e00b" - } - Frame { - msec: 1184 - hash: "caa1b5ee40dc20c87516b7292a86f79b" - } - Frame { - msec: 1200 - hash: "200dd4ac9c40c6eb32ad43570995f17d" - } - Frame { - msec: 1216 - hash: "200dd4ac9c40c6eb32ad43570995f17d" - } - Key { - type: 6 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 1232 - hash: "2333dcdf0f46ade554e036caa5e3cb31" - } - Frame { - msec: 1248 - hash: "9b09c65db96f483dec7ba3a55b5a91e6" - } - Key { - type: 7 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 1264 - hash: "49fc76245e741968095ab689195da40c" - } - Frame { - msec: 1280 - hash: "4e991b92348d813f5a3a1080270a88a3" - } - Frame { - msec: 1296 - hash: "1e4a07fc966dab9ee0d39b25a4c43c09" - } - Frame { - msec: 1312 - hash: "ade33b908f2a5e6916a74bc00b08414e" - } - Frame { - msec: 1328 - hash: "481b41b7bc8fafcb40b7d09fcfc2e86e" - } - Frame { - msec: 1344 - hash: "68b528414ba662f14ea71511a01f8d33" - } - Frame { - msec: 1360 - hash: "68b528414ba662f14ea71511a01f8d33" - } - Frame { - msec: 1376 - hash: "68b528414ba662f14ea71511a01f8d33" - } - Frame { - msec: 1392 - hash: "68b528414ba662f14ea71511a01f8d33" - } - Frame { - msec: 1408 - hash: "68b528414ba662f14ea71511a01f8d33" - } - Frame { - msec: 1424 - hash: "68b528414ba662f14ea71511a01f8d33" - } - Frame { - msec: 1440 - hash: "68b528414ba662f14ea71511a01f8d33" - } - Frame { - msec: 1456 - hash: "68b528414ba662f14ea71511a01f8d33" - } - Frame { - msec: 1472 - hash: "68b528414ba662f14ea71511a01f8d33" - } - Frame { - msec: 1488 - hash: "68b528414ba662f14ea71511a01f8d33" - } - Key { - type: 6 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 1504 - hash: "2a8a2867f38ff05a9ef5fa50fe7de229" - } - Frame { - msec: 1520 - hash: "824ec4f9e596a67fe6ca17ea03529c1f" - } - Frame { - msec: 1536 - hash: "bf7d9c49d0a0ff4d03ceadf8d797a774" - } - Key { - type: 7 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 1552 - hash: "3e3c62601c2965e851e8b5c0adb73651" - } - Frame { - msec: 1568 - hash: "ed7357b2596da4683bb19cbf1dcd6458" - } - Frame { - msec: 1584 - hash: "32ed0774f926341af504b716bd9394e1" - } - Frame { - msec: 1600 - hash: "2d4ffbd7cf53ca4824d206d4a4608ebb" - } - Frame { - msec: 1616 - hash: "a7a0b6bd336f00a10818bdd9992a29bb" - } - Frame { - msec: 1632 - hash: "55801794958126a1890bc0122084ee20" - } - Frame { - msec: 1648 - hash: "55801794958126a1890bc0122084ee20" - } - Frame { - msec: 1664 - hash: "55801794958126a1890bc0122084ee20" - } - Frame { - msec: 1680 - hash: "55801794958126a1890bc0122084ee20" - } - Key { - type: 6 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 1696 - hash: "49573efd5a0bc65107a074fb35d67f63" - } - Frame { - msec: 1712 - hash: "c9bf07bc12f97c6d0eef816ce4423f5b" - } - Frame { - msec: 1728 - hash: "ab91f24c27d52123502815381e926cdc" - } - Frame { - msec: 1744 - hash: "32ca7e06569a63d56ab71c67c9f82d60" - } - Key { - type: 7 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 1760 - hash: "9e5f04f019ccd1f27b511faeb7470e10" - } - Frame { - msec: 1776 - hash: "5544186a3338dd788367fa4262815204" - } - Frame { - msec: 1792 - hash: "c01aa7b7363faf99f69b90be8843f059" - } - Frame { - msec: 1808 - hash: "6bd1ec848b817ef978b4dfae4eb23c1e" - } - Frame { - msec: 1824 - hash: "b75bd8d4e4f3fb5067b05ebf37f92e9b" - } - Frame { - msec: 1840 - hash: "b75bd8d4e4f3fb5067b05ebf37f92e9b" - } - Frame { - msec: 1856 - hash: "b75bd8d4e4f3fb5067b05ebf37f92e9b" - } - Frame { - msec: 1872 - hash: "b75bd8d4e4f3fb5067b05ebf37f92e9b" - } - Key { - type: 6 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 1888 - hash: "04a3efd4b810417632726048bdffa904" - } - Frame { - msec: 1904 - hash: "c347e7d3dccba41102e2b669c9e9c0a0" - } - Frame { - msec: 1920 - image: "test3.1.png" - } - Frame { - msec: 1936 - hash: "47c9794374c383e1f595e60ea6890e11" - } - Frame { - msec: 1952 - hash: "73cdfe34edab93baea779896169b4195" - } - Key { - type: 7 - key: 16777236 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 1968 - hash: "53add51d9e11a1fc4d0f6e3d1c6a70bc" - } - Frame { - msec: 1984 - hash: "90143346b171faf5bdb7d4d0c0556b24" - } - Frame { - msec: 2000 - hash: "e4e642507d3a631f5813a11cb7673c91" - } - Frame { - msec: 2016 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2032 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2048 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2064 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2080 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2096 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2112 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2128 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2144 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2160 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2176 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2192 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2208 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2224 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2240 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2256 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2272 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2288 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2304 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2320 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2336 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2352 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2368 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2384 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2400 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2416 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2432 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2448 - hash: "f5f1725edd19f1735139d178955533f8" - } - Frame { - msec: 2464 - hash: "f5f1725edd19f1735139d178955533f8" - } - Key { - type: 6 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 2480 - hash: "512e992c6d621225735c37e2626714ad" - } - Frame { - msec: 2496 - hash: "1a708d62af48302e93dda0ef0822aebb" - } - Frame { - msec: 2512 - hash: "220660969092ba1b17addc6ba7148e06" - } - Frame { - msec: 2528 - hash: "9dcdd42efc9beb957abdeaf2ee01fc43" - } - Frame { - msec: 2544 - hash: "5995ac01ee680d6747dc78c36f70b577" - } - Key { - type: 7 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 2560 - hash: "c6eb964d8f4bf849df63eebdfbf6e286" - } - Frame { - msec: 2576 - hash: "cff1925a172e278a36068886f0efbcbf" - } - Frame { - msec: 2592 - hash: "4c725a05332806387713ab54302c559f" - } - Frame { - msec: 2608 - hash: "b75bd8d4e4f3fb5067b05ebf37f92e9b" - } - Frame { - msec: 2624 - hash: "b75bd8d4e4f3fb5067b05ebf37f92e9b" - } - Key { - type: 6 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 2640 - hash: "0cb7eeb24a6845d43ce0662c91b72bd3" - } - Frame { - msec: 2656 - hash: "6dedbf7dc59b05dc57355141de0b660d" - } - Frame { - msec: 2672 - hash: "5f82259afdabef688dd76729b5f847c7" - } - Frame { - msec: 2688 - hash: "b67d418427db34726ddada60f76178a6" - } - Frame { - msec: 2704 - hash: "780c9551f55fd46d294a1eef3b34aa34" - } - Key { - type: 7 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 2720 - hash: "521efe1778b2d2031071b55f30999de9" - } - Frame { - msec: 2736 - hash: "49539356de68b7cd2cea52986ed2bb67" - } - Frame { - msec: 2752 - hash: "55801794958126a1890bc0122084ee20" - } - Frame { - msec: 2768 - hash: "55801794958126a1890bc0122084ee20" - } - Frame { - msec: 2784 - hash: "55801794958126a1890bc0122084ee20" - } - Key { - type: 6 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 2800 - hash: "b08ee15bfd1916b9619a0a3eeeec90b6" - } - Frame { - msec: 2816 - hash: "3b4e65a0d4ee764d418d82a055ba9c87" - } - Frame { - msec: 2832 - hash: "269d37497b0cd292a5b03124d1687ff6" - } - Frame { - msec: 2848 - hash: "59fecd7ec62bf8c89e2222744d36e194" - } - Frame { - msec: 2864 - hash: "71deceeac8b42a70868bb3ff788543b5" - } - Key { - type: 7 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 2880 - image: "test3.2.png" - } - Frame { - msec: 2896 - hash: "ad790d242e84fec0bd75e1d7771682d7" - } - Frame { - msec: 2912 - hash: "c09f4fca4ae14e0e41d9b58c1b83096f" - } - Frame { - msec: 2928 - hash: "68b528414ba662f14ea71511a01f8d33" - } - Frame { - msec: 2944 - hash: "68b528414ba662f14ea71511a01f8d33" - } - Key { - type: 6 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 2960 - hash: "015bf8203d45e5d477242055a3f19bfb" - } - Frame { - msec: 2976 - hash: "ba2fb1258a2f3a81882780d3c7d5320a" - } - Frame { - msec: 2992 - hash: "3637ffd219d403ed433fd72cd68a9b23" - } - Frame { - msec: 3008 - hash: "b0d858f1d51872969022f717c12480ed" - } - Frame { - msec: 3024 - hash: "0504b13a8f7cd68a1d64a22e46ea8654" - } - Frame { - msec: 3040 - hash: "d07cffa36609433e4a677e373ee7a3ff" - } - Key { - type: 7 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 3056 - hash: "c1fd98ebc22e512f7199e0f319e88728" - } - Frame { - msec: 3072 - hash: "200dd4ac9c40c6eb32ad43570995f17d" - } - Frame { - msec: 3088 - hash: "200dd4ac9c40c6eb32ad43570995f17d" - } - Frame { - msec: 3104 - hash: "200dd4ac9c40c6eb32ad43570995f17d" - } - Frame { - msec: 3120 - hash: "200dd4ac9c40c6eb32ad43570995f17d" - } - Frame { - msec: 3136 - hash: "200dd4ac9c40c6eb32ad43570995f17d" - } - Key { - type: 6 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 3152 - hash: "5822b744b64944c515e8a01f52c7429f" - } - Frame { - msec: 3168 - hash: "7d4ab5a17e7d6184f124299053cf94e3" - } - Frame { - msec: 3184 - hash: "253cfd5001e4e4541d9cfd6370291cd2" - } - Key { - type: 7 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 3200 - hash: "1b1cab9d331c613dde896829027110f5" - } - Frame { - msec: 3216 - hash: "8127f681a5c475133cfca95483fef2ce" - } - Frame { - msec: 3232 - hash: "1a944877735fe3531d95b418dd75d576" - } - Frame { - msec: 3248 - hash: "47ddcfaed130bf7dd539d965ebebedc1" - } - Frame { - msec: 3264 - hash: "d0c37d1a7e97034d0f41ea6c2fff8f34" - } - Frame { - msec: 3280 - hash: "ea2059d511fdab60e77e9261f81aadfb" - } - Key { - type: 6 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 3296 - hash: "11a907436350afa5ff592880303b4344" - } - Frame { - msec: 3312 - hash: "39801aef92c2b1e0ca39bede36840911" - } - Frame { - msec: 3328 - hash: "93463b61a00078f488f3941bc4729100" - } - Frame { - msec: 3344 - hash: "f8d9cbe20b87017d81fbf627f3a3b2cd" - } - Key { - type: 7 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 3360 - hash: "2b8d37e7dcfb14394caf19aa8bc4b956" - } - Frame { - msec: 3376 - hash: "bf91006930a3f22f12b62787c57bb91b" - } - Frame { - msec: 3392 - hash: "7ce1d106e9d78a4a64f35f5982d32298" - } - Frame { - msec: 3408 - hash: "e2f3bec9571b08b451309221b34ace5e" - } - Frame { - msec: 3424 - hash: "e2f3bec9571b08b451309221b34ace5e" - } - Frame { - msec: 3440 - hash: "e2f3bec9571b08b451309221b34ace5e" - } - Key { - type: 6 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 3456 - hash: "71cd749e039a54aaaa05e1d3ccc738b4" - } - Frame { - msec: 3472 - hash: "39e7afb00d53e098c005a1d96a8cc727" - } - Key { - type: 7 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 3488 - hash: "a9d2fa99fc70919e55293c07427147a2" - } - Frame { - msec: 3504 - hash: "96bb62cd9ebc2eba9797605190820349" - } - Frame { - msec: 3520 - hash: "111b0d230c44d5d156e082a50c2a2a66" - } - Frame { - msec: 3536 - hash: "1085cebcc8fdaefb2ec03392763c7657" - } - Frame { - msec: 3552 - hash: "451d670f44ae42d8cbb6a12cc6469d61" - } - Frame { - msec: 3568 - hash: "5c65a7b6ed7b4e85bb883c671aae5136" - } - Frame { - msec: 3584 - hash: "2f532511a50d743aa1c7ebcc9b2b7350" - } - Key { - type: 6 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 3600 - hash: "41424200cb76a0d5d64f8919645f6afb" - } - Frame { - msec: 3616 - hash: "7a910e4b17fb7f5d10308e07ea8ce0a3" - } - Frame { - msec: 3632 - hash: "4d9cc5670105acf3bc080cba8e100376" - } - Frame { - msec: 3648 - hash: "a09d3b45bef532ed86d737839592ffc8" - } - Key { - type: 7 - key: 16777234 - modifiers: 0 - text: "" - autorep: false - count: 1 - } - Frame { - msec: 3664 - hash: "70179b7be24acd6d5d0d0de9d8fff74d" - } - Frame { - msec: 3680 - hash: "95964eef01bfc86216a8e91261b867ed" - } - Frame { - msec: 3696 - hash: "12b5e2bbfd573b2b8e33a745cd5af5a6" - } - Frame { - msec: 3712 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3728 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3744 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3760 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3776 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3792 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3808 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3824 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3840 - image: "test3.3.png" - } - Frame { - msec: 3856 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3872 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3888 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3904 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3920 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3936 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3952 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3968 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 3984 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4000 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4016 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4032 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4048 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4064 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4080 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4096 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4112 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4128 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4144 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4160 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4176 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4192 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4208 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4224 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4240 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } - Frame { - msec: 4256 - hash: "cb8a5743fd3c5093740bb2a4f57ade81" - } -} diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.0.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.0.png Binary files differnew file mode 100644 index 0000000..793fb0f --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.1.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.1.png Binary files differnew file mode 100644 index 0000000..5935b45 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.2.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.2.png Binary files differnew file mode 100644 index 0000000..a205266 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.2.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.3.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.3.png Binary files differnew file mode 100644 index 0000000..3d81ff2 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.3.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.4.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.4.png Binary files differnew file mode 100644 index 0000000..ee2076e --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.4.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.5.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.5.png Binary files differnew file mode 100644 index 0000000..9017124 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.5.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.6.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.6.png Binary files differnew file mode 100644 index 0000000..216dd7e --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.6.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.7.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.7.png Binary files differnew file mode 100644 index 0000000..27e8480 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.7.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.8.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.8.png Binary files differnew file mode 100644 index 0000000..6b911c5 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.8.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.9.png b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.9.png Binary files differnew file mode 100644 index 0000000..01858a5 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.9.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.qml b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.qml new file mode 100644 index 0000000..cec1558 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/data/nested.qml @@ -0,0 +1,5039 @@ +import Qt.VisualTest 4.7 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + image: "nested.0.png" + } + Frame { + msec: 32 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 48 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 64 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 80 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 96 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 112 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 128 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 144 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 160 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 176 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 192 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 208 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 224 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 240 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 256 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 272 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 288 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 304 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 320 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 336 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 352 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 368 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 384 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 400 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 416 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 432 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 448 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 464 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 480 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 496 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 512 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 528 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 544 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 560 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 576 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 592 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 608 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 624 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 640 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 656 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 672 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 688 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 704 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 720 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 736 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 752 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 768 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 784 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 800 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 816 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 832 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 848 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Frame { + msec: 864 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 25; y: 62 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 880 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 26; y: 62 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 896 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 27; y: 62 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 912 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 28; y: 62 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 29; y: 62 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 928 + hash: "2400cadaaa467cbfb0c7d2ace8137179" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 30; y: 62 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 33; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 944 + hash: "f5aa6257fd80c1e383bc2db84e41c354" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 35; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 40; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 960 + hash: "e96076794d3efc62a8fe2d2e543e97c7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 42; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 976 + image: "nested.1.png" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 58; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 992 + hash: "ab955f6c6b210b66b27e244dc2150860" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 66; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 70; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1008 + hash: "b655247e73b0b8357dc9d355ba6f49a0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 79; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 83; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1024 + hash: "08b67b7e28990cac8c9bd354b7d87698" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 91; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 95; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1040 + hash: "69cecfb41899e13c0bc5acb6f9bc666d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 104; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 107; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1056 + hash: "8d1f0cd85fd3f2654f7c30a6d9ec2b99" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 115; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 122; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1072 + hash: "f8ddda87cfcf5dc9d8c6e940fbd295f3" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 126; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 133; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1088 + hash: "ab9d942c47a2cca5531f7b67df034161" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 136; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 143; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1104 + hash: "7ca5a03fdfac44c389315c3928631a2a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 146; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 151; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1120 + hash: "ade955ed9d85fbbe72cf18bbc541c8bf" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 153; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 158; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1136 + hash: "6ad4afa3e3fcb578946fccbf4896761c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 162; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 163; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1152 + hash: "3ebe78e37c1c66d0b8fc86c8191e39de" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 165; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 166; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1168 + hash: "6450917cc89a553cf509265eaf318efb" + } + Frame { + msec: 1184 + hash: "6450917cc89a553cf509265eaf318efb" + } + Frame { + msec: 1200 + hash: "6450917cc89a553cf509265eaf318efb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 166; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1216 + hash: "6450917cc89a553cf509265eaf318efb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 164; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 161; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1232 + hash: "adfe54d5d28f7caf9ace117fd3573444" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 159; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 156; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1248 + hash: "f4963636cc4fbd8bfe6baf10540ed7e7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 154; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 149; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1264 + hash: "1c2d2edb9214cc3857aa221330ee28ba" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 143; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 139; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1280 + hash: "750226c90e6c6cd0b3bdd3c3dc8da18f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 131; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 126; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1296 + hash: "b6b5d177ab531460dc125afa82489a1d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 115; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 111; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1312 + hash: "62d411a7b6c404393e4bfafab9c638a3" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 100; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 91; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1328 + hash: "e355997b3decd4deb686fece59c33c7c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 86; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 76; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1344 + hash: "2ab73c8aac6a0e321686e97c9bb28f28" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 71; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 61; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1360 + hash: "55a887f9f45f71beb6b723191eb60a2f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 56; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 50; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1376 + hash: "b2d49e34362994739d14fb8231ff82d6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 47; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 43; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1392 + hash: "3964796876870035794b41501991b527" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 41; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 40; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1408 + hash: "e96076794d3efc62a8fe2d2e543e97c7" + } + Frame { + msec: 1424 + hash: "e96076794d3efc62a8fe2d2e543e97c7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 41; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1440 + hash: "7e524b3c43a987503ef102bdb9f11701" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 42; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1456 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1472 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1488 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1504 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1520 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1536 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1552 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 42; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1568 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1584 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1600 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1616 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1632 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1648 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1664 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1680 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1696 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1712 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1728 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1744 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1760 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1776 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1792 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1808 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1824 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1840 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1856 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1872 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1888 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1904 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1920 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Frame { + msec: 1936 + image: "nested.2.png" + } + Frame { + msec: 1952 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 38; y: 56 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1968 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 39; y: 57 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1984 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 39; y: 59 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 39; y: 60 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2000 + hash: "2a7c13e97c21e298541bb5ab8169ff13" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 40; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 40; y: 65 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2016 + hash: "9178754b825d60b2174ed9431ea80586" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 41; y: 68 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 41; y: 70 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 45; y: 79 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2032 + hash: "89eff8fa9f8710d7cbc50b8d4b751148" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 47; y: 84 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 86 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2048 + hash: "cdae8b46ecfc2b0c90264c120156cc46" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 50; y: 91 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 93 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2064 + hash: "cf35919630eab647a28eb91d8a441704" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 99 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 102 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2080 + hash: "283256d50da8c855c50d5f8813d37afd" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 107 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 109 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2096 + hash: "2560cd67d507bc24c1000187f645531c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 113 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 117 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2112 + hash: "6f6f7c299c4516c5231f5bfcd39b6db3" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 119 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 122 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2128 + hash: "e7989524238996cf59f420f4edf8f982" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 124 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 126 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2144 + hash: "34d8d456848807e854bcb25ffbde37d4" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 127 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 130 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2160 + hash: "433bd3983804b07484d38af2723f519e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 132 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 134 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2176 + hash: "510e534a8a7b88041f7544e7e4992b8f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 137 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 52; y: 139 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2192 + hash: "25f43c457a5bf2b70a66ce91685ad4dc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 141 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 142 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2208 + hash: "4119ab90627359420e25220618b76a69" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 145 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 50; y: 146 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2224 + hash: "8a3cc888e96cf3e26e369723b442baf1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 49; y: 147 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 49; y: 150 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2240 + hash: "980552e8ff9d87ccb40127b06b0f846f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 151 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 153 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2256 + hash: "9ee23fc7cbca4467f984073d2af7cdf6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 154 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 155 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2272 + hash: "032d65792ac867c9b9acef05bd993c54" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 156 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2288 + hash: "be2f8d5a64034e75e23527c486e33029" + } + Frame { + msec: 2304 + hash: "be2f8d5a64034e75e23527c486e33029" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 49; y: 155 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2320 + hash: "3f65505e4d1f8534c9123b3dea15d43e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 49; y: 154 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 49; y: 152 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2336 + hash: "e8b1799cf1926cb3b6cbf3adee80cffe" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 49; y: 149 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 49; y: 147 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2352 + hash: "31155b14cc0d3d47bbef4e199fdfcb46" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 140 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 52; y: 132 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2368 + hash: "b89745a9a60a7ebeb1de0a7f96ad2ac3" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 128 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 57; y: 118 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2384 + hash: "7e99fa1eba369d45f10778fe02356f09" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 59; y: 114 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 64; y: 103 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2400 + hash: "cd123f6b332f38f43abbf01469a41301" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 67; y: 98 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 71; y: 90 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2416 + hash: "353c0602dd2b670e19988117172855fc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 76; y: 81 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 78; y: 78 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2432 + hash: "20df9d19fd2113fa8f8023d5b4328dc5" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 81; y: 70 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 82; y: 67 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2448 + hash: "10b34a758d5b3790dd36c9d95c47b157" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 84; y: 62 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 60 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2464 + hash: "98a483e1eaa9145fd277fd85a9b0cf03" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 87; y: 57 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 88; y: 55 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2480 + hash: "e92edd52ff1ee78456fa1947a46e6570" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 89; y: 53 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 91; y: 52 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2496 + hash: "877384496d967f5f0ab1c817a2b316d6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 92; y: 51 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 93; y: 51 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2512 + hash: "15673570ffe9a391f9214601ac9dc86c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 94; y: 50 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 95; y: 50 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2528 + hash: "4b7f0094b19a4495bf913d2994889497" + } + Frame { + msec: 2544 + hash: "4b7f0094b19a4495bf913d2994889497" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 95; y: 49 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2560 + hash: "4b7f0094b19a4495bf913d2994889497" + } + Frame { + msec: 2576 + hash: "4b7f0094b19a4495bf913d2994889497" + } + Frame { + msec: 2592 + hash: "4b7f0094b19a4495bf913d2994889497" + } + Frame { + msec: 2608 + hash: "4b7f0094b19a4495bf913d2994889497" + } + Frame { + msec: 2624 + hash: "4b7f0094b19a4495bf913d2994889497" + } + Frame { + msec: 2640 + hash: "4b7f0094b19a4495bf913d2994889497" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 95; y: 49 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2656 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2672 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2688 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2704 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2720 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2736 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2752 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2768 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2784 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2800 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2816 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2832 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2848 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2864 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2880 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2896 + image: "nested.3.png" + } + Frame { + msec: 2912 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2928 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2944 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2960 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2976 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 2992 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3008 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3024 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3040 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3056 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3072 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3088 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3104 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3120 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3136 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3152 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3168 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3184 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3200 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3216 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3232 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 156; y: 74 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3248 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Frame { + msec: 3264 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 156; y: 73 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 157; y: 73 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3280 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 158; y: 73 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 160; y: 73 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3296 + hash: "2994e98b8ea9a6883a7324e7e848345c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 161; y: 73 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 163; y: 73 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3312 + hash: "df6cf21e99177a436e356f818996070c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 166; y: 73 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 171; y: 74 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3328 + hash: "86f5e3fee147f47edd4a6d042aff0301" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 178; y: 75 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 181; y: 75 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3344 + hash: "589c1418a9179c868d904b1a5169a11b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 189; y: 75 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 193; y: 75 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3360 + hash: "3141ad77d193e145b749759070e1e6ef" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 200; y: 75 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 204; y: 75 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3376 + hash: "5e34d4deeb6d80b336cacea39797e0ca" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 211; y: 75 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 217; y: 75 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3392 + hash: "b8795d844982bcf60a6713f91717648f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 220; y: 75 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 224; y: 75 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3408 + hash: "857c63b24057ee0186c5136eddb71cb1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 226; y: 75 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 227; y: 76 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3424 + hash: "49222ed0d1ebc8759d0a1dc65c3beec6" + } + Frame { + msec: 3440 + hash: "49222ed0d1ebc8759d0a1dc65c3beec6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 227; y: 77 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 226; y: 77 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3456 + hash: "751847708a468f4f3e64e7cb5ebd1351" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 225; y: 78 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 224; y: 78 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3472 + hash: "4016f80a5219fcba6480645f71998d71" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 221; y: 80 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 220; y: 80 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3488 + hash: "beef05cd2a3d20bc66978fa4f0ac1d12" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 216; y: 82 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 214; y: 84 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3504 + hash: "e50a2661e93d34b55c8d2d39abc77e5a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 209; y: 86 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 206; y: 86 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3520 + hash: "7beccbc2f091350bb5d9de1e2443021d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 200; y: 88 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 192; y: 89 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3536 + hash: "1d39570bf07392f56b6dd24b0bf9e7bc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 188; y: 90 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 180; y: 91 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3552 + hash: "62565b3e5aad3979b408207bbf36e615" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 176; y: 92 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 167; y: 92 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3568 + hash: "d9c6004921847fef16bb8c2f5d6b3b7d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 162; y: 92 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 152; y: 92 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3584 + hash: "53da27301ad97ae52c65928615ec0cd7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 142; y: 92 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 137; y: 90 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3600 + hash: "9772a776e84515984b4eec70dbd1c5a7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 125; y: 88 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 119; y: 88 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3616 + hash: "9caa6583a716443c13e8fef3f2923d6e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 109; y: 86 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 104; y: 85 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3632 + hash: "f162a18b2d3f0d5f6f01fc373c016f68" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 98; y: 84 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 96; y: 84 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3648 + hash: "58976e8e31beddf881c7cfa3ede54c09" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 94; y: 84 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 92; y: 83 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3664 + hash: "6625f7adb097bc170024083c42d74b4b" + } + Frame { + msec: 3680 + hash: "6625f7adb097bc170024083c42d74b4b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 92; y: 82 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3696 + hash: "1d63f09ca27e9d70c3c0ea923a6cfba4" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 93; y: 82 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3712 + hash: "1d63f09ca27e9d70c3c0ea923a6cfba4" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 94; y: 81 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 96; y: 81 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3728 + hash: "a23c75fcaa0a28adb944bf192af65bff" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 98; y: 81 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 100; y: 81 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3744 + hash: "2b90fe8937dcc39d1d6add305cf36043" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 107; y: 81 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 111; y: 81 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3760 + hash: "7da82cfaf0f826ca9a41128278b6b09c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 118; y: 81 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 122; y: 81 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3776 + hash: "a3f69d13d38b336fda33a86899564996" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 129; y: 80 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 135; y: 79 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3792 + hash: "dc562319e1d332ba34ac94bfc0c39c5e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 138; y: 79 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 140; y: 78 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3808 + hash: "756482bee292668f56d813847b0ccd53" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 141; y: 77 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 142; y: 76 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3824 + hash: "06d250c4d18a70f8f7b1c10e22a1bc4c" + } + Frame { + msec: 3840 + hash: "06d250c4d18a70f8f7b1c10e22a1bc4c" + } + Frame { + msec: 3856 + image: "nested.4.png" + } + Frame { + msec: 3872 + hash: "06d250c4d18a70f8f7b1c10e22a1bc4c" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 142; y: 76 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3888 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 3904 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 3920 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 3936 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 3952 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 3968 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 3984 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4000 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4016 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4032 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4048 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4064 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4080 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4096 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4112 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4128 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4144 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4160 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4176 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4192 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4208 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4224 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4240 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4256 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4272 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4288 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4304 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4320 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4336 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4352 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4368 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4384 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4400 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4416 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4432 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4448 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4464 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4480 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4496 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4512 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4528 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4544 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 16; y: 46 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4560 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 4576 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 16; y: 47 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 16; y: 48 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4592 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 16; y: 49 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 17; y: 50 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4608 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 17; y: 55 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 18; y: 56 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4624 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 20; y: 61 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 20; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4640 + hash: "ff1f86b47e0d1db5db7d939df8349931" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 22; y: 70 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 23; y: 73 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4656 + hash: "f13393a4556e9e73c33f2bb74d8f7794" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 26; y: 80 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 28; y: 84 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4672 + hash: "8c9aa01516437184eb17d89348cca004" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 33; y: 91 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 40; y: 99 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4688 + hash: "8b6848cb722ff5ec02d957da1ee687e5" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 44; y: 102 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 109 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4704 + hash: "552fde584d128f511788670031d79dd2" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 58; y: 112 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 64; y: 117 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4720 + hash: "55dc3a4242b46e602f823c0305e67ad2" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 68; y: 118 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 71; y: 120 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4736 + hash: "603b9b2ed6ff4273c3ab1cbe32afb19e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 73; y: 120 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 73; y: 120 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4752 + hash: "157eda24ea8452a208aa7a6a22639c73" + } + Frame { + msec: 4768 + hash: "157eda24ea8452a208aa7a6a22639c73" + } + Frame { + msec: 4784 + hash: "c5005b83816c18b67448dfbccd0ab0b2" + } + Frame { + msec: 4800 + hash: "878512df863e5d60437b85fbd2a32eb1" + } + Frame { + msec: 4816 + image: "nested.5.png" + } + Frame { + msec: 4832 + hash: "02ab69b67b746ec0021295992a03ada1" + } + Frame { + msec: 4848 + hash: "c621382766d7bacab87055a73623a8ce" + } + Frame { + msec: 4864 + hash: "a8d1be78741d9afd88363bd19f1cbc6b" + } + Frame { + msec: 4880 + hash: "5a70275ff656766d73638d4dd4db4492" + } + Frame { + msec: 4896 + hash: "892ea0a00553524b79889d437eac9b6f" + } + Frame { + msec: 4912 + hash: "d818258bffc065430902ffa8f5668f86" + } + Frame { + msec: 4928 + hash: "6b844523522ace7545705ffb8ffe1da3" + } + Frame { + msec: 4944 + hash: "3906097bc49bad199b52c99dbf87f98f" + } + Frame { + msec: 4960 + hash: "a2bd859b5ca7f4fac8d62b1c9ab76aad" + } + Frame { + msec: 4976 + hash: "f374673e3511b1df8b50ff7ef6002b3a" + } + Frame { + msec: 4992 + hash: "c2eecfadd19418f469b1ab53a3ecae70" + } + Frame { + msec: 5008 + hash: "2b481965ece0f2e1795ef56aa5d6a752" + } + Frame { + msec: 5024 + hash: "c294f28000348365a2c37265132efdb5" + } + Frame { + msec: 5040 + hash: "c294f28000348365a2c37265132efdb5" + } + Frame { + msec: 5056 + hash: "4e9c18eab469b2da0cb92526d3d54501" + } + Frame { + msec: 5072 + hash: "4e9c18eab469b2da0cb92526d3d54501" + } + Frame { + msec: 5088 + hash: "4e9c18eab469b2da0cb92526d3d54501" + } + Frame { + msec: 5104 + hash: "4e9c18eab469b2da0cb92526d3d54501" + } + Frame { + msec: 5120 + hash: "3836449b99d88e2dea9a0eb9417faca5" + } + Frame { + msec: 5136 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5152 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5168 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5184 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5200 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5216 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5232 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5248 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5264 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5280 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5296 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5312 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5328 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5344 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5360 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5376 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5392 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5408 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5424 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5440 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5456 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5472 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5488 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5504 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5520 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5536 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5552 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5568 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5584 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5600 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5616 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Frame { + msec: 5632 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 20; y: 238 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 21; y: 238 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5648 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 22; y: 239 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 23; y: 239 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5664 + hash: "42dc501eb5a34843ef0a8977ff029054" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 27; y: 240 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 29; y: 240 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5680 + hash: "b56d132ac881e27d308009fb9a9d2d50" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 33; y: 241 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 36; y: 241 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5696 + hash: "6c65fca03ea127d554f15c80da76f21f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 42; y: 242 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 45; y: 243 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5712 + hash: "e5d8939135d0e964609a09a437af58bc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 243 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 61; y: 243 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5728 + hash: "ab60a45ac475ef8d1177d831a6572d1f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 66; y: 243 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 75; y: 243 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5744 + hash: "78b2e0c7dd8b8bcbd573dac79ff815e4" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 79; y: 243 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 89; y: 243 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5760 + hash: "ef9e89650d8e3d572285e2a2e2b09166" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 95; y: 243 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 106; y: 243 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5776 + image: "nested.6.png" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 118; y: 243 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 126; y: 243 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5792 + hash: "b83136fa3769e30ea47097b489e8f1dc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 137; y: 241 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 143; y: 240 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5808 + hash: "fb892905b790a061ce5985c927db3cf5" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 154; y: 238 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 159; y: 237 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5824 + hash: "bc4358e21d2d31942e776adfd32ef1c6" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 170; y: 235 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 184; y: 234 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5840 + hash: "b42380a7fcf5e2fbfe4dddbe86ad7287" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 191; y: 232 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 201; y: 231 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5856 + hash: "4b3c12beb43a77ebaf458804b03c7b52" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 205; y: 231 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 208; y: 230 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5872 + hash: "a18be4d4ab28c0fd0c16696c4ecc03ef" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 209; y: 230 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 209; y: 229 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5888 + hash: "c5f100bc4b14e958c7d9bbff84e0a934" + } + Frame { + msec: 5904 + hash: "c5f100bc4b14e958c7d9bbff84e0a934" + } + Frame { + msec: 5920 + hash: "c5f100bc4b14e958c7d9bbff84e0a934" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 208; y: 229 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5936 + hash: "a18be4d4ab28c0fd0c16696c4ecc03ef" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 207; y: 229 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 207; y: 230 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5952 + hash: "a8b23e7dad1bdbaa3452335be0f07658" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 206; y: 230 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 204; y: 231 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5968 + hash: "4c1feb559a11912b06ed521bebba43d0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 200; y: 232 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 194; y: 232 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5984 + hash: "ffb97bcedf72e02616272c1cad5c38d7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 190; y: 232 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 181; y: 231 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6000 + hash: "99498ed9b4d519a2f842d407abdef90a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 175; y: 230 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 163; y: 229 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6016 + hash: "1ca3f012adab899eba1dcb63d048345f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 158; y: 228 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 145; y: 227 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6032 + hash: "8a81d49de887f314f67976a65f469169" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 132; y: 227 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 126; y: 227 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6048 + hash: "b83136fa3769e30ea47097b489e8f1dc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 116; y: 227 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 112; y: 227 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6064 + hash: "12cdd297407257ae4bb13c87e24537fb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 103; y: 227 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 99; y: 227 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6080 + hash: "a51ac0a1e9432671c88f7649c38d265d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 90; y: 227 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 86; y: 227 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6096 + hash: "4ba4f854659161c765395cdee35594f2" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 77; y: 226 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 70; y: 225 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6112 + hash: "9907add9e28b4a8976f3727f99a4b6d4" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 66; y: 224 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 60; y: 223 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6128 + hash: "c2cb865c4a766b9c08328b374e940f29" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 59; y: 223 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 56; y: 223 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6144 + hash: "c97981263572ded23b328da45cf88012" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 55; y: 223 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 223 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6160 + hash: "f4bae51c866ba1158f44529208514d6f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 52; y: 222 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 50; y: 222 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6176 + hash: "35b4f1f9bb343f2b22bd7cdad6f28249" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 49; y: 223 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 223 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6192 + hash: "84eba4cb400e5622463f5a1fa79be72b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 47; y: 223 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 46; y: 223 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6208 + hash: "d38e882728c7efc906befe69b416082a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 45; y: 223 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6224 + hash: "e5d8939135d0e964609a09a437af58bc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 44; y: 223 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 43; y: 223 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6240 + hash: "6b6e06e8473d5703e217accd824b08d5" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 42; y: 223 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 40; y: 223 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6256 + hash: "8e38bc5b00e33e24f931b181dc77d3c1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 39; y: 223 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 38; y: 223 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6272 + hash: "a173708b5380f42a2bdbf6ae69cdca20" + } + Frame { + msec: 6288 + hash: "a173708b5380f42a2bdbf6ae69cdca20" + } + Frame { + msec: 6304 + hash: "a173708b5380f42a2bdbf6ae69cdca20" + } + Frame { + msec: 6320 + hash: "a173708b5380f42a2bdbf6ae69cdca20" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 38; y: 223 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6336 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6352 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6368 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6384 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6400 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6416 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6432 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6448 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6464 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6480 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6496 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6512 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6528 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6544 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6560 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6576 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6592 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6608 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6624 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6640 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6656 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6672 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6688 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6704 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6720 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6736 + image: "nested.7.png" + } + Frame { + msec: 6752 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6768 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6784 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6800 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6816 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6832 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6848 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6864 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6880 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6896 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6912 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6928 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6944 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6960 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6976 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 6992 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 7008 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 7024 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 7040 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 7056 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 7072 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 46; y: 225 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7088 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 7104 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 46; y: 226 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 46; y: 227 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7120 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 46; y: 228 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 46; y: 231 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7136 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 46; y: 233 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 46; y: 238 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7152 + hash: "35dd0f784c356be0050936ff75b0cdf7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 47; y: 240 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 245 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7168 + hash: "9ac066a700eae45edf9b2f1ba12f0324" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 248 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 49; y: 255 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7184 + hash: "22a2a8bf257918820b0ab55ecb14b479" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 50; y: 259 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 266 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7200 + hash: "eb98237e06cde8ed2f18040ce9197d16" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 52; y: 272 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 52; y: 276 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7216 + hash: "f0c7afe1bd25b9b573cbc69154c25862" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 282 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 285 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7232 + hash: "d6a681b6de867db47f889e6f1ec03dcf" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 291 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 293 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7248 + hash: "0ee281281c7654567a1debae7a13abe0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 299 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 304 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7264 + hash: "9d5f1c8cb0953c14bdd49aa88d2b225f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 306 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 310 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7280 + hash: "ae1c2a3ed67c5c10fc9d19de4de7b7eb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 312 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 315 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7296 + hash: "8505f9d060fc17fef2e91eb2add206bb" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 316 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 318 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7312 + hash: "c32a6d546a3e4f2ee5349a7dad4b30af" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 319 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 52; y: 320 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7328 + hash: "222f6e8e8deab567f1e7d0aaf7035b60" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 321 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 322 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7344 + hash: "f7011629f44015187849daad6a53cebf" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 323 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 324 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7360 + hash: "56b00d9116a51c041483dd00db0aca90" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 50; y: 325 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 50; y: 326 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7376 + hash: "93232fbcafe8e279b37781f51dfb923a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 49; y: 328 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 329 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7392 + hash: "9fcf62eaacfc3477a4550c31f03c4782" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 330 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 331 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7408 + hash: "dd669865fd36e42eec1d69860b29e7ce" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 47; y: 331 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7424 + hash: "9247af334483b219ca9bbe98d8fc362e" + } + Frame { + msec: 7440 + hash: "9247af334483b219ca9bbe98d8fc362e" + } + Frame { + msec: 7456 + hash: "9247af334483b219ca9bbe98d8fc362e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 47; y: 330 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7472 + hash: "9247af334483b219ca9bbe98d8fc362e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 47; y: 329 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 47; y: 328 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7488 + hash: "69ef9255a29d65f26e5441594ea1bad9" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 325 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 323 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7504 + hash: "055f73dd085d2f65a055ba4d9a8a7539" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 49; y: 318 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 49; y: 316 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7520 + hash: "384da5b6a948a52d0519935a8e33f014" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 309 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 54; y: 303 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7536 + hash: "1caa0049be4033db45f0d2debb25268f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 55; y: 299 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 55; y: 299 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7552 + hash: "76b8d00b3a2a68fec277050a442c18ca" + } + Frame { + msec: 7568 + hash: "0ee281281c7654567a1debae7a13abe0" + } + Frame { + msec: 7584 + hash: "df1dbb027a8542aa6120cce7b69724a7" + } + Frame { + msec: 7600 + hash: "06a4d9b1d73362b3e29c6cf52fdb515c" + } + Frame { + msec: 7616 + hash: "876c0dc8a68a4c1253b7aed6316cb892" + } + Frame { + msec: 7632 + hash: "b46c74b1a2535099f0cdb8093bd49a4e" + } + Frame { + msec: 7648 + hash: "0ad09a7638aa6f2affe47db2a810196f" + } + Frame { + msec: 7664 + hash: "3710dde54d7e4a10a2c3ca2f891da7f5" + } + Frame { + msec: 7680 + hash: "8426a607c92fbfa508e81c620d90e919" + } + Frame { + msec: 7696 + image: "nested.8.png" + } + Frame { + msec: 7712 + hash: "1f38e34787c909d93d567f983a425257" + } + Frame { + msec: 7728 + hash: "7b09913793d4c79d948fdff1b72c7124" + } + Frame { + msec: 7744 + hash: "8a0d1484c073d8107b4bf9949edcdb18" + } + Frame { + msec: 7760 + hash: "4bad25465dfdcc41995216b0f6a5191b" + } + Frame { + msec: 7776 + hash: "6d39bbeb5f74273c1ed0231ac34fe094" + } + Frame { + msec: 7792 + hash: "8ccc2e33b8d6c67162326d229e9c17ab" + } + Frame { + msec: 7808 + hash: "3561eaa9124b96b2a0afa022bc0fe581" + } + Frame { + msec: 7824 + hash: "b87d739e49f0427d9da577ac5147fd21" + } + Frame { + msec: 7840 + hash: "7d0efbfceec35e591f9fae650288809b" + } + Frame { + msec: 7856 + hash: "7d0efbfceec35e591f9fae650288809b" + } + Frame { + msec: 7872 + hash: "ff5d2037d3cc7bb6930cabc3d53f0196" + } + Frame { + msec: 7888 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 7904 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 7920 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 7936 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 7952 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 7968 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 7984 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8000 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8016 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8032 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8048 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8064 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8080 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8096 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8112 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8128 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8144 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8160 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8176 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8192 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8208 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8224 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8240 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8256 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8272 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8288 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8304 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8320 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8336 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8352 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8368 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8384 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8400 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8416 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8432 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8448 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8464 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8480 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8496 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8512 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8528 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8544 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8560 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8576 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8592 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8608 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8624 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8640 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8656 + image: "nested.9.png" + } + Frame { + msec: 8672 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8688 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8704 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8720 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8736 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8752 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8768 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8784 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8800 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8816 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8832 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8848 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8864 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8880 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8896 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8912 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8928 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8944 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8960 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8976 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 8992 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 9008 + hash: "76624c57195c25b8abd4297e11c55980" + } + Frame { + msec: 9024 + hash: "76624c57195c25b8abd4297e11c55980" + } +} diff --git a/tests/auto/declarative/qmlvisual/qdeclarativemousearea/nested.qml b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/nested.qml new file mode 100644 index 0000000..b2d88d2 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativemousearea/nested.qml @@ -0,0 +1,62 @@ +import QtQuick 1.0 + +/* + Test nested MouseArea with different drag axes. +*/ + +Rectangle{ + width:400 + height:360 + color: "white" + Flickable { + anchors.fill: parent + contentWidth: 600 + contentHeight: 600 + Rectangle{ + id: draggable + width:200; height:200; color: "lightsteelblue" + opacity: ma1.drag.active ? 0.5 : 1.0 + y:20 + MouseArea{ + id: ma1 + objectName: "one" + anchors.fill: parent + drag.target: draggable + drag.axis: "XandYAxis" + drag.filterChildren: true + drag.minimumX: 0 + drag.maximumX: 200 + drag.minimumY: 20 + drag.maximumY: 220 + Rectangle{ + id: draggable_inner + width:40; height:40; color: "red" + y:20 + MouseArea{ + objectName: "two" + anchors.fill: parent + drag.target: draggable_inner + drag.axis: "XAxis" + drag.minimumX: 0 + drag.maximumX: 360 + } + } + } + } + Rectangle{ + id: draggable3 + width:40; height:40; color: "green" + opacity: ma3.drag.active ? 0.5 : 1.0 + y:210 + MouseArea{ + id: ma3 + objectName: "three" + anchors.fill: parent + drag.target: draggable3 + drag.axis: "XAxis" + drag.minimumX: 0 + drag.maximumX: 360 + } + } + } +} 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 8b6329d..87bc640 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 85c0cce..f56f498 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/align/data-MAC/multilineAlign.qml @@ -6,242 +6,242 @@ VisualTest { } Frame { msec: 16 - hash: "75c15f88551f961727b547082216d0bb" + image: "multilineAlign.0.png" } Frame { msec: 32 - hash: "75c15f88551f961727b547082216d0bb" + hash: "7fb2062f5786da9323db4286688682a0" } Frame { msec: 48 - hash: "75c15f88551f961727b547082216d0bb" + hash: "7fb2062f5786da9323db4286688682a0" } Frame { msec: 64 - hash: "75c15f88551f961727b547082216d0bb" + hash: "7fb2062f5786da9323db4286688682a0" } Frame { msec: 80 - hash: "75c15f88551f961727b547082216d0bb" + hash: "7fb2062f5786da9323db4286688682a0" } Frame { msec: 96 - hash: "75c15f88551f961727b547082216d0bb" + hash: "7fb2062f5786da9323db4286688682a0" } Frame { msec: 112 - hash: "75c15f88551f961727b547082216d0bb" + hash: "7fb2062f5786da9323db4286688682a0" } Frame { msec: 128 - hash: "75c15f88551f961727b547082216d0bb" + hash: "7fb2062f5786da9323db4286688682a0" } Frame { msec: 144 - hash: "75c15f88551f961727b547082216d0bb" + hash: "7fb2062f5786da9323db4286688682a0" } Frame { msec: 160 - hash: "75c15f88551f961727b547082216d0bb" + hash: "7fb2062f5786da9323db4286688682a0" } Frame { msec: 176 - hash: "1a58de7b864ae75e65f69461155cbfb2" + hash: "c67a5ae840827487ab618ff2d4e9a056" } Frame { msec: 192 - hash: "1a58de7b864ae75e65f69461155cbfb2" + hash: "c67a5ae840827487ab618ff2d4e9a056" } Frame { msec: 208 - hash: "1a58de7b864ae75e65f69461155cbfb2" + hash: "c67a5ae840827487ab618ff2d4e9a056" } Frame { msec: 224 - hash: "1a58de7b864ae75e65f69461155cbfb2" + hash: "c67a5ae840827487ab618ff2d4e9a056" } Frame { msec: 240 - hash: "1a58de7b864ae75e65f69461155cbfb2" + hash: "c67a5ae840827487ab618ff2d4e9a056" } Frame { msec: 256 - hash: "1a58de7b864ae75e65f69461155cbfb2" + hash: "c67a5ae840827487ab618ff2d4e9a056" } Frame { msec: 272 - hash: "1a58de7b864ae75e65f69461155cbfb2" + hash: "c67a5ae840827487ab618ff2d4e9a056" } Frame { msec: 288 - hash: "1a58de7b864ae75e65f69461155cbfb2" + hash: "c67a5ae840827487ab618ff2d4e9a056" } Frame { msec: 304 - hash: "1a58de7b864ae75e65f69461155cbfb2" + hash: "c67a5ae840827487ab618ff2d4e9a056" } Frame { msec: 320 - hash: "1a58de7b864ae75e65f69461155cbfb2" + hash: "c67a5ae840827487ab618ff2d4e9a056" } Frame { msec: 336 - hash: "8a6b615ce522e7aa1011bc1d16193871" + hash: "c7986aca05835e238ee95be063bdd032" } Frame { msec: 352 - hash: "8a6b615ce522e7aa1011bc1d16193871" + hash: "c7986aca05835e238ee95be063bdd032" } Frame { msec: 368 - hash: "8a6b615ce522e7aa1011bc1d16193871" + hash: "c7986aca05835e238ee95be063bdd032" } Frame { msec: 384 - hash: "8a6b615ce522e7aa1011bc1d16193871" + hash: "c7986aca05835e238ee95be063bdd032" } Frame { msec: 400 - hash: "8a6b615ce522e7aa1011bc1d16193871" + hash: "c7986aca05835e238ee95be063bdd032" } Frame { msec: 416 - hash: "8a6b615ce522e7aa1011bc1d16193871" + hash: "c7986aca05835e238ee95be063bdd032" } Frame { msec: 432 - hash: "8a6b615ce522e7aa1011bc1d16193871" + hash: "c7986aca05835e238ee95be063bdd032" } Frame { msec: 448 - hash: "8a6b615ce522e7aa1011bc1d16193871" + hash: "c7986aca05835e238ee95be063bdd032" } Frame { msec: 464 - hash: "8a6b615ce522e7aa1011bc1d16193871" + hash: "c7986aca05835e238ee95be063bdd032" } Frame { msec: 480 - hash: "8a6b615ce522e7aa1011bc1d16193871" + hash: "c7986aca05835e238ee95be063bdd032" } Frame { msec: 496 - hash: "17141b7167d2249238c15cf751b3d8b6" + hash: "dd8ee9c060450beef6cc2494fa463e0a" } Frame { msec: 512 - hash: "17141b7167d2249238c15cf751b3d8b6" + hash: "dd8ee9c060450beef6cc2494fa463e0a" } Frame { msec: 528 - hash: "17141b7167d2249238c15cf751b3d8b6" + hash: "dd8ee9c060450beef6cc2494fa463e0a" } Frame { msec: 544 - hash: "17141b7167d2249238c15cf751b3d8b6" + hash: "dd8ee9c060450beef6cc2494fa463e0a" } Frame { msec: 560 - hash: "17141b7167d2249238c15cf751b3d8b6" + hash: "dd8ee9c060450beef6cc2494fa463e0a" } Frame { msec: 576 - hash: "17141b7167d2249238c15cf751b3d8b6" + hash: "dd8ee9c060450beef6cc2494fa463e0a" } Frame { msec: 592 - hash: "17141b7167d2249238c15cf751b3d8b6" + hash: "dd8ee9c060450beef6cc2494fa463e0a" } Frame { msec: 608 - hash: "17141b7167d2249238c15cf751b3d8b6" + hash: "dd8ee9c060450beef6cc2494fa463e0a" } Frame { msec: 624 - hash: "17141b7167d2249238c15cf751b3d8b6" + hash: "dd8ee9c060450beef6cc2494fa463e0a" } Frame { msec: 640 - hash: "17141b7167d2249238c15cf751b3d8b6" + hash: "dd8ee9c060450beef6cc2494fa463e0a" } Frame { msec: 656 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 672 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 688 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 704 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 720 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 736 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 752 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 768 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 784 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 800 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 816 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 832 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 848 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 864 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 880 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 896 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 912 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 928 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 944 - hash: "92e4f7c09e41b5fb97feb0093e8d9c1f" + hash: "f55ebe08f1b538d085cda157f566859e" } Frame { msec: 960 - image: "multilineAlign.0.png" + hash: "f55ebe08f1b538d085cda157f566859e" } } 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 differnew file mode 100644 index 0000000..4b78165 --- /dev/null +++ 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 d7428dd..7c557e0 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/baseline/data-MAC/parentanchor.qml @@ -6,126 +6,126 @@ VisualTest { } Frame { msec: 16 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + image: "parentanchor.0.png" } Frame { msec: 32 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 48 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 64 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 80 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 96 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 112 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 128 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 144 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 160 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 176 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 192 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 208 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 224 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 240 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 256 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 272 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 288 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 304 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 320 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 336 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 352 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 368 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 384 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 400 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 416 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 432 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 448 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 464 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 480 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } Frame { msec: 496 - hash: "80e9ca4c4ffac9c032334a3369ef9db6" + hash: "455caf06270992e3367c2a5a4371b6ac" } } 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 7547856..804a443 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 84430bb..804a443 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 6b9986f..efdb916 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/data-MAC/qtbug_14865.qml @@ -6,442 +6,442 @@ VisualTest { } Frame { msec: 16 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + image: "qtbug_14865.0.png" } Frame { msec: 32 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 48 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 64 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 80 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 96 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 112 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 128 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 144 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 160 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 176 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 192 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 208 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 224 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 240 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 256 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 272 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 288 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 304 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 320 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 336 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 352 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 368 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 384 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 400 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 416 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 432 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 448 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 464 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 480 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 496 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 512 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 528 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 544 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 560 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 576 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 592 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 608 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 624 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 640 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 656 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 672 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 688 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 704 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 720 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 736 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 752 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 768 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 784 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 800 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 816 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 832 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 848 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 864 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 880 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 896 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 912 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 928 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 944 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 960 - image: "qtbug_14865.0.png" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 976 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + image: "qtbug_14865.1.png" } Frame { msec: 992 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 1008 - hash: "35c278720fd30e14dce9cf8684dd2cd7" + hash: "9886d2b883d236bd0a346c6763c1f245" } Frame { msec: 1024 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1040 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1056 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1072 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1088 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1104 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1120 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1136 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1152 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1168 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1184 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1200 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1216 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1232 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1248 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1264 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1280 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1296 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1312 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1328 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1344 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1360 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1376 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1392 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1408 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1424 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1440 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1456 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1472 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1488 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1504 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1520 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1536 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1552 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1568 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1584 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1600 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1616 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1632 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1648 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1664 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1680 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1696 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1712 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1728 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1744 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } Frame { msec: 1760 - hash: "eee4600ac08b458ac7ac2320e225674c" + hash: "3ccd3d26158a50d8f0567bafd7a23e06" } } 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 88e065b..99f0eb7 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 differnew file mode 100644 index 0000000..99f0eb7 --- /dev/null +++ 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 96144e1..6dc7f4f 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide.qml @@ -6,274 +6,274 @@ VisualTest { } Frame { msec: 16 - hash: "7d056af7620fe8387955a1401a4f088a" + image: "elide.0.png" } Frame { msec: 32 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 48 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 64 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 80 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 96 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 112 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 128 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 144 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 160 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 176 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 192 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 208 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 224 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 240 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 256 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 272 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 288 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 304 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 320 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 336 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 352 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 368 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 384 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 400 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 416 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 432 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 448 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 464 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 480 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 496 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 512 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 528 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 544 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 560 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 576 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 592 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 608 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 624 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 640 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 656 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 672 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 688 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 704 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 720 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 736 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 752 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 768 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 784 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 800 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 816 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 832 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 848 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 864 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 880 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 896 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 912 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 928 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 944 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 960 - image: "elide.0.png" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 976 - hash: "7d056af7620fe8387955a1401a4f088a" + image: "elide.1.png" } Key { type: 6 key: 16777249 - modifiers: 0 + modifiers: 67108864 text: "" autorep: false count: 1 } Frame { msec: 992 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 1008 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 1024 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 1040 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } Frame { msec: 1056 - hash: "7d056af7620fe8387955a1401a4f088a" + hash: "8401ef19b1e07ca917b8b061888d4e70" } } 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 4df514a..0b08fba 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 e752fec..dbf8cd3 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 d2f8633..09646f8 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 0162321..b6734b4 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 differnew file mode 100644 index 0000000..861f6b0 --- /dev/null +++ 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 b531942..026f880 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/elide2.qml @@ -6,986 +6,986 @@ VisualTest { } Frame { msec: 16 - hash: "90a45871fcfc509e60d4ee01527cde3b" + image: "elide2.0.png" } Frame { msec: 32 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "d482dd54c0f3876a11d80979ada91fa9" } Frame { msec: 48 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "d482dd54c0f3876a11d80979ada91fa9" } Frame { msec: 64 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "d482dd54c0f3876a11d80979ada91fa9" } Frame { msec: 80 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "d482dd54c0f3876a11d80979ada91fa9" } Frame { msec: 96 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "d482dd54c0f3876a11d80979ada91fa9" } Frame { msec: 112 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "3eb1cc8fa11ae88a3bf5004263805264" } Frame { msec: 128 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "3eb1cc8fa11ae88a3bf5004263805264" } Frame { msec: 144 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "3eb1cc8fa11ae88a3bf5004263805264" } Frame { msec: 160 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "3eb1cc8fa11ae88a3bf5004263805264" } Frame { msec: 176 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "3eb1cc8fa11ae88a3bf5004263805264" } Frame { msec: 192 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "b169f3828fafa79245bd5886d94a33b2" } Frame { msec: 208 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "b169f3828fafa79245bd5886d94a33b2" } Frame { msec: 224 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "b169f3828fafa79245bd5886d94a33b2" } Frame { msec: 240 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "b169f3828fafa79245bd5886d94a33b2" } Frame { msec: 256 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "c9a22f77cce333ea041730bc76d9bb96" } Frame { msec: 272 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "c9a22f77cce333ea041730bc76d9bb96" } Frame { msec: 288 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "c9a22f77cce333ea041730bc76d9bb96" } Frame { msec: 304 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "c9a22f77cce333ea041730bc76d9bb96" } Frame { msec: 320 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "958e5805b2bc2ffeaf8a6c8c24721dd5" } Frame { msec: 336 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "958e5805b2bc2ffeaf8a6c8c24721dd5" } Frame { msec: 352 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "958e5805b2bc2ffeaf8a6c8c24721dd5" } Frame { msec: 368 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "958e5805b2bc2ffeaf8a6c8c24721dd5" } Frame { msec: 384 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "958e5805b2bc2ffeaf8a6c8c24721dd5" } Frame { msec: 400 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "ed14c796dc2980f7a1bdedb15698ae01" } Frame { msec: 416 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "ed14c796dc2980f7a1bdedb15698ae01" } Frame { msec: 432 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "ed14c796dc2980f7a1bdedb15698ae01" } Frame { msec: 448 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "ed14c796dc2980f7a1bdedb15698ae01" } Frame { msec: 464 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "ed14c796dc2980f7a1bdedb15698ae01" } Frame { msec: 480 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "24d811c9b98b0cb140e7e82090e793ab" } Frame { msec: 496 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "24d811c9b98b0cb140e7e82090e793ab" } Frame { msec: 512 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "24d811c9b98b0cb140e7e82090e793ab" } Frame { msec: 528 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "24d811c9b98b0cb140e7e82090e793ab" } Frame { msec: 544 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "afa28a6a682128b1b44df31c78b63b04" } Frame { msec: 560 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "afa28a6a682128b1b44df31c78b63b04" } Frame { msec: 576 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "afa28a6a682128b1b44df31c78b63b04" } Frame { msec: 592 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "afa28a6a682128b1b44df31c78b63b04" } Frame { msec: 608 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "c43bba2d3406fabdafac344102d7d72c" } Frame { msec: 624 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "c43bba2d3406fabdafac344102d7d72c" } Frame { msec: 640 - hash: "90a45871fcfc509e60d4ee01527cde3b" + hash: "c43bba2d3406fabdafac344102d7d72c" } Frame { msec: 656 - hash: "c73bf21c0c9946e123372c660c78e7dd" + hash: "c43bba2d3406fabdafac344102d7d72c" } Frame { msec: 672 - hash: "c73bf21c0c9946e123372c660c78e7dd" + hash: "c43bba2d3406fabdafac344102d7d72c" } Frame { msec: 688 - hash: "c73bf21c0c9946e123372c660c78e7dd" + hash: "0e1fb18acb72ca1da6fd619e31dd2c86" } Frame { msec: 704 - hash: "bba29f9ce1a1d7dafdfe34b0ab952658" + hash: "0e1fb18acb72ca1da6fd619e31dd2c86" } Frame { msec: 720 - hash: "bba29f9ce1a1d7dafdfe34b0ab952658" + hash: "0e1fb18acb72ca1da6fd619e31dd2c86" } Frame { msec: 736 - hash: "bba29f9ce1a1d7dafdfe34b0ab952658" + hash: "0e1fb18acb72ca1da6fd619e31dd2c86" } Frame { msec: 752 - hash: "bba29f9ce1a1d7dafdfe34b0ab952658" + hash: "0e1fb18acb72ca1da6fd619e31dd2c86" } Frame { msec: 768 - hash: "bba29f9ce1a1d7dafdfe34b0ab952658" + hash: "d5780e5b30828f33d18c1f4e32ba8c3f" } Frame { msec: 784 - hash: "26f95496c4f1fa217d681a1ae79eff86" + hash: "d5780e5b30828f33d18c1f4e32ba8c3f" } Frame { msec: 800 - hash: "26f95496c4f1fa217d681a1ae79eff86" + hash: "d5780e5b30828f33d18c1f4e32ba8c3f" } Frame { msec: 816 - hash: "26f95496c4f1fa217d681a1ae79eff86" + hash: "d5780e5b30828f33d18c1f4e32ba8c3f" } Frame { msec: 832 - hash: "26f95496c4f1fa217d681a1ae79eff86" + hash: "28bdd1ab1c1af1b39a2f9d11be456682" } Frame { msec: 848 - hash: "96a83eae50a073573ace90239a64d326" + hash: "28bdd1ab1c1af1b39a2f9d11be456682" } Frame { msec: 864 - hash: "96a83eae50a073573ace90239a64d326" + hash: "28bdd1ab1c1af1b39a2f9d11be456682" } Frame { msec: 880 - hash: "7b15d75c611f24977f2a1b44ef9e16d8" + hash: "28bdd1ab1c1af1b39a2f9d11be456682" } Frame { msec: 896 - hash: "7b15d75c611f24977f2a1b44ef9e16d8" + hash: "28bdd1ab1c1af1b39a2f9d11be456682" } Frame { msec: 912 - hash: "7b15d75c611f24977f2a1b44ef9e16d8" + hash: "e34a9080716cebc0260e682960cc7c6e" } Frame { msec: 928 - hash: "7b15d75c611f24977f2a1b44ef9e16d8" + hash: "e34a9080716cebc0260e682960cc7c6e" } Frame { msec: 944 - hash: "7b15d75c611f24977f2a1b44ef9e16d8" + hash: "e34a9080716cebc0260e682960cc7c6e" } Frame { msec: 960 - image: "elide2.0.png" + hash: "e34a9080716cebc0260e682960cc7c6e" } Frame { msec: 976 - hash: "7b15d75c611f24977f2a1b44ef9e16d8" + image: "elide2.1.png" } Frame { msec: 992 - hash: "7b000cccb4e4cdaa53b025d235478b1c" + hash: "61959fc3d6f84a9fe88ec1a2979da9af" } Frame { msec: 1008 - hash: "7b000cccb4e4cdaa53b025d235478b1c" + hash: "61959fc3d6f84a9fe88ec1a2979da9af" } Frame { msec: 1024 - hash: "18366b01550fdd4a7dc7305a6289ac9b" + hash: "61959fc3d6f84a9fe88ec1a2979da9af" } Frame { msec: 1040 - hash: "18366b01550fdd4a7dc7305a6289ac9b" + hash: "47794b18771d6d558ebbca881de92377" } Frame { msec: 1056 - hash: "18366b01550fdd4a7dc7305a6289ac9b" + hash: "47794b18771d6d558ebbca881de92377" } Frame { msec: 1072 - hash: "18366b01550fdd4a7dc7305a6289ac9b" + hash: "47794b18771d6d558ebbca881de92377" } Frame { msec: 1088 - hash: "18366b01550fdd4a7dc7305a6289ac9b" + hash: "47794b18771d6d558ebbca881de92377" } Frame { msec: 1104 - hash: "cde86069e7f9809ef2c88cc6ea83910b" + hash: "47794b18771d6d558ebbca881de92377" } Frame { msec: 1120 - hash: "cde86069e7f9809ef2c88cc6ea83910b" + hash: "ba34b024ddb4e701d1d7f0c19e24d6cf" } Frame { msec: 1136 - hash: "cde86069e7f9809ef2c88cc6ea83910b" + hash: "ba34b024ddb4e701d1d7f0c19e24d6cf" } Frame { msec: 1152 - hash: "cde86069e7f9809ef2c88cc6ea83910b" + hash: "ba34b024ddb4e701d1d7f0c19e24d6cf" } Frame { msec: 1168 - hash: "b8c7416944cb741ceb4ee0e8545037b1" + hash: "ba34b024ddb4e701d1d7f0c19e24d6cf" } Frame { msec: 1184 - hash: "b8c7416944cb741ceb4ee0e8545037b1" + hash: "ba34b024ddb4e701d1d7f0c19e24d6cf" } Frame { msec: 1200 - hash: "b8c7416944cb741ceb4ee0e8545037b1" + hash: "e94344268d2a118053ecc3aef278d91d" } Frame { msec: 1216 - hash: "74a03bf98bb205d7962e0fcc025c4ed3" + hash: "e94344268d2a118053ecc3aef278d91d" } Frame { msec: 1232 - hash: "74a03bf98bb205d7962e0fcc025c4ed3" + hash: "e94344268d2a118053ecc3aef278d91d" } Frame { msec: 1248 - hash: "74a03bf98bb205d7962e0fcc025c4ed3" + hash: "e94344268d2a118053ecc3aef278d91d" } Frame { msec: 1264 - hash: "74a03bf98bb205d7962e0fcc025c4ed3" + hash: "df1959605d3bd74e84e51cbd4d322235" } Frame { msec: 1280 - hash: "0d286d7e274868e87f7de4367b69386e" + hash: "df1959605d3bd74e84e51cbd4d322235" } Frame { msec: 1296 - hash: "0d286d7e274868e87f7de4367b69386e" + hash: "df1959605d3bd74e84e51cbd4d322235" } Frame { msec: 1312 - hash: "892e9e8feeb15bbad5f38cb354aa7290" + hash: "df1959605d3bd74e84e51cbd4d322235" } Frame { msec: 1328 - hash: "892e9e8feeb15bbad5f38cb354aa7290" + hash: "26e1c8d13f0dd3713dce24211a8d26c1" } Frame { msec: 1344 - hash: "892e9e8feeb15bbad5f38cb354aa7290" + hash: "26e1c8d13f0dd3713dce24211a8d26c1" } Frame { msec: 1360 - hash: "06d6ad94b01af5b441fd64536f7740ff" + hash: "26e1c8d13f0dd3713dce24211a8d26c1" } Frame { msec: 1376 - hash: "06d6ad94b01af5b441fd64536f7740ff" + hash: "26e1c8d13f0dd3713dce24211a8d26c1" } Frame { msec: 1392 - hash: "06d6ad94b01af5b441fd64536f7740ff" + hash: "26e1c8d13f0dd3713dce24211a8d26c1" } Frame { msec: 1408 - hash: "0552844f7915835d3a35a01137d4c310" + hash: "fd1344db48093182eb2c2872ceb887df" } Frame { msec: 1424 - hash: "0552844f7915835d3a35a01137d4c310" + hash: "fd1344db48093182eb2c2872ceb887df" } Frame { msec: 1440 - hash: "0552844f7915835d3a35a01137d4c310" + hash: "fd1344db48093182eb2c2872ceb887df" } Frame { msec: 1456 - hash: "0552844f7915835d3a35a01137d4c310" + hash: "fd1344db48093182eb2c2872ceb887df" } Frame { msec: 1472 - hash: "0552844f7915835d3a35a01137d4c310" + hash: "fd1344db48093182eb2c2872ceb887df" } Frame { msec: 1488 - hash: "afdf5d4d9e49a82a395afad6b3fe4f86" + hash: "a4bf54bbb5bcbf54de6a7a2be9b73b81" } Frame { msec: 1504 - hash: "afdf5d4d9e49a82a395afad6b3fe4f86" + hash: "a4bf54bbb5bcbf54de6a7a2be9b73b81" } Frame { msec: 1520 - hash: "afdf5d4d9e49a82a395afad6b3fe4f86" + hash: "a4bf54bbb5bcbf54de6a7a2be9b73b81" } Frame { msec: 1536 - hash: "afdf5d4d9e49a82a395afad6b3fe4f86" + hash: "a4bf54bbb5bcbf54de6a7a2be9b73b81" } Frame { msec: 1552 - hash: "bb434e586d40ae0ebcb89cde55a4ca11" + hash: "072a6c0e64853f57487845f2ff376c12" } Frame { msec: 1568 - hash: "bb434e586d40ae0ebcb89cde55a4ca11" + hash: "072a6c0e64853f57487845f2ff376c12" } Frame { msec: 1584 - hash: "bb434e586d40ae0ebcb89cde55a4ca11" + hash: "072a6c0e64853f57487845f2ff376c12" } Frame { msec: 1600 - hash: "bb434e586d40ae0ebcb89cde55a4ca11" + hash: "072a6c0e64853f57487845f2ff376c12" } Frame { msec: 1616 - hash: "bb434e586d40ae0ebcb89cde55a4ca11" + hash: "072a6c0e64853f57487845f2ff376c12" } Frame { msec: 1632 - hash: "771561a07b3eb2396231b17343da7125" + hash: "d4183aba9cd5607ea1ff1572c78d33cc" } Frame { msec: 1648 - hash: "771561a07b3eb2396231b17343da7125" + hash: "d4183aba9cd5607ea1ff1572c78d33cc" } Frame { msec: 1664 - hash: "771561a07b3eb2396231b17343da7125" + hash: "d4183aba9cd5607ea1ff1572c78d33cc" } Frame { msec: 1680 - hash: "771561a07b3eb2396231b17343da7125" + hash: "d4183aba9cd5607ea1ff1572c78d33cc" } Frame { msec: 1696 - hash: "771561a07b3eb2396231b17343da7125" + hash: "31cb8e151b34187f712b269b38a317a7" } Frame { msec: 1712 - hash: "771561a07b3eb2396231b17343da7125" + hash: "31cb8e151b34187f712b269b38a317a7" } Frame { msec: 1728 - hash: "d3d23db79c5f2a374b267bcda8919d1e" + hash: "31cb8e151b34187f712b269b38a317a7" } Frame { msec: 1744 - hash: "d3d23db79c5f2a374b267bcda8919d1e" + hash: "31cb8e151b34187f712b269b38a317a7" } Key { type: 6 key: 16777249 - modifiers: 0 + modifiers: 67108864 text: "" autorep: false count: 1 } Frame { msec: 1760 - hash: "36a40dbdbb39122d30c26643e5924548" + hash: "31cb8e151b34187f712b269b38a317a7" } Frame { msec: 1776 - hash: "36a40dbdbb39122d30c26643e5924548" + hash: "e24ad0aed6a071d6da9f51af00c69300" } Frame { msec: 1792 - hash: "36a40dbdbb39122d30c26643e5924548" + hash: "e24ad0aed6a071d6da9f51af00c69300" } Frame { msec: 1808 - hash: "36a40dbdbb39122d30c26643e5924548" + hash: "e24ad0aed6a071d6da9f51af00c69300" } Frame { msec: 1824 - hash: "36a40dbdbb39122d30c26643e5924548" + hash: "e24ad0aed6a071d6da9f51af00c69300" } Frame { msec: 1840 - hash: "6a202f32d3d7a7c9edc97e55c2fe7aca" + hash: "760eea420a5eb52ccd1f6a29d6701338" } Frame { msec: 1856 - hash: "6a202f32d3d7a7c9edc97e55c2fe7aca" + hash: "760eea420a5eb52ccd1f6a29d6701338" } Frame { msec: 1872 - hash: "6a202f32d3d7a7c9edc97e55c2fe7aca" + hash: "760eea420a5eb52ccd1f6a29d6701338" } Frame { msec: 1888 - hash: "765b11a4fff9a7295440568899107159" + hash: "760eea420a5eb52ccd1f6a29d6701338" } Frame { msec: 1904 - hash: "765b11a4fff9a7295440568899107159" + hash: "760eea420a5eb52ccd1f6a29d6701338" } Frame { msec: 1920 - image: "elide2.1.png" + hash: "07cdcdb9b551750c4a742ee6dff9f3f9" } Frame { msec: 1936 - hash: "765b11a4fff9a7295440568899107159" + image: "elide2.2.png" } Frame { msec: 1952 - hash: "765b11a4fff9a7295440568899107159" + hash: "07cdcdb9b551750c4a742ee6dff9f3f9" } Frame { msec: 1968 - hash: "e2726e028d0a17a918a28d248a087d71" + hash: "07cdcdb9b551750c4a742ee6dff9f3f9" } Frame { msec: 1984 - hash: "e2726e028d0a17a918a28d248a087d71" + hash: "ec4dada16fb19fb4cf24367c9f25f161" } Frame { msec: 2000 - hash: "e2726e028d0a17a918a28d248a087d71" + hash: "ec4dada16fb19fb4cf24367c9f25f161" } Frame { msec: 2016 - hash: "e2726e028d0a17a918a28d248a087d71" + hash: "ec4dada16fb19fb4cf24367c9f25f161" } Frame { msec: 2032 - hash: "94243dc2a8013e86250c993103b2d789" + hash: "ec4dada16fb19fb4cf24367c9f25f161" } Frame { msec: 2048 - hash: "94243dc2a8013e86250c993103b2d789" + hash: "ec4dada16fb19fb4cf24367c9f25f161" } Frame { msec: 2064 - hash: "94243dc2a8013e86250c993103b2d789" + hash: "f5ef19dc69f8b6060056f7005f613ca3" } Frame { msec: 2080 - hash: "94243dc2a8013e86250c993103b2d789" + hash: "f5ef19dc69f8b6060056f7005f613ca3" } Frame { msec: 2096 - hash: "94243dc2a8013e86250c993103b2d789" + hash: "f5ef19dc69f8b6060056f7005f613ca3" } Frame { msec: 2112 - hash: "d8fdababa06e1cafa9047de16d5a07b5" + hash: "f5ef19dc69f8b6060056f7005f613ca3" } Frame { msec: 2128 - hash: "d8fdababa06e1cafa9047de16d5a07b5" + hash: "6bd00519ea14f0dd34d45de4deaaa65e" } Frame { msec: 2144 - hash: "d8fdababa06e1cafa9047de16d5a07b5" + hash: "6bd00519ea14f0dd34d45de4deaaa65e" } Frame { msec: 2160 - hash: "d8fdababa06e1cafa9047de16d5a07b5" + hash: "6bd00519ea14f0dd34d45de4deaaa65e" } Frame { msec: 2176 - hash: "d8fdababa06e1cafa9047de16d5a07b5" + hash: "6bd00519ea14f0dd34d45de4deaaa65e" } Frame { msec: 2192 - hash: "f31d3f99faff3289b38ec91a43108707" + hash: "6bd00519ea14f0dd34d45de4deaaa65e" } Frame { msec: 2208 - hash: "f31d3f99faff3289b38ec91a43108707" + hash: "1c3e491e889e408f705477f060103243" } Frame { msec: 2224 - hash: "f31d3f99faff3289b38ec91a43108707" + hash: "1c3e491e889e408f705477f060103243" } Frame { msec: 2240 - hash: "60468f768e70c91cd28dca9479ed7738" + hash: "1c3e491e889e408f705477f060103243" } Frame { msec: 2256 - hash: "60468f768e70c91cd28dca9479ed7738" + hash: "1c3e491e889e408f705477f060103243" } Frame { msec: 2272 - hash: "fd5e8714cdd406f5626682c15a6efa38" + hash: "80bc59211ffab64820e306e6eb13d2fc" } Frame { msec: 2288 - hash: "fd5e8714cdd406f5626682c15a6efa38" + hash: "80bc59211ffab64820e306e6eb13d2fc" } Frame { msec: 2304 - hash: "fd5e8714cdd406f5626682c15a6efa38" + hash: "80bc59211ffab64820e306e6eb13d2fc" } Frame { msec: 2320 - hash: "20f37569f7f3b374753b991b28d98e74" + hash: "80bc59211ffab64820e306e6eb13d2fc" } Frame { msec: 2336 - hash: "20f37569f7f3b374753b991b28d98e74" + hash: "80bc59211ffab64820e306e6eb13d2fc" } Frame { msec: 2352 - hash: "20f37569f7f3b374753b991b28d98e74" + hash: "7765c76dd2ef99e4d7286fcb3a172a07" } Frame { msec: 2368 - hash: "20f37569f7f3b374753b991b28d98e74" + hash: "7765c76dd2ef99e4d7286fcb3a172a07" } Frame { msec: 2384 - hash: "20f37569f7f3b374753b991b28d98e74" + hash: "7765c76dd2ef99e4d7286fcb3a172a07" } Frame { msec: 2400 - hash: "8ab72206d4ba87effd44844c67ab4d53" + hash: "7765c76dd2ef99e4d7286fcb3a172a07" } Frame { msec: 2416 - hash: "8ab72206d4ba87effd44844c67ab4d53" + hash: "7765c76dd2ef99e4d7286fcb3a172a07" } Frame { msec: 2432 - hash: "65fccdd3a8803ec1d70a12407366fb57" + hash: "8fedc4d5d4161922c1d9d50adcf67e4a" } Frame { msec: 2448 - hash: "65fccdd3a8803ec1d70a12407366fb57" + hash: "8fedc4d5d4161922c1d9d50adcf67e4a" } Frame { msec: 2464 - hash: "65fccdd3a8803ec1d70a12407366fb57" + hash: "8fedc4d5d4161922c1d9d50adcf67e4a" } Frame { msec: 2480 - hash: "65fccdd3a8803ec1d70a12407366fb57" + hash: "8fedc4d5d4161922c1d9d50adcf67e4a" } Frame { msec: 2496 - hash: "65fccdd3a8803ec1d70a12407366fb57" + hash: "4f26d7ab05e6d39a869be1259e33c739" } Frame { msec: 2512 - hash: "ea98cc56d2f402814d8c1b952c8bd9a0" + hash: "4f26d7ab05e6d39a869be1259e33c739" } Frame { msec: 2528 - hash: "ea98cc56d2f402814d8c1b952c8bd9a0" + hash: "4f26d7ab05e6d39a869be1259e33c739" } Frame { msec: 2544 - hash: "ea98cc56d2f402814d8c1b952c8bd9a0" + hash: "4f26d7ab05e6d39a869be1259e33c739" } Frame { msec: 2560 - hash: "ea98cc56d2f402814d8c1b952c8bd9a0" + hash: "d4ead42bcc2e283e513f1ab4f8a89f27" } Frame { msec: 2576 - hash: "6dd6532db6afba17d36930bfd71abb5d" + hash: "d4ead42bcc2e283e513f1ab4f8a89f27" } Frame { msec: 2592 - hash: "6dd6532db6afba17d36930bfd71abb5d" + hash: "d4ead42bcc2e283e513f1ab4f8a89f27" } Frame { msec: 2608 - hash: "6dd6532db6afba17d36930bfd71abb5d" + hash: "d4ead42bcc2e283e513f1ab4f8a89f27" } Frame { msec: 2624 - hash: "6dd6532db6afba17d36930bfd71abb5d" + hash: "d4ead42bcc2e283e513f1ab4f8a89f27" } Frame { msec: 2640 - hash: "6dd6532db6afba17d36930bfd71abb5d" + hash: "6d91b100f369381b24052e5a4466e24d" } Frame { msec: 2656 - hash: "70989ac02176a37beb2cf259cd2d9770" + hash: "6d91b100f369381b24052e5a4466e24d" } Frame { msec: 2672 - hash: "70989ac02176a37beb2cf259cd2d9770" + hash: "6d91b100f369381b24052e5a4466e24d" } Frame { msec: 2688 - hash: "70989ac02176a37beb2cf259cd2d9770" + hash: "6d91b100f369381b24052e5a4466e24d" } Frame { msec: 2704 - hash: "70989ac02176a37beb2cf259cd2d9770" + hash: "2d6082b41e3cfdc3be9c130311ac854a" } Frame { msec: 2720 - hash: "1c6d8786cb42afa2af611dec5ebdcda7" + hash: "2d6082b41e3cfdc3be9c130311ac854a" } Frame { msec: 2736 - hash: "1c6d8786cb42afa2af611dec5ebdcda7" + hash: "2d6082b41e3cfdc3be9c130311ac854a" } Frame { msec: 2752 - hash: "3e8215d2cb61404230284ddd0041a79c" + hash: "2d6082b41e3cfdc3be9c130311ac854a" } Frame { msec: 2768 - hash: "3e8215d2cb61404230284ddd0041a79c" + hash: "2d6082b41e3cfdc3be9c130311ac854a" } Frame { msec: 2784 - hash: "3e8215d2cb61404230284ddd0041a79c" + hash: "78732b58812f202768fa224aefce187d" } Frame { msec: 2800 - hash: "3e8215d2cb61404230284ddd0041a79c" + hash: "78732b58812f202768fa224aefce187d" } Frame { msec: 2816 - hash: "3e8215d2cb61404230284ddd0041a79c" + hash: "78732b58812f202768fa224aefce187d" } Frame { msec: 2832 - hash: "a4ed37665222950eab7fcb53dbe22bcf" + hash: "78732b58812f202768fa224aefce187d" } Frame { msec: 2848 - hash: "a4ed37665222950eab7fcb53dbe22bcf" + hash: "54d728d677cf3a07c4da7727a75e6c59" } Frame { msec: 2864 - hash: "a4ed37665222950eab7fcb53dbe22bcf" + hash: "54d728d677cf3a07c4da7727a75e6c59" } Frame { msec: 2880 - image: "elide2.2.png" + hash: "54d728d677cf3a07c4da7727a75e6c59" } Frame { msec: 2896 - hash: "a4ed37665222950eab7fcb53dbe22bcf" + image: "elide2.3.png" } Frame { msec: 2912 - hash: "a4ed37665222950eab7fcb53dbe22bcf" + hash: "54d728d677cf3a07c4da7727a75e6c59" } Frame { msec: 2928 - hash: "a7f26f5fbcc97f408974e4bc23fd0b70" + hash: "45ec3534077f6fa66d7710010cceb332" } Frame { msec: 2944 - hash: "a7f26f5fbcc97f408974e4bc23fd0b70" + hash: "45ec3534077f6fa66d7710010cceb332" } Frame { msec: 2960 - hash: "913478b8d5d05967efd1c83e80e773e2" + hash: "45ec3534077f6fa66d7710010cceb332" } Frame { msec: 2976 - hash: "913478b8d5d05967efd1c83e80e773e2" + hash: "45ec3534077f6fa66d7710010cceb332" } Frame { msec: 2992 - hash: "913478b8d5d05967efd1c83e80e773e2" + hash: "ef909728fa59292ffed1d047835439d6" } Frame { msec: 3008 - hash: "130749caf262b3055e7ac229b6b89548" + hash: "ef909728fa59292ffed1d047835439d6" } Frame { msec: 3024 - hash: "130749caf262b3055e7ac229b6b89548" + hash: "ef909728fa59292ffed1d047835439d6" } Frame { msec: 3040 - hash: "130749caf262b3055e7ac229b6b89548" + hash: "ef909728fa59292ffed1d047835439d6" } Frame { msec: 3056 - hash: "130749caf262b3055e7ac229b6b89548" + hash: "ef909728fa59292ffed1d047835439d6" } Frame { msec: 3072 - hash: "130749caf262b3055e7ac229b6b89548" + hash: "454741313d087e5d13ddeaf02663746f" } Frame { msec: 3088 - hash: "d7260d913c58065a671ff6b931bb2fb6" + hash: "454741313d087e5d13ddeaf02663746f" } Frame { msec: 3104 - hash: "d7260d913c58065a671ff6b931bb2fb6" + hash: "454741313d087e5d13ddeaf02663746f" } Frame { msec: 3120 - hash: "d7260d913c58065a671ff6b931bb2fb6" + hash: "454741313d087e5d13ddeaf02663746f" } Frame { msec: 3136 - hash: "d7260d913c58065a671ff6b931bb2fb6" + hash: "454741313d087e5d13ddeaf02663746f" } Frame { msec: 3152 - hash: "9059402dce5cb1813af8f7ebbd831bca" + hash: "02928f0a8f8f1011028114487b8dccf8" } Frame { msec: 3168 - hash: "9059402dce5cb1813af8f7ebbd831bca" + hash: "02928f0a8f8f1011028114487b8dccf8" } Frame { msec: 3184 - hash: "9059402dce5cb1813af8f7ebbd831bca" + hash: "02928f0a8f8f1011028114487b8dccf8" } Frame { msec: 3200 - hash: "80387fc8aedc0c490c689c3a1711fe9f" + hash: "02928f0a8f8f1011028114487b8dccf8" } Frame { msec: 3216 - hash: "80387fc8aedc0c490c689c3a1711fe9f" + hash: "e0fca67bb095c9891831cd9355b4880d" } Frame { msec: 3232 - hash: "80387fc8aedc0c490c689c3a1711fe9f" + hash: "e0fca67bb095c9891831cd9355b4880d" } Frame { msec: 3248 - hash: "f461bf58cbfd345a3f4e087cfcb0e9f0" + hash: "e0fca67bb095c9891831cd9355b4880d" } Frame { msec: 3264 - hash: "f461bf58cbfd345a3f4e087cfcb0e9f0" + hash: "e0fca67bb095c9891831cd9355b4880d" } Frame { msec: 3280 - hash: "d41a792b81cb891a91f2bff6dbee3bdd" + hash: "f5ae54931d953fc95cfbdbde1993bebe" } Frame { msec: 3296 - hash: "d41a792b81cb891a91f2bff6dbee3bdd" + hash: "f5ae54931d953fc95cfbdbde1993bebe" } Frame { msec: 3312 - hash: "d41a792b81cb891a91f2bff6dbee3bdd" + hash: "f5ae54931d953fc95cfbdbde1993bebe" } Frame { msec: 3328 - hash: "d41a792b81cb891a91f2bff6dbee3bdd" + hash: "f5ae54931d953fc95cfbdbde1993bebe" } Frame { msec: 3344 - hash: "d41a792b81cb891a91f2bff6dbee3bdd" + hash: "f5ae54931d953fc95cfbdbde1993bebe" } Frame { msec: 3360 - hash: "664ac430dd416e6d1ed7e001458202cf" + hash: "9afb0b2a185e2f825e9fad1c3644f6cb" } Frame { msec: 3376 - hash: "664ac430dd416e6d1ed7e001458202cf" + hash: "9afb0b2a185e2f825e9fad1c3644f6cb" } Frame { msec: 3392 - hash: "664ac430dd416e6d1ed7e001458202cf" + hash: "9afb0b2a185e2f825e9fad1c3644f6cb" } Frame { msec: 3408 - hash: "664ac430dd416e6d1ed7e001458202cf" + hash: "9afb0b2a185e2f825e9fad1c3644f6cb" } Frame { msec: 3424 - hash: "664ac430dd416e6d1ed7e001458202cf" + hash: "9afb0b2a185e2f825e9fad1c3644f6cb" } Frame { msec: 3440 - hash: "c7a9e47b613745858a76a57e1782b566" + hash: "f3f5a81d3b5f644a00cea6203f38994c" } Frame { msec: 3456 - hash: "c7a9e47b613745858a76a57e1782b566" + hash: "f3f5a81d3b5f644a00cea6203f38994c" } Frame { msec: 3472 - hash: "b90d46cbd9d7d1d82cb9abfbe27fc549" + hash: "f3f5a81d3b5f644a00cea6203f38994c" } Frame { msec: 3488 - hash: "b90d46cbd9d7d1d82cb9abfbe27fc549" + hash: "f3f5a81d3b5f644a00cea6203f38994c" } Frame { msec: 3504 - hash: "b90d46cbd9d7d1d82cb9abfbe27fc549" + hash: "bd9884712fd5afe67a3622c809bf4e76" } Frame { msec: 3520 - hash: "59c03ceae9b13576bd0e285234dfe264" + hash: "bd9884712fd5afe67a3622c809bf4e76" } Frame { msec: 3536 - hash: "59c03ceae9b13576bd0e285234dfe264" + hash: "bd9884712fd5afe67a3622c809bf4e76" } Frame { msec: 3552 - hash: "59c03ceae9b13576bd0e285234dfe264" + hash: "bd9884712fd5afe67a3622c809bf4e76" } Frame { msec: 3568 - hash: "59c03ceae9b13576bd0e285234dfe264" + hash: "c9324386954380a72ef4084d13e623b5" } Frame { msec: 3584 - hash: "59c03ceae9b13576bd0e285234dfe264" + hash: "c9324386954380a72ef4084d13e623b5" } Frame { msec: 3600 - hash: "b883d12eea2ec596cb6ee81f2d1db35f" + hash: "c9324386954380a72ef4084d13e623b5" } Frame { msec: 3616 - hash: "b883d12eea2ec596cb6ee81f2d1db35f" + hash: "c9324386954380a72ef4084d13e623b5" } Frame { msec: 3632 - hash: "b883d12eea2ec596cb6ee81f2d1db35f" + hash: "c9324386954380a72ef4084d13e623b5" } Frame { msec: 3648 - hash: "b883d12eea2ec596cb6ee81f2d1db35f" + hash: "6d05fd8e8690e44293af1809f359aa72" } Frame { msec: 3664 - hash: "9bd66e03c36c8cc279c9cfb1ea9e96a0" + hash: "6d05fd8e8690e44293af1809f359aa72" } Frame { msec: 3680 - hash: "9bd66e03c36c8cc279c9cfb1ea9e96a0" + hash: "6d05fd8e8690e44293af1809f359aa72" } Frame { msec: 3696 - hash: "9bd66e03c36c8cc279c9cfb1ea9e96a0" + hash: "6d05fd8e8690e44293af1809f359aa72" } Frame { msec: 3712 - hash: "9bd66e03c36c8cc279c9cfb1ea9e96a0" + hash: "6d05fd8e8690e44293af1809f359aa72" } Frame { msec: 3728 - hash: "9bd66e03c36c8cc279c9cfb1ea9e96a0" + hash: "2d7350a79f5a68d3e3dfc994c6e002ed" } Frame { msec: 3744 - hash: "ee357c3850d0f328db859e7b790bed83" + hash: "2d7350a79f5a68d3e3dfc994c6e002ed" } Frame { msec: 3760 - hash: "ee357c3850d0f328db859e7b790bed83" + hash: "2d7350a79f5a68d3e3dfc994c6e002ed" } Frame { msec: 3776 - hash: "f706095272153c1e9fc4a4825ba54d91" + hash: "2d7350a79f5a68d3e3dfc994c6e002ed" } Frame { msec: 3792 - hash: "f706095272153c1e9fc4a4825ba54d91" + hash: "edb5d50f23a293a7791122fc159aaaa0" } Frame { msec: 3808 - hash: "34f4d03164469f99bb7bcb365041cf8e" + hash: "edb5d50f23a293a7791122fc159aaaa0" } Frame { msec: 3824 - hash: "34f4d03164469f99bb7bcb365041cf8e" + hash: "edb5d50f23a293a7791122fc159aaaa0" } Frame { msec: 3840 - image: "elide2.3.png" + hash: "edb5d50f23a293a7791122fc159aaaa0" } Frame { msec: 3856 - hash: "34f4d03164469f99bb7bcb365041cf8e" + image: "elide2.4.png" } Frame { msec: 3872 - hash: "34f4d03164469f99bb7bcb365041cf8e" + hash: "a863480fec9abf817752c5eb62a2ddf4" } Frame { msec: 3888 - hash: "97cb5f52e1a5e82a15542b7e5f772fba" + hash: "a863480fec9abf817752c5eb62a2ddf4" } Frame { msec: 3904 - hash: "97cb5f52e1a5e82a15542b7e5f772fba" + hash: "a863480fec9abf817752c5eb62a2ddf4" } } 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 8caaf5f..e1d3b75 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 differnew file mode 100644 index 0000000..8013dc9 --- /dev/null +++ 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 30df3fa..77a7b2f 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/elide/data-MAC/multilength.qml @@ -6,298 +6,298 @@ VisualTest { } Frame { msec: 16 - hash: "2e258ad7cb0a2cd7c6c47a0b0a9563c1" + image: "multilength.0.png" } Frame { msec: 32 - hash: "d818e0f4f1011a2a8f1d0d803fa18bc0" + hash: "ef2b4cc93e5bf5e64d3338921fe36336" } Frame { msec: 48 - hash: "44b37be97bbd1f0e26d81f76d9643e51" + hash: "3ddbd1a53a36b0f8b36d87e742f3b1bd" } Frame { msec: 64 - hash: "3079a5cf6b8277ae3e1b29ae09d04adc" + hash: "f7acfdaf29a3d7bd179b30db784ca01b" } Frame { msec: 80 - hash: "ba899e6f18abb7105f915cef4e60f1e1" + hash: "b5277d02ed63180e845c60e1dd4da7d0" } Frame { msec: 96 - hash: "6d2d2b3dc8afa60e32a39449ba90f78d" + hash: "a7964577d77943d5a62c02ea1e689eb7" } Frame { msec: 112 - hash: "965af350a8fc20c7bcffb370802bc9d9" + hash: "fc597a07209bfea49227ec491b033af1" } Frame { msec: 128 - hash: "8e088db1ff0eb9f5c28268dee929928c" + hash: "429a7dd5a23a5012f1985bcddd27ba0c" } Frame { msec: 144 - hash: "a0ba6c6bd1e491778294346eeabd8138" + hash: "fbf845e137e0b389babdcd71a95c3060" } Frame { msec: 160 - hash: "068a018a5c017cb76ebf3721e0acdb35" + hash: "1d1272df3a53cb9860d23be3343a143e" } Frame { msec: 176 - hash: "efa65cae0a4d027c2ec508deecef8aa5" + hash: "cef05f6564b21fd2cbd02f6def604c0b" } Frame { msec: 192 - hash: "9c224e97aa56c6b203a48fb689d72c9a" + hash: "be0ca54bc7aa23c2b9c56e3a0444197a" } Frame { msec: 208 - hash: "4f78af1e82a2dd46bab2d237d4f574e5" + hash: "5372a7052d10b8c6c2204efdc88c2f48" } Frame { msec: 224 - hash: "7d022c13e3ef07ca0b6618ae8865dbf1" + hash: "43b775c558843c1334e86ca4fcf07ae2" } Frame { msec: 240 - hash: "1dc2ecf6cb92cd7d9e467de0049a8598" + hash: "10daf71511454ef4db3692a19ecbcbaa" } Frame { msec: 256 - hash: "262174926ac657c3cd788e2383b5842b" + hash: "5c545ecb0ddfaa5d6cde266be6fae35c" } Frame { msec: 272 - hash: "984c40aaa927f9e9e73ad228f057d3d9" + hash: "1a3c05b189c3adf87710eeb03296aec2" } Frame { msec: 288 - hash: "0c74101beaeb0a59c1e6b1bf751ca71d" + hash: "de2c6f4d3bf4d245e45e47a743808f5d" } Frame { msec: 304 - hash: "1c2dd6a6675014255e83c2ae734d717b" + hash: "7c71dcbd8e2be19ac2d090ab3e012a62" } Frame { msec: 320 - hash: "f6ac3e9e82a9a710f500f8053b6030ac" + hash: "3bd42257fe4a5d941a8755e66db94870" } Frame { msec: 336 - hash: "9676fdc060e5784e96534a962992c024" + hash: "d52f57a1f289d2c697fd1db2086a4df3" } Frame { msec: 352 - hash: "c46634183e4bde82419bf757bd674a72" + hash: "5d9e22ca6b6f8e4805a49fcf9c6a4dd6" } Frame { msec: 368 - hash: "d04d082f4a1602a308da7f373cbb4094" + hash: "cbafada44b434ac7fe64fdebef7a816e" } Frame { msec: 384 - hash: "a4178c9ffbb74f3f221fc63bee26ca35" + hash: "4ac900c005cfedb9e3367a4612334cc1" } Frame { msec: 400 - hash: "0667b13789a501995b2846f7d93fb973" + hash: "3dbe30edac497ca316bf39e55ff9580a" } Frame { msec: 416 - hash: "fda46bf0beecbb4326b2fc6f6926f0a7" + hash: "e892891c063172d513f4f8c0a0b2644f" } Frame { msec: 432 - hash: "85cbdea027d76dee1dad376679a40a22" + hash: "7c214a442c8f37d22f74343fdb7f7faa" } Frame { msec: 448 - hash: "0fd56200749ea5882e1bd714e9803d44" + hash: "c4461c6c26eb9689e640149b7755bf14" } Frame { msec: 464 - hash: "10bf5c477f64f442990716b7eec8fd70" + hash: "e7be611f007716a80698558d0600f5b6" } Frame { msec: 480 - hash: "7cbd8ba3f09c3d00051cd33006381afb" + hash: "5a3abaa7b36fcd7e2279318671597386" } Frame { msec: 496 - hash: "dca10161836025808cddce9fd93f2412" + hash: "2dba1fcba5bdce948fa56ffc02a7f80c" } Frame { msec: 512 - hash: "b949ec6303ccaafc203066c7f9b33ef2" + hash: "55043bcce83e4f8899b1a692fe30fa67" } Frame { msec: 528 - hash: "853c521bad75c08c0dfe3a00bed01136" + hash: "f92df1fb28a7da39ed907dd2bc177ab8" } Frame { msec: 544 - hash: "dd76c440dc8cfcb7305409483d21d65d" + hash: "7dcf90cd5f81999359ed389c7050d934" } Frame { msec: 560 - hash: "c9b70db4b94e4b0cc855102f43b8e731" + hash: "021014366809103b76bd5d472c43b062" } Frame { msec: 576 - hash: "d196057b8aa1e11ec9cf11032b57ca03" + hash: "fff5b2c8d63083d132c0f106fad84fa1" } Frame { msec: 592 - hash: "0fae715746a8a340a8f3c4428cf96783" + hash: "ab3a6a6c646d31be97884484a6647330" } Frame { msec: 608 - hash: "dd2e89d00ce85b167fbc822fedbfb449" + hash: "d46a168f89d94a32496b75ee5d3794e4" } Frame { msec: 624 - hash: "a5228adf745f580364eafcbbdd994178" + hash: "f7b62e86595a4d2c7f5a2cd52e0938b9" } Frame { msec: 640 - hash: "f750f588ee00805bc3757940f95de9ae" + hash: "df95a29a101889c50537cfb1b027f9a6" } Frame { msec: 656 - hash: "55a79fefc2bf6d42b442e68150e3a9bc" + hash: "4c6691ef37222260dce72868ae809d68" } Frame { msec: 672 - hash: "7b932e7585e66cc7cd31f858ce78a6e1" + hash: "ad816534dcf446a1456894ff2b1afa33" } Frame { msec: 688 - hash: "10f204c59a5bff0c49dfc7691c35cef8" + hash: "bfa9f9f833f38aedf766e061f3a18c48" } Frame { msec: 704 - hash: "cf901c80729eb0b83b46777e727d43e2" + hash: "f4a6786e9db58cf3fd3f3b896d3cf84f" } Frame { msec: 720 - hash: "f6bf6e11ef6a71d7e746fae1d0a44531" + hash: "e51e8b766e5d4a0f061dc6885fcf8eb3" } Frame { msec: 736 - hash: "4a8795196ece8c0ef18319008dbc0f2f" + hash: "eab6d261429c36c4e37005f37b7823d5" } Frame { msec: 752 - hash: "44d32f0b5377ad3b08928413f20e95e1" + hash: "3cc5db209a98daef06127bae53b1929d" } Frame { msec: 768 - hash: "9e0dd160a465573cbac831a14e36ba6d" + hash: "230cd6e6ca18a921a21379dd85e24822" } Frame { msec: 784 - hash: "fb2e2522cee569632d9682aa04e7ca08" + hash: "e3a877e8f01bf17fe6ea8b9fbb780f14" } Frame { msec: 800 - hash: "71b0e8d7671cee10f4f71a80abcde7ec" + hash: "a19f504a81409dea775481f21f992ba6" } Frame { msec: 816 - hash: "4affee92d320d6eca9995ddd8989627f" + hash: "e77cc3ab14551638e704a1493189d5d1" } Frame { msec: 832 - hash: "b3e5e26a34cd491d3cd23f4e611266e2" + hash: "613bdf9d32358ab0db310ae1e2246d52" } Frame { msec: 848 - hash: "aa185efe8d0c4c61d4df55266830cfd8" + hash: "d4fab0193f567cce4ad1e1cf6b156ce5" } Frame { msec: 864 - hash: "19c01ead1135f84b4b3a32583815fd10" + hash: "03ce3083411d10b14ac0bb85b22bfbd1" } Frame { msec: 880 - hash: "a231a722225c26ff764f16570d1e6beb" + hash: "4be10fb14abf82705d8071cf75956ece" } Frame { msec: 896 - hash: "466fce12d10bd4b714d4ead14d1c5839" + hash: "4c1f150fb5ba1194ad198eb32f705af6" } Frame { msec: 912 - hash: "158650554c8467ed7d93c3c11177e041" + hash: "5ddfd98c8a49eefe08ae33d0c0ea52ff" } Frame { msec: 928 - hash: "ac16910bc816ca6c76a78160dda8380d" + hash: "f2018d16f38e113c9477c19431e3d1e4" } Frame { msec: 944 - hash: "23ac6eeb0c9bd48dbc844b1263a18cbb" + hash: "9fe6406d65978dba74716f1ba02bdf76" } Frame { msec: 960 - image: "multilength.0.png" + hash: "265d92edca113f465e624079c266b213" } Frame { msec: 976 - hash: "3da0b9d963113cfb58152bac1c757065" + image: "multilength.1.png" } Frame { msec: 992 - hash: "e1a33345ee1372069d9282406f1e5605" + hash: "6beb60f7645be5f1d07449610b5e13b0" } Frame { msec: 1008 - hash: "da872c570bccf17e88ac7db1d6d076ae" + hash: "55c34cb290732a1fa94b5037477fd882" } Frame { msec: 1024 - hash: "6feea54c6a7f9895001efeff177f9be9" + hash: "4d6ed8044e3ac5da61cf61f4d08c5a19" } Frame { msec: 1040 - hash: "09049b33ca46a2fc2d06855e29ae66bf" + hash: "83657cfa447060a01d5fbdb890ad3fb9" } Frame { msec: 1056 - hash: "cd96d789f57ac1d425942416337174f1" + hash: "b04b6cb7e5e464ecee15a2c9803a857f" } Frame { msec: 1072 - hash: "0a763dd626e27ad14963aecfb8d7673c" + hash: "ea4f1707e49527f6cae0a3df1b75137b" } Frame { msec: 1088 - hash: "3d81f68bb7aac95b66b0cd0defbb3657" + hash: "ae4893aca919be2d89f1107185b5fe9a" } Frame { msec: 1104 - hash: "469b862006f99dfefcca803bc49287e3" + hash: "d991c469947a94ffcfb63716226fa912" } Frame { msec: 1120 - hash: "c3f698102bd46231430ab9e8029b8192" + hash: "df63c1dba0399d1fe5e7b9c9c794b598" } Frame { msec: 1136 - hash: "421a9b4848a59281aea73c08a7219a33" + hash: "305d263f68b4ccd78bffccd887870f97" } Frame { msec: 1152 - hash: "0066eaa302678a4be35dca0c3ed33b1c" + hash: "f4d1f7245b519d623defdc12e76285d2" } Frame { msec: 1168 - hash: "4cceb05bfeb231189b66f1fbdfaeccd3" + hash: "5a47e6498ddf8a02cb1df7a3510bac37" } Frame { msec: 1184 - hash: "ccf229cdd6fde7ef663791d27a008bee" + hash: "358b9b6be7f8379815d8ee828eed3e43" } } 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 cd436b5..591c1ef 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 e47b479..dc90e0d 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 0d3c672..c787029 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 ba833a2..fdd64ac 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 differnew file mode 100644 index 0000000..1286e54 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.qml b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.qml new file mode 100644 index 0000000..afae3f8 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetext/font/data-MAC/richtext2.qml @@ -0,0 +1,11 @@ +import Qt.VisualTest 4.7 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + image: "richtext2.0.png" + } +} diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.0.png Binary files differindex f41c165..adbdfa7 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.1.png Binary files differindex 539e4df..d3fbdc6 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.2.png Binary files differindex 47ceaac..9a96d46 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.2.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.3.png Binary files differindex e24a453..2026aca 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.3.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.4.png Binary files differindex ecf8335..c435029 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.4.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.5.png Binary files differindex 3d8709f..70f273d 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.5.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.5.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.qml index ff5db41..0f3bd2c 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/cursorDelegate.qml @@ -6,87 +6,87 @@ VisualTest { } Frame { msec: 16 - hash: "c1bb09480464b7813bc10b0093d14745" + image: "cursorDelegate.0.png" } Frame { msec: 32 - hash: "9d0e449506ce93052216b7a952af3dea" + hash: "b742ebe441dde1f30dab6d19954a9e8c" } Frame { msec: 48 - hash: "52641f9d6dfba8bf2b94aa37ade140d1" + hash: "d3be942cfb93c4a5d5aa906410125d02" } Frame { msec: 64 - hash: "7610775f69a461d5487e8bc3db6b6e1f" + hash: "062574e74354b104db2ee6d3c3af5802" } Frame { msec: 80 - hash: "afe0c3fdcb498f1f6b877c5d808b2555" + hash: "575dd420067e4ebe5733eb4e35a447ab" } Frame { msec: 96 - hash: "97dabf3984492d2f868b36c3e7bfce50" + hash: "4213f35c4cd233a08d98ba0380b7ab0a" } Frame { msec: 112 - hash: "869624c2ae63b0a447401a955a6fefb1" + hash: "505e740aacf4ca7e6ad24367ddad8678" } Frame { msec: 128 - hash: "7031966f014d4acd5b00c46c89f61403" + hash: "007e76fb247e11a442802c7cfb4e6a24" } Frame { msec: 144 - hash: "bd5395e7e0aa0d50cb30504f9961c954" + hash: "5cf6cb0afffb791da1c4d0fe00cf6326" } Frame { msec: 160 - hash: "a7142c3c1eb9c934e0b258c163fcdfec" + hash: "aff4097bd39c87c5d1459d99f314dade" } Frame { msec: 176 - hash: "373c57edb812db59f40710305d80e9e9" + hash: "009dc0c6ff28333ac2fdfa3d79ad2fd6" } Frame { msec: 192 - hash: "78b16507899c3c8de04b55389ea0ad49" + hash: "4bf8e82220ea0d0c4298d5374e149de2" } Frame { msec: 208 - hash: "b0fd95dc2ac09a1cbd67ad0f86682666" + hash: "938a6eea45c4412e847a8700172d80ac" } Frame { msec: 224 - hash: "5f073a4a89413b6a6c5d6ff52717bb2f" + hash: "6502416042993d05dd514119512ed61f" } Frame { msec: 240 - hash: "82e61a4d3f58ee5104893e254a77f13e" + hash: "5d6702b9475e69bda2ed38f6e2d583d9" } Frame { msec: 256 - hash: "a8fe05178e6339454d57575692fa3df3" + hash: "8e5fdc8e6cc38089d1e8ff5e91a5c894" } Frame { msec: 272 - hash: "192f80add5f612b07dcb8d69f2161648" + hash: "c0249d07bcf25af69bf929b4d5ac00a3" } Frame { msec: 288 - hash: "cfd85885f59ea80b0b0152446a829fec" + hash: "efe333c2b8cccea0bd7135484049db06" } Frame { msec: 304 - hash: "a7295dcc92f80a5f343bf05076a03748" + hash: "57e49e9094691a204f7507b0231352b3" } Frame { msec: 320 - hash: "2b0b30cfb1c1e4ed8a51d36fb7ccdf57" + hash: "d0a45bd3cfc5e4e6f9a48534c768daba" } Frame { msec: 336 - hash: "419c538908d0226ff4485f1094eaa08e" + hash: "6960ab817c67a61af31cc187efe65016" } Key { type: 6 @@ -98,27 +98,27 @@ VisualTest { } Frame { msec: 352 - hash: "8afe64448d42419f97ca207487b3b0f8" + hash: "3b0d483ff765f36a196411967b6dfd70" } Frame { msec: 368 - hash: "86091218d2d066d8f95a460426266369" + hash: "559713749d65246b185c0c91eb7ad39e" } Frame { msec: 384 - hash: "fc45978cac92b6cdeeecc2dd4c29aa53" + hash: "9aea32722fd4f8b0cde3c06c61cecde6" } Frame { msec: 400 - hash: "03a90ae5cbe68cc210e303c78a14e065" + hash: "25dfa32ce92b6044f5ea68411ab5de5b" } Frame { msec: 416 - hash: "15603a997aa02afb688aa74cd930f3b4" + hash: "dab689ed2bbe663df309548e615e8621" } Frame { msec: 432 - hash: "90bf6b2bf89e1440f0c4d1044c1bd22c" + hash: "26ad44cef380ff9f64c12180fb54c695" } Key { type: 6 @@ -130,19 +130,19 @@ VisualTest { } Frame { msec: 448 - hash: "4dbdc16538cbbf1a87c6a54e09e02b16" + hash: "5e8bbcd46b5692e66963387b80971e90" } Frame { msec: 464 - hash: "2011ee59d2ec4bb0ae0d63727f091648" + hash: "747df5357daa951fbedeadf909f9dbf3" } Frame { msec: 480 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 496 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Key { type: 6 @@ -154,35 +154,35 @@ VisualTest { } Frame { msec: 512 - hash: "7fc65284b99fc548de0985d94a145fa7" + hash: "cb6ca047657a99dbbb037c1c45b40866" } Frame { msec: 528 - hash: "7fc65284b99fc548de0985d94a145fa7" + hash: "cb6ca047657a99dbbb037c1c45b40866" } Frame { msec: 544 - hash: "7fc65284b99fc548de0985d94a145fa7" + hash: "cb6ca047657a99dbbb037c1c45b40866" } Frame { msec: 560 - hash: "7fc65284b99fc548de0985d94a145fa7" + hash: "cb6ca047657a99dbbb037c1c45b40866" } Frame { msec: 576 - hash: "b4205f141a7a6b646cf641ba922d588b" + hash: "1684711d2c492de2093357168b8726c6" } Frame { msec: 592 - hash: "94c3adf5da700bb63ed6eaf0adf8d037" + hash: "6d960ca89faec6e3d81f78911b9b5ecf" } Frame { msec: 608 - hash: "62c4757a2e26341655e27417f85ba6d8" + hash: "1fdd91b57f5832d5c4d797d150892156" } Frame { msec: 624 - hash: "9de2ce48334b088c0a0960a581f43a36" + hash: "4e0f1ec936cacf3ab6fbc7899a6bc92d" } Key { type: 7 @@ -194,15 +194,15 @@ VisualTest { } Frame { msec: 640 - hash: "9ca827d4812521d1590ca6e7117bd788" + hash: "9e67145b58051fd7dc4a18ee0e6a72ad" } Frame { msec: 656 - hash: "66f65cd7215ea89e60d8f60337fffe97" + hash: "14dfb4b356ec851275ddd8e93f04e2d2" } Frame { msec: 672 - hash: "05caae5e0d092c4d0595286aa4baa6a0" + hash: "e9b8f691ad62d10877aacb94f98ea308" } Key { type: 6 @@ -214,31 +214,31 @@ VisualTest { } Frame { msec: 688 - hash: "2282153f3ae493aa6ad5377b12d88043" + hash: "a44b5f63ec1f98b6bc34e95214c9d79e" } Frame { msec: 704 - hash: "aee2503a5d4ec61795b0486da5c53867" + hash: "6bc0e035c90b74de024d379388fd7014" } Frame { msec: 720 - hash: "f564e1ae90bc6b1ea4bc84f1729eb487" + hash: "61d8f417f7ca5cba2e98a7a7427ea635" } Frame { msec: 736 - hash: "f5c70adef5725a0574b63dd5ab7d7b12" + hash: "f50adb10f55bcd4c2eb0955f6e1ff78e" } Frame { msec: 752 - hash: "74ed3230417c69b0dc82ce9cfe4b6cd0" + hash: "9e160aefac79a9804f6cb8622e45ba71" } Frame { msec: 768 - hash: "374270279bcc00167d2b63bf9a658785" + hash: "6555a0bd60dbbad66283fe37b2f0c362" } Frame { msec: 784 - hash: "68445a2b5470e44baf7af95efc20ba33" + hash: "0cacc38d86ebf497d31b01556b8a5924" } Key { type: 7 @@ -250,63 +250,63 @@ VisualTest { } Frame { msec: 800 - hash: "5add6c9527edf6bbdb3a79b8a524db70" + hash: "b2fe1d5cb5e0a5f07d84ff7a494ae07a" } Frame { msec: 816 - hash: "01a96c8407fa2c0f9e7a822249ac9adc" + hash: "2c6dbd777bba27b481a8a6ef34d213f9" } Frame { msec: 832 - hash: "6b9af295d8f2fb5ba8d9c234596d0a88" + hash: "989e53620edc6b9b0990545459e7f787" } Frame { msec: 848 - hash: "3837442e90c2a1534e21d21bfc3b46e1" + hash: "a89686a7802da3fd07a265a5814255f4" } Frame { msec: 864 - hash: "afd7d2494dae8e7ef40a165ccc627313" + hash: "9f707497eb0c224c8b0a3bba1533217a" } Frame { msec: 880 - hash: "6e7058d540b26d3c5f15804f2f93b835" + hash: "29df155c0b75de8e1bd6361372a51797" } Frame { msec: 896 - hash: "ffa489a15db741d8b835d998336bc1b3" + hash: "fb7cbeb1e3689cc38acf7a02d671a955" } Frame { msec: 912 - hash: "5a0308d1d2a6a36e16ddb312294fcbf8" + hash: "9045ada282ec37b1681cef89dfcc8f67" } Frame { msec: 928 - hash: "bd56ed24908c7e8ec4e5ebc75a19ca86" + hash: "b3816b225eaf5ab49bb31f86ecdd52cb" } Frame { msec: 944 - hash: "7bd56b12087226100da27776f8943427" + hash: "0956fccb8e1bf2c218a9e39947846aaa" } Frame { msec: 960 - image: "cursorDelegate.0.png" + hash: "01f4ba2e0b4eb018c620efa5e92ec9fe" } Frame { msec: 976 - hash: "f48a56350bba266c2f19deb46d39e174" + image: "cursorDelegate.1.png" } Frame { msec: 992 - hash: "9587bb118f2eb2bf8bb3cfc40ed18310" + hash: "c19ec2d067d30a6d42056c9799b0c0c3" } Frame { msec: 1008 - hash: "0f9e9622427ebaf85369b3013ae9aaf0" + hash: "43a9d066887a89372136619ae8eec100" } Frame { msec: 1024 - hash: "0f9e9622427ebaf85369b3013ae9aaf0" + hash: "43a9d066887a89372136619ae8eec100" } Key { type: 7 @@ -318,39 +318,39 @@ VisualTest { } Frame { msec: 1040 - hash: "9587bb118f2eb2bf8bb3cfc40ed18310" + hash: "c19ec2d067d30a6d42056c9799b0c0c3" } Frame { msec: 1056 - hash: "f48a56350bba266c2f19deb46d39e174" + hash: "8303d8b19e6e5b249aaf2ffbb6d29f91" } Frame { msec: 1072 - hash: "8234f16d07e76aeedb6ca14d622453cb" + hash: "01f4ba2e0b4eb018c620efa5e92ec9fe" } Frame { msec: 1088 - hash: "7bd56b12087226100da27776f8943427" + hash: "0956fccb8e1bf2c218a9e39947846aaa" } Frame { msec: 1104 - hash: "bd56ed24908c7e8ec4e5ebc75a19ca86" + hash: "b3816b225eaf5ab49bb31f86ecdd52cb" } Frame { msec: 1120 - hash: "5a0308d1d2a6a36e16ddb312294fcbf8" + hash: "9045ada282ec37b1681cef89dfcc8f67" } Frame { msec: 1136 - hash: "ffa489a15db741d8b835d998336bc1b3" + hash: "fb7cbeb1e3689cc38acf7a02d671a955" } Frame { msec: 1152 - hash: "6e7058d540b26d3c5f15804f2f93b835" + hash: "29df155c0b75de8e1bd6361372a51797" } Frame { msec: 1168 - hash: "afd7d2494dae8e7ef40a165ccc627313" + hash: "9f707497eb0c224c8b0a3bba1533217a" } Key { type: 6 @@ -362,31 +362,31 @@ VisualTest { } Frame { msec: 1184 - hash: "1d5c9458d568df773dbff4e333e14de0" + hash: "9f712a688504fff9719b38c067b32c50" } Frame { msec: 1200 - hash: "8eef242d89b7e2eff7678030f9fd808e" + hash: "24f1467e3be5f4d0509800bef97f4401" } Frame { msec: 1216 - hash: "97dc6ebbf64a19f5026c02ea4c79d63b" + hash: "d56e5fd86addad3bc53417b82ff68829" } Frame { msec: 1232 - hash: "52d2135428c3c2bf85f0fa7c2ba01a25" + hash: "f1c60934ef284840e61fd46c758dd14b" } Frame { msec: 1248 - hash: "c713bd1d1ab2df81292020e6e822546c" + hash: "7be9fc54278572116f9bd9be8f6994a4" } Frame { msec: 1264 - hash: "0c61ff34510168e324c53786720dd953" + hash: "0e0ea7ca1b8479d62ae81fb53a1ec264" } Frame { msec: 1280 - hash: "ba1488f2d9d4482cdf41c40af7642030" + hash: "f8b19dbaeec469896a081687d80a2ac4" } Key { type: 7 @@ -398,95 +398,95 @@ VisualTest { } Frame { msec: 1296 - hash: "91d2da369579bb72641d4e7e7cd696f5" + hash: "a28665925ec121a2bf01733e0a20e18b" } Frame { msec: 1312 - hash: "1cf1d30d6def868a60f434fe84c23c47" + hash: "baa0c601f3d84e344847dcb7f3bd18cf" } Frame { msec: 1328 - hash: "ba5b3005af3c44caaf7272cbb56e60da" + hash: "a80d59a1e5af45bc799c19200a3c44ec" } Frame { msec: 1344 - hash: "116ab7576b5e45e6009920854ff87f39" + hash: "2a6f833e2fd2930c8ec49016809d8cf6" } Frame { msec: 1360 - hash: "294c76d6f63c230af666b0b86e0c9844" + hash: "efdc2daad00aaec2c39541261d6d1a98" } Frame { msec: 1376 - hash: "c721a5b17b1eb4a063fa3b727d13ba62" + hash: "65b75f2a074d4ac5d84fb762d1762231" } Frame { msec: 1392 - hash: "a98bd750b67a0ef8831c9c66a0b06a28" + hash: "2a170e51a83e902d2699501877225ee3" } Frame { msec: 1408 - hash: "7739509b0f5e62207ba62262d8822388" + hash: "1e4c78e279ff4ab7a875e4d67f68f8ca" } Frame { msec: 1424 - hash: "62d70a7e3ce290c52d37090bf899377c" + hash: "fd515cf3ec7b987e0e36c02f1da5b8a7" } Frame { msec: 1440 - hash: "3f3c1137c02e14796c3a4537337d1dd8" + hash: "54126910ea7a303ea3e7726309d8bf39" } Frame { msec: 1456 - hash: "4997a45af699c1face114c72a9ce067d" + hash: "89263867df0cfa623f80e1578532d98d" } Frame { msec: 1472 - hash: "093cce71722904a32b030478f3af49bb" + hash: "1bf04aafab1177182eec9a0ff459cd7b" } Frame { msec: 1488 - hash: "093cce71722904a32b030478f3af49bb" + hash: "1bf04aafab1177182eec9a0ff459cd7b" } Frame { msec: 1504 - hash: "093cce71722904a32b030478f3af49bb" + hash: "1bf04aafab1177182eec9a0ff459cd7b" } Frame { msec: 1520 - hash: "093cce71722904a32b030478f3af49bb" + hash: "1bf04aafab1177182eec9a0ff459cd7b" } Frame { msec: 1536 - hash: "093cce71722904a32b030478f3af49bb" + hash: "1bf04aafab1177182eec9a0ff459cd7b" } Frame { msec: 1552 - hash: "093cce71722904a32b030478f3af49bb" + hash: "1bf04aafab1177182eec9a0ff459cd7b" } Frame { msec: 1568 - hash: "a4810a97e51259350bb1543dffc156af" + hash: "c824a8bbf60514c20713b1fa583451b2" } Frame { msec: 1584 - hash: "838871072acbefc1c8c488f47312da9b" + hash: "f6282cd20d7f3f64415a0a24df578964" } Frame { msec: 1600 - hash: "8cfe8847729878519669caa8b702d910" + hash: "a4633c7dc825f20a7ada2079712f7b5e" } Frame { msec: 1616 - hash: "a2fd8e049d03b87a306bb5b81e3f7311" + hash: "240c839fc986573523b30567afe05623" } Frame { msec: 1632 - hash: "29bd4d5e36cb6b232f513b6bb0c00b28" + hash: "9e3098ea355a80e7e439f3cdecd15b77" } Frame { msec: 1648 - hash: "9637f14efb2e355bfe886d7c5f2a8d38" + hash: "d8ec7fd807f345509703f4ecf94b583d" } Key { type: 6 @@ -498,35 +498,35 @@ VisualTest { } Frame { msec: 1664 - hash: "0365fa8845c3c1e53ef35d22423eb973" + hash: "5b6e0bedeca1784610081762850813a1" } Frame { msec: 1680 - hash: "bf88d5d2cd2ff062c1cc8a391a238b1d" + hash: "13a596d7aefa3c8ce61660dd5ce27627" } Frame { msec: 1696 - hash: "46b22f33eb80f013e44da11153441864" + hash: "295bbee587f2fdbadab7aa4e3900b6e0" } Frame { msec: 1712 - hash: "05ae42e3a0296a569dec147c76be273d" + hash: "645da4001b1489b12e0bb5dd1b5c114b" } Frame { msec: 1728 - hash: "1a8cc65973d08bb949f7a71b0bb8be1a" + hash: "8e7e4f5b8eb437ab92e466b1d79aee01" } Frame { msec: 1744 - hash: "ca3bde8cd8de81c4210fcfd000fe0f5e" + hash: "1a7ec33aa8a19a36a7fc99c3040e427a" } Frame { msec: 1760 - hash: "e06d104d1ed451eea4c1d9bdae9d10f4" + hash: "85f6c7d9f86910e7cceeaf9efc375355" } Frame { msec: 1776 - hash: "c95153ae401ad8a2e839905841c074f3" + hash: "8e54b0699d681cfbfc3b605b010c6b76" } Key { type: 6 @@ -538,35 +538,35 @@ VisualTest { } Frame { msec: 1792 - hash: "82e61a4d3f58ee5104893e254a77f13e" + hash: "5d6702b9475e69bda2ed38f6e2d583d9" } Frame { msec: 1808 - hash: "5f073a4a89413b6a6c5d6ff52717bb2f" + hash: "6502416042993d05dd514119512ed61f" } Frame { msec: 1824 - hash: "b0fd95dc2ac09a1cbd67ad0f86682666" + hash: "938a6eea45c4412e847a8700172d80ac" } Frame { msec: 1840 - hash: "78b16507899c3c8de04b55389ea0ad49" + hash: "4bf8e82220ea0d0c4298d5374e149de2" } Frame { msec: 1856 - hash: "373c57edb812db59f40710305d80e9e9" + hash: "009dc0c6ff28333ac2fdfa3d79ad2fd6" } Frame { msec: 1872 - hash: "a7142c3c1eb9c934e0b258c163fcdfec" + hash: "aff4097bd39c87c5d1459d99f314dade" } Frame { msec: 1888 - hash: "bd5395e7e0aa0d50cb30504f9961c954" + hash: "5cf6cb0afffb791da1c4d0fe00cf6326" } Frame { msec: 1904 - hash: "7031966f014d4acd5b00c46c89f61403" + hash: "007e76fb247e11a442802c7cfb4e6a24" } Key { type: 7 @@ -578,83 +578,83 @@ VisualTest { } Frame { msec: 1920 - image: "cursorDelegate.1.png" + hash: "505e740aacf4ca7e6ad24367ddad8678" } Frame { msec: 1936 - hash: "97dabf3984492d2f868b36c3e7bfce50" + image: "cursorDelegate.2.png" } Frame { msec: 1952 - hash: "afe0c3fdcb498f1f6b877c5d808b2555" + hash: "575dd420067e4ebe5733eb4e35a447ab" } Frame { msec: 1968 - hash: "7610775f69a461d5487e8bc3db6b6e1f" + hash: "062574e74354b104db2ee6d3c3af5802" } Frame { msec: 1984 - hash: "52641f9d6dfba8bf2b94aa37ade140d1" + hash: "d3be942cfb93c4a5d5aa906410125d02" } Frame { msec: 2000 - hash: "9d0e449506ce93052216b7a952af3dea" + hash: "b742ebe441dde1f30dab6d19954a9e8c" } Frame { msec: 2016 - hash: "c1bb09480464b7813bc10b0093d14745" + hash: "bbe3a292c59e2f7ae6b8877f6736c96e" } Frame { msec: 2032 - hash: "9d0e449506ce93052216b7a952af3dea" + hash: "b742ebe441dde1f30dab6d19954a9e8c" } Frame { msec: 2048 - hash: "52641f9d6dfba8bf2b94aa37ade140d1" + hash: "d3be942cfb93c4a5d5aa906410125d02" } Frame { msec: 2064 - hash: "7610775f69a461d5487e8bc3db6b6e1f" + hash: "062574e74354b104db2ee6d3c3af5802" } Frame { msec: 2080 - hash: "afe0c3fdcb498f1f6b877c5d808b2555" + hash: "575dd420067e4ebe5733eb4e35a447ab" } Frame { msec: 2096 - hash: "97dabf3984492d2f868b36c3e7bfce50" + hash: "4213f35c4cd233a08d98ba0380b7ab0a" } Frame { msec: 2112 - hash: "869624c2ae63b0a447401a955a6fefb1" + hash: "505e740aacf4ca7e6ad24367ddad8678" } Frame { msec: 2128 - hash: "7031966f014d4acd5b00c46c89f61403" + hash: "007e76fb247e11a442802c7cfb4e6a24" } Frame { msec: 2144 - hash: "bd5395e7e0aa0d50cb30504f9961c954" + hash: "5cf6cb0afffb791da1c4d0fe00cf6326" } Frame { msec: 2160 - hash: "a7142c3c1eb9c934e0b258c163fcdfec" + hash: "aff4097bd39c87c5d1459d99f314dade" } Frame { msec: 2176 - hash: "373c57edb812db59f40710305d80e9e9" + hash: "009dc0c6ff28333ac2fdfa3d79ad2fd6" } Frame { msec: 2192 - hash: "78b16507899c3c8de04b55389ea0ad49" + hash: "4bf8e82220ea0d0c4298d5374e149de2" } Frame { msec: 2208 - hash: "b0fd95dc2ac09a1cbd67ad0f86682666" + hash: "938a6eea45c4412e847a8700172d80ac" } Frame { msec: 2224 - hash: "5f073a4a89413b6a6c5d6ff52717bb2f" + hash: "6502416042993d05dd514119512ed61f" } Key { type: 7 @@ -666,35 +666,35 @@ VisualTest { } Frame { msec: 2240 - hash: "82e61a4d3f58ee5104893e254a77f13e" + hash: "5d6702b9475e69bda2ed38f6e2d583d9" } Frame { msec: 2256 - hash: "a8fe05178e6339454d57575692fa3df3" + hash: "8e5fdc8e6cc38089d1e8ff5e91a5c894" } Frame { msec: 2272 - hash: "192f80add5f612b07dcb8d69f2161648" + hash: "c0249d07bcf25af69bf929b4d5ac00a3" } Frame { msec: 2288 - hash: "cfd85885f59ea80b0b0152446a829fec" + hash: "efe333c2b8cccea0bd7135484049db06" } Frame { msec: 2304 - hash: "a7295dcc92f80a5f343bf05076a03748" + hash: "57e49e9094691a204f7507b0231352b3" } Frame { msec: 2320 - hash: "2b0b30cfb1c1e4ed8a51d36fb7ccdf57" + hash: "d0a45bd3cfc5e4e6f9a48534c768daba" } Frame { msec: 2336 - hash: "419c538908d0226ff4485f1094eaa08e" + hash: "6960ab817c67a61af31cc187efe65016" } Frame { msec: 2352 - hash: "8afe64448d42419f97ca207487b3b0f8" + hash: "3b0d483ff765f36a196411967b6dfd70" } Key { type: 6 @@ -706,35 +706,35 @@ VisualTest { } Frame { msec: 2368 - hash: "86091218d2d066d8f95a460426266369" + hash: "559713749d65246b185c0c91eb7ad39e" } Frame { msec: 2384 - hash: "fc45978cac92b6cdeeecc2dd4c29aa53" + hash: "9aea32722fd4f8b0cde3c06c61cecde6" } Frame { msec: 2400 - hash: "03a90ae5cbe68cc210e303c78a14e065" + hash: "25dfa32ce92b6044f5ea68411ab5de5b" } Frame { msec: 2416 - hash: "15603a997aa02afb688aa74cd930f3b4" + hash: "dab689ed2bbe663df309548e615e8621" } Frame { msec: 2432 - hash: "90bf6b2bf89e1440f0c4d1044c1bd22c" + hash: "26ad44cef380ff9f64c12180fb54c695" } Frame { msec: 2448 - hash: "4dbdc16538cbbf1a87c6a54e09e02b16" + hash: "5e8bbcd46b5692e66963387b80971e90" } Frame { msec: 2464 - hash: "2011ee59d2ec4bb0ae0d63727f091648" + hash: "747df5357daa951fbedeadf909f9dbf3" } Frame { msec: 2480 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Key { type: 7 @@ -746,95 +746,95 @@ VisualTest { } Frame { msec: 2496 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 2512 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 2528 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 2544 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 2560 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 2576 - hash: "02996bef06c74f34cf8be4cf4d1392d5" + hash: "1568d4b93d2a284c46f23a0cb17acc24" } Frame { msec: 2592 - hash: "2d8cb2d213ce22132ba63a829c07f768" + hash: "0665a6cfc09981cd8a7ffd0d02e6fbdc" } Frame { msec: 2608 - hash: "0a16c282a18fdc657ea48fb208dea494" + hash: "49892aa44c8e3584239d245a7ca98af3" } Frame { msec: 2624 - hash: "86baec52ccb8ae818439c637c5be1514" + hash: "c9def393bb5d6c447c45b127d32b5e50" } Frame { msec: 2640 - hash: "72e2415581ba2a96b8f23cf8f5985afb" + hash: "679d94007b33197ce7decb4df6e8343c" } Frame { msec: 2656 - hash: "7776d964b2b5f80bac51a29d298a067f" + hash: "817987bcd9f1147ba047333b42ed289d" } Frame { msec: 2672 - hash: "3b5d0a9f961c2102a4118a8e2d2793ae" + hash: "fdd9331015c289b8e33b094999b11dce" } Frame { msec: 2688 - hash: "048b5e51d9bcf8d1b24c8f8f98b7b4e4" + hash: "e4fa13ba2770c0d390945ee4505fea9b" } Frame { msec: 2704 - hash: "d30e5d7c27b72ec95c41a87741061a3f" + hash: "69965c88d2273acf680af243610efcf3" } Frame { msec: 2720 - hash: "0374cc41cdb6528e212f678e0e049f2b" + hash: "6cbeb6787a0a7fb7f654f877e41eed57" } Frame { msec: 2736 - hash: "c80bc90c90b02d1d42176f16fa992f27" + hash: "e7528c074b3c65afe3873a3cdf96f041" } Frame { msec: 2752 - hash: "70182707dbdf87a2c8db556f030bec17" + hash: "c06c72abe46087f0db87a84fdcbcf601" } Frame { msec: 2768 - hash: "0c6c0c3d27d87128d65b40789714dd6b" + hash: "b6840f1d7cf2caed17d763b782553071" } Frame { msec: 2784 - hash: "46e1debee4ca606492a36de6191f4594" + hash: "71fdb77c4133f37180d581e4b1fe9c83" } Frame { msec: 2800 - hash: "f327bb2ea12b2baffc0a98d44a0ded16" + hash: "f5e2075ed86f146e0162ae4f0a9c6b90" } Frame { msec: 2816 - hash: "15bc04b65bde5e8ca69b6a1f88647c16" + hash: "5e76b741f49bd279b9f62ae3f474e5b5" } Frame { msec: 2832 - hash: "27156c3309835ec20a02877f1188e14a" + hash: "28c8003699352c3c9563556939d49cd8" } Frame { msec: 2848 - hash: "a163019c9feff0f4d1bb4aaedcd2ecd4" + hash: "15ab751c8463326c870dc9ee1af3c1d7" } Key { type: 6 @@ -846,35 +846,35 @@ VisualTest { } Frame { msec: 2864 - hash: "c5569c3c06bcf01b7e69e7f7ad6203ef" + hash: "6035ef1252d4f28b965b0bf4771540e4" } Frame { msec: 2880 - image: "cursorDelegate.2.png" + hash: "7c79170b07db90ca94f5642f3c0d3998" } Frame { msec: 2896 - hash: "5d1c41e371b1a95426882b3991383b6b" + image: "cursorDelegate.3.png" } Frame { msec: 2912 - hash: "4b9581a767fc1c94451780c044baf003" + hash: "3b4d1f5e1506c851887c86883eb1a6ac" } Frame { msec: 2928 - hash: "39978ba9bb1a535d7735228c650add38" + hash: "5aff09b0e9078ca6d4ed93694d1fa6f9" } Frame { msec: 2944 - hash: "1a2afe394227dcf2da118559e2e58fd7" + hash: "16813ebf88f881a4cebf75a2325dc064" } Frame { msec: 2960 - hash: "2f6bdb7af9bf9334231180b6113b125f" + hash: "5b901505bb1ab80cd4d5bc85b73ae8ad" } Frame { msec: 2976 - hash: "85017ca5ca286830e2745abf2f1f963a" + hash: "04c7f2e959c31bf6d3e7bea25d27eb87" } Key { type: 7 @@ -886,63 +886,63 @@ VisualTest { } Frame { msec: 2992 - hash: "3760b42a25e332c6df49bd92109dae98" + hash: "408bb423b93cb48afb97a7744848fc5e" } Frame { msec: 3008 - hash: "7c0347f97f9e4d7fcf47a90b336d264a" + hash: "1a58d66b4d42736eea49a602923a0941" } Frame { msec: 3024 - hash: "7c0347f97f9e4d7fcf47a90b336d264a" + hash: "1a58d66b4d42736eea49a602923a0941" } Frame { msec: 3040 - hash: "3760b42a25e332c6df49bd92109dae98" + hash: "408bb423b93cb48afb97a7744848fc5e" } Frame { msec: 3056 - hash: "85017ca5ca286830e2745abf2f1f963a" + hash: "04c7f2e959c31bf6d3e7bea25d27eb87" } Frame { msec: 3072 - hash: "2f6bdb7af9bf9334231180b6113b125f" + hash: "5b901505bb1ab80cd4d5bc85b73ae8ad" } Frame { msec: 3088 - hash: "1a2afe394227dcf2da118559e2e58fd7" + hash: "16813ebf88f881a4cebf75a2325dc064" } Frame { msec: 3104 - hash: "39978ba9bb1a535d7735228c650add38" + hash: "5aff09b0e9078ca6d4ed93694d1fa6f9" } Frame { msec: 3120 - hash: "4b9581a767fc1c94451780c044baf003" + hash: "3b4d1f5e1506c851887c86883eb1a6ac" } Frame { msec: 3136 - hash: "5d1c41e371b1a95426882b3991383b6b" + hash: "6a0a21ed890b475ce506714cc0501381" } Frame { msec: 3152 - hash: "73c771b964becb418289e0674571eb6f" + hash: "7c79170b07db90ca94f5642f3c0d3998" } Frame { msec: 3168 - hash: "c5569c3c06bcf01b7e69e7f7ad6203ef" + hash: "6035ef1252d4f28b965b0bf4771540e4" } Frame { msec: 3184 - hash: "7c55078e04b56c9aba7d227917323021" + hash: "9529b5b70b76541ec82be173deedadfb" } Frame { msec: 3200 - hash: "01c6b78b296c00e4597ae1bd36a65f3a" + hash: "174bbd347422c46923d6a5831cb5cd94" } Frame { msec: 3216 - hash: "67e9271f71b2d6d9eb2e230953db06c5" + hash: "1eb95daf505b817161f1a251cdde1b3c" } Key { type: 6 @@ -954,31 +954,31 @@ VisualTest { } Frame { msec: 3232 - hash: "642a6f4d7b3f467263b8e033578927af" + hash: "10f59fadaa27f78b7a1fb25d3a30adf7" } Frame { msec: 3248 - hash: "9f000f97b33427860cb5daeb259c72ea" + hash: "b87417c77b43bdbfdc3d8293c9a23216" } Frame { msec: 3264 - hash: "d74e3f977b5decb89dda46ea608a933a" + hash: "64345c713d61638bcc32f277208f2665" } Frame { msec: 3280 - hash: "f4e446cd96a3eb1a0df83cf032e7a0b2" + hash: "753dbe02fa95ee2b1387b98d7d456dcf" } Frame { msec: 3296 - hash: "abe715855a79a8ced43000884c4bf04b" + hash: "fce9a58aaf8d5cadbb029194317dcae3" } Frame { msec: 3312 - hash: "29fd5c17b9a169c1850aa538b4006084" + hash: "367083bd88443558002601acbc355b1a" } Frame { msec: 3328 - hash: "cefdcaebb9c319ac358b0d7fc9424327" + hash: "8e6ffccf321fa30faec432a4b4138967" } Key { type: 7 @@ -990,103 +990,103 @@ VisualTest { } Frame { msec: 3344 - hash: "85bfa23957bb5cd947e0819ffa442ea3" + hash: "4dd4e0dafeed0fc11790145d39f7c85f" } Frame { msec: 3360 - hash: "48f18d9d12331dc8725ea9e4b7f79823" + hash: "d612765c6b43035ea4e4683f968a18d3" } Frame { msec: 3376 - hash: "63cde59ffbbe2b9087ca228733de18dd" + hash: "fa77d4d8d339b78e5a28dcf69336c116" } Frame { msec: 3392 - hash: "73f5d4594f23ff4aac5e42aee00dce81" + hash: "34cf572a432bdd6dcfcc4fdfa032a800" } Frame { msec: 3408 - hash: "51a1b8e79d209643d55d4cecc6a70ed0" + hash: "150b5a2f2e916b7023764c481c768492" } Frame { msec: 3424 - hash: "7f2ae476246b23d79997a2545723ff62" + hash: "fbc93f511d6f3093c2ecf624a2c63749" } Frame { msec: 3440 - hash: "996da2eff9302908a55308dbcc8fb3c2" + hash: "f9e0bd08b722c16493a8886a19920dda" } Frame { msec: 3456 - hash: "264f34128dfe563126b9f187c65df61e" + hash: "f499f4b3017c88c63f0a2035ad527a0e" } Frame { msec: 3472 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 3488 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 3504 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 3520 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 3536 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 3552 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 3568 - hash: "70d6b73499c36138bee63e07afb0b186" + hash: "68d331f508b43e756d6e30ba9b60f9aa" } Frame { msec: 3584 - hash: "66500c2cc3d69b9fb48dc46e384aca6d" + hash: "c9147c159aebb7aa51d4bac28f96cb57" } Frame { msec: 3600 - hash: "6ccc70f6120acb53152b71bcf95514ca" + hash: "0636b7c5cc215882c60b50f62133c715" } Frame { msec: 3616 - hash: "5c10e6b0e541fe913b589601a55ea6ce" + hash: "10b52296e40380a915f7538d21d321a4" } Frame { msec: 3632 - hash: "2c62584e4c09c1d22f9016aa6fa74e10" + hash: "9c56e2c5e04e8767b70d357558e179de" } Frame { msec: 3648 - hash: "fd8f53e36a86ae22deb4f7af5aa1eb81" + hash: "0b1538af23c78cc779174df9fd01f60b" } Frame { msec: 3664 - hash: "e33226eb0e81a64bed7bcdb50e99cd13" + hash: "1632c7df93f1a735236eaa2464e75ba6" } Frame { msec: 3680 - hash: "a7053a2b7bc9f4749c290bace6b55634" + hash: "a08e8b921e61c79d57c0bc4fa5e79914" } Frame { msec: 3696 - hash: "782cb4e647e849ac7299d41f04bc89e3" + hash: "8220951034b6f1a5755bedd53b947b4a" } Frame { msec: 3712 - hash: "0f7d04fe594ae027364a7c2b570c5a27" + hash: "f4c18c333796ff10218fa9145781ea7f" } Frame { msec: 3728 - hash: "dfb00adcdc2f68bfb691bce47845b0e7" + hash: "7547d3bb0f9c4a53396cfe0252436395" } Key { type: 6 @@ -1098,31 +1098,31 @@ VisualTest { } Frame { msec: 3744 - hash: "cfd85885f59ea80b0b0152446a829fec" + hash: "efe333c2b8cccea0bd7135484049db06" } Frame { msec: 3760 - hash: "192f80add5f612b07dcb8d69f2161648" + hash: "c0249d07bcf25af69bf929b4d5ac00a3" } Frame { msec: 3776 - hash: "a8fe05178e6339454d57575692fa3df3" + hash: "8e5fdc8e6cc38089d1e8ff5e91a5c894" } Frame { msec: 3792 - hash: "82e61a4d3f58ee5104893e254a77f13e" + hash: "5d6702b9475e69bda2ed38f6e2d583d9" } Frame { msec: 3808 - hash: "5f073a4a89413b6a6c5d6ff52717bb2f" + hash: "6502416042993d05dd514119512ed61f" } Frame { msec: 3824 - hash: "b0fd95dc2ac09a1cbd67ad0f86682666" + hash: "938a6eea45c4412e847a8700172d80ac" } Frame { msec: 3840 - image: "cursorDelegate.3.png" + hash: "4bf8e82220ea0d0c4298d5374e149de2" } Key { type: 7 @@ -1134,59 +1134,59 @@ VisualTest { } Frame { msec: 3856 - hash: "373c57edb812db59f40710305d80e9e9" + image: "cursorDelegate.4.png" } Frame { msec: 3872 - hash: "a7142c3c1eb9c934e0b258c163fcdfec" + hash: "aff4097bd39c87c5d1459d99f314dade" } Frame { msec: 3888 - hash: "bd5395e7e0aa0d50cb30504f9961c954" + hash: "5cf6cb0afffb791da1c4d0fe00cf6326" } Frame { msec: 3904 - hash: "7031966f014d4acd5b00c46c89f61403" + hash: "007e76fb247e11a442802c7cfb4e6a24" } Frame { msec: 3920 - hash: "869624c2ae63b0a447401a955a6fefb1" + hash: "505e740aacf4ca7e6ad24367ddad8678" } Frame { msec: 3936 - hash: "97dabf3984492d2f868b36c3e7bfce50" + hash: "4213f35c4cd233a08d98ba0380b7ab0a" } Frame { msec: 3952 - hash: "afe0c3fdcb498f1f6b877c5d808b2555" + hash: "575dd420067e4ebe5733eb4e35a447ab" } Frame { msec: 3968 - hash: "7610775f69a461d5487e8bc3db6b6e1f" + hash: "062574e74354b104db2ee6d3c3af5802" } Frame { msec: 3984 - hash: "52641f9d6dfba8bf2b94aa37ade140d1" + hash: "d3be942cfb93c4a5d5aa906410125d02" } Frame { msec: 4000 - hash: "9d0e449506ce93052216b7a952af3dea" + hash: "b742ebe441dde1f30dab6d19954a9e8c" } Frame { msec: 4016 - hash: "c1bb09480464b7813bc10b0093d14745" + hash: "bbe3a292c59e2f7ae6b8877f6736c96e" } Frame { msec: 4032 - hash: "9d0e449506ce93052216b7a952af3dea" + hash: "b742ebe441dde1f30dab6d19954a9e8c" } Frame { msec: 4048 - hash: "52641f9d6dfba8bf2b94aa37ade140d1" + hash: "d3be942cfb93c4a5d5aa906410125d02" } Frame { msec: 4064 - hash: "7610775f69a461d5487e8bc3db6b6e1f" + hash: "062574e74354b104db2ee6d3c3af5802" } Key { type: 7 @@ -1198,302 +1198,302 @@ VisualTest { } Frame { msec: 4080 - hash: "afe0c3fdcb498f1f6b877c5d808b2555" + hash: "575dd420067e4ebe5733eb4e35a447ab" } Frame { msec: 4096 - hash: "97dabf3984492d2f868b36c3e7bfce50" + hash: "4213f35c4cd233a08d98ba0380b7ab0a" } Frame { msec: 4112 - hash: "869624c2ae63b0a447401a955a6fefb1" + hash: "505e740aacf4ca7e6ad24367ddad8678" } Frame { msec: 4128 - hash: "7031966f014d4acd5b00c46c89f61403" + hash: "007e76fb247e11a442802c7cfb4e6a24" } Frame { msec: 4144 - hash: "bd5395e7e0aa0d50cb30504f9961c954" + hash: "5cf6cb0afffb791da1c4d0fe00cf6326" } Frame { msec: 4160 - hash: "a7142c3c1eb9c934e0b258c163fcdfec" + hash: "aff4097bd39c87c5d1459d99f314dade" } Frame { msec: 4176 - hash: "373c57edb812db59f40710305d80e9e9" + hash: "009dc0c6ff28333ac2fdfa3d79ad2fd6" } Frame { msec: 4192 - hash: "78b16507899c3c8de04b55389ea0ad49" + hash: "4bf8e82220ea0d0c4298d5374e149de2" } Frame { msec: 4208 - hash: "b0fd95dc2ac09a1cbd67ad0f86682666" + hash: "938a6eea45c4412e847a8700172d80ac" } Frame { msec: 4224 - hash: "5f073a4a89413b6a6c5d6ff52717bb2f" + hash: "6502416042993d05dd514119512ed61f" } Frame { msec: 4240 - hash: "82e61a4d3f58ee5104893e254a77f13e" + hash: "5d6702b9475e69bda2ed38f6e2d583d9" } Frame { msec: 4256 - hash: "a8fe05178e6339454d57575692fa3df3" + hash: "8e5fdc8e6cc38089d1e8ff5e91a5c894" } Frame { msec: 4272 - hash: "192f80add5f612b07dcb8d69f2161648" + hash: "c0249d07bcf25af69bf929b4d5ac00a3" } Frame { msec: 4288 - hash: "cfd85885f59ea80b0b0152446a829fec" + hash: "efe333c2b8cccea0bd7135484049db06" } Frame { msec: 4304 - hash: "a7295dcc92f80a5f343bf05076a03748" + hash: "57e49e9094691a204f7507b0231352b3" } Frame { msec: 4320 - hash: "2b0b30cfb1c1e4ed8a51d36fb7ccdf57" + hash: "d0a45bd3cfc5e4e6f9a48534c768daba" } Frame { msec: 4336 - hash: "419c538908d0226ff4485f1094eaa08e" + hash: "6960ab817c67a61af31cc187efe65016" } Frame { msec: 4352 - hash: "8afe64448d42419f97ca207487b3b0f8" + hash: "3b0d483ff765f36a196411967b6dfd70" } Frame { msec: 4368 - hash: "86091218d2d066d8f95a460426266369" + hash: "559713749d65246b185c0c91eb7ad39e" } Frame { msec: 4384 - hash: "fc45978cac92b6cdeeecc2dd4c29aa53" + hash: "9aea32722fd4f8b0cde3c06c61cecde6" } Frame { msec: 4400 - hash: "03a90ae5cbe68cc210e303c78a14e065" + hash: "25dfa32ce92b6044f5ea68411ab5de5b" } Frame { msec: 4416 - hash: "15603a997aa02afb688aa74cd930f3b4" + hash: "dab689ed2bbe663df309548e615e8621" } Frame { msec: 4432 - hash: "90bf6b2bf89e1440f0c4d1044c1bd22c" + hash: "26ad44cef380ff9f64c12180fb54c695" } Frame { msec: 4448 - hash: "4dbdc16538cbbf1a87c6a54e09e02b16" + hash: "5e8bbcd46b5692e66963387b80971e90" } Frame { msec: 4464 - hash: "2011ee59d2ec4bb0ae0d63727f091648" + hash: "747df5357daa951fbedeadf909f9dbf3" } Frame { msec: 4480 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 4496 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 4512 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 4528 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 4544 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 4560 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 4576 - hash: "02996bef06c74f34cf8be4cf4d1392d5" + hash: "1568d4b93d2a284c46f23a0cb17acc24" } Frame { msec: 4592 - hash: "2d8cb2d213ce22132ba63a829c07f768" + hash: "0665a6cfc09981cd8a7ffd0d02e6fbdc" } Frame { msec: 4608 - hash: "0a16c282a18fdc657ea48fb208dea494" + hash: "49892aa44c8e3584239d245a7ca98af3" } Frame { msec: 4624 - hash: "86baec52ccb8ae818439c637c5be1514" + hash: "c9def393bb5d6c447c45b127d32b5e50" } Frame { msec: 4640 - hash: "72e2415581ba2a96b8f23cf8f5985afb" + hash: "679d94007b33197ce7decb4df6e8343c" } Frame { msec: 4656 - hash: "7776d964b2b5f80bac51a29d298a067f" + hash: "817987bcd9f1147ba047333b42ed289d" } Frame { msec: 4672 - hash: "3b5d0a9f961c2102a4118a8e2d2793ae" + hash: "fdd9331015c289b8e33b094999b11dce" } Frame { msec: 4688 - hash: "048b5e51d9bcf8d1b24c8f8f98b7b4e4" + hash: "e4fa13ba2770c0d390945ee4505fea9b" } Frame { msec: 4704 - hash: "d30e5d7c27b72ec95c41a87741061a3f" + hash: "69965c88d2273acf680af243610efcf3" } Frame { msec: 4720 - hash: "0374cc41cdb6528e212f678e0e049f2b" + hash: "6cbeb6787a0a7fb7f654f877e41eed57" } Frame { msec: 4736 - hash: "c80bc90c90b02d1d42176f16fa992f27" + hash: "e7528c074b3c65afe3873a3cdf96f041" } Frame { msec: 4752 - hash: "70182707dbdf87a2c8db556f030bec17" + hash: "c06c72abe46087f0db87a84fdcbcf601" } Frame { msec: 4768 - hash: "0c6c0c3d27d87128d65b40789714dd6b" + hash: "b6840f1d7cf2caed17d763b782553071" } Frame { msec: 4784 - hash: "46e1debee4ca606492a36de6191f4594" + hash: "71fdb77c4133f37180d581e4b1fe9c83" } Frame { msec: 4800 - image: "cursorDelegate.4.png" + hash: "f5e2075ed86f146e0162ae4f0a9c6b90" } Frame { msec: 4816 - hash: "15bc04b65bde5e8ca69b6a1f88647c16" + image: "cursorDelegate.5.png" } Frame { msec: 4832 - hash: "27156c3309835ec20a02877f1188e14a" + hash: "28c8003699352c3c9563556939d49cd8" } Frame { msec: 4848 - hash: "a163019c9feff0f4d1bb4aaedcd2ecd4" + hash: "15ab751c8463326c870dc9ee1af3c1d7" } Frame { msec: 4864 - hash: "35f243da98f9934d5ac0a7cc1fde73ef" + hash: "b745b2aee5ec623163ea22614b8ab54b" } Frame { msec: 4880 - hash: "42d393d75e0c1d5aea0e1694190e4507" + hash: "b3f3b8e325dcd56b696eab7228c3db09" } Frame { msec: 4896 - hash: "0ec47c6c74efd66d339d9be13148e334" + hash: "12ba65e0f70a670b2832235391d3ed05" } Frame { msec: 4912 - hash: "2e7597e8d03f0a05cf96fe7e2a3ee540" + hash: "9dfac03113b662a63bddcac9c7ae8f64" } Frame { msec: 4928 - hash: "093c9e5ac431284de7e81e082868c5db" + hash: "085bbc44102ae0d1d62531f6b6dbda98" } Frame { msec: 4944 - hash: "60ae71c4a6c905f47b2b457d9167153b" + hash: "007887862e2234f4c308778ecac5e16b" } Frame { msec: 4960 - hash: "e4be7897b1b30ab916a53df2998282d7" + hash: "61e8e34755db1fb99b44830676ad95ad" } Frame { msec: 4976 - hash: "c082b97799dffdb73ad65b2920507e9c" + hash: "48c8b1b0d549f7b6d85a81803b9fe31d" } Frame { msec: 4992 - hash: "aadaab0547a4f15c533589b531f39504" + hash: "834cf51445f88394e33a3f3f0a5569f4" } Frame { msec: 5008 - hash: "847f0a1faf094e73d533692fa47a030a" + hash: "a43224f77583bb7235895506f49daee6" } Frame { msec: 5024 - hash: "847f0a1faf094e73d533692fa47a030a" + hash: "a43224f77583bb7235895506f49daee6" } Frame { msec: 5040 - hash: "aadaab0547a4f15c533589b531f39504" + hash: "834cf51445f88394e33a3f3f0a5569f4" } Frame { msec: 5056 - hash: "c082b97799dffdb73ad65b2920507e9c" + hash: "48c8b1b0d549f7b6d85a81803b9fe31d" } Frame { msec: 5072 - hash: "e4be7897b1b30ab916a53df2998282d7" + hash: "61e8e34755db1fb99b44830676ad95ad" } Frame { msec: 5088 - hash: "60ae71c4a6c905f47b2b457d9167153b" + hash: "007887862e2234f4c308778ecac5e16b" } Frame { msec: 5104 - hash: "093c9e5ac431284de7e81e082868c5db" + hash: "085bbc44102ae0d1d62531f6b6dbda98" } Frame { msec: 5120 - hash: "2e7597e8d03f0a05cf96fe7e2a3ee540" + hash: "9dfac03113b662a63bddcac9c7ae8f64" } Frame { msec: 5136 - hash: "0ec47c6c74efd66d339d9be13148e334" + hash: "12ba65e0f70a670b2832235391d3ed05" } Frame { msec: 5152 - hash: "42d393d75e0c1d5aea0e1694190e4507" + hash: "b3f3b8e325dcd56b696eab7228c3db09" } Frame { msec: 5168 - hash: "35f243da98f9934d5ac0a7cc1fde73ef" + hash: "b745b2aee5ec623163ea22614b8ab54b" } Frame { msec: 5184 - hash: "a163019c9feff0f4d1bb4aaedcd2ecd4" + hash: "15ab751c8463326c870dc9ee1af3c1d7" } Frame { msec: 5200 - hash: "27156c3309835ec20a02877f1188e14a" + hash: "28c8003699352c3c9563556939d49cd8" } Frame { msec: 5216 - hash: "15bc04b65bde5e8ca69b6a1f88647c16" + hash: "5e76b741f49bd279b9f62ae3f474e5b5" } Frame { msec: 5232 - hash: "f327bb2ea12b2baffc0a98d44a0ded16" + hash: "f5e2075ed86f146e0162ae4f0a9c6b90" } Frame { msec: 5248 - hash: "46e1debee4ca606492a36de6191f4594" + hash: "71fdb77c4133f37180d581e4b1fe9c83" } Frame { msec: 5264 - hash: "0c6c0c3d27d87128d65b40789714dd6b" + hash: "b6840f1d7cf2caed17d763b782553071" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.0.png Binary files differindex dfd30f6..852fc66 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.1.png Binary files differindex 9d4eb9b..4b283d0 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.2.png Binary files differindex 968517e..342fe05 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.2.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.3.png Binary files differindex eb62c19..fb4a774 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.3.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.4.png Binary files differnew file mode 100644 index 0000000..852fc66 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.4.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.qml index a7df61f..d7b26cb 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/qt-669.qml @@ -6,99 +6,99 @@ VisualTest { } Frame { msec: 16 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + image: "qt-669.0.png" } Frame { msec: 32 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 48 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 64 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 80 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 96 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 112 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 128 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 144 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 160 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 176 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 192 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 208 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 224 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 240 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 256 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 272 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 288 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 304 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 320 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 336 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 352 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 368 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 384 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Key { type: 6 @@ -110,15 +110,15 @@ VisualTest { } Frame { msec: 400 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 416 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 432 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Key { type: 7 @@ -130,27 +130,27 @@ VisualTest { } Frame { msec: 448 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 464 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 480 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 496 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 512 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 528 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Key { type: 6 @@ -162,15 +162,15 @@ VisualTest { } Frame { msec: 544 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 560 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 576 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Key { type: 7 @@ -182,27 +182,27 @@ VisualTest { } Frame { msec: 592 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 608 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 624 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 640 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 656 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 672 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Key { type: 6 @@ -214,19 +214,19 @@ VisualTest { } Frame { msec: 688 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Frame { msec: 704 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Frame { msec: 720 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Frame { msec: 736 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Key { type: 7 @@ -238,23 +238,23 @@ VisualTest { } Frame { msec: 752 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Frame { msec: 768 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Frame { msec: 784 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Frame { msec: 800 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Frame { msec: 816 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Key { type: 6 @@ -266,19 +266,19 @@ VisualTest { } Frame { msec: 832 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 848 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 864 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 880 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Key { type: 7 @@ -290,19 +290,19 @@ VisualTest { } Frame { msec: 896 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 912 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 928 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 944 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Key { type: 6 @@ -314,19 +314,19 @@ VisualTest { } Frame { msec: 960 - image: "qt-669.0.png" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 976 - hash: "0873eebe3bbcb864644811670642028e" + image: "qt-669.1.png" } Frame { msec: 992 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 1008 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Key { type: 7 @@ -338,23 +338,23 @@ VisualTest { } Frame { msec: 1024 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 1040 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 1056 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 1072 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 1088 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Key { type: 6 @@ -366,15 +366,15 @@ VisualTest { } Frame { msec: 1104 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Frame { msec: 1120 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Frame { msec: 1136 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Key { type: 7 @@ -386,23 +386,23 @@ VisualTest { } Frame { msec: 1152 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Frame { msec: 1168 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Frame { msec: 1184 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Frame { msec: 1200 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Frame { msec: 1216 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Key { type: 6 @@ -414,19 +414,19 @@ VisualTest { } Frame { msec: 1232 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 1248 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 1264 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 1280 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Key { type: 7 @@ -438,19 +438,19 @@ VisualTest { } Frame { msec: 1296 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 1312 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 1328 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 1344 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Key { type: 6 @@ -462,19 +462,19 @@ VisualTest { } Frame { msec: 1360 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1376 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1392 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1408 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Key { type: 7 @@ -486,23 +486,23 @@ VisualTest { } Frame { msec: 1424 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1440 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1456 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1472 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1488 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Key { type: 6 @@ -514,15 +514,15 @@ VisualTest { } Frame { msec: 1504 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1520 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1536 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Key { type: 7 @@ -534,79 +534,79 @@ VisualTest { } Frame { msec: 1552 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1568 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1584 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1600 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1616 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1632 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1648 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1664 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1680 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1696 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1712 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1728 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1744 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1760 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1776 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1792 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1808 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1824 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Frame { msec: 1840 - hash: "ab021c71945620eba0b0cd70c7cffe5d" + hash: "389d0ac399e709482600181b4869be43" } Key { type: 6 @@ -618,39 +618,39 @@ VisualTest { } Frame { msec: 1856 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1872 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1888 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1904 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1920 - image: "qt-669.1.png" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1936 - hash: "2ce295d30754b14d889795d2192fef41" + image: "qt-669.2.png" } Frame { msec: 1952 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1968 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 1984 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Key { type: 7 @@ -662,23 +662,23 @@ VisualTest { } Frame { msec: 2000 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 2016 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 2032 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 2048 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Frame { msec: 2064 - hash: "2ce295d30754b14d889795d2192fef41" + hash: "9ec7c9965d3ce810553b1182b746d148" } Key { type: 6 @@ -690,23 +690,23 @@ VisualTest { } Frame { msec: 2080 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 2096 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 2112 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 2128 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 2144 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Key { type: 7 @@ -718,23 +718,23 @@ VisualTest { } Frame { msec: 2160 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 2176 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 2192 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 2208 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Frame { msec: 2224 - hash: "22bdd816325b5466ca937cf2535a3ef8" + hash: "fca9d1748195f0d4388694baf901c498" } Key { type: 6 @@ -746,11 +746,11 @@ VisualTest { } Frame { msec: 2240 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Frame { msec: 2256 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Key { type: 7 @@ -762,23 +762,23 @@ VisualTest { } Frame { msec: 2272 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Frame { msec: 2288 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Frame { msec: 2304 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Frame { msec: 2320 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Frame { msec: 2336 - hash: "a88ac2f56d3d75a277b0855e2baeda33" + hash: "f531e8dd89482e3d7c501d0b3a8b3392" } Key { type: 6 @@ -790,15 +790,15 @@ VisualTest { } Frame { msec: 2352 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2368 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2384 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Key { type: 7 @@ -810,55 +810,55 @@ VisualTest { } Frame { msec: 2400 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2416 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2432 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2448 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2464 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2480 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2496 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2512 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2528 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2544 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2560 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2576 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Frame { msec: 2592 - hash: "0873eebe3bbcb864644811670642028e" + hash: "a719560bf7912aa6cf4e8e5bfc13cb06" } Key { type: 6 @@ -870,23 +870,23 @@ VisualTest { } Frame { msec: 2608 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 2624 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 2640 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 2656 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 2672 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Key { type: 7 @@ -898,23 +898,23 @@ VisualTest { } Frame { msec: 2688 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 2704 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 2720 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 2736 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Frame { msec: 2752 - hash: "94d3da7909c84467c62deb2861104d21" + hash: "86e1ba72951c0c193bfd2cd2162c500e" } Key { type: 6 @@ -926,15 +926,15 @@ VisualTest { } Frame { msec: 2768 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Frame { msec: 2784 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Frame { msec: 2800 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Key { type: 7 @@ -946,19 +946,19 @@ VisualTest { } Frame { msec: 2816 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Frame { msec: 2832 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Frame { msec: 2848 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Frame { msec: 2864 - hash: "5a7abe3d30f7dc66c2cda37b03ff339f" + hash: "e5fd0e8d81d75fb53e21b6daa8e0fc7f" } Key { type: 6 @@ -970,19 +970,19 @@ VisualTest { } Frame { msec: 2880 - image: "qt-669.2.png" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 2896 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + image: "qt-669.3.png" } Frame { msec: 2912 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 2928 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Key { type: 7 @@ -994,23 +994,23 @@ VisualTest { } Frame { msec: 2944 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 2960 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 2976 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 2992 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Frame { msec: 3008 - hash: "ddf97bfd6216415dd2a56871f19c2d49" + hash: "e2a49d72741ba08c258bb70d3a13c7f6" } Key { type: 6 @@ -1022,23 +1022,23 @@ VisualTest { } Frame { msec: 3024 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3040 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3056 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3072 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3088 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Key { type: 7 @@ -1050,155 +1050,155 @@ VisualTest { } Frame { msec: 3104 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3120 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3136 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3152 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3168 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3184 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3200 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3216 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3232 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3248 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3264 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3280 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3296 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3312 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3328 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3344 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3360 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3376 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3392 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3408 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3424 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3440 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3456 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3472 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3488 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3504 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3520 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3536 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3552 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3568 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3584 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3600 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3616 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3632 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3648 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3664 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3680 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Frame { msec: 3696 - hash: "5db508bc5a66018d9732cf8427461ef2" + hash: "1d69ccdf88fa78b44a77147190bf1dfc" } Key { type: 6 @@ -1210,27 +1210,27 @@ VisualTest { } Frame { msec: 3712 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3728 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3744 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3760 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3776 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3792 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Key { type: 7 @@ -1242,130 +1242,130 @@ VisualTest { } Frame { msec: 3808 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3824 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3840 - image: "qt-669.3.png" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3856 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + image: "qt-669.4.png" } Frame { msec: 3872 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3888 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3904 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3920 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3936 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3952 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3968 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 3984 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4000 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4016 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4032 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4048 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4064 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4080 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4096 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4112 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4128 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4144 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4160 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4176 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4192 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4208 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4224 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4240 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4256 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4272 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4288 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } Frame { msec: 4304 - hash: "9d4f0f25239a53ed9ac917df0c4a5f8e" + hash: "32c2b08a6123015ca72f283f89ee1663" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.0.png Binary files differindex 5049c3f..0b4ca4e 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.1.png Binary files differindex ee6e16a..251beb6 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.10.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.10.png Binary files differindex d9d2252..5cd2d7d 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.10.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.10.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.11.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.11.png Binary files differindex d9d2252..5cd2d7d 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.11.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.11.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.12.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.12.png Binary files differnew file mode 100644 index 0000000..5cd2d7d --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.12.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.2.png Binary files differindex cf99d98..bf6a44e 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.2.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.3.png Binary files differindex e3937f0..1089578 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.3.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.4.png Binary files differindex 2fe3337..c9113de 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.4.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.5.png Binary files differindex 97b9913..47b4744 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.5.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.5.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.6.png Binary files differindex 08e059f..c518204 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.6.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.6.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.7.png Binary files differindex bbc5ba2..9f1c26a 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.7.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.7.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.8.png Binary files differindex 465b64e..cd8d0a5 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.8.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.8.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.9.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.9.png Binary files differindex d9d2252..8f5f872 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.9.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.9.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.qml index a8173be..a064bf3 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/usingMultilineEdit.qml @@ -6,83 +6,83 @@ VisualTest { } Frame { msec: 16 - hash: "e742c08c259034e879b95eea60794e77" + image: "usingMultilineEdit.0.png" } Frame { msec: 32 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 48 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 64 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 80 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 96 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 112 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 128 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 144 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 160 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 176 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 192 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 208 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 224 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 240 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 256 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 272 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 288 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 304 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 320 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Mouse { type: 2 @@ -94,23 +94,23 @@ VisualTest { } Frame { msec: 336 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 352 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 368 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 384 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 400 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Mouse { type: 3 @@ -122,63 +122,63 @@ VisualTest { } Frame { msec: 416 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 432 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 448 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 464 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 480 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 496 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 512 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 528 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 544 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 560 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 576 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 592 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 608 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 624 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Frame { msec: 640 - hash: "e742c08c259034e879b95eea60794e77" + hash: "9d5bfe023a03fde612678d000e7d4135" } Mouse { type: 2 @@ -190,11 +190,11 @@ VisualTest { } Frame { msec: 656 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 672 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Mouse { type: 3 @@ -206,159 +206,159 @@ VisualTest { } Frame { msec: 688 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 704 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 720 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 736 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 752 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 768 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 784 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 800 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 816 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 832 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 848 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 864 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 880 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 896 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 912 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 928 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 944 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 960 - image: "usingMultilineEdit.0.png" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 976 - hash: "3eaecb73d32414207c898a36c9c41da3" + image: "usingMultilineEdit.1.png" } Frame { msec: 992 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1008 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1024 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1040 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1056 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1072 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1088 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1104 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1120 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1136 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1152 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1168 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1184 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1200 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1216 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1232 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1248 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1264 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1280 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Frame { msec: 1296 - hash: "3eaecb73d32414207c898a36c9c41da3" + hash: "73232e1c199b5dda158a7e765386a716" } Key { type: 6 @@ -370,23 +370,23 @@ VisualTest { } Frame { msec: 1312 - hash: "c101a1d74691605f2740452950693e43" + hash: "75aa32bf4bfdda0dfcf04768bf931da6" } Frame { msec: 1328 - hash: "c101a1d74691605f2740452950693e43" + hash: "75aa32bf4bfdda0dfcf04768bf931da6" } Frame { msec: 1344 - hash: "c101a1d74691605f2740452950693e43" + hash: "75aa32bf4bfdda0dfcf04768bf931da6" } Frame { msec: 1360 - hash: "c101a1d74691605f2740452950693e43" + hash: "75aa32bf4bfdda0dfcf04768bf931da6" } Frame { msec: 1376 - hash: "c101a1d74691605f2740452950693e43" + hash: "75aa32bf4bfdda0dfcf04768bf931da6" } Key { type: 7 @@ -398,7 +398,7 @@ VisualTest { } Frame { msec: 1392 - hash: "c101a1d74691605f2740452950693e43" + hash: "75aa32bf4bfdda0dfcf04768bf931da6" } Key { type: 6 @@ -410,19 +410,19 @@ VisualTest { } Frame { msec: 1408 - hash: "e3e33c9f73352079db2f5e96c0069974" + hash: "7243b903b5b7d8c323a233ae13a2ddf3" } Frame { msec: 1424 - hash: "e3e33c9f73352079db2f5e96c0069974" + hash: "7243b903b5b7d8c323a233ae13a2ddf3" } Frame { msec: 1440 - hash: "e3e33c9f73352079db2f5e96c0069974" + hash: "7243b903b5b7d8c323a233ae13a2ddf3" } Frame { msec: 1456 - hash: "e3e33c9f73352079db2f5e96c0069974" + hash: "7243b903b5b7d8c323a233ae13a2ddf3" } Key { type: 7 @@ -434,27 +434,27 @@ VisualTest { } Frame { msec: 1472 - hash: "e3e33c9f73352079db2f5e96c0069974" + hash: "7243b903b5b7d8c323a233ae13a2ddf3" } Frame { msec: 1488 - hash: "e3e33c9f73352079db2f5e96c0069974" + hash: "7243b903b5b7d8c323a233ae13a2ddf3" } Frame { msec: 1504 - hash: "e3e33c9f73352079db2f5e96c0069974" + hash: "7243b903b5b7d8c323a233ae13a2ddf3" } Frame { msec: 1520 - hash: "e3e33c9f73352079db2f5e96c0069974" + hash: "7243b903b5b7d8c323a233ae13a2ddf3" } Frame { msec: 1536 - hash: "e3e33c9f73352079db2f5e96c0069974" + hash: "7243b903b5b7d8c323a233ae13a2ddf3" } Frame { msec: 1552 - hash: "e3e33c9f73352079db2f5e96c0069974" + hash: "7243b903b5b7d8c323a233ae13a2ddf3" } Key { type: 6 @@ -466,15 +466,15 @@ VisualTest { } Frame { msec: 1568 - hash: "0e79208365ec4b5a609d13b9e6c5c8d8" + hash: "676834a4ee84cb251c6ed102be89ea2e" } Frame { msec: 1584 - hash: "0e79208365ec4b5a609d13b9e6c5c8d8" + hash: "676834a4ee84cb251c6ed102be89ea2e" } Frame { msec: 1600 - hash: "0e79208365ec4b5a609d13b9e6c5c8d8" + hash: "676834a4ee84cb251c6ed102be89ea2e" } Key { type: 7 @@ -486,7 +486,7 @@ VisualTest { } Frame { msec: 1616 - hash: "0e79208365ec4b5a609d13b9e6c5c8d8" + hash: "676834a4ee84cb251c6ed102be89ea2e" } Key { type: 6 @@ -498,23 +498,23 @@ VisualTest { } Frame { msec: 1632 - hash: "5485c9cf4050ef8c1dda227d27326f78" + hash: "74a81081cd0547624cc4168e824b48b8" } Frame { msec: 1648 - hash: "5485c9cf4050ef8c1dda227d27326f78" + hash: "74a81081cd0547624cc4168e824b48b8" } Frame { msec: 1664 - hash: "5485c9cf4050ef8c1dda227d27326f78" + hash: "74a81081cd0547624cc4168e824b48b8" } Frame { msec: 1680 - hash: "5485c9cf4050ef8c1dda227d27326f78" + hash: "74a81081cd0547624cc4168e824b48b8" } Frame { msec: 1696 - hash: "5485c9cf4050ef8c1dda227d27326f78" + hash: "74a81081cd0547624cc4168e824b48b8" } Key { type: 7 @@ -526,11 +526,11 @@ VisualTest { } Frame { msec: 1712 - hash: "5485c9cf4050ef8c1dda227d27326f78" + hash: "74a81081cd0547624cc4168e824b48b8" } Frame { msec: 1728 - hash: "5485c9cf4050ef8c1dda227d27326f78" + hash: "74a81081cd0547624cc4168e824b48b8" } Key { type: 6 @@ -542,15 +542,15 @@ VisualTest { } Frame { msec: 1744 - hash: "1063a2e6164b372ba364c15c1c8b6ade" + hash: "4c736b2bffb38df898478e3d0ce37fb0" } Frame { msec: 1760 - hash: "1063a2e6164b372ba364c15c1c8b6ade" + hash: "4c736b2bffb38df898478e3d0ce37fb0" } Frame { msec: 1776 - hash: "1063a2e6164b372ba364c15c1c8b6ade" + hash: "4c736b2bffb38df898478e3d0ce37fb0" } Key { type: 7 @@ -562,15 +562,15 @@ VisualTest { } Frame { msec: 1792 - hash: "1063a2e6164b372ba364c15c1c8b6ade" + hash: "4c736b2bffb38df898478e3d0ce37fb0" } Frame { msec: 1808 - hash: "1063a2e6164b372ba364c15c1c8b6ade" + hash: "4c736b2bffb38df898478e3d0ce37fb0" } Frame { msec: 1824 - hash: "1063a2e6164b372ba364c15c1c8b6ade" + hash: "4c736b2bffb38df898478e3d0ce37fb0" } Key { type: 6 @@ -582,23 +582,23 @@ VisualTest { } Frame { msec: 1840 - hash: "213c0057171a86bd4e2d898fac4d6642" + hash: "fd070c77e33e1498bacf0076903d33d7" } Frame { msec: 1856 - hash: "213c0057171a86bd4e2d898fac4d6642" + hash: "fd070c77e33e1498bacf0076903d33d7" } Frame { msec: 1872 - hash: "213c0057171a86bd4e2d898fac4d6642" + hash: "fd070c77e33e1498bacf0076903d33d7" } Frame { msec: 1888 - hash: "213c0057171a86bd4e2d898fac4d6642" + hash: "fd070c77e33e1498bacf0076903d33d7" } Frame { msec: 1904 - hash: "213c0057171a86bd4e2d898fac4d6642" + hash: "fd070c77e33e1498bacf0076903d33d7" } Key { type: 7 @@ -618,19 +618,19 @@ VisualTest { } Frame { msec: 1920 - image: "usingMultilineEdit.1.png" + hash: "2ce31e62bfe5c1a62621fe4ea6bb07ab" } Frame { msec: 1936 - hash: "df9766751a5698f84f98faa0ac0e6f1a" + image: "usingMultilineEdit.2.png" } Frame { msec: 1952 - hash: "df9766751a5698f84f98faa0ac0e6f1a" + hash: "2ce31e62bfe5c1a62621fe4ea6bb07ab" } Frame { msec: 1968 - hash: "df9766751a5698f84f98faa0ac0e6f1a" + hash: "2ce31e62bfe5c1a62621fe4ea6bb07ab" } Key { type: 6 @@ -642,11 +642,11 @@ VisualTest { } Frame { msec: 1984 - hash: "47cb63f13c81ac6557ecc68d4e6f9c99" + hash: "77f7b91dba63e20e92b47575ae2f1a85" } Frame { msec: 2000 - hash: "47cb63f13c81ac6557ecc68d4e6f9c99" + hash: "77f7b91dba63e20e92b47575ae2f1a85" } Key { type: 7 @@ -658,7 +658,7 @@ VisualTest { } Frame { msec: 2016 - hash: "47cb63f13c81ac6557ecc68d4e6f9c99" + hash: "77f7b91dba63e20e92b47575ae2f1a85" } Key { type: 6 @@ -670,11 +670,11 @@ VisualTest { } Frame { msec: 2032 - hash: "4f39251d7a0071a67435d088f46fc4fe" + hash: "6c881ac1c94b6648ce1a2c39e477906c" } Frame { msec: 2048 - hash: "4f39251d7a0071a67435d088f46fc4fe" + hash: "6c881ac1c94b6648ce1a2c39e477906c" } Key { type: 7 @@ -686,19 +686,19 @@ VisualTest { } Frame { msec: 2064 - hash: "4f39251d7a0071a67435d088f46fc4fe" + hash: "6c881ac1c94b6648ce1a2c39e477906c" } Frame { msec: 2080 - hash: "4f39251d7a0071a67435d088f46fc4fe" + hash: "6c881ac1c94b6648ce1a2c39e477906c" } Frame { msec: 2096 - hash: "4f39251d7a0071a67435d088f46fc4fe" + hash: "6c881ac1c94b6648ce1a2c39e477906c" } Frame { msec: 2112 - hash: "4f39251d7a0071a67435d088f46fc4fe" + hash: "6c881ac1c94b6648ce1a2c39e477906c" } Key { type: 7 @@ -710,11 +710,11 @@ VisualTest { } Frame { msec: 2128 - hash: "4f39251d7a0071a67435d088f46fc4fe" + hash: "6c881ac1c94b6648ce1a2c39e477906c" } Frame { msec: 2144 - hash: "4f39251d7a0071a67435d088f46fc4fe" + hash: "6c881ac1c94b6648ce1a2c39e477906c" } Key { type: 6 @@ -726,27 +726,27 @@ VisualTest { } Frame { msec: 2160 - hash: "722715a78e99d0f1f9a2830090c98f3c" + hash: "8799a9ee6ae4334c0e595c75160cbb35" } Frame { msec: 2176 - hash: "722715a78e99d0f1f9a2830090c98f3c" + hash: "8799a9ee6ae4334c0e595c75160cbb35" } Frame { msec: 2192 - hash: "722715a78e99d0f1f9a2830090c98f3c" + hash: "8799a9ee6ae4334c0e595c75160cbb35" } Frame { msec: 2208 - hash: "722715a78e99d0f1f9a2830090c98f3c" + hash: "8799a9ee6ae4334c0e595c75160cbb35" } Frame { msec: 2224 - hash: "722715a78e99d0f1f9a2830090c98f3c" + hash: "8799a9ee6ae4334c0e595c75160cbb35" } Frame { msec: 2240 - hash: "722715a78e99d0f1f9a2830090c98f3c" + hash: "8799a9ee6ae4334c0e595c75160cbb35" } Key { type: 7 @@ -766,23 +766,23 @@ VisualTest { } Frame { msec: 2256 - hash: "aa085c20f74a765297f7904680c7591e" + hash: "1947b07da95b6fb20dfa0189d2e099f4" } Frame { msec: 2272 - hash: "aa085c20f74a765297f7904680c7591e" + hash: "1947b07da95b6fb20dfa0189d2e099f4" } Frame { msec: 2288 - hash: "aa085c20f74a765297f7904680c7591e" + hash: "1947b07da95b6fb20dfa0189d2e099f4" } Frame { msec: 2304 - hash: "aa085c20f74a765297f7904680c7591e" + hash: "1947b07da95b6fb20dfa0189d2e099f4" } Frame { msec: 2320 - hash: "aa085c20f74a765297f7904680c7591e" + hash: "1947b07da95b6fb20dfa0189d2e099f4" } Key { type: 7 @@ -794,11 +794,11 @@ VisualTest { } Frame { msec: 2336 - hash: "aa085c20f74a765297f7904680c7591e" + hash: "1947b07da95b6fb20dfa0189d2e099f4" } Frame { msec: 2352 - hash: "aa085c20f74a765297f7904680c7591e" + hash: "1947b07da95b6fb20dfa0189d2e099f4" } Key { type: 6 @@ -810,19 +810,19 @@ VisualTest { } Frame { msec: 2368 - hash: "0cc1397ce700d4a84647dddee65241b3" + hash: "f4831fddbb6dccd2add6c381abe18ff5" } Frame { msec: 2384 - hash: "0cc1397ce700d4a84647dddee65241b3" + hash: "f4831fddbb6dccd2add6c381abe18ff5" } Frame { msec: 2400 - hash: "0cc1397ce700d4a84647dddee65241b3" + hash: "f4831fddbb6dccd2add6c381abe18ff5" } Frame { msec: 2416 - hash: "0cc1397ce700d4a84647dddee65241b3" + hash: "f4831fddbb6dccd2add6c381abe18ff5" } Key { type: 7 @@ -834,7 +834,7 @@ VisualTest { } Frame { msec: 2432 - hash: "0cc1397ce700d4a84647dddee65241b3" + hash: "f4831fddbb6dccd2add6c381abe18ff5" } Key { type: 6 @@ -846,27 +846,27 @@ VisualTest { } Frame { msec: 2448 - hash: "ac693aa9030cc388dce9004916734aed" + hash: "c8e601e39d6399c3bcbe99080e10e77b" } Frame { msec: 2464 - hash: "ac693aa9030cc388dce9004916734aed" + hash: "c8e601e39d6399c3bcbe99080e10e77b" } Frame { msec: 2480 - hash: "ac693aa9030cc388dce9004916734aed" + hash: "c8e601e39d6399c3bcbe99080e10e77b" } Frame { msec: 2496 - hash: "ac693aa9030cc388dce9004916734aed" + hash: "c8e601e39d6399c3bcbe99080e10e77b" } Frame { msec: 2512 - hash: "ac693aa9030cc388dce9004916734aed" + hash: "c8e601e39d6399c3bcbe99080e10e77b" } Frame { msec: 2528 - hash: "ac693aa9030cc388dce9004916734aed" + hash: "c8e601e39d6399c3bcbe99080e10e77b" } Key { type: 7 @@ -878,7 +878,7 @@ VisualTest { } Frame { msec: 2544 - hash: "ac693aa9030cc388dce9004916734aed" + hash: "c8e601e39d6399c3bcbe99080e10e77b" } Key { type: 6 @@ -890,19 +890,19 @@ VisualTest { } Frame { msec: 2560 - hash: "e1f1b75892dc186e7f9546661722e259" + hash: "895b6084f9cd58d0746270468d037fc3" } Frame { msec: 2576 - hash: "e1f1b75892dc186e7f9546661722e259" + hash: "895b6084f9cd58d0746270468d037fc3" } Frame { msec: 2592 - hash: "e1f1b75892dc186e7f9546661722e259" + hash: "895b6084f9cd58d0746270468d037fc3" } Frame { msec: 2608 - hash: "e1f1b75892dc186e7f9546661722e259" + hash: "895b6084f9cd58d0746270468d037fc3" } Key { type: 7 @@ -914,23 +914,23 @@ VisualTest { } Frame { msec: 2624 - hash: "e1f1b75892dc186e7f9546661722e259" + hash: "895b6084f9cd58d0746270468d037fc3" } Frame { msec: 2640 - hash: "e1f1b75892dc186e7f9546661722e259" + hash: "895b6084f9cd58d0746270468d037fc3" } Frame { msec: 2656 - hash: "e1f1b75892dc186e7f9546661722e259" + hash: "895b6084f9cd58d0746270468d037fc3" } Frame { msec: 2672 - hash: "e1f1b75892dc186e7f9546661722e259" + hash: "895b6084f9cd58d0746270468d037fc3" } Frame { msec: 2688 - hash: "e1f1b75892dc186e7f9546661722e259" + hash: "895b6084f9cd58d0746270468d037fc3" } Key { type: 6 @@ -942,27 +942,27 @@ VisualTest { } Frame { msec: 2704 - hash: "4c1829c6c263cf290e0e71035f678589" + hash: "ded3a272885f24140fb8d21835ae6b3a" } Frame { msec: 2720 - hash: "4c1829c6c263cf290e0e71035f678589" + hash: "ded3a272885f24140fb8d21835ae6b3a" } Frame { msec: 2736 - hash: "4c1829c6c263cf290e0e71035f678589" + hash: "ded3a272885f24140fb8d21835ae6b3a" } Frame { msec: 2752 - hash: "4c1829c6c263cf290e0e71035f678589" + hash: "ded3a272885f24140fb8d21835ae6b3a" } Frame { msec: 2768 - hash: "4c1829c6c263cf290e0e71035f678589" + hash: "ded3a272885f24140fb8d21835ae6b3a" } Frame { msec: 2784 - hash: "4c1829c6c263cf290e0e71035f678589" + hash: "ded3a272885f24140fb8d21835ae6b3a" } Key { type: 6 @@ -974,7 +974,7 @@ VisualTest { } Frame { msec: 2800 - hash: "fa5cf022b185f178d0121b442af01c00" + hash: "9339ea22fd115b8ae025c0b3a588ca1c" } Key { type: 7 @@ -986,19 +986,19 @@ VisualTest { } Frame { msec: 2816 - hash: "fa5cf022b185f178d0121b442af01c00" + hash: "9339ea22fd115b8ae025c0b3a588ca1c" } Frame { msec: 2832 - hash: "fa5cf022b185f178d0121b442af01c00" + hash: "9339ea22fd115b8ae025c0b3a588ca1c" } Frame { msec: 2848 - hash: "fa5cf022b185f178d0121b442af01c00" + hash: "9339ea22fd115b8ae025c0b3a588ca1c" } Frame { msec: 2864 - hash: "fa5cf022b185f178d0121b442af01c00" + hash: "9339ea22fd115b8ae025c0b3a588ca1c" } Key { type: 7 @@ -1010,19 +1010,19 @@ VisualTest { } Frame { msec: 2880 - image: "usingMultilineEdit.2.png" + hash: "9339ea22fd115b8ae025c0b3a588ca1c" } Frame { msec: 2896 - hash: "fa5cf022b185f178d0121b442af01c00" + image: "usingMultilineEdit.3.png" } Frame { msec: 2912 - hash: "fa5cf022b185f178d0121b442af01c00" + hash: "9339ea22fd115b8ae025c0b3a588ca1c" } Frame { msec: 2928 - hash: "fa5cf022b185f178d0121b442af01c00" + hash: "9339ea22fd115b8ae025c0b3a588ca1c" } Key { type: 6 @@ -1034,15 +1034,15 @@ VisualTest { } Frame { msec: 2944 - hash: "b0748cac94695eb95774e0cdfabf47cc" + hash: "1f219781fb7a7682d27cb875900d077a" } Frame { msec: 2960 - hash: "b0748cac94695eb95774e0cdfabf47cc" + hash: "1f219781fb7a7682d27cb875900d077a" } Frame { msec: 2976 - hash: "b0748cac94695eb95774e0cdfabf47cc" + hash: "1f219781fb7a7682d27cb875900d077a" } Key { type: 7 @@ -1062,19 +1062,19 @@ VisualTest { } Frame { msec: 2992 - hash: "b05fc4c21113146463372b1ea981e265" + hash: "20bd65f158440301e6cf14463e498368" } Frame { msec: 3008 - hash: "b05fc4c21113146463372b1ea981e265" + hash: "20bd65f158440301e6cf14463e498368" } Frame { msec: 3024 - hash: "b05fc4c21113146463372b1ea981e265" + hash: "20bd65f158440301e6cf14463e498368" } Frame { msec: 3040 - hash: "b05fc4c21113146463372b1ea981e265" + hash: "20bd65f158440301e6cf14463e498368" } Key { type: 7 @@ -1086,7 +1086,7 @@ VisualTest { } Frame { msec: 3056 - hash: "b05fc4c21113146463372b1ea981e265" + hash: "20bd65f158440301e6cf14463e498368" } Key { type: 6 @@ -1098,15 +1098,15 @@ VisualTest { } Frame { msec: 3072 - hash: "01b789845bf308fc896d53bbbfe0dd01" + hash: "3e73d53051a3175393f4ecb486645bf9" } Frame { msec: 3088 - hash: "01b789845bf308fc896d53bbbfe0dd01" + hash: "3e73d53051a3175393f4ecb486645bf9" } Frame { msec: 3104 - hash: "01b789845bf308fc896d53bbbfe0dd01" + hash: "3e73d53051a3175393f4ecb486645bf9" } Key { type: 6 @@ -1118,7 +1118,7 @@ VisualTest { } Frame { msec: 3120 - hash: "01b789845bf308fc896d53bbbfe0dd01" + hash: "3e73d53051a3175393f4ecb486645bf9" } Key { type: 7 @@ -1130,11 +1130,11 @@ VisualTest { } Frame { msec: 3136 - hash: "01b789845bf308fc896d53bbbfe0dd01" + hash: "3e73d53051a3175393f4ecb486645bf9" } Frame { msec: 3152 - hash: "01b789845bf308fc896d53bbbfe0dd01" + hash: "3e73d53051a3175393f4ecb486645bf9" } Key { type: 6 @@ -1146,19 +1146,19 @@ VisualTest { } Frame { msec: 3168 - hash: "433d805d957203918fc4a8edfc93290e" + hash: "6f566097d23557bef60969852cd3515e" } Frame { msec: 3184 - hash: "433d805d957203918fc4a8edfc93290e" + hash: "6f566097d23557bef60969852cd3515e" } Frame { msec: 3200 - hash: "433d805d957203918fc4a8edfc93290e" + hash: "6f566097d23557bef60969852cd3515e" } Frame { msec: 3216 - hash: "433d805d957203918fc4a8edfc93290e" + hash: "6f566097d23557bef60969852cd3515e" } Key { type: 7 @@ -1170,7 +1170,7 @@ VisualTest { } Frame { msec: 3232 - hash: "433d805d957203918fc4a8edfc93290e" + hash: "6f566097d23557bef60969852cd3515e" } Key { type: 7 @@ -1190,19 +1190,19 @@ VisualTest { } Frame { msec: 3248 - hash: "1ebec912ac11b11d2ba7e5abdfb9ef6d" + hash: "4767592fe68e8d32d286cf5eaf4510ff" } Frame { msec: 3264 - hash: "1ebec912ac11b11d2ba7e5abdfb9ef6d" + hash: "4767592fe68e8d32d286cf5eaf4510ff" } Frame { msec: 3280 - hash: "1ebec912ac11b11d2ba7e5abdfb9ef6d" + hash: "4767592fe68e8d32d286cf5eaf4510ff" } Frame { msec: 3296 - hash: "1ebec912ac11b11d2ba7e5abdfb9ef6d" + hash: "4767592fe68e8d32d286cf5eaf4510ff" } Key { type: 7 @@ -1214,7 +1214,7 @@ VisualTest { } Frame { msec: 3312 - hash: "1ebec912ac11b11d2ba7e5abdfb9ef6d" + hash: "4767592fe68e8d32d286cf5eaf4510ff" } Key { type: 6 @@ -1226,23 +1226,23 @@ VisualTest { } Frame { msec: 3328 - hash: "b4bc12141255c91630e775fcf4935f22" + hash: "d7fd1a19be4f061fc39c4accf18ba0dc" } Frame { msec: 3344 - hash: "b4bc12141255c91630e775fcf4935f22" + hash: "d7fd1a19be4f061fc39c4accf18ba0dc" } Frame { msec: 3360 - hash: "b4bc12141255c91630e775fcf4935f22" + hash: "d7fd1a19be4f061fc39c4accf18ba0dc" } Frame { msec: 3376 - hash: "b4bc12141255c91630e775fcf4935f22" + hash: "d7fd1a19be4f061fc39c4accf18ba0dc" } Frame { msec: 3392 - hash: "b4bc12141255c91630e775fcf4935f22" + hash: "d7fd1a19be4f061fc39c4accf18ba0dc" } Key { type: 7 @@ -1254,7 +1254,7 @@ VisualTest { } Frame { msec: 3408 - hash: "b4bc12141255c91630e775fcf4935f22" + hash: "d7fd1a19be4f061fc39c4accf18ba0dc" } Key { type: 6 @@ -1266,23 +1266,23 @@ VisualTest { } Frame { msec: 3424 - hash: "8d83a3f76fd8b77c6dd9fdfb573d9c52" + hash: "03e74ddf4c94d322c1b1b35419157948" } Frame { msec: 3440 - hash: "8d83a3f76fd8b77c6dd9fdfb573d9c52" + hash: "03e74ddf4c94d322c1b1b35419157948" } Frame { msec: 3456 - hash: "8d83a3f76fd8b77c6dd9fdfb573d9c52" + hash: "03e74ddf4c94d322c1b1b35419157948" } Frame { msec: 3472 - hash: "8d83a3f76fd8b77c6dd9fdfb573d9c52" + hash: "03e74ddf4c94d322c1b1b35419157948" } Frame { msec: 3488 - hash: "8d83a3f76fd8b77c6dd9fdfb573d9c52" + hash: "03e74ddf4c94d322c1b1b35419157948" } Key { type: 7 @@ -1302,27 +1302,27 @@ VisualTest { } Frame { msec: 3504 - hash: "3f154d5eace7e0e688fe609d7eebe80d" + hash: "32712a89ba577f55319fe90873668138" } Frame { msec: 3520 - hash: "3f154d5eace7e0e688fe609d7eebe80d" + hash: "32712a89ba577f55319fe90873668138" } Frame { msec: 3536 - hash: "3f154d5eace7e0e688fe609d7eebe80d" + hash: "32712a89ba577f55319fe90873668138" } Frame { msec: 3552 - hash: "3f154d5eace7e0e688fe609d7eebe80d" + hash: "32712a89ba577f55319fe90873668138" } Frame { msec: 3568 - hash: "3f154d5eace7e0e688fe609d7eebe80d" + hash: "32712a89ba577f55319fe90873668138" } Frame { msec: 3584 - hash: "3f154d5eace7e0e688fe609d7eebe80d" + hash: "32712a89ba577f55319fe90873668138" } Key { type: 7 @@ -1334,7 +1334,7 @@ VisualTest { } Frame { msec: 3600 - hash: "3f154d5eace7e0e688fe609d7eebe80d" + hash: "32712a89ba577f55319fe90873668138" } Key { type: 6 @@ -1346,19 +1346,19 @@ VisualTest { } Frame { msec: 3616 - hash: "8cecca2b1a586b7121692a8f618a1a50" + hash: "9f1cf9784c0659f4902d632542fe9d52" } Frame { msec: 3632 - hash: "8cecca2b1a586b7121692a8f618a1a50" + hash: "9f1cf9784c0659f4902d632542fe9d52" } Frame { msec: 3648 - hash: "8cecca2b1a586b7121692a8f618a1a50" + hash: "9f1cf9784c0659f4902d632542fe9d52" } Frame { msec: 3664 - hash: "8cecca2b1a586b7121692a8f618a1a50" + hash: "9f1cf9784c0659f4902d632542fe9d52" } Key { type: 6 @@ -1370,7 +1370,7 @@ VisualTest { } Frame { msec: 3680 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Key { type: 7 @@ -1382,15 +1382,15 @@ VisualTest { } Frame { msec: 3696 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3712 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3728 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Key { type: 7 @@ -1402,63 +1402,63 @@ VisualTest { } Frame { msec: 3744 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3760 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3776 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3792 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3808 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3824 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3840 - image: "usingMultilineEdit.3.png" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3856 - hash: "90bd87209b6d26785689779641b1f506" + image: "usingMultilineEdit.4.png" } Frame { msec: 3872 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3888 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3904 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3920 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3936 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3952 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Frame { msec: 3968 - hash: "90bd87209b6d26785689779641b1f506" + hash: "b350f3b710a0d36ba56bdce6c86f902e" } Key { type: 6 @@ -1470,23 +1470,23 @@ VisualTest { } Frame { msec: 3984 - hash: "7fac93ef3184d5a844448c75b0aa8e18" + hash: "2b44bf2548bd887f22e5689946e24de5" } Frame { msec: 4000 - hash: "7fac93ef3184d5a844448c75b0aa8e18" + hash: "2b44bf2548bd887f22e5689946e24de5" } Frame { msec: 4016 - hash: "7fac93ef3184d5a844448c75b0aa8e18" + hash: "2b44bf2548bd887f22e5689946e24de5" } Frame { msec: 4032 - hash: "7fac93ef3184d5a844448c75b0aa8e18" + hash: "2b44bf2548bd887f22e5689946e24de5" } Frame { msec: 4048 - hash: "7fac93ef3184d5a844448c75b0aa8e18" + hash: "2b44bf2548bd887f22e5689946e24de5" } Key { type: 6 @@ -1498,7 +1498,7 @@ VisualTest { } Frame { msec: 4064 - hash: "591366861f9e23276042250d5b1da7f9" + hash: "925c7c96166cc75dc92bd280fd354e43" } Key { type: 7 @@ -1510,19 +1510,19 @@ VisualTest { } Frame { msec: 4080 - hash: "591366861f9e23276042250d5b1da7f9" + hash: "925c7c96166cc75dc92bd280fd354e43" } Frame { msec: 4096 - hash: "591366861f9e23276042250d5b1da7f9" + hash: "925c7c96166cc75dc92bd280fd354e43" } Frame { msec: 4112 - hash: "591366861f9e23276042250d5b1da7f9" + hash: "925c7c96166cc75dc92bd280fd354e43" } Frame { msec: 4128 - hash: "591366861f9e23276042250d5b1da7f9" + hash: "925c7c96166cc75dc92bd280fd354e43" } Key { type: 6 @@ -1534,11 +1534,11 @@ VisualTest { } Frame { msec: 4144 - hash: "c5c33e5f4429698b1a1bc084a41d303d" + hash: "61d6f7583f143917b86adcad6a5ba909" } Frame { msec: 4160 - hash: "c5c33e5f4429698b1a1bc084a41d303d" + hash: "61d6f7583f143917b86adcad6a5ba909" } Key { type: 7 @@ -1550,15 +1550,15 @@ VisualTest { } Frame { msec: 4176 - hash: "c5c33e5f4429698b1a1bc084a41d303d" + hash: "61d6f7583f143917b86adcad6a5ba909" } Frame { msec: 4192 - hash: "c5c33e5f4429698b1a1bc084a41d303d" + hash: "61d6f7583f143917b86adcad6a5ba909" } Frame { msec: 4208 - hash: "c5c33e5f4429698b1a1bc084a41d303d" + hash: "61d6f7583f143917b86adcad6a5ba909" } Key { type: 6 @@ -1570,11 +1570,11 @@ VisualTest { } Frame { msec: 4224 - hash: "36223521c9ab06661239329c14e4fabe" + hash: "679e0940be9c40435aebb05a6e0da685" } Frame { msec: 4240 - hash: "36223521c9ab06661239329c14e4fabe" + hash: "679e0940be9c40435aebb05a6e0da685" } Key { type: 7 @@ -1586,11 +1586,11 @@ VisualTest { } Frame { msec: 4256 - hash: "36223521c9ab06661239329c14e4fabe" + hash: "679e0940be9c40435aebb05a6e0da685" } Frame { msec: 4272 - hash: "36223521c9ab06661239329c14e4fabe" + hash: "679e0940be9c40435aebb05a6e0da685" } Key { type: 7 @@ -1602,27 +1602,27 @@ VisualTest { } Frame { msec: 4288 - hash: "36223521c9ab06661239329c14e4fabe" + hash: "679e0940be9c40435aebb05a6e0da685" } Frame { msec: 4304 - hash: "36223521c9ab06661239329c14e4fabe" + hash: "679e0940be9c40435aebb05a6e0da685" } Frame { msec: 4320 - hash: "36223521c9ab06661239329c14e4fabe" + hash: "679e0940be9c40435aebb05a6e0da685" } Frame { msec: 4336 - hash: "36223521c9ab06661239329c14e4fabe" + hash: "679e0940be9c40435aebb05a6e0da685" } Frame { msec: 4352 - hash: "36223521c9ab06661239329c14e4fabe" + hash: "679e0940be9c40435aebb05a6e0da685" } Frame { msec: 4368 - hash: "36223521c9ab06661239329c14e4fabe" + hash: "679e0940be9c40435aebb05a6e0da685" } Key { type: 6 @@ -1634,23 +1634,23 @@ VisualTest { } Frame { msec: 4384 - hash: "22ab171b9805302b729afd314e55a0f4" + hash: "e819d25f605ec1347e89de65682edb7d" } Frame { msec: 4400 - hash: "22ab171b9805302b729afd314e55a0f4" + hash: "e819d25f605ec1347e89de65682edb7d" } Frame { msec: 4416 - hash: "22ab171b9805302b729afd314e55a0f4" + hash: "e819d25f605ec1347e89de65682edb7d" } Frame { msec: 4432 - hash: "22ab171b9805302b729afd314e55a0f4" + hash: "e819d25f605ec1347e89de65682edb7d" } Frame { msec: 4448 - hash: "22ab171b9805302b729afd314e55a0f4" + hash: "e819d25f605ec1347e89de65682edb7d" } Key { type: 7 @@ -1662,7 +1662,7 @@ VisualTest { } Frame { msec: 4464 - hash: "22ab171b9805302b729afd314e55a0f4" + hash: "e819d25f605ec1347e89de65682edb7d" } Key { type: 6 @@ -1674,23 +1674,23 @@ VisualTest { } Frame { msec: 4480 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4496 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4512 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4528 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4544 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Key { type: 7 @@ -1702,15 +1702,15 @@ VisualTest { } Frame { msec: 4560 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4576 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4592 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Key { type: 6 @@ -1722,63 +1722,63 @@ VisualTest { } Frame { msec: 4608 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4624 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4640 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4656 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4672 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4688 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4704 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4720 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4736 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4752 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4768 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4784 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4800 - image: "usingMultilineEdit.4.png" + hash: "ef65860a90a96d521a860c4e73e833ee" } Frame { msec: 4816 - hash: "beaad223234484e21f824ceb7f1edc2a" + image: "usingMultilineEdit.5.png" } Frame { msec: 4832 - hash: "beaad223234484e21f824ceb7f1edc2a" + hash: "ef65860a90a96d521a860c4e73e833ee" } Key { type: 6 @@ -1790,31 +1790,31 @@ VisualTest { } Frame { msec: 4848 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 4864 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 4880 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 4896 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 4912 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 4928 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 4944 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Key { type: 7 @@ -1826,19 +1826,19 @@ VisualTest { } Frame { msec: 4960 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 4976 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 4992 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5008 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Key { type: 7 @@ -1850,191 +1850,191 @@ VisualTest { } Frame { msec: 5024 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5040 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5056 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5072 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5088 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5104 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5120 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5136 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5152 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5168 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5184 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5200 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5216 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5232 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5248 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5264 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5280 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5296 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5312 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5328 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5344 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5360 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5376 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5392 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5408 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5424 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5440 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5456 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5472 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5488 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5504 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5520 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5536 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5552 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5568 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5584 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5600 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5616 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5632 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5648 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5664 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5680 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5696 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5712 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5728 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5744 - hash: "49b26f36a10d808fdcb8248a384a4da6" + hash: "84497b5307b95f59693b71dc13c838ef" } Frame { msec: 5760 - image: "usingMultilineEdit.5.png" + hash: "84497b5307b95f59693b71dc13c838ef" } Mouse { type: 2 @@ -2046,19 +2046,19 @@ VisualTest { } Frame { msec: 5776 - hash: "476040951352f144bda4ed7fb817cd7f" + image: "usingMultilineEdit.6.png" } Frame { msec: 5792 - hash: "476040951352f144bda4ed7fb817cd7f" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 5808 - hash: "476040951352f144bda4ed7fb817cd7f" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 5824 - hash: "476040951352f144bda4ed7fb817cd7f" + hash: "a3d9bdf8086303458ae5d35294551894" } Mouse { type: 5 @@ -2078,7 +2078,7 @@ VisualTest { } Frame { msec: 5840 - hash: "476040951352f144bda4ed7fb817cd7f" + hash: "a3d9bdf8086303458ae5d35294551894" } Mouse { type: 5 @@ -2098,7 +2098,7 @@ VisualTest { } Frame { msec: 5856 - hash: "9ecb1e68ab724c6f83b1a37aa1cb15c4" + hash: "ee9722d220435828b919fa4d8e314b78" } Mouse { type: 5 @@ -2118,7 +2118,7 @@ VisualTest { } Frame { msec: 5872 - hash: "9ecb1e68ab724c6f83b1a37aa1cb15c4" + hash: "ee9722d220435828b919fa4d8e314b78" } Mouse { type: 5 @@ -2138,7 +2138,7 @@ VisualTest { } Frame { msec: 5888 - hash: "9ecb1e68ab724c6f83b1a37aa1cb15c4" + hash: "8a06a84965166774ff160984ed05b5ad" } Mouse { type: 5 @@ -2158,7 +2158,7 @@ VisualTest { } Frame { msec: 5904 - hash: "173735fb4be11da603fb8ae8cffc609d" + hash: "0a9ec173aa0436b9b9edf3f20946ae5a" } Mouse { type: 5 @@ -2178,7 +2178,7 @@ VisualTest { } Frame { msec: 5920 - hash: "173735fb4be11da603fb8ae8cffc609d" + hash: "0a9ec173aa0436b9b9edf3f20946ae5a" } Mouse { type: 5 @@ -2198,7 +2198,7 @@ VisualTest { } Frame { msec: 5936 - hash: "b337a09f359fb2a237731c66ab95c92c" + hash: "5511590b6b6826d8e863956220eee2e4" } Mouse { type: 5 @@ -2218,7 +2218,7 @@ VisualTest { } Frame { msec: 5952 - hash: "32719becb40f8c6bd49b5f5754786913" + hash: "4d413c13e43c57809af8ee83a165dcb1" } Mouse { type: 5 @@ -2238,7 +2238,7 @@ VisualTest { } Frame { msec: 5968 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2250,7 +2250,7 @@ VisualTest { } Frame { msec: 5984 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2270,7 +2270,7 @@ VisualTest { } Frame { msec: 6000 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2290,7 +2290,7 @@ VisualTest { } Frame { msec: 6016 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2310,7 +2310,7 @@ VisualTest { } Frame { msec: 6032 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2330,7 +2330,7 @@ VisualTest { } Frame { msec: 6048 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2350,7 +2350,7 @@ VisualTest { } Frame { msec: 6064 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2370,7 +2370,7 @@ VisualTest { } Frame { msec: 6080 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2390,7 +2390,7 @@ VisualTest { } Frame { msec: 6096 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2410,7 +2410,7 @@ VisualTest { } Frame { msec: 6112 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2430,7 +2430,7 @@ VisualTest { } Frame { msec: 6128 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2450,7 +2450,7 @@ VisualTest { } Frame { msec: 6144 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2470,7 +2470,7 @@ VisualTest { } Frame { msec: 6160 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2490,7 +2490,7 @@ VisualTest { } Frame { msec: 6176 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2502,23 +2502,23 @@ VisualTest { } Frame { msec: 6192 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Frame { msec: 6208 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Frame { msec: 6224 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Frame { msec: 6240 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Frame { msec: 6256 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2530,7 +2530,7 @@ VisualTest { } Frame { msec: 6272 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2550,7 +2550,7 @@ VisualTest { } Frame { msec: 6288 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2570,7 +2570,7 @@ VisualTest { } Frame { msec: 6304 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2590,7 +2590,7 @@ VisualTest { } Frame { msec: 6320 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2610,7 +2610,7 @@ VisualTest { } Frame { msec: 6336 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2630,7 +2630,7 @@ VisualTest { } Frame { msec: 6352 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2650,7 +2650,7 @@ VisualTest { } Frame { msec: 6368 - hash: "e6bff88d0a5e2e7df4b3355749ecc902" + hash: "cc0c5811bc845540c2c550cefe45ab1c" } Mouse { type: 5 @@ -2670,7 +2670,7 @@ VisualTest { } Frame { msec: 6384 - hash: "5de7bbfdf96d84c8fbe74b4817a3c88a" + hash: "b35bc1db0fd5b95bb830a9be9ded1659" } Mouse { type: 5 @@ -2682,7 +2682,7 @@ VisualTest { } Frame { msec: 6400 - hash: "5de7bbfdf96d84c8fbe74b4817a3c88a" + hash: "b35bc1db0fd5b95bb830a9be9ded1659" } Mouse { type: 5 @@ -2702,7 +2702,7 @@ VisualTest { } Frame { msec: 6416 - hash: "056d22660f6feedfb453755978aa4c1d" + hash: "576bbe32d2b6f582cbb0102d2b0e079b" } Mouse { type: 5 @@ -2722,7 +2722,7 @@ VisualTest { } Frame { msec: 6432 - hash: "9d8568931fdca572dd31ea62ebbaf76a" + hash: "15a7ee7f58f286ae22385c2817b9b697" } Mouse { type: 5 @@ -2742,7 +2742,7 @@ VisualTest { } Frame { msec: 6448 - hash: "29aa2da8a830d5605a8d2d2543097177" + hash: "5cd516c20c91c407ca9932ea89afd100" } Mouse { type: 5 @@ -2754,7 +2754,7 @@ VisualTest { } Frame { msec: 6464 - hash: "154e312998b32cc09daf1693d07eda2f" + hash: "40ce8b3c3588727a37e03dd83cb3d536" } Mouse { type: 5 @@ -2774,7 +2774,7 @@ VisualTest { } Frame { msec: 6480 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "a3d9bdf8086303458ae5d35294551894" } Mouse { type: 5 @@ -2794,7 +2794,7 @@ VisualTest { } Frame { msec: 6496 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -2814,7 +2814,7 @@ VisualTest { } Frame { msec: 6512 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -2834,7 +2834,7 @@ VisualTest { } Frame { msec: 6528 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -2854,7 +2854,7 @@ VisualTest { } Frame { msec: 6544 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -2874,7 +2874,7 @@ VisualTest { } Frame { msec: 6560 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -2894,7 +2894,7 @@ VisualTest { } Frame { msec: 6576 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -2914,27 +2914,27 @@ VisualTest { } Frame { msec: 6592 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Frame { msec: 6608 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Frame { msec: 6624 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Frame { msec: 6640 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Frame { msec: 6656 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Frame { msec: 6672 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -2954,7 +2954,7 @@ VisualTest { } Frame { msec: 6688 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -2974,7 +2974,7 @@ VisualTest { } Frame { msec: 6704 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -2994,7 +2994,7 @@ VisualTest { } Frame { msec: 6720 - image: "usingMultilineEdit.6.png" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -3014,7 +3014,7 @@ VisualTest { } Frame { msec: 6736 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + image: "usingMultilineEdit.7.png" } Mouse { type: 5 @@ -3034,7 +3034,7 @@ VisualTest { } Frame { msec: 6752 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -3054,7 +3054,7 @@ VisualTest { } Frame { msec: 6768 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -3074,7 +3074,7 @@ VisualTest { } Frame { msec: 6784 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -3094,7 +3094,7 @@ VisualTest { } Frame { msec: 6800 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -3114,7 +3114,7 @@ VisualTest { } Frame { msec: 6816 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -3134,7 +3134,7 @@ VisualTest { } Frame { msec: 6832 - hash: "5b3a17fd92fe5117aa405d4c737e6673" + hash: "384cc9f557dd56079a54c1f0460bf96f" } Mouse { type: 5 @@ -3154,7 +3154,7 @@ VisualTest { } Frame { msec: 6848 - hash: "476040951352f144bda4ed7fb817cd7f" + hash: "a3d9bdf8086303458ae5d35294551894" } Mouse { type: 5 @@ -3174,7 +3174,7 @@ VisualTest { } Frame { msec: 6864 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Mouse { type: 5 @@ -3194,7 +3194,7 @@ VisualTest { } Frame { msec: 6880 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Mouse { type: 3 @@ -3206,55 +3206,55 @@ VisualTest { } Frame { msec: 6896 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 6912 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 6928 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 6944 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 6960 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 6976 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 6992 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 7008 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 7024 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 7040 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 7056 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 7072 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Frame { msec: 7088 - hash: "2cb10cb75beb454df7918b6948c6ad8a" + hash: "a3d9bdf8086303458ae5d35294551894" } Mouse { type: 2 @@ -3266,23 +3266,23 @@ VisualTest { } Frame { msec: 7104 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7120 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7136 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7152 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7168 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Mouse { type: 3 @@ -3294,103 +3294,103 @@ VisualTest { } Frame { msec: 7184 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7200 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7216 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7232 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7248 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7264 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7280 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7296 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7312 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7328 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7344 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7360 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7376 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7392 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7408 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7424 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7440 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7456 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7472 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7488 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7504 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7520 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7536 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7552 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Frame { msec: 7568 - hash: "eafa794e0c09cc2558575bafa945ecdf" + hash: "a5755969d822cae00af992085c419a17" } Key { type: 6 @@ -3402,15 +3402,15 @@ VisualTest { } Frame { msec: 7584 - hash: "0444d714b801f88685df9722390faf4f" + hash: "2395700fc4c3080e99b8871518113778" } Frame { msec: 7600 - hash: "0444d714b801f88685df9722390faf4f" + hash: "2395700fc4c3080e99b8871518113778" } Frame { msec: 7616 - hash: "0444d714b801f88685df9722390faf4f" + hash: "2395700fc4c3080e99b8871518113778" } Key { type: 7 @@ -3422,27 +3422,27 @@ VisualTest { } Frame { msec: 7632 - hash: "0444d714b801f88685df9722390faf4f" + hash: "2395700fc4c3080e99b8871518113778" } Frame { msec: 7648 - hash: "0444d714b801f88685df9722390faf4f" + hash: "2395700fc4c3080e99b8871518113778" } Frame { msec: 7664 - hash: "0444d714b801f88685df9722390faf4f" + hash: "2395700fc4c3080e99b8871518113778" } Frame { msec: 7680 - image: "usingMultilineEdit.7.png" + hash: "2395700fc4c3080e99b8871518113778" } Frame { msec: 7696 - hash: "0444d714b801f88685df9722390faf4f" + image: "usingMultilineEdit.8.png" } Frame { msec: 7712 - hash: "0444d714b801f88685df9722390faf4f" + hash: "2395700fc4c3080e99b8871518113778" } Key { type: 6 @@ -3454,63 +3454,63 @@ VisualTest { } Frame { msec: 7728 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7744 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7760 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7776 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7792 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7808 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7824 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7840 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7856 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7872 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7888 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7904 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7920 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7936 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Frame { msec: 7952 - hash: "250a49b60ad8e9b901977e01063ec20a" + hash: "71e055a9dbd940b3445d5ad9e277b483" } Key { type: 7 @@ -3530,11 +3530,11 @@ VisualTest { } Frame { msec: 7968 - hash: "bec2aea61fef64475e638848b96d28c3" + hash: "2ed8cb467e60f2fb253abb37bdc18a9a" } Frame { msec: 7984 - hash: "bec2aea61fef64475e638848b96d28c3" + hash: "2ed8cb467e60f2fb253abb37bdc18a9a" } Key { type: 7 @@ -3554,11 +3554,11 @@ VisualTest { } Frame { msec: 8000 - hash: "54177e0d53373636850e18399640fee8" + hash: "5783992a07652cfc53bfa0e1f36c1415" } Frame { msec: 8016 - hash: "54177e0d53373636850e18399640fee8" + hash: "5783992a07652cfc53bfa0e1f36c1415" } Key { type: 7 @@ -3578,11 +3578,11 @@ VisualTest { } Frame { msec: 8032 - hash: "81c03bd9dfd562e9f13784c906fa0d9e" + hash: "0fa5790dcbcb740d530b6333063629d6" } Frame { msec: 8048 - hash: "81c03bd9dfd562e9f13784c906fa0d9e" + hash: "0fa5790dcbcb740d530b6333063629d6" } Key { type: 7 @@ -3602,11 +3602,11 @@ VisualTest { } Frame { msec: 8064 - hash: "2547fbe956bab6566c2b9137c0edc841" + hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed" } Frame { msec: 8080 - hash: "2547fbe956bab6566c2b9137c0edc841" + hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed" } Key { type: 6 @@ -3626,31 +3626,31 @@ VisualTest { } Frame { msec: 8096 - hash: "2547fbe956bab6566c2b9137c0edc841" + hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed" } Frame { msec: 8112 - hash: "2547fbe956bab6566c2b9137c0edc841" + hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed" } Frame { msec: 8128 - hash: "2547fbe956bab6566c2b9137c0edc841" + hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed" } Frame { msec: 8144 - hash: "2547fbe956bab6566c2b9137c0edc841" + hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed" } Frame { msec: 8160 - hash: "2547fbe956bab6566c2b9137c0edc841" + hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed" } Frame { msec: 8176 - hash: "2547fbe956bab6566c2b9137c0edc841" + hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed" } Frame { msec: 8192 - hash: "2547fbe956bab6566c2b9137c0edc841" + hash: "00ae3b5d61a83fdd16fc05b7c3fde8ed" } Key { type: 6 @@ -3662,19 +3662,19 @@ VisualTest { } Frame { msec: 8208 - hash: "c757d4e60d18ce16f87c66e42cc81a99" + hash: "8f59f9f91dbcf608143925ff1f974151" } Frame { msec: 8224 - hash: "c757d4e60d18ce16f87c66e42cc81a99" + hash: "8f59f9f91dbcf608143925ff1f974151" } Frame { msec: 8240 - hash: "c757d4e60d18ce16f87c66e42cc81a99" + hash: "8f59f9f91dbcf608143925ff1f974151" } Frame { msec: 8256 - hash: "c757d4e60d18ce16f87c66e42cc81a99" + hash: "8f59f9f91dbcf608143925ff1f974151" } Key { type: 7 @@ -3686,19 +3686,19 @@ VisualTest { } Frame { msec: 8272 - hash: "c757d4e60d18ce16f87c66e42cc81a99" + hash: "8f59f9f91dbcf608143925ff1f974151" } Frame { msec: 8288 - hash: "c757d4e60d18ce16f87c66e42cc81a99" + hash: "8f59f9f91dbcf608143925ff1f974151" } Frame { msec: 8304 - hash: "c757d4e60d18ce16f87c66e42cc81a99" + hash: "8f59f9f91dbcf608143925ff1f974151" } Frame { msec: 8320 - hash: "c757d4e60d18ce16f87c66e42cc81a99" + hash: "8f59f9f91dbcf608143925ff1f974151" } Key { type: 6 @@ -3710,19 +3710,19 @@ VisualTest { } Frame { msec: 8336 - hash: "2ef578193024153dc85a2a92d10dc6c0" + hash: "fc48aa2746eaaf31312de3c37d821ff0" } Frame { msec: 8352 - hash: "2ef578193024153dc85a2a92d10dc6c0" + hash: "fc48aa2746eaaf31312de3c37d821ff0" } Frame { msec: 8368 - hash: "2ef578193024153dc85a2a92d10dc6c0" + hash: "fc48aa2746eaaf31312de3c37d821ff0" } Frame { msec: 8384 - hash: "2ef578193024153dc85a2a92d10dc6c0" + hash: "fc48aa2746eaaf31312de3c37d821ff0" } Key { type: 7 @@ -3734,23 +3734,23 @@ VisualTest { } Frame { msec: 8400 - hash: "2ef578193024153dc85a2a92d10dc6c0" + hash: "fc48aa2746eaaf31312de3c37d821ff0" } Frame { msec: 8416 - hash: "2ef578193024153dc85a2a92d10dc6c0" + hash: "fc48aa2746eaaf31312de3c37d821ff0" } Frame { msec: 8432 - hash: "2ef578193024153dc85a2a92d10dc6c0" + hash: "fc48aa2746eaaf31312de3c37d821ff0" } Frame { msec: 8448 - hash: "2ef578193024153dc85a2a92d10dc6c0" + hash: "fc48aa2746eaaf31312de3c37d821ff0" } Frame { msec: 8464 - hash: "2ef578193024153dc85a2a92d10dc6c0" + hash: "fc48aa2746eaaf31312de3c37d821ff0" } Key { type: 6 @@ -3762,19 +3762,19 @@ VisualTest { } Frame { msec: 8480 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8496 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8512 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8528 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Key { type: 7 @@ -3786,35 +3786,35 @@ VisualTest { } Frame { msec: 8544 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8560 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8576 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8592 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8608 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8624 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8640 - image: "usingMultilineEdit.8.png" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8656 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + image: "usingMultilineEdit.9.png" } Key { type: 7 @@ -3826,139 +3826,139 @@ VisualTest { } Frame { msec: 8672 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8688 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8704 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8720 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8736 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8752 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8768 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8784 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8800 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8816 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8832 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8848 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8864 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8880 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8896 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8912 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8928 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8944 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8960 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8976 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 8992 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9008 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9024 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9040 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9056 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9072 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9088 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9104 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9120 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9136 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9152 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9168 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9184 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9200 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Mouse { type: 2 @@ -3970,11 +3970,11 @@ VisualTest { } Frame { msec: 9216 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9232 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Mouse { type: 5 @@ -3986,7 +3986,7 @@ VisualTest { } Frame { msec: 9248 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Mouse { type: 5 @@ -4006,7 +4006,7 @@ VisualTest { } Frame { msec: 9264 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Mouse { type: 5 @@ -4026,7 +4026,7 @@ VisualTest { } Frame { msec: 9280 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Mouse { type: 3 @@ -4038,43 +4038,43 @@ VisualTest { } Frame { msec: 9296 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9312 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9328 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9344 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9360 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9376 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9392 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9408 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9424 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Frame { msec: 9440 - hash: "47e926162c6d695d2bdb7ec9de05f0cc" + hash: "61856cf1f8f2ef6d0b365ab3d7eece51" } Mouse { type: 2 @@ -4086,27 +4086,27 @@ VisualTest { } Frame { msec: 9456 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9472 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9488 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9504 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9520 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9536 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Mouse { type: 3 @@ -4118,35 +4118,35 @@ VisualTest { } Frame { msec: 9552 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9568 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9584 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9600 - image: "usingMultilineEdit.9.png" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9616 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + image: "usingMultilineEdit.10.png" } Frame { msec: 9632 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9648 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9664 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Key { type: 6 @@ -4158,111 +4158,111 @@ VisualTest { } Frame { msec: 9680 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9696 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9712 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9728 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9744 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9760 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9776 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9792 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9808 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9824 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9840 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9856 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9872 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9888 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9904 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9920 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9936 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9952 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9968 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 9984 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10000 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10016 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10032 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10048 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10064 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10080 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10096 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Key { type: 6 @@ -4274,35 +4274,35 @@ VisualTest { } Frame { msec: 10112 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10128 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10144 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10160 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10176 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10192 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10208 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10224 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Key { type: 7 @@ -4314,35 +4314,35 @@ VisualTest { } Frame { msec: 10240 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10256 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10272 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10288 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10304 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10320 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10336 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Frame { msec: 10352 - hash: "2ef5e7b2c0edc631765ea12d1f7abf33" + hash: "2ccfdac58b836aa89d2a75d0bdca6624" } Key { type: 6 @@ -4354,27 +4354,27 @@ VisualTest { } Frame { msec: 10368 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10384 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10400 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10416 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10432 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10448 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Key { type: 7 @@ -4386,51 +4386,51 @@ VisualTest { } Frame { msec: 10464 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10480 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10496 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10512 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10528 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10544 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10560 - image: "usingMultilineEdit.10.png" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10576 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + image: "usingMultilineEdit.11.png" } Frame { msec: 10592 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10608 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10624 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10640 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Key { type: 7 @@ -4442,246 +4442,246 @@ VisualTest { } Frame { msec: 10656 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10672 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10688 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10704 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10720 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10736 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10752 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10768 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10784 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10800 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10816 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10832 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10848 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10864 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10880 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10896 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10912 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10928 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10944 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10960 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10976 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 10992 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11008 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11024 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11040 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11056 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11072 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11088 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11104 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11120 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11136 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11152 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11168 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11184 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11200 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11216 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11232 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11248 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11264 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11280 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11296 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11312 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11328 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11344 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11360 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11376 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11392 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11408 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11424 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11440 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11456 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11472 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11488 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11504 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11520 - image: "usingMultilineEdit.11.png" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11536 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + image: "usingMultilineEdit.12.png" } Frame { msec: 11552 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11568 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11584 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11600 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } Frame { msec: 11616 - hash: "c3914ed0d035a39423a1f2cf9ac6c165" + hash: "37a675ab007d0e0a8f3735d4d84505de" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.0.png Binary files differindex 61606b2..a61ba5a 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.1.png Binary files differindex a4b28fc..2a28c96 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.2.png Binary files differindex 5be6bbb..d1ddaa6 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.2.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.3.png Binary files differindex a220f65..493c5cd 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.3.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.4.png Binary files differindex 6946707..2b2ce59 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.4.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.5.png Binary files differindex 4eeb8ec..044eea4 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.5.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.5.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.6.png Binary files differindex 4eeb8ec..f0748b2 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.6.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.6.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.7.png Binary files differnew file mode 100644 index 0000000..f0748b2 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.7.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.qml index f1bb5a9..f5af59f 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextedit/data-MAC/wrap.qml @@ -6,7 +6,7 @@ VisualTest { } Frame { msec: 16 - hash: "b6611676a7d38162d5c0210ea9d0e291" + image: "wrap.0.png" } Key { type: 6 @@ -18,7 +18,7 @@ VisualTest { } Frame { msec: 32 - hash: "b7fc43d4344c8d39f4240dadead86b1e" + hash: "2b7fa5ced204393f05bf68d33e0ca2ad" } Key { type: 7 @@ -30,11 +30,11 @@ VisualTest { } Frame { msec: 48 - hash: "b7fc43d4344c8d39f4240dadead86b1e" + hash: "2b7fa5ced204393f05bf68d33e0ca2ad" } Frame { msec: 64 - hash: "b7fc43d4344c8d39f4240dadead86b1e" + hash: "2b7fa5ced204393f05bf68d33e0ca2ad" } Key { type: 7 @@ -46,11 +46,11 @@ VisualTest { } Frame { msec: 80 - hash: "b7fc43d4344c8d39f4240dadead86b1e" + hash: "2b7fa5ced204393f05bf68d33e0ca2ad" } Frame { msec: 96 - hash: "b7fc43d4344c8d39f4240dadead86b1e" + hash: "2b7fa5ced204393f05bf68d33e0ca2ad" } Key { type: 6 @@ -62,15 +62,15 @@ VisualTest { } Frame { msec: 112 - hash: "23006a07263b8b3240c4080fb1d587e9" + hash: "5fe2c4c01922f0b0d3f65152bd80f689" } Frame { msec: 128 - hash: "23006a07263b8b3240c4080fb1d587e9" + hash: "5fe2c4c01922f0b0d3f65152bd80f689" } Frame { msec: 144 - hash: "23006a07263b8b3240c4080fb1d587e9" + hash: "5fe2c4c01922f0b0d3f65152bd80f689" } Key { type: 6 @@ -82,15 +82,15 @@ VisualTest { } Frame { msec: 160 - hash: "8a60fd38fb9c171a15bf7e6e51bee664" + hash: "9645f4ad60570c8a95e9ae6dda3f5060" } Frame { msec: 176 - hash: "8a60fd38fb9c171a15bf7e6e51bee664" + hash: "9645f4ad60570c8a95e9ae6dda3f5060" } Frame { msec: 192 - hash: "8a60fd38fb9c171a15bf7e6e51bee664" + hash: "9645f4ad60570c8a95e9ae6dda3f5060" } Key { type: 7 @@ -102,11 +102,11 @@ VisualTest { } Frame { msec: 208 - hash: "8a60fd38fb9c171a15bf7e6e51bee664" + hash: "9645f4ad60570c8a95e9ae6dda3f5060" } Frame { msec: 224 - hash: "8a60fd38fb9c171a15bf7e6e51bee664" + hash: "9645f4ad60570c8a95e9ae6dda3f5060" } Key { type: 6 @@ -118,7 +118,7 @@ VisualTest { } Frame { msec: 240 - hash: "33cdfa214f071848ed374407b4601c5a" + hash: "f28f446cb8de8af0a49ae6e728c996fc" } Key { type: 7 @@ -130,19 +130,19 @@ VisualTest { } Frame { msec: 256 - hash: "33cdfa214f071848ed374407b4601c5a" + hash: "f28f446cb8de8af0a49ae6e728c996fc" } Frame { msec: 272 - hash: "33cdfa214f071848ed374407b4601c5a" + hash: "f28f446cb8de8af0a49ae6e728c996fc" } Frame { msec: 288 - hash: "33cdfa214f071848ed374407b4601c5a" + hash: "f28f446cb8de8af0a49ae6e728c996fc" } Frame { msec: 304 - hash: "33cdfa214f071848ed374407b4601c5a" + hash: "f28f446cb8de8af0a49ae6e728c996fc" } Key { type: 7 @@ -154,11 +154,11 @@ VisualTest { } Frame { msec: 320 - hash: "33cdfa214f071848ed374407b4601c5a" + hash: "f28f446cb8de8af0a49ae6e728c996fc" } Frame { msec: 336 - hash: "33cdfa214f071848ed374407b4601c5a" + hash: "f28f446cb8de8af0a49ae6e728c996fc" } Key { type: 6 @@ -170,19 +170,19 @@ VisualTest { } Frame { msec: 352 - hash: "80794c72fe7dda72997122a89f33e6e4" + hash: "98c390c519cd0476de17be8bb49b0f65" } Frame { msec: 368 - hash: "80794c72fe7dda72997122a89f33e6e4" + hash: "98c390c519cd0476de17be8bb49b0f65" } Frame { msec: 384 - hash: "80794c72fe7dda72997122a89f33e6e4" + hash: "98c390c519cd0476de17be8bb49b0f65" } Frame { msec: 400 - hash: "80794c72fe7dda72997122a89f33e6e4" + hash: "98c390c519cd0476de17be8bb49b0f65" } Key { type: 7 @@ -194,19 +194,19 @@ VisualTest { } Frame { msec: 416 - hash: "80794c72fe7dda72997122a89f33e6e4" + hash: "98c390c519cd0476de17be8bb49b0f65" } Frame { msec: 432 - hash: "80794c72fe7dda72997122a89f33e6e4" + hash: "98c390c519cd0476de17be8bb49b0f65" } Frame { msec: 448 - hash: "80794c72fe7dda72997122a89f33e6e4" + hash: "98c390c519cd0476de17be8bb49b0f65" } Frame { msec: 464 - hash: "80794c72fe7dda72997122a89f33e6e4" + hash: "98c390c519cd0476de17be8bb49b0f65" } Key { type: 6 @@ -218,19 +218,19 @@ VisualTest { } Frame { msec: 480 - hash: "bfcd901aee3d9db796597834bec1f173" + hash: "d842a866459f3ecb4fa4fc1426a05411" } Frame { msec: 496 - hash: "bfcd901aee3d9db796597834bec1f173" + hash: "d842a866459f3ecb4fa4fc1426a05411" } Frame { msec: 512 - hash: "bfcd901aee3d9db796597834bec1f173" + hash: "d842a866459f3ecb4fa4fc1426a05411" } Frame { msec: 528 - hash: "bfcd901aee3d9db796597834bec1f173" + hash: "d842a866459f3ecb4fa4fc1426a05411" } Key { type: 6 @@ -250,23 +250,23 @@ VisualTest { } Frame { msec: 544 - hash: "965102cb74dcf695b950616ce5c42875" + hash: "4c858bfd2e8ba7a959bbf2d1e17865e7" } Frame { msec: 560 - hash: "965102cb74dcf695b950616ce5c42875" + hash: "4c858bfd2e8ba7a959bbf2d1e17865e7" } Frame { msec: 576 - hash: "965102cb74dcf695b950616ce5c42875" + hash: "4c858bfd2e8ba7a959bbf2d1e17865e7" } Frame { msec: 592 - hash: "965102cb74dcf695b950616ce5c42875" + hash: "4c858bfd2e8ba7a959bbf2d1e17865e7" } Frame { msec: 608 - hash: "965102cb74dcf695b950616ce5c42875" + hash: "4c858bfd2e8ba7a959bbf2d1e17865e7" } Key { type: 7 @@ -286,19 +286,19 @@ VisualTest { } Frame { msec: 624 - hash: "73556f0cf2c8d77881a7d3881025e343" + hash: "9eed9c764b2c5b73a60df84fc0d68756" } Frame { msec: 640 - hash: "73556f0cf2c8d77881a7d3881025e343" + hash: "9eed9c764b2c5b73a60df84fc0d68756" } Frame { msec: 656 - hash: "73556f0cf2c8d77881a7d3881025e343" + hash: "9eed9c764b2c5b73a60df84fc0d68756" } Frame { msec: 672 - hash: "73556f0cf2c8d77881a7d3881025e343" + hash: "9eed9c764b2c5b73a60df84fc0d68756" } Key { type: 7 @@ -310,11 +310,11 @@ VisualTest { } Frame { msec: 688 - hash: "73556f0cf2c8d77881a7d3881025e343" + hash: "9eed9c764b2c5b73a60df84fc0d68756" } Frame { msec: 704 - hash: "73556f0cf2c8d77881a7d3881025e343" + hash: "9eed9c764b2c5b73a60df84fc0d68756" } Key { type: 6 @@ -326,23 +326,23 @@ VisualTest { } Frame { msec: 720 - hash: "a75bdb09a48b90936d2d4de647e7323d" + hash: "7a1d64574a0a6b90695629fd443274e6" } Frame { msec: 736 - hash: "a75bdb09a48b90936d2d4de647e7323d" + hash: "7a1d64574a0a6b90695629fd443274e6" } Frame { msec: 752 - hash: "a75bdb09a48b90936d2d4de647e7323d" + hash: "7a1d64574a0a6b90695629fd443274e6" } Frame { msec: 768 - hash: "a75bdb09a48b90936d2d4de647e7323d" + hash: "7a1d64574a0a6b90695629fd443274e6" } Frame { msec: 784 - hash: "a75bdb09a48b90936d2d4de647e7323d" + hash: "7a1d64574a0a6b90695629fd443274e6" } Key { type: 7 @@ -354,7 +354,7 @@ VisualTest { } Frame { msec: 800 - hash: "a75bdb09a48b90936d2d4de647e7323d" + hash: "7a1d64574a0a6b90695629fd443274e6" } Key { type: 6 @@ -366,15 +366,15 @@ VisualTest { } Frame { msec: 816 - hash: "f37ab5f03e7cf86e3589fc0711b23a53" + hash: "31e9c4500448142ee2be3171a2bd5385" } Frame { msec: 832 - hash: "f37ab5f03e7cf86e3589fc0711b23a53" + hash: "31e9c4500448142ee2be3171a2bd5385" } Frame { msec: 848 - hash: "f37ab5f03e7cf86e3589fc0711b23a53" + hash: "31e9c4500448142ee2be3171a2bd5385" } Key { type: 7 @@ -386,15 +386,15 @@ VisualTest { } Frame { msec: 864 - hash: "f37ab5f03e7cf86e3589fc0711b23a53" + hash: "31e9c4500448142ee2be3171a2bd5385" } Frame { msec: 880 - hash: "f37ab5f03e7cf86e3589fc0711b23a53" + hash: "31e9c4500448142ee2be3171a2bd5385" } Frame { msec: 896 - hash: "f37ab5f03e7cf86e3589fc0711b23a53" + hash: "31e9c4500448142ee2be3171a2bd5385" } Key { type: 6 @@ -406,27 +406,27 @@ VisualTest { } Frame { msec: 912 - hash: "219e5edd5f138cd113f0b929460cf074" + hash: "7fcfd3706ba11c43ac0a4c2f96b1d80d" } Frame { msec: 928 - hash: "219e5edd5f138cd113f0b929460cf074" + hash: "7fcfd3706ba11c43ac0a4c2f96b1d80d" } Frame { msec: 944 - hash: "219e5edd5f138cd113f0b929460cf074" + hash: "7fcfd3706ba11c43ac0a4c2f96b1d80d" } Frame { msec: 960 - image: "wrap.0.png" + hash: "7fcfd3706ba11c43ac0a4c2f96b1d80d" } Frame { msec: 976 - hash: "219e5edd5f138cd113f0b929460cf074" + image: "wrap.1.png" } Frame { msec: 992 - hash: "219e5edd5f138cd113f0b929460cf074" + hash: "7fcfd3706ba11c43ac0a4c2f96b1d80d" } Key { type: 6 @@ -446,23 +446,23 @@ VisualTest { } Frame { msec: 1008 - hash: "79cf23a46fbbeddbef10ef2a62533342" + hash: "c05191599361c4171c086630f9608cd0" } Frame { msec: 1024 - hash: "79cf23a46fbbeddbef10ef2a62533342" + hash: "c05191599361c4171c086630f9608cd0" } Frame { msec: 1040 - hash: "79cf23a46fbbeddbef10ef2a62533342" + hash: "c05191599361c4171c086630f9608cd0" } Frame { msec: 1056 - hash: "79cf23a46fbbeddbef10ef2a62533342" + hash: "c05191599361c4171c086630f9608cd0" } Frame { msec: 1072 - hash: "79cf23a46fbbeddbef10ef2a62533342" + hash: "c05191599361c4171c086630f9608cd0" } Key { type: 7 @@ -474,31 +474,31 @@ VisualTest { } Frame { msec: 1088 - hash: "79cf23a46fbbeddbef10ef2a62533342" + hash: "c05191599361c4171c086630f9608cd0" } Frame { msec: 1104 - hash: "79cf23a46fbbeddbef10ef2a62533342" + hash: "c05191599361c4171c086630f9608cd0" } Frame { msec: 1120 - hash: "79cf23a46fbbeddbef10ef2a62533342" + hash: "c05191599361c4171c086630f9608cd0" } Frame { msec: 1136 - hash: "79cf23a46fbbeddbef10ef2a62533342" + hash: "c05191599361c4171c086630f9608cd0" } Frame { msec: 1152 - hash: "79cf23a46fbbeddbef10ef2a62533342" + hash: "c05191599361c4171c086630f9608cd0" } Frame { msec: 1168 - hash: "79cf23a46fbbeddbef10ef2a62533342" + hash: "c05191599361c4171c086630f9608cd0" } Frame { msec: 1184 - hash: "79cf23a46fbbeddbef10ef2a62533342" + hash: "c05191599361c4171c086630f9608cd0" } Key { type: 6 @@ -510,23 +510,23 @@ VisualTest { } Frame { msec: 1200 - hash: "ccb17209d85c7e49fbb0b5f9134fc39c" + hash: "088e0567dd568019ccb2114d3108a1dd" } Frame { msec: 1216 - hash: "ccb17209d85c7e49fbb0b5f9134fc39c" + hash: "088e0567dd568019ccb2114d3108a1dd" } Frame { msec: 1232 - hash: "ccb17209d85c7e49fbb0b5f9134fc39c" + hash: "088e0567dd568019ccb2114d3108a1dd" } Frame { msec: 1248 - hash: "ccb17209d85c7e49fbb0b5f9134fc39c" + hash: "088e0567dd568019ccb2114d3108a1dd" } Frame { msec: 1264 - hash: "ccb17209d85c7e49fbb0b5f9134fc39c" + hash: "088e0567dd568019ccb2114d3108a1dd" } Key { type: 7 @@ -546,11 +546,11 @@ VisualTest { } Frame { msec: 1280 - hash: "29aaa213e4b146199289b5383528bc88" + hash: "35fde81ed66c4804b2b31c0d93fb010a" } Frame { msec: 1296 - hash: "29aaa213e4b146199289b5383528bc88" + hash: "35fde81ed66c4804b2b31c0d93fb010a" } Key { type: 6 @@ -562,15 +562,15 @@ VisualTest { } Frame { msec: 1312 - hash: "7f9da386497bca2dc19b1c3ab475f453" + hash: "0b212b2b1354e99db328c30d4c8e8b4e" } Frame { msec: 1328 - hash: "7f9da386497bca2dc19b1c3ab475f453" + hash: "0b212b2b1354e99db328c30d4c8e8b4e" } Frame { msec: 1344 - hash: "7f9da386497bca2dc19b1c3ab475f453" + hash: "0b212b2b1354e99db328c30d4c8e8b4e" } Key { type: 7 @@ -582,11 +582,11 @@ VisualTest { } Frame { msec: 1360 - hash: "7f9da386497bca2dc19b1c3ab475f453" + hash: "0b212b2b1354e99db328c30d4c8e8b4e" } Frame { msec: 1376 - hash: "7f9da386497bca2dc19b1c3ab475f453" + hash: "0b212b2b1354e99db328c30d4c8e8b4e" } Key { type: 7 @@ -598,19 +598,19 @@ VisualTest { } Frame { msec: 1392 - hash: "7f9da386497bca2dc19b1c3ab475f453" + hash: "0b212b2b1354e99db328c30d4c8e8b4e" } Frame { msec: 1408 - hash: "7f9da386497bca2dc19b1c3ab475f453" + hash: "0b212b2b1354e99db328c30d4c8e8b4e" } Frame { msec: 1424 - hash: "7f9da386497bca2dc19b1c3ab475f453" + hash: "0b212b2b1354e99db328c30d4c8e8b4e" } Frame { msec: 1440 - hash: "7f9da386497bca2dc19b1c3ab475f453" + hash: "0b212b2b1354e99db328c30d4c8e8b4e" } Key { type: 6 @@ -622,23 +622,23 @@ VisualTest { } Frame { msec: 1456 - hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2" + hash: "1d19bc237d8de1598a629f2aea7e8e97" } Frame { msec: 1472 - hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2" + hash: "1d19bc237d8de1598a629f2aea7e8e97" } Frame { msec: 1488 - hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2" + hash: "1d19bc237d8de1598a629f2aea7e8e97" } Frame { msec: 1504 - hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2" + hash: "1d19bc237d8de1598a629f2aea7e8e97" } Frame { msec: 1520 - hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2" + hash: "1d19bc237d8de1598a629f2aea7e8e97" } Key { type: 7 @@ -650,11 +650,11 @@ VisualTest { } Frame { msec: 1536 - hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2" + hash: "1d19bc237d8de1598a629f2aea7e8e97" } Frame { msec: 1552 - hash: "eb683a6b2a9ed2cf4ea5cb424670c9d2" + hash: "1d19bc237d8de1598a629f2aea7e8e97" } Key { type: 6 @@ -666,23 +666,23 @@ VisualTest { } Frame { msec: 1568 - hash: "c5c789ca287cf673be808f3e10e054a2" + hash: "df3025b2de2cf6cee2b918c6d13834c6" } Frame { msec: 1584 - hash: "c5c789ca287cf673be808f3e10e054a2" + hash: "df3025b2de2cf6cee2b918c6d13834c6" } Frame { msec: 1600 - hash: "c5c789ca287cf673be808f3e10e054a2" + hash: "df3025b2de2cf6cee2b918c6d13834c6" } Frame { msec: 1616 - hash: "c5c789ca287cf673be808f3e10e054a2" + hash: "df3025b2de2cf6cee2b918c6d13834c6" } Frame { msec: 1632 - hash: "c5c789ca287cf673be808f3e10e054a2" + hash: "df3025b2de2cf6cee2b918c6d13834c6" } Key { type: 6 @@ -702,23 +702,23 @@ VisualTest { } Frame { msec: 1648 - hash: "5e39fc7058b64afa7036002a2dae8976" + hash: "b19baef8a5d8efd96d5ec9e729a9d42a" } Frame { msec: 1664 - hash: "5e39fc7058b64afa7036002a2dae8976" + hash: "b19baef8a5d8efd96d5ec9e729a9d42a" } Frame { msec: 1680 - hash: "5e39fc7058b64afa7036002a2dae8976" + hash: "b19baef8a5d8efd96d5ec9e729a9d42a" } Frame { msec: 1696 - hash: "5e39fc7058b64afa7036002a2dae8976" + hash: "b19baef8a5d8efd96d5ec9e729a9d42a" } Frame { msec: 1712 - hash: "5e39fc7058b64afa7036002a2dae8976" + hash: "b19baef8a5d8efd96d5ec9e729a9d42a" } Key { type: 6 @@ -730,15 +730,15 @@ VisualTest { } Frame { msec: 1728 - hash: "687e69083430812cd42eff708229a176" + hash: "914e61f38d7f2b5a465037d6ef1ddaba" } Frame { msec: 1744 - hash: "687e69083430812cd42eff708229a176" + hash: "914e61f38d7f2b5a465037d6ef1ddaba" } Frame { msec: 1760 - hash: "687e69083430812cd42eff708229a176" + hash: "914e61f38d7f2b5a465037d6ef1ddaba" } Key { type: 7 @@ -750,7 +750,7 @@ VisualTest { } Frame { msec: 1776 - hash: "687e69083430812cd42eff708229a176" + hash: "914e61f38d7f2b5a465037d6ef1ddaba" } Key { type: 6 @@ -762,11 +762,11 @@ VisualTest { } Frame { msec: 1792 - hash: "f33cd379acd2785298aa74f78e22bdfb" + hash: "e816134a8fef0bbee8e94c0f9561750b" } Frame { msec: 1808 - hash: "f33cd379acd2785298aa74f78e22bdfb" + hash: "e816134a8fef0bbee8e94c0f9561750b" } Key { type: 7 @@ -778,19 +778,19 @@ VisualTest { } Frame { msec: 1824 - hash: "f33cd379acd2785298aa74f78e22bdfb" + hash: "e816134a8fef0bbee8e94c0f9561750b" } Frame { msec: 1840 - hash: "f33cd379acd2785298aa74f78e22bdfb" + hash: "e816134a8fef0bbee8e94c0f9561750b" } Frame { msec: 1856 - hash: "f33cd379acd2785298aa74f78e22bdfb" + hash: "e816134a8fef0bbee8e94c0f9561750b" } Frame { msec: 1872 - hash: "f33cd379acd2785298aa74f78e22bdfb" + hash: "e816134a8fef0bbee8e94c0f9561750b" } Key { type: 7 @@ -802,23 +802,23 @@ VisualTest { } Frame { msec: 1888 - hash: "f33cd379acd2785298aa74f78e22bdfb" + hash: "e816134a8fef0bbee8e94c0f9561750b" } Frame { msec: 1904 - hash: "f33cd379acd2785298aa74f78e22bdfb" + hash: "e816134a8fef0bbee8e94c0f9561750b" } Frame { msec: 1920 - image: "wrap.1.png" + hash: "e816134a8fef0bbee8e94c0f9561750b" } Frame { msec: 1936 - hash: "f33cd379acd2785298aa74f78e22bdfb" + image: "wrap.2.png" } Frame { msec: 1952 - hash: "f33cd379acd2785298aa74f78e22bdfb" + hash: "e816134a8fef0bbee8e94c0f9561750b" } Key { type: 6 @@ -830,27 +830,27 @@ VisualTest { } Frame { msec: 1968 - hash: "205e79eb4a7e515ffa5bd24677408e79" + hash: "9552729028c8e129e19c06ff35bb085b" } Frame { msec: 1984 - hash: "205e79eb4a7e515ffa5bd24677408e79" + hash: "9552729028c8e129e19c06ff35bb085b" } Frame { msec: 2000 - hash: "205e79eb4a7e515ffa5bd24677408e79" + hash: "9552729028c8e129e19c06ff35bb085b" } Frame { msec: 2016 - hash: "205e79eb4a7e515ffa5bd24677408e79" + hash: "9552729028c8e129e19c06ff35bb085b" } Frame { msec: 2032 - hash: "205e79eb4a7e515ffa5bd24677408e79" + hash: "9552729028c8e129e19c06ff35bb085b" } Frame { msec: 2048 - hash: "205e79eb4a7e515ffa5bd24677408e79" + hash: "9552729028c8e129e19c06ff35bb085b" } Key { type: 6 @@ -862,7 +862,7 @@ VisualTest { } Frame { msec: 2064 - hash: "2c1570a63d3eff7346c58356610a2f44" + hash: "2dbdfe3bd309b98af7ed8980725f3ee7" } Key { type: 7 @@ -874,15 +874,15 @@ VisualTest { } Frame { msec: 2080 - hash: "2c1570a63d3eff7346c58356610a2f44" + hash: "2dbdfe3bd309b98af7ed8980725f3ee7" } Frame { msec: 2096 - hash: "2c1570a63d3eff7346c58356610a2f44" + hash: "2dbdfe3bd309b98af7ed8980725f3ee7" } Frame { msec: 2112 - hash: "2c1570a63d3eff7346c58356610a2f44" + hash: "2dbdfe3bd309b98af7ed8980725f3ee7" } Key { type: 7 @@ -894,27 +894,27 @@ VisualTest { } Frame { msec: 2128 - hash: "2c1570a63d3eff7346c58356610a2f44" + hash: "2dbdfe3bd309b98af7ed8980725f3ee7" } Frame { msec: 2144 - hash: "2c1570a63d3eff7346c58356610a2f44" + hash: "2dbdfe3bd309b98af7ed8980725f3ee7" } Frame { msec: 2160 - hash: "2c1570a63d3eff7346c58356610a2f44" + hash: "2dbdfe3bd309b98af7ed8980725f3ee7" } Frame { msec: 2176 - hash: "2c1570a63d3eff7346c58356610a2f44" + hash: "2dbdfe3bd309b98af7ed8980725f3ee7" } Frame { msec: 2192 - hash: "2c1570a63d3eff7346c58356610a2f44" + hash: "2dbdfe3bd309b98af7ed8980725f3ee7" } Frame { msec: 2208 - hash: "2c1570a63d3eff7346c58356610a2f44" + hash: "2dbdfe3bd309b98af7ed8980725f3ee7" } Key { type: 6 @@ -926,23 +926,23 @@ VisualTest { } Frame { msec: 2224 - hash: "8202436b4e184adc69cdf7dd735afe33" + hash: "28748f90f61954b94377768788f1634d" } Frame { msec: 2240 - hash: "8202436b4e184adc69cdf7dd735afe33" + hash: "28748f90f61954b94377768788f1634d" } Frame { msec: 2256 - hash: "8202436b4e184adc69cdf7dd735afe33" + hash: "28748f90f61954b94377768788f1634d" } Frame { msec: 2272 - hash: "8202436b4e184adc69cdf7dd735afe33" + hash: "28748f90f61954b94377768788f1634d" } Frame { msec: 2288 - hash: "8202436b4e184adc69cdf7dd735afe33" + hash: "28748f90f61954b94377768788f1634d" } Key { type: 6 @@ -954,7 +954,7 @@ VisualTest { } Frame { msec: 2304 - hash: "855069b52f6714d54f4005751b8e2930" + hash: "2cf8ad2ba8ddcde4dd8549f034a77005" } Key { type: 7 @@ -966,15 +966,15 @@ VisualTest { } Frame { msec: 2320 - hash: "855069b52f6714d54f4005751b8e2930" + hash: "2cf8ad2ba8ddcde4dd8549f034a77005" } Frame { msec: 2336 - hash: "855069b52f6714d54f4005751b8e2930" + hash: "2cf8ad2ba8ddcde4dd8549f034a77005" } Frame { msec: 2352 - hash: "855069b52f6714d54f4005751b8e2930" + hash: "2cf8ad2ba8ddcde4dd8549f034a77005" } Key { type: 6 @@ -986,11 +986,11 @@ VisualTest { } Frame { msec: 2368 - hash: "6e1a97a3e491f24e34d4b24bf3091afc" + hash: "95b6ce7c01461847a3f7aff88aa8ad9d" } Frame { msec: 2384 - hash: "6e1a97a3e491f24e34d4b24bf3091afc" + hash: "95b6ce7c01461847a3f7aff88aa8ad9d" } Key { type: 7 @@ -1002,15 +1002,15 @@ VisualTest { } Frame { msec: 2400 - hash: "6e1a97a3e491f24e34d4b24bf3091afc" + hash: "95b6ce7c01461847a3f7aff88aa8ad9d" } Frame { msec: 2416 - hash: "6e1a97a3e491f24e34d4b24bf3091afc" + hash: "95b6ce7c01461847a3f7aff88aa8ad9d" } Frame { msec: 2432 - hash: "6e1a97a3e491f24e34d4b24bf3091afc" + hash: "95b6ce7c01461847a3f7aff88aa8ad9d" } Key { type: 7 @@ -1022,15 +1022,15 @@ VisualTest { } Frame { msec: 2448 - hash: "6e1a97a3e491f24e34d4b24bf3091afc" + hash: "95b6ce7c01461847a3f7aff88aa8ad9d" } Frame { msec: 2464 - hash: "6e1a97a3e491f24e34d4b24bf3091afc" + hash: "95b6ce7c01461847a3f7aff88aa8ad9d" } Frame { msec: 2480 - hash: "6e1a97a3e491f24e34d4b24bf3091afc" + hash: "95b6ce7c01461847a3f7aff88aa8ad9d" } Key { type: 6 @@ -1042,19 +1042,19 @@ VisualTest { } Frame { msec: 2496 - hash: "12eb5152181e0bff993dc1be087969f9" + hash: "81872138f3cafb1cf06009df77af1461" } Frame { msec: 2512 - hash: "12eb5152181e0bff993dc1be087969f9" + hash: "81872138f3cafb1cf06009df77af1461" } Frame { msec: 2528 - hash: "12eb5152181e0bff993dc1be087969f9" + hash: "81872138f3cafb1cf06009df77af1461" } Frame { msec: 2544 - hash: "12eb5152181e0bff993dc1be087969f9" + hash: "81872138f3cafb1cf06009df77af1461" } Key { type: 7 @@ -1066,27 +1066,27 @@ VisualTest { } Frame { msec: 2560 - hash: "12eb5152181e0bff993dc1be087969f9" + hash: "81872138f3cafb1cf06009df77af1461" } Frame { msec: 2576 - hash: "12eb5152181e0bff993dc1be087969f9" + hash: "81872138f3cafb1cf06009df77af1461" } Frame { msec: 2592 - hash: "12eb5152181e0bff993dc1be087969f9" + hash: "81872138f3cafb1cf06009df77af1461" } Frame { msec: 2608 - hash: "12eb5152181e0bff993dc1be087969f9" + hash: "81872138f3cafb1cf06009df77af1461" } Frame { msec: 2624 - hash: "12eb5152181e0bff993dc1be087969f9" + hash: "81872138f3cafb1cf06009df77af1461" } Frame { msec: 2640 - hash: "12eb5152181e0bff993dc1be087969f9" + hash: "81872138f3cafb1cf06009df77af1461" } Key { type: 6 @@ -1098,19 +1098,19 @@ VisualTest { } Frame { msec: 2656 - hash: "8a77655cae6c04453e6dc8a2321d1a32" + hash: "dfa35c08894d7ed748b8846fa3ce8fac" } Frame { msec: 2672 - hash: "8a77655cae6c04453e6dc8a2321d1a32" + hash: "dfa35c08894d7ed748b8846fa3ce8fac" } Frame { msec: 2688 - hash: "8a77655cae6c04453e6dc8a2321d1a32" + hash: "dfa35c08894d7ed748b8846fa3ce8fac" } Frame { msec: 2704 - hash: "8a77655cae6c04453e6dc8a2321d1a32" + hash: "dfa35c08894d7ed748b8846fa3ce8fac" } Key { type: 7 @@ -1122,15 +1122,15 @@ VisualTest { } Frame { msec: 2720 - hash: "8a77655cae6c04453e6dc8a2321d1a32" + hash: "dfa35c08894d7ed748b8846fa3ce8fac" } Frame { msec: 2736 - hash: "8a77655cae6c04453e6dc8a2321d1a32" + hash: "dfa35c08894d7ed748b8846fa3ce8fac" } Frame { msec: 2752 - hash: "8a77655cae6c04453e6dc8a2321d1a32" + hash: "dfa35c08894d7ed748b8846fa3ce8fac" } Key { type: 6 @@ -1142,23 +1142,23 @@ VisualTest { } Frame { msec: 2768 - hash: "c42349fe4b75e5d56a04ec6462cb0780" + hash: "9decac3d9243bebdc7699fcb77a31f21" } Frame { msec: 2784 - hash: "c42349fe4b75e5d56a04ec6462cb0780" + hash: "9decac3d9243bebdc7699fcb77a31f21" } Frame { msec: 2800 - hash: "c42349fe4b75e5d56a04ec6462cb0780" + hash: "9decac3d9243bebdc7699fcb77a31f21" } Frame { msec: 2816 - hash: "c42349fe4b75e5d56a04ec6462cb0780" + hash: "9decac3d9243bebdc7699fcb77a31f21" } Frame { msec: 2832 - hash: "c42349fe4b75e5d56a04ec6462cb0780" + hash: "9decac3d9243bebdc7699fcb77a31f21" } Key { type: 6 @@ -1178,19 +1178,19 @@ VisualTest { } Frame { msec: 2848 - hash: "973c163b1ea4e6189e788b7f37013185" + hash: "6a1bb7dd22f3e090008ba265c30f9c2d" } Frame { msec: 2864 - hash: "973c163b1ea4e6189e788b7f37013185" + hash: "6a1bb7dd22f3e090008ba265c30f9c2d" } Frame { msec: 2880 - image: "wrap.2.png" + hash: "6a1bb7dd22f3e090008ba265c30f9c2d" } Frame { msec: 2896 - hash: "973c163b1ea4e6189e788b7f37013185" + image: "wrap.3.png" } Key { type: 6 @@ -1202,11 +1202,11 @@ VisualTest { } Frame { msec: 2912 - hash: "a847abc1ef9a41a741f8dce6bc68e6a1" + hash: "ee39b3014e140aff2f974f3b919f85f4" } Frame { msec: 2928 - hash: "a847abc1ef9a41a741f8dce6bc68e6a1" + hash: "ee39b3014e140aff2f974f3b919f85f4" } Key { type: 7 @@ -1218,11 +1218,11 @@ VisualTest { } Frame { msec: 2944 - hash: "a847abc1ef9a41a741f8dce6bc68e6a1" + hash: "ee39b3014e140aff2f974f3b919f85f4" } Frame { msec: 2960 - hash: "a847abc1ef9a41a741f8dce6bc68e6a1" + hash: "ee39b3014e140aff2f974f3b919f85f4" } Key { type: 7 @@ -1234,35 +1234,35 @@ VisualTest { } Frame { msec: 2976 - hash: "a847abc1ef9a41a741f8dce6bc68e6a1" + hash: "ee39b3014e140aff2f974f3b919f85f4" } Frame { msec: 2992 - hash: "a847abc1ef9a41a741f8dce6bc68e6a1" + hash: "ee39b3014e140aff2f974f3b919f85f4" } Frame { msec: 3008 - hash: "a847abc1ef9a41a741f8dce6bc68e6a1" + hash: "ee39b3014e140aff2f974f3b919f85f4" } Frame { msec: 3024 - hash: "a847abc1ef9a41a741f8dce6bc68e6a1" + hash: "ee39b3014e140aff2f974f3b919f85f4" } Frame { msec: 3040 - hash: "a847abc1ef9a41a741f8dce6bc68e6a1" + hash: "ee39b3014e140aff2f974f3b919f85f4" } Frame { msec: 3056 - hash: "a847abc1ef9a41a741f8dce6bc68e6a1" + hash: "ee39b3014e140aff2f974f3b919f85f4" } Frame { msec: 3072 - hash: "a847abc1ef9a41a741f8dce6bc68e6a1" + hash: "ee39b3014e140aff2f974f3b919f85f4" } Frame { msec: 3088 - hash: "a847abc1ef9a41a741f8dce6bc68e6a1" + hash: "ee39b3014e140aff2f974f3b919f85f4" } Key { type: 6 @@ -1274,23 +1274,23 @@ VisualTest { } Frame { msec: 3104 - hash: "93d3b56a5070a84164169ab1869d6ed0" + hash: "d448179ec6bba91f3f70be821710a8c7" } Frame { msec: 3120 - hash: "93d3b56a5070a84164169ab1869d6ed0" + hash: "d448179ec6bba91f3f70be821710a8c7" } Frame { msec: 3136 - hash: "93d3b56a5070a84164169ab1869d6ed0" + hash: "d448179ec6bba91f3f70be821710a8c7" } Frame { msec: 3152 - hash: "93d3b56a5070a84164169ab1869d6ed0" + hash: "d448179ec6bba91f3f70be821710a8c7" } Frame { msec: 3168 - hash: "93d3b56a5070a84164169ab1869d6ed0" + hash: "d448179ec6bba91f3f70be821710a8c7" } Key { type: 7 @@ -1302,23 +1302,23 @@ VisualTest { } Frame { msec: 3184 - hash: "93d3b56a5070a84164169ab1869d6ed0" + hash: "d448179ec6bba91f3f70be821710a8c7" } Frame { msec: 3200 - hash: "93d3b56a5070a84164169ab1869d6ed0" + hash: "d448179ec6bba91f3f70be821710a8c7" } Frame { msec: 3216 - hash: "93d3b56a5070a84164169ab1869d6ed0" + hash: "d448179ec6bba91f3f70be821710a8c7" } Frame { msec: 3232 - hash: "93d3b56a5070a84164169ab1869d6ed0" + hash: "d448179ec6bba91f3f70be821710a8c7" } Frame { msec: 3248 - hash: "93d3b56a5070a84164169ab1869d6ed0" + hash: "d448179ec6bba91f3f70be821710a8c7" } Key { type: 6 @@ -1330,15 +1330,15 @@ VisualTest { } Frame { msec: 3264 - hash: "60480b61f29a34c790da8fe1bfd98755" + hash: "e30b5aa9b5d08fba758fe781812f096d" } Frame { msec: 3280 - hash: "60480b61f29a34c790da8fe1bfd98755" + hash: "e30b5aa9b5d08fba758fe781812f096d" } Frame { msec: 3296 - hash: "60480b61f29a34c790da8fe1bfd98755" + hash: "e30b5aa9b5d08fba758fe781812f096d" } Key { type: 7 @@ -1350,15 +1350,15 @@ VisualTest { } Frame { msec: 3312 - hash: "60480b61f29a34c790da8fe1bfd98755" + hash: "e30b5aa9b5d08fba758fe781812f096d" } Frame { msec: 3328 - hash: "60480b61f29a34c790da8fe1bfd98755" + hash: "e30b5aa9b5d08fba758fe781812f096d" } Frame { msec: 3344 - hash: "60480b61f29a34c790da8fe1bfd98755" + hash: "e30b5aa9b5d08fba758fe781812f096d" } Key { type: 6 @@ -1370,23 +1370,23 @@ VisualTest { } Frame { msec: 3360 - hash: "c6f235590c03170581dfabc07bf9c20b" + hash: "ba932735c5079ad6562050b6e332d2e7" } Frame { msec: 3376 - hash: "c6f235590c03170581dfabc07bf9c20b" + hash: "ba932735c5079ad6562050b6e332d2e7" } Frame { msec: 3392 - hash: "c6f235590c03170581dfabc07bf9c20b" + hash: "ba932735c5079ad6562050b6e332d2e7" } Frame { msec: 3408 - hash: "c6f235590c03170581dfabc07bf9c20b" + hash: "ba932735c5079ad6562050b6e332d2e7" } Frame { msec: 3424 - hash: "c6f235590c03170581dfabc07bf9c20b" + hash: "ba932735c5079ad6562050b6e332d2e7" } Key { type: 7 @@ -1398,15 +1398,15 @@ VisualTest { } Frame { msec: 3440 - hash: "c6f235590c03170581dfabc07bf9c20b" + hash: "ba932735c5079ad6562050b6e332d2e7" } Frame { msec: 3456 - hash: "c6f235590c03170581dfabc07bf9c20b" + hash: "ba932735c5079ad6562050b6e332d2e7" } Frame { msec: 3472 - hash: "c6f235590c03170581dfabc07bf9c20b" + hash: "ba932735c5079ad6562050b6e332d2e7" } Key { type: 6 @@ -1418,19 +1418,19 @@ VisualTest { } Frame { msec: 3488 - hash: "10a29af771a5c17b1443b10abd45c9aa" + hash: "01dacbcc21c541e0cbf272ee01292b7c" } Frame { msec: 3504 - hash: "10a29af771a5c17b1443b10abd45c9aa" + hash: "01dacbcc21c541e0cbf272ee01292b7c" } Frame { msec: 3520 - hash: "10a29af771a5c17b1443b10abd45c9aa" + hash: "01dacbcc21c541e0cbf272ee01292b7c" } Frame { msec: 3536 - hash: "10a29af771a5c17b1443b10abd45c9aa" + hash: "01dacbcc21c541e0cbf272ee01292b7c" } Key { type: 7 @@ -1442,11 +1442,11 @@ VisualTest { } Frame { msec: 3552 - hash: "10a29af771a5c17b1443b10abd45c9aa" + hash: "01dacbcc21c541e0cbf272ee01292b7c" } Frame { msec: 3568 - hash: "10a29af771a5c17b1443b10abd45c9aa" + hash: "01dacbcc21c541e0cbf272ee01292b7c" } Key { type: 6 @@ -1458,27 +1458,27 @@ VisualTest { } Frame { msec: 3584 - hash: "68449dbef331f4bdf4c4bc443ec98e89" + hash: "7b493045fb2b7373525ce570d86542d7" } Frame { msec: 3600 - hash: "68449dbef331f4bdf4c4bc443ec98e89" + hash: "7b493045fb2b7373525ce570d86542d7" } Frame { msec: 3616 - hash: "68449dbef331f4bdf4c4bc443ec98e89" + hash: "7b493045fb2b7373525ce570d86542d7" } Frame { msec: 3632 - hash: "68449dbef331f4bdf4c4bc443ec98e89" + hash: "7b493045fb2b7373525ce570d86542d7" } Frame { msec: 3648 - hash: "68449dbef331f4bdf4c4bc443ec98e89" + hash: "7b493045fb2b7373525ce570d86542d7" } Frame { msec: 3664 - hash: "68449dbef331f4bdf4c4bc443ec98e89" + hash: "7b493045fb2b7373525ce570d86542d7" } Key { type: 6 @@ -1490,7 +1490,7 @@ VisualTest { } Frame { msec: 3680 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Key { type: 7 @@ -1502,23 +1502,23 @@ VisualTest { } Frame { msec: 3696 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Frame { msec: 3712 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Frame { msec: 3728 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Frame { msec: 3744 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Frame { msec: 3760 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Key { type: 7 @@ -1530,39 +1530,39 @@ VisualTest { } Frame { msec: 3776 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Frame { msec: 3792 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Frame { msec: 3808 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Frame { msec: 3824 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Frame { msec: 3840 - image: "wrap.3.png" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Frame { msec: 3856 - hash: "5c773045e3ccab933749a3f6a74dc25a" + image: "wrap.4.png" } Frame { msec: 3872 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Frame { msec: 3888 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Frame { msec: 3904 - hash: "5c773045e3ccab933749a3f6a74dc25a" + hash: "7c11ac5b8dfee4708b7b49c2a1a7db57" } Key { type: 6 @@ -1574,23 +1574,23 @@ VisualTest { } Frame { msec: 3920 - hash: "f1ef12790a0548cfaa4176680566680d" + hash: "46a6db4f63965f019fc1966e2a6caf98" } Frame { msec: 3936 - hash: "f1ef12790a0548cfaa4176680566680d" + hash: "46a6db4f63965f019fc1966e2a6caf98" } Frame { msec: 3952 - hash: "f1ef12790a0548cfaa4176680566680d" + hash: "46a6db4f63965f019fc1966e2a6caf98" } Frame { msec: 3968 - hash: "f1ef12790a0548cfaa4176680566680d" + hash: "46a6db4f63965f019fc1966e2a6caf98" } Frame { msec: 3984 - hash: "f1ef12790a0548cfaa4176680566680d" + hash: "46a6db4f63965f019fc1966e2a6caf98" } Key { type: 7 @@ -1602,11 +1602,11 @@ VisualTest { } Frame { msec: 4000 - hash: "f1ef12790a0548cfaa4176680566680d" + hash: "46a6db4f63965f019fc1966e2a6caf98" } Frame { msec: 4016 - hash: "f1ef12790a0548cfaa4176680566680d" + hash: "46a6db4f63965f019fc1966e2a6caf98" } Key { type: 6 @@ -1618,15 +1618,15 @@ VisualTest { } Frame { msec: 4032 - hash: "22575a03b4c58e4391845d495c2ca48b" + hash: "abc8cf4650aa07a9a26ad04a082bc269" } Frame { msec: 4048 - hash: "22575a03b4c58e4391845d495c2ca48b" + hash: "abc8cf4650aa07a9a26ad04a082bc269" } Frame { msec: 4064 - hash: "22575a03b4c58e4391845d495c2ca48b" + hash: "abc8cf4650aa07a9a26ad04a082bc269" } Key { type: 7 @@ -1638,7 +1638,7 @@ VisualTest { } Frame { msec: 4080 - hash: "22575a03b4c58e4391845d495c2ca48b" + hash: "abc8cf4650aa07a9a26ad04a082bc269" } Key { type: 6 @@ -1650,19 +1650,19 @@ VisualTest { } Frame { msec: 4096 - hash: "3243dc4562f073136782415365b7b42d" + hash: "23ee54c88cd70b6c66137ce32702cf01" } Frame { msec: 4112 - hash: "3243dc4562f073136782415365b7b42d" + hash: "23ee54c88cd70b6c66137ce32702cf01" } Frame { msec: 4128 - hash: "3243dc4562f073136782415365b7b42d" + hash: "23ee54c88cd70b6c66137ce32702cf01" } Frame { msec: 4144 - hash: "3243dc4562f073136782415365b7b42d" + hash: "23ee54c88cd70b6c66137ce32702cf01" } Key { type: 7 @@ -1674,15 +1674,15 @@ VisualTest { } Frame { msec: 4160 - hash: "3243dc4562f073136782415365b7b42d" + hash: "23ee54c88cd70b6c66137ce32702cf01" } Frame { msec: 4176 - hash: "3243dc4562f073136782415365b7b42d" + hash: "23ee54c88cd70b6c66137ce32702cf01" } Frame { msec: 4192 - hash: "3243dc4562f073136782415365b7b42d" + hash: "23ee54c88cd70b6c66137ce32702cf01" } Key { type: 6 @@ -1694,23 +1694,23 @@ VisualTest { } Frame { msec: 4208 - hash: "44cd04d2a2bf12654cb96ec9af92b9aa" + hash: "dc0899573a995421b57a6689d300a421" } Frame { msec: 4224 - hash: "44cd04d2a2bf12654cb96ec9af92b9aa" + hash: "dc0899573a995421b57a6689d300a421" } Frame { msec: 4240 - hash: "44cd04d2a2bf12654cb96ec9af92b9aa" + hash: "dc0899573a995421b57a6689d300a421" } Frame { msec: 4256 - hash: "44cd04d2a2bf12654cb96ec9af92b9aa" + hash: "dc0899573a995421b57a6689d300a421" } Frame { msec: 4272 - hash: "44cd04d2a2bf12654cb96ec9af92b9aa" + hash: "dc0899573a995421b57a6689d300a421" } Key { type: 6 @@ -1722,7 +1722,7 @@ VisualTest { } Frame { msec: 4288 - hash: "cf1eb35cb9a793769303abee0a2fcad8" + hash: "4d42c63a0324c1573818ebb081d8927f" } Key { type: 7 @@ -1734,15 +1734,15 @@ VisualTest { } Frame { msec: 4304 - hash: "cf1eb35cb9a793769303abee0a2fcad8" + hash: "4d42c63a0324c1573818ebb081d8927f" } Frame { msec: 4320 - hash: "cf1eb35cb9a793769303abee0a2fcad8" + hash: "4d42c63a0324c1573818ebb081d8927f" } Frame { msec: 4336 - hash: "cf1eb35cb9a793769303abee0a2fcad8" + hash: "4d42c63a0324c1573818ebb081d8927f" } Key { type: 7 @@ -1754,23 +1754,23 @@ VisualTest { } Frame { msec: 4352 - hash: "cf1eb35cb9a793769303abee0a2fcad8" + hash: "4d42c63a0324c1573818ebb081d8927f" } Frame { msec: 4368 - hash: "cf1eb35cb9a793769303abee0a2fcad8" + hash: "4d42c63a0324c1573818ebb081d8927f" } Frame { msec: 4384 - hash: "cf1eb35cb9a793769303abee0a2fcad8" + hash: "4d42c63a0324c1573818ebb081d8927f" } Frame { msec: 4400 - hash: "cf1eb35cb9a793769303abee0a2fcad8" + hash: "4d42c63a0324c1573818ebb081d8927f" } Frame { msec: 4416 - hash: "cf1eb35cb9a793769303abee0a2fcad8" + hash: "4d42c63a0324c1573818ebb081d8927f" } Key { type: 6 @@ -1782,15 +1782,15 @@ VisualTest { } Frame { msec: 4432 - hash: "252838a495502ba5b836ffd1b20711f4" + hash: "9d2239e4b71da17a6f8f2ef979f4bf85" } Frame { msec: 4448 - hash: "252838a495502ba5b836ffd1b20711f4" + hash: "9d2239e4b71da17a6f8f2ef979f4bf85" } Frame { msec: 4464 - hash: "252838a495502ba5b836ffd1b20711f4" + hash: "9d2239e4b71da17a6f8f2ef979f4bf85" } Key { type: 7 @@ -1802,23 +1802,23 @@ VisualTest { } Frame { msec: 4480 - hash: "252838a495502ba5b836ffd1b20711f4" + hash: "9d2239e4b71da17a6f8f2ef979f4bf85" } Frame { msec: 4496 - hash: "252838a495502ba5b836ffd1b20711f4" + hash: "9d2239e4b71da17a6f8f2ef979f4bf85" } Frame { msec: 4512 - hash: "252838a495502ba5b836ffd1b20711f4" + hash: "9d2239e4b71da17a6f8f2ef979f4bf85" } Frame { msec: 4528 - hash: "252838a495502ba5b836ffd1b20711f4" + hash: "9d2239e4b71da17a6f8f2ef979f4bf85" } Frame { msec: 4544 - hash: "252838a495502ba5b836ffd1b20711f4" + hash: "9d2239e4b71da17a6f8f2ef979f4bf85" } Key { type: 6 @@ -1830,19 +1830,19 @@ VisualTest { } Frame { msec: 4560 - hash: "4010bb0f50630f067974e6ddb3177693" + hash: "289059d77547c9ec548b33d8bbe9fca9" } Frame { msec: 4576 - hash: "4010bb0f50630f067974e6ddb3177693" + hash: "289059d77547c9ec548b33d8bbe9fca9" } Frame { msec: 4592 - hash: "4010bb0f50630f067974e6ddb3177693" + hash: "289059d77547c9ec548b33d8bbe9fca9" } Frame { msec: 4608 - hash: "4010bb0f50630f067974e6ddb3177693" + hash: "289059d77547c9ec548b33d8bbe9fca9" } Key { type: 7 @@ -1854,19 +1854,19 @@ VisualTest { } Frame { msec: 4624 - hash: "4010bb0f50630f067974e6ddb3177693" + hash: "289059d77547c9ec548b33d8bbe9fca9" } Frame { msec: 4640 - hash: "4010bb0f50630f067974e6ddb3177693" + hash: "289059d77547c9ec548b33d8bbe9fca9" } Frame { msec: 4656 - hash: "4010bb0f50630f067974e6ddb3177693" + hash: "289059d77547c9ec548b33d8bbe9fca9" } Frame { msec: 4672 - hash: "4010bb0f50630f067974e6ddb3177693" + hash: "289059d77547c9ec548b33d8bbe9fca9" } Key { type: 6 @@ -1878,19 +1878,19 @@ VisualTest { } Frame { msec: 4688 - hash: "14dc6ee8cd3b4747650f2a458b42a6e3" + hash: "4b60bfb67c5007b4054241e581ce92ac" } Frame { msec: 4704 - hash: "14dc6ee8cd3b4747650f2a458b42a6e3" + hash: "4b60bfb67c5007b4054241e581ce92ac" } Frame { msec: 4720 - hash: "14dc6ee8cd3b4747650f2a458b42a6e3" + hash: "4b60bfb67c5007b4054241e581ce92ac" } Frame { msec: 4736 - hash: "14dc6ee8cd3b4747650f2a458b42a6e3" + hash: "4b60bfb67c5007b4054241e581ce92ac" } Key { type: 7 @@ -1902,15 +1902,15 @@ VisualTest { } Frame { msec: 4752 - hash: "14dc6ee8cd3b4747650f2a458b42a6e3" + hash: "4b60bfb67c5007b4054241e581ce92ac" } Frame { msec: 4768 - hash: "14dc6ee8cd3b4747650f2a458b42a6e3" + hash: "4b60bfb67c5007b4054241e581ce92ac" } Frame { msec: 4784 - hash: "14dc6ee8cd3b4747650f2a458b42a6e3" + hash: "4b60bfb67c5007b4054241e581ce92ac" } Key { type: 6 @@ -1922,11 +1922,11 @@ VisualTest { } Frame { msec: 4800 - image: "wrap.4.png" + hash: "dbabce81e44f912d6a30ff4cc3289da8" } Frame { msec: 4816 - hash: "7d4a56854715772c92706522d2dcac56" + image: "wrap.5.png" } Key { type: 7 @@ -1938,19 +1938,19 @@ VisualTest { } Frame { msec: 4832 - hash: "7d4a56854715772c92706522d2dcac56" + hash: "dbabce81e44f912d6a30ff4cc3289da8" } Frame { msec: 4848 - hash: "7d4a56854715772c92706522d2dcac56" + hash: "dbabce81e44f912d6a30ff4cc3289da8" } Frame { msec: 4864 - hash: "7d4a56854715772c92706522d2dcac56" + hash: "dbabce81e44f912d6a30ff4cc3289da8" } Frame { msec: 4880 - hash: "7d4a56854715772c92706522d2dcac56" + hash: "dbabce81e44f912d6a30ff4cc3289da8" } Key { type: 6 @@ -1962,19 +1962,19 @@ VisualTest { } Frame { msec: 4896 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 4912 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 4928 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 4944 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Key { type: 7 @@ -1986,482 +1986,482 @@ VisualTest { } Frame { msec: 4960 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 4976 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 4992 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5008 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5024 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5040 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5056 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5072 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5088 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5104 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5120 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5136 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5152 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5168 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5184 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5200 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5216 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5232 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5248 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5264 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5280 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5296 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5312 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5328 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5344 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5360 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5376 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5392 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5408 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5424 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5440 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5456 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5472 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5488 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5504 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5520 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5536 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5552 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5568 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5584 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5600 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5616 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5632 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5648 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5664 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5680 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5696 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5712 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5728 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5744 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5760 - image: "wrap.5.png" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5776 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + image: "wrap.6.png" } Frame { msec: 5792 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5808 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5824 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5840 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5856 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5872 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5888 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5904 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5920 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5936 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5952 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5968 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 5984 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6000 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6016 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6032 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6048 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6064 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6080 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6096 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6112 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6128 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6144 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6160 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6176 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6192 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6208 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6224 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6240 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6256 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6272 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6288 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6304 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6320 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6336 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6352 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6368 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6384 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6400 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6416 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6432 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6448 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6464 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6480 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6496 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6512 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6528 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6544 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6560 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6576 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6592 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6608 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6624 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6640 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6656 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6672 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6688 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6704 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6720 - image: "wrap.6.png" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6736 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + image: "wrap.7.png" } Frame { msec: 6752 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6768 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6784 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6800 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6816 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6832 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6848 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } Frame { msec: 6864 - hash: "0c75eb65cf70c883ee4dcd2f7ee092ce" + hash: "e9633d239e0a9ca008ed033565322c24" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.0.png Binary files differindex 1d96795..b65bc37 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.1.png Binary files differindex a3a9bfa..ebaa011 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.1.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.2.png Binary files differindex b50028c..57ee370 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.2.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.2.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.3.png Binary files differindex 1c4876e..4b70b4a 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.3.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.3.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.4.png Binary files differindex 9d110cb..18ae753 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.4.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.4.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.5.png Binary files differindex 9289dc0..2b463f0 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.5.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.5.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.qml index bd4af6a..6b8ba9b 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/cursorDelegate.qml @@ -6,115 +6,115 @@ VisualTest { } Frame { msec: 16 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + image: "cursorDelegate.0.png" } Frame { msec: 32 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 48 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 64 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 80 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 96 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 112 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 128 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 144 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 160 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 176 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 192 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 208 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 224 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 240 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 256 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 272 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 288 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 304 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 320 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 336 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 352 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 368 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 384 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 400 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 416 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 432 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Frame { msec: 448 - hash: "c0ffaa97d1be341fafafc18762f5cb67" + hash: "a7af287992f894f9cf76e834b922f5b3" } Key { type: 6 @@ -126,23 +126,23 @@ VisualTest { } Frame { msec: 464 - hash: "eadbfc95de35a0d1880809b2bbaec562" + hash: "74b6ebfbe8246f0b2b43f88d9f6028d1" } Frame { msec: 480 - hash: "eadbfc95de35a0d1880809b2bbaec562" + hash: "74b6ebfbe8246f0b2b43f88d9f6028d1" } Frame { msec: 496 - hash: "eadbfc95de35a0d1880809b2bbaec562" + hash: "74b6ebfbe8246f0b2b43f88d9f6028d1" } Frame { msec: 512 - hash: "eadbfc95de35a0d1880809b2bbaec562" + hash: "74b6ebfbe8246f0b2b43f88d9f6028d1" } Frame { msec: 528 - hash: "227cbfe5fc07906060951e19ebb3ad30" + hash: "0f0e9ced5d2f9f20a2b5f1b5bde0be62" } Key { type: 7 @@ -154,19 +154,19 @@ VisualTest { } Frame { msec: 544 - hash: "066256a59ad290b3725193955e3c48a6" + hash: "bec7fff73d6d869d2d15b3ea35fa0605" } Frame { msec: 560 - hash: "6709f77cbcde82886d1c5a07f06b55a5" + hash: "e3afffc91ed0a78a0022421e6d1bd0d2" } Frame { msec: 576 - hash: "da0028083048837b4756a2d3ff468378" + hash: "45f44411121d335ed7a844803313e566" } Frame { msec: 592 - hash: "5f265351bed34357d603794d868dbcbc" + hash: "b951279da53fe76ab62ca9837ecbd7a6" } Key { type: 6 @@ -178,19 +178,19 @@ VisualTest { } Frame { msec: 608 - hash: "3b8030849229e90b69842219e8b2d3f1" + hash: "b5678202f08099b09ce88cef5eeea20a" } Frame { msec: 624 - hash: "0b08356d9b00313b2d892175dd93095a" + hash: "93f6663d083a2bd3b4079241f3fc0159" } Frame { msec: 640 - hash: "4780555b277d65e3e4c0c60817b63eb4" + hash: "8c802943d3030214cb7af7fd1db1c813" } Frame { msec: 656 - hash: "6b31c8f0569d01d97a371423a0f379c0" + hash: "01396c0332523ba2a8971a99c6962516" } Key { type: 7 @@ -202,19 +202,19 @@ VisualTest { } Frame { msec: 672 - hash: "e9a5695636f7957d33f1c902a37a605d" + hash: "fc5dd253219d1a8aca7fcf31be0e7d69" } Frame { msec: 688 - hash: "27a783cd4ef5caab382721a98f7966da" + hash: "545071a58d8db4f73e1cb6981e9ec62e" } Frame { msec: 704 - hash: "c50598c0a5f8d501fd3ac9cddecee506" + hash: "13bc1aa8ce4fc3d9ba9a6c3046e14c92" } Frame { msec: 720 - hash: "2a2d0e202bc3bf7991409391a2ce2934" + hash: "ba7d13545fb7384dcb3edd32979c9442" } Key { type: 6 @@ -226,19 +226,19 @@ VisualTest { } Frame { msec: 736 - hash: "2d97b8503c739b210615971ad08c2714" + hash: "8f9e1abd8eb2d072907b910630e93c9a" } Frame { msec: 752 - hash: "f27fd7f1d8c6dfb7393ab0d39ed5cd02" + hash: "003d0e4a01909aa51cb1967738383ede" } Frame { msec: 768 - hash: "32d256543e3e1ba722860e5143af9f09" + hash: "223cce18cef44b3945d0a1d45554c5c1" } Frame { msec: 784 - hash: "9123b724613ef4d3d8431afde6e9eb6b" + hash: "fcd7f862bdce75d7e6df574ff0146ca6" } Key { type: 7 @@ -250,23 +250,23 @@ VisualTest { } Frame { msec: 800 - hash: "be5249a7effc94ec2be3d6053eba7b45" + hash: "21f5e3696987222106b00f0efe3bb165" } Frame { msec: 816 - hash: "57f2c119c9eca3d1e4acd2f775af5207" + hash: "6380ce26303da8180dff8fcc88caaf1d" } Frame { msec: 832 - hash: "23b79a2630448e99f27a657fd9789354" + hash: "52bfa995405a3d6523d97b2c36428d89" } Frame { msec: 848 - hash: "c8faab137cbc014aef5e3212889d00b8" + hash: "7169d69c2adb50bf80c075e30eb8e965" } Frame { msec: 864 - hash: "c9616f6fde5d6a8ecf346ece9952f09b" + hash: "f5ad55885a4fc2b47a5420e9e0d7c59c" } Key { type: 6 @@ -278,15 +278,15 @@ VisualTest { } Frame { msec: 880 - hash: "11a861ca71d789e3d97d599608a793be" + hash: "831081f829df0a226c75389bc457a768" } Frame { msec: 896 - hash: "5a6c57df0c33b83985aeb194f291ad6c" + hash: "2306a9c9cb570bc922f120f2f63e26e4" } Frame { msec: 912 - hash: "2c047359db6946cb740462b0d6c695be" + hash: "23d6728fe34436e53a449e26962c3ad5" } Key { type: 7 @@ -298,23 +298,23 @@ VisualTest { } Frame { msec: 928 - hash: "d0bb54caf661be021be8fe2691de24e8" + hash: "db2de48337701cbb36a14e32f1846683" } Frame { msec: 944 - hash: "80f0a60239f4d81b18b9cb3e80faf346" + hash: "04bb83a694d293fd4ba956fc79db79e7" } Frame { msec: 960 - image: "cursorDelegate.0.png" + hash: "7a1a71b2d7e42934163990d5c011c464" } Frame { msec: 976 - hash: "c526315dd5eec117266c68a7b6b64a3f" + image: "cursorDelegate.1.png" } Frame { msec: 992 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Key { type: 6 @@ -326,15 +326,15 @@ VisualTest { } Frame { msec: 1008 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 1024 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 1040 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Key { type: 7 @@ -346,23 +346,23 @@ VisualTest { } Frame { msec: 1056 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 1072 - hash: "5f6cc0c97e4748aeeaa4a00c8a8c8928" + hash: "20f1db4245d1689e980371d7b1bcb903" } Frame { msec: 1088 - hash: "b1d71160d9a8a8edeb4cf7e00df36cfc" + hash: "6a3629223845d352ba02e3ad8569f698" } Frame { msec: 1104 - hash: "5bfd4269145cc0962e0fa9c294e8f5aa" + hash: "ee3dd4535fcf24249c41ebebb5f4fca6" } Frame { msec: 1120 - hash: "4e22c95802d83f0099017c6be9d93214" + hash: "7bf5df6a807da0c8d316420ced34e267" } Key { type: 6 @@ -374,23 +374,23 @@ VisualTest { } Frame { msec: 1136 - hash: "0f31d8f4867af7c2f4fb8e86aa077afd" + hash: "4f5ce98428d5fba11a6322f88cab14c3" } Frame { msec: 1152 - hash: "21a552133320008a4d4f77752a3cfb55" + hash: "14406e8d0e120a0f30864fa8793f2e8d" } Frame { msec: 1168 - hash: "3a30a4a785de21da0ff939e303202a81" + hash: "6e891d584ce4f636708cee1111193878" } Frame { msec: 1184 - hash: "b0e3ed2468538aacec354cb96d90c362" + hash: "cd6bbc72108cfffd043a31d0d3655851" } Frame { msec: 1200 - hash: "56bf6e3fe47e52046b443481fc17a3ec" + hash: "d4069e606ab2b10c90e6f567be462c10" } Key { type: 7 @@ -402,27 +402,27 @@ VisualTest { } Frame { msec: 1216 - hash: "ce80807cde9b902ebf33281fce50d9fb" + hash: "de8e00d6116b1aa900478a41c7ac78f1" } Frame { msec: 1232 - hash: "ed67b18b5f7b90d3bcd9f662e70dc7b8" + hash: "5a0c4e31eb9ecb2ffc9380d474861846" } Frame { msec: 1248 - hash: "930950ce5c6b12da47eea1b92d5176eb" + hash: "bbacdb359c6206b50a859169b106ec92" } Frame { msec: 1264 - hash: "5a2eeca0f1533d323cc4d7ffbb7ad6aa" + hash: "c4f4ed5a4842f1bbdda67a27d74fd5f4" } Frame { msec: 1280 - hash: "3f7f3ef2d4c1353dfe7027930505f4fd" + hash: "4deb6d0a83b14abef80f2bfa0491cbd0" } Frame { msec: 1296 - hash: "1a3a781ac5a1e90a4415944e0c54ea4e" + hash: "9caca7068ce5b289d70c39667e87a57f" } Key { type: 6 @@ -434,7 +434,7 @@ VisualTest { } Frame { msec: 1312 - hash: "d11dae0dd461fc82a73bf319905320d4" + hash: "e3ca7a8a860efc3811b8befe0a97d7f1" } Key { type: 6 @@ -446,19 +446,19 @@ VisualTest { } Frame { msec: 1328 - hash: "00957049ea51866138cfc33451f12e17" + hash: "ddb3dcb40f412c087d0ae21b5a8e47aa" } Frame { msec: 1344 - hash: "386847af9b173db7ef1554d2c85c748e" + hash: "325d8356c3e14467c54d03d096a3c1a5" } Frame { msec: 1360 - hash: "4b715060d29d6228a40217bc769fc140" + hash: "83f4c541b94180863e538e6c0a0e1ae0" } Frame { msec: 1376 - hash: "e58a9a3623afa08819351c22435ba03f" + hash: "16623dc34067800f3c7d6aabe1076927" } Key { type: 6 @@ -470,31 +470,31 @@ VisualTest { } Frame { msec: 1392 - hash: "6378e3faf5578818fc282de2a077da59" + hash: "e7319b080b621c5d176d6913cd9a8f7e" } Frame { msec: 1408 - hash: "07efb3687d29e65680e1cc831762348f" + hash: "353a200418b2cc0fbe925329224e658a" } Frame { msec: 1424 - hash: "5292e7c95b3c5b11e4088b5010984257" + hash: "98fd3f1fc108de1d78f07587f9e94ec4" } Frame { msec: 1440 - hash: "ffe95603f5fe9d63abb3b77c399c3b11" + hash: "f75fbda5a1403f7b1dd8e9d05e30ebeb" } Frame { msec: 1456 - hash: "ad7cb73893c27b69704c5b821738a3c1" + hash: "c2742ff9a04bbae6c6de13f08d514913" } Frame { msec: 1472 - hash: "e25971a61888ded93b651891ec9661b0" + hash: "a73b65c18ba10e6b6d310fc325d7ccb2" } Frame { msec: 1488 - hash: "80f90b3623bf34544438dd00abee7037" + hash: "bbe72b26a6f3f518a3c8b6cd9e8dbfd1" } Key { type: 7 @@ -506,51 +506,51 @@ VisualTest { } Frame { msec: 1504 - hash: "797dd70572e532d4acb374230b2c8efe" + hash: "679205439a359f3ffb05f631a1979596" } Frame { msec: 1520 - hash: "0673db1283d874a5711520f272572cf8" + hash: "7ada5f6a58a6a7f9a3b4199a412fccfd" } Frame { msec: 1536 - hash: "fbc8434912f08a93b5f884258bc754b7" + hash: "66749c0e5b97cec02f4908a709201604" } Frame { msec: 1552 - hash: "e41ebaf8f2114a6e8f38f731ea164e8a" + hash: "373bfac053f5cfeceabe2979f3e6f444" } Frame { msec: 1568 - hash: "d14bdb5bf1b4756166ecf6f3255bf3cc" + hash: "c7ab2bcdcd1b7fd25ac775c4dd382635" } Frame { msec: 1584 - hash: "5fb04569aa0e530b898a3c11725b947e" + hash: "3116b1a0cf1724bdae2cb71b9e15c73e" } Frame { msec: 1600 - hash: "03d24457fae160864fec985765f6d8d1" + hash: "9bdc4513c30bf2d1eca61317cc22ebaa" } Frame { msec: 1616 - hash: "56dad740bb9032d113a0dacbe986c9c0" + hash: "bbecf871ff569ac1020272c1ccc9aa14" } Frame { msec: 1632 - hash: "70d9acda83aa7db59780cf56f03e38ec" + hash: "beef5a84dcc7794cf0aabfc8b7f811bc" } Frame { msec: 1648 - hash: "a272e39bc1af0f4d1bab9c3f64e746e2" + hash: "2db7161f3591ef0b3f1e3cb2aa357c8b" } Frame { msec: 1664 - hash: "cf0379de604b9bb33b4456cb89e09afd" + hash: "b8b5ffef5e52a8ae94ddb5ec3328fa0e" } Frame { msec: 1680 - hash: "332e7a10d75c0d21a24fc8be34269629" + hash: "b65c4657ffb97a59455f2c3e23e3eb51" } Key { type: 6 @@ -562,31 +562,31 @@ VisualTest { } Frame { msec: 1696 - hash: "c07eb71d90e74393205338bc946c1e43" + hash: "9702981b8eb5f035f2f4da6708ad1a92" } Frame { msec: 1712 - hash: "984477de7c103ff3aebc2634785dce09" + hash: "a6f46dd869daf69c5a5a3c887ae35a05" } Frame { msec: 1728 - hash: "958f79dd7c57387042746df2ca01779e" + hash: "902c0f174b16b1b0d419c13220937e06" } Frame { msec: 1744 - hash: "53bb3f0718d6333ca40dc279b6300b85" + hash: "97a5ea7449a1f313d0d5e818edc29bf6" } Frame { msec: 1760 - hash: "c16877cb99997cc47f1fff5af1d22bd7" + hash: "d5b69638452ea2260861c17991fc8bef" } Frame { msec: 1776 - hash: "dea3e1eb6c72f0d37398e3e301a23c19" + hash: "5fa21c53d65b078d1b30830d99a0fbaf" } Frame { msec: 1792 - hash: "6bb7918f0794e6a7cbdb8847cdcf6e35" + hash: "668de1d2fa5780f5088637d919db0a0d" } Key { type: 7 @@ -598,19 +598,19 @@ VisualTest { } Frame { msec: 1808 - hash: "6858cd874abb1ed2fec34862f76044fa" + hash: "1989592754c28456aa917562fa3620bd" } Frame { msec: 1824 - hash: "47b546ea0d5b1d4573991d4738c37f4d" + hash: "89cd0ef7c366bbcee8e4404e9a2285a7" } Frame { msec: 1840 - hash: "6c9e636dee2bb5f2a72a2c08ab9fb970" + hash: "d062d4b132ee3086a00220d47e8907fc" } Frame { msec: 1856 - hash: "42c2b2a7f41c88ae7bb19403e2460a17" + hash: "198bd9fc763c70fb84bdae122f0bdd8b" } Key { type: 7 @@ -622,7 +622,7 @@ VisualTest { } Frame { msec: 1872 - hash: "80b7986af693b89dc4d4f9533dae85cb" + hash: "304f7f6cef5b09c09db1284b8095e9a2" } Key { type: 6 @@ -634,43 +634,43 @@ VisualTest { } Frame { msec: 1888 - hash: "631bea21dde9b7647f5843bc3513f3ba" + hash: "565003fef7b9810ffe95c3bbeeda5bbc" } Frame { msec: 1904 - hash: "cc40335abbea0d589180096f7d8f5426" + hash: "2fa85a19ba2bb7d04264a246c4982eb4" } Frame { msec: 1920 - image: "cursorDelegate.1.png" + hash: "7be44eca358924dc11c5123e406f1c99" } Frame { msec: 1936 - hash: "1c03b5384a889fe233eb1c6d14a55f36" + image: "cursorDelegate.2.png" } Frame { msec: 1952 - hash: "7762cc4e6cf681311f5296de698c950b" + hash: "a08502b3fbb425c7b1cad93e4bc5701e" } Frame { msec: 1968 - hash: "678eed1d1fec30b02156d690777397c1" + hash: "fba3a88b7fe6f7583daf07db78f3598c" } Frame { msec: 1984 - hash: "96f51fee5c7baf78a3465420d63a9e5f" + hash: "509d75aa56bcdb6718c18b56e138ef3c" } Frame { msec: 2000 - hash: "96f51fee5c7baf78a3465420d63a9e5f" + hash: "509d75aa56bcdb6718c18b56e138ef3c" } Frame { msec: 2016 - hash: "96f51fee5c7baf78a3465420d63a9e5f" + hash: "509d75aa56bcdb6718c18b56e138ef3c" } Frame { msec: 2032 - hash: "96f51fee5c7baf78a3465420d63a9e5f" + hash: "509d75aa56bcdb6718c18b56e138ef3c" } Key { type: 7 @@ -682,7 +682,7 @@ VisualTest { } Frame { msec: 2048 - hash: "96f51fee5c7baf78a3465420d63a9e5f" + hash: "509d75aa56bcdb6718c18b56e138ef3c" } Key { type: 7 @@ -694,27 +694,27 @@ VisualTest { } Frame { msec: 2064 - hash: "678eed1d1fec30b02156d690777397c1" + hash: "fba3a88b7fe6f7583daf07db78f3598c" } Frame { msec: 2080 - hash: "7762cc4e6cf681311f5296de698c950b" + hash: "a08502b3fbb425c7b1cad93e4bc5701e" } Frame { msec: 2096 - hash: "1c03b5384a889fe233eb1c6d14a55f36" + hash: "86ad5a9e06d19ea79e0fc9f7f36cdb0f" } Frame { msec: 2112 - hash: "2cd264339edc0338fc610e0d766425cc" + hash: "7be44eca358924dc11c5123e406f1c99" } Frame { msec: 2128 - hash: "cc40335abbea0d589180096f7d8f5426" + hash: "2fa85a19ba2bb7d04264a246c4982eb4" } Frame { msec: 2144 - hash: "631bea21dde9b7647f5843bc3513f3ba" + hash: "565003fef7b9810ffe95c3bbeeda5bbc" } Key { type: 6 @@ -726,27 +726,27 @@ VisualTest { } Frame { msec: 2160 - hash: "c5199c908df1f550d7c4f133eb926134" + hash: "39c81c6efdbc32b6e0378810404bef2c" } Frame { msec: 2176 - hash: "483eca22c50750e7591785ed60813d1f" + hash: "756f36cf41c2bae3a8a8716701e55e37" } Frame { msec: 2192 - hash: "4091de379d8f6ccc7f19ea39f6c7993a" + hash: "fb09d44a5a5b5b795d562512e9547301" } Frame { msec: 2208 - hash: "cd58c0d4f7248315a787542b0edcb4fb" + hash: "183538d04cf009f100a1e49a3229c143" } Frame { msec: 2224 - hash: "458895f9ede4d56e0b851c6ed124405d" + hash: "2ec91bfdb0f106a526f6bde3eb0ed7ce" } Frame { msec: 2240 - hash: "29a28a97fc78a1b01252b852fb0446e2" + hash: "f34175acc261ad79bc9d2083af04ae10" } Key { type: 7 @@ -758,31 +758,31 @@ VisualTest { } Frame { msec: 2256 - hash: "4fd9f22ad06e02b68319c298c2286e36" + hash: "39a59b2e9e0bee87d3ba50e1408bea1c" } Frame { msec: 2272 - hash: "a588e9dbeabd7519cd0cf2d26a123529" + hash: "db61ba19d56b69d148aeb182de596713" } Frame { msec: 2288 - hash: "bb74f706477e277284fad50752f078b5" + hash: "e0b07106a5adc1603788444d48b9c3db" } Frame { msec: 2304 - hash: "38f16a7deeaea6828edd15b00024fc19" + hash: "1dd5625fb6a0ddbaa3919a1702695e9c" } Frame { msec: 2320 - hash: "30c4aa33a6672f4df24186ad1e28bcf9" + hash: "d7d39e8f717bab17aaf8a12e4f9e0dfc" } Frame { msec: 2336 - hash: "7f2ac0854ddbcca94a2ad160ead5d4d3" + hash: "d7a226b40a049dee56755af9206246b4" } Frame { msec: 2352 - hash: "e1c083d0235ff5a2e002ce78f43009b0" + hash: "37d2d2830f6ae6bf0c8fb29c5d4f521a" } Key { type: 6 @@ -802,23 +802,23 @@ VisualTest { } Frame { msec: 2368 - hash: "eaee6483a2a4a0b09a8e40bb1785a498" + hash: "21008b3a5179e25f9b132a4c05b8b8c4" } Frame { msec: 2384 - hash: "26530bded6311640c4d3f6d1485fa7d3" + hash: "a6f05fb5206a456bea790ba7ba31868c" } Frame { msec: 2400 - hash: "e54102edbf6cc0c9a32b09858f760ee5" + hash: "754e2fca1b3ed5ee9875aafb1a0c62d3" } Frame { msec: 2416 - hash: "27434828de3ba8f6a3b83f042b70eb8b" + hash: "75d1ae9c60573f9e27cd7c2d1706cbfc" } Frame { msec: 2432 - hash: "fdf68e988b988d068ea78a5a09ef349e" + hash: "c78608cde907bc09760d858795b43bbf" } Key { type: 6 @@ -830,23 +830,23 @@ VisualTest { } Frame { msec: 2448 - hash: "0e1e9a2cf891cf65f30ead539becf408" + hash: "348438b012690f63956e6a865c4173c5" } Frame { msec: 2464 - hash: "46602c03632f6a47c9d523e1ea61baaf" + hash: "b0c970656fdb5af48efc4bf0e1879f36" } Frame { msec: 2480 - hash: "5c758ee2aa3f92b6506533f6d615bc20" + hash: "7291a68c8e790f58e2440dfbe896c36d" } Frame { msec: 2496 - hash: "25edbdaae72e03426c9dfa75c08c33e6" + hash: "9bcbf9f7b35987c3acbd80031a688279" } Frame { msec: 2512 - hash: "a4bd11f15594932b996a069f3098c596" + hash: "48a00bd3f844e863338898bd28d845a4" } Key { type: 7 @@ -858,23 +858,23 @@ VisualTest { } Frame { msec: 2528 - hash: "e4090b920ce2456149155f61fb586a6f" + hash: "dc5f63ee9e8d50f744f7b375a52e32c3" } Frame { msec: 2544 - hash: "ce71f4dc76f90fa300d715ed77e8a5a8" + hash: "f52d2f475a335a75fad0a0f84e812809" } Frame { msec: 2560 - hash: "59414694d42a3942c4832fd7a3e93145" + hash: "bc54cefc8f0b84fc2432b0fb01203b9c" } Frame { msec: 2576 - hash: "1213fc9d9c1d58ceefc213a59f970679" + hash: "e6f14d1181a0db90d2c2891fd6e82883" } Frame { msec: 2592 - hash: "bbfa8471ab3fa5fc146946a6c8e0ce86" + hash: "1edc2fff7b3d76bbe2615810a5d15d41" } Key { type: 6 @@ -886,15 +886,15 @@ VisualTest { } Frame { msec: 2608 - hash: "22a49c3b5234b4b7a2b935d58027f834" + hash: "5bc156937a29989a3a39761b58958fbd" } Frame { msec: 2624 - hash: "7b81c14d5350fb55775c1cb0f3945c46" + hash: "071d45235a669e870356efc60ba8016c" } Frame { msec: 2640 - hash: "8ebf266de0df228e47cc6e5a8758a6ea" + hash: "1d588fb1f8321e4b437f924077fa7d60" } Key { type: 7 @@ -906,23 +906,23 @@ VisualTest { } Frame { msec: 2656 - hash: "6344eb333dc28672f863bcb7ca5d6cfe" + hash: "ca9aff6590dda45a66cdca601dccaf59" } Frame { msec: 2672 - hash: "8efc9b4a6c27b8918cba629a5a1c0f24" + hash: "2553146fff0d367cc6fa2d11f0a5c83a" } Frame { msec: 2688 - hash: "b586c24ce0c04391a9095c0ac4b7a05a" + hash: "05bd919cd91ff449027b188d9a24b61f" } Frame { msec: 2704 - hash: "191413fe51a6887ae92c135252fdeeae" + hash: "35d6ce9ecef79d006d6416c3b0d75e79" } Frame { msec: 2720 - hash: "fc0b37abf12827af41e7037eab8ba5c8" + hash: "1459a2410a971e344d4dacccff1eb7da" } Key { type: 6 @@ -934,19 +934,19 @@ VisualTest { } Frame { msec: 2736 - hash: "5efe28d02b93e094192d7fd6fe753acd" + hash: "bd04cc87db0138b57bf0feeafa7630f5" } Frame { msec: 2752 - hash: "dadc1f7b14fbf9f8a174821c4197da46" + hash: "81521187d5d88b62f4f7578ea4ee5f68" } Frame { msec: 2768 - hash: "124deac57a3eeaef4cb3c0c802bacc05" + hash: "f2f8d1e8232787da1e36d7e8a27b6d93" } Frame { msec: 2784 - hash: "e022a6d66a7b37d72885a7a7f6919433" + hash: "a5dbd1f572419ca4a4b91629e522867f" } Key { type: 7 @@ -958,75 +958,75 @@ VisualTest { } Frame { msec: 2800 - hash: "5faa6543469753948b1636351d044329" + hash: "23ab256301d7190f56c4f0af7f57bcc2" } Frame { msec: 2816 - hash: "a7dcf5a0b9bb00105eed173b498cb95c" + hash: "3a106a01b1cf6b53b5f8721415538f15" } Frame { msec: 2832 - hash: "29ac83d169af2c74ffd134d771c88718" + hash: "881f4de48cf79636f5cb292f4cacf842" } Frame { msec: 2848 - hash: "0a04648fdc90ec86fb55ad3a165573c4" + hash: "4abe8abf4f29a31220c03af143ef9978" } Frame { msec: 2864 - hash: "d699c713ba939612f1e552e48db19b18" + hash: "50db0e06ceb12795d3e11b2c4a04df9c" } Frame { msec: 2880 - image: "cursorDelegate.2.png" + hash: "39f759d5b58ffdaa79d438f932a72582" } Frame { msec: 2896 - hash: "adf564652cfae394869755ff2fe5b534" + image: "cursorDelegate.3.png" } Frame { msec: 2912 - hash: "d1453f663217ee45a8462b7d077d7f6a" + hash: "0cf83e3a000b8ae6a21ef64e5470430f" } Frame { msec: 2928 - hash: "9f1461d63ccc49f83e58245ba75685e1" + hash: "07116cd7cf46fc692542ac57c3e30aea" } Frame { msec: 2944 - hash: "8cece1543e7e9190eefaa92c2024cbd1" + hash: "bd92a36fad90de909b5a29a6fead2160" } Frame { msec: 2960 - hash: "555abf8bc3fdb1eef85b1e4bd54932a3" + hash: "95c4d0cc52903dc70c9118e26cd58b7b" } Frame { msec: 2976 - hash: "7fc65284b99fc548de0985d94a145fa7" + hash: "cb6ca047657a99dbbb037c1c45b40866" } Frame { msec: 2992 - hash: "7fc65284b99fc548de0985d94a145fa7" + hash: "cb6ca047657a99dbbb037c1c45b40866" } Frame { msec: 3008 - hash: "7fc65284b99fc548de0985d94a145fa7" + hash: "cb6ca047657a99dbbb037c1c45b40866" } Frame { msec: 3024 - hash: "7fc65284b99fc548de0985d94a145fa7" + hash: "cb6ca047657a99dbbb037c1c45b40866" } Frame { msec: 3040 - hash: "7fc65284b99fc548de0985d94a145fa7" + hash: "cb6ca047657a99dbbb037c1c45b40866" } Frame { msec: 3056 - hash: "7fc65284b99fc548de0985d94a145fa7" + hash: "cb6ca047657a99dbbb037c1c45b40866" } Frame { msec: 3072 - hash: "555abf8bc3fdb1eef85b1e4bd54932a3" + hash: "95c4d0cc52903dc70c9118e26cd58b7b" } Key { type: 6 @@ -1038,23 +1038,23 @@ VisualTest { } Frame { msec: 3088 - hash: "996da2eff9302908a55308dbcc8fb3c2" + hash: "f9e0bd08b722c16493a8886a19920dda" } Frame { msec: 3104 - hash: "6ccc70f6120acb53152b71bcf95514ca" + hash: "0636b7c5cc215882c60b50f62133c715" } Frame { msec: 3120 - hash: "51a1b8e79d209643d55d4cecc6a70ed0" + hash: "150b5a2f2e916b7023764c481c768492" } Frame { msec: 3136 - hash: "944dc7026c6487838ede9ef94003ec90" + hash: "14bc879f562ace9d2d1a3f3980a72e1f" } Frame { msec: 3152 - hash: "4abbd51b620ac4ea91af95bc2d0881d7" + hash: "2bdc09121f13e95e15e331ac90fbbe5e" } Key { type: 7 @@ -1066,27 +1066,27 @@ VisualTest { } Frame { msec: 3168 - hash: "ba721988a1708b8c0762d706820c48fc" + hash: "b701aa41aff9df45cc4b35d23789ad46" } Frame { msec: 3184 - hash: "5dba56a5bb5f8a6539a0066af35c73b8" + hash: "ad77330d51b1251576905a45fdbdf576" } Frame { msec: 3200 - hash: "bc3efeeebe7075cd09a6e57eef43d610" + hash: "4ab6780997a5a598d2da7fbbc19877b7" } Frame { msec: 3216 - hash: "0bd9f7de32b01d8144280bf252d9a18f" + hash: "43b324d0e4882147d316a5dc16eff4a5" } Frame { msec: 3232 - hash: "29db710e47b13f26e2bf92568d52bf52" + hash: "4379bfd0da6fedac77e2111d9fdc5ecb" } Frame { msec: 3248 - hash: "a27c65c0a49deb18b0766bba41a32e54" + hash: "ca35937be71e1f982cedd33bdd09d127" } Key { type: 6 @@ -1098,31 +1098,31 @@ VisualTest { } Frame { msec: 3264 - hash: "484ee552e1a9c5eafcfe1ac583fcdffd" + hash: "f6bac38774fa8a09084c045e34fd1732" } Frame { msec: 3280 - hash: "40b336a0e337b66d813089a82a88c712" + hash: "6d8b58612860febb13800958cab3aecd" } Frame { msec: 3296 - hash: "b7a8d4b8bb2b83e4c886aa51c1a73895" + hash: "7f921d2293cf547de3b5573dbf98d5bb" } Frame { msec: 3312 - hash: "43b3bf8425e7a6b7115d8e6a0bcfd677" + hash: "18771337bbe826b5a34bd9705c79f56a" } Frame { msec: 3328 - hash: "e2ce168241b043db74867fe7ed6de956" + hash: "3dd49406c4b39980908d8869dc3c060a" } Frame { msec: 3344 - hash: "0c713bbd7bb694d87f0fe14f87098b9b" + hash: "8cae649565b5655d606f216334a0b5b5" } Frame { msec: 3360 - hash: "316f6bd365ca4b4f2e6fbf34a047e307" + hash: "27c59b474d706ce79b5d075713c1ea88" } Key { type: 7 @@ -1134,39 +1134,39 @@ VisualTest { } Frame { msec: 3376 - hash: "421fb8881fe7b300dcec0f44ff1743e3" + hash: "6d70d654998bbc0a2431ca7c4a58cd3c" } Frame { msec: 3392 - hash: "e8376079434393467b47a56ff00efb2b" + hash: "bf55fffd1727c0d076e05e274dcebb0d" } Frame { msec: 3408 - hash: "63259de84a6e07d42c9df94ec2a25920" + hash: "d5b0696cbe2969723bb2fe740deeb81f" } Frame { msec: 3424 - hash: "f9194d82b81f5ac58862c382caf5cf59" + hash: "27968050a9cf7d57d016274709086be1" } Frame { msec: 3440 - hash: "e185f2594f038532a37b351384dc97ea" + hash: "3bc037fd17d0d394b82ba19914f31b90" } Frame { msec: 3456 - hash: "91edc3ca1e6c532bd92006a761073da2" + hash: "117d7ad2d2ae47f3a0c2a68928534b76" } Frame { msec: 3472 - hash: "b47390495539756048ccc71047ebef7b" + hash: "a538ce971f34a497c05258da2567a208" } Frame { msec: 3488 - hash: "7c83d3bdb9abf8ab2cfe7f9464673a49" + hash: "91e2e5cc6efcffc9e58646a008a57c9d" } Frame { msec: 3504 - hash: "b686f4013f45885ab794aba9ff491286" + hash: "13db17cc3c6513014a95210a443e5842" } Key { type: 7 @@ -1178,11 +1178,11 @@ VisualTest { } Frame { msec: 3520 - hash: "0c55d6ea330b7365825864d4bdacafcb" + hash: "03325597bd4e7d7b6f7c84c848018872" } Frame { msec: 3536 - hash: "2bb72f191201572308e461021872fb4c" + hash: "e96dc6d611d23553b363a765195604f9" } Key { type: 7 @@ -1194,358 +1194,358 @@ VisualTest { } Frame { msec: 3552 - hash: "81b04a84982698ee80d13d392742edd3" + hash: "942476dd6fb7a4f3d10c398503cb7b90" } Frame { msec: 3568 - hash: "63f582dc2a9f707c1ec99f4285d13a84" + hash: "cbe34fd18b6355ae9be469a594b44192" } Frame { msec: 3584 - hash: "f91cb29101f80f5dcb1e9e8c82e823b7" + hash: "3dce89f398d2c856bcd32da34867ebd8" } Frame { msec: 3600 - hash: "fdf68e988b988d068ea78a5a09ef349e" + hash: "c78608cde907bc09760d858795b43bbf" } Frame { msec: 3616 - hash: "27434828de3ba8f6a3b83f042b70eb8b" + hash: "75d1ae9c60573f9e27cd7c2d1706cbfc" } Frame { msec: 3632 - hash: "e54102edbf6cc0c9a32b09858f760ee5" + hash: "754e2fca1b3ed5ee9875aafb1a0c62d3" } Frame { msec: 3648 - hash: "26530bded6311640c4d3f6d1485fa7d3" + hash: "a6f05fb5206a456bea790ba7ba31868c" } Frame { msec: 3664 - hash: "eaee6483a2a4a0b09a8e40bb1785a498" + hash: "21008b3a5179e25f9b132a4c05b8b8c4" } Frame { msec: 3680 - hash: "e1c083d0235ff5a2e002ce78f43009b0" + hash: "37d2d2830f6ae6bf0c8fb29c5d4f521a" } Frame { msec: 3696 - hash: "7f2ac0854ddbcca94a2ad160ead5d4d3" + hash: "d7a226b40a049dee56755af9206246b4" } Frame { msec: 3712 - hash: "30c4aa33a6672f4df24186ad1e28bcf9" + hash: "d7d39e8f717bab17aaf8a12e4f9e0dfc" } Frame { msec: 3728 - hash: "38f16a7deeaea6828edd15b00024fc19" + hash: "1dd5625fb6a0ddbaa3919a1702695e9c" } Frame { msec: 3744 - hash: "bb74f706477e277284fad50752f078b5" + hash: "e0b07106a5adc1603788444d48b9c3db" } Frame { msec: 3760 - hash: "a588e9dbeabd7519cd0cf2d26a123529" + hash: "db61ba19d56b69d148aeb182de596713" } Frame { msec: 3776 - hash: "4fd9f22ad06e02b68319c298c2286e36" + hash: "39a59b2e9e0bee87d3ba50e1408bea1c" } Frame { msec: 3792 - hash: "29a28a97fc78a1b01252b852fb0446e2" + hash: "f34175acc261ad79bc9d2083af04ae10" } Frame { msec: 3808 - hash: "458895f9ede4d56e0b851c6ed124405d" + hash: "2ec91bfdb0f106a526f6bde3eb0ed7ce" } Frame { msec: 3824 - hash: "cd58c0d4f7248315a787542b0edcb4fb" + hash: "183538d04cf009f100a1e49a3229c143" } Frame { msec: 3840 - image: "cursorDelegate.3.png" + hash: "fb09d44a5a5b5b795d562512e9547301" } Frame { msec: 3856 - hash: "483eca22c50750e7591785ed60813d1f" + image: "cursorDelegate.4.png" } Frame { msec: 3872 - hash: "c5199c908df1f550d7c4f133eb926134" + hash: "39c81c6efdbc32b6e0378810404bef2c" } Frame { msec: 3888 - hash: "efaa5e4483ed9cfec792e8f270b5079e" + hash: "23d9a9a6a9d032c7e447407193ca51ef" } Frame { msec: 3904 - hash: "7ffcff87e27dcb0be0047eb6fbcc9549" + hash: "bdd00cfe933985fe77626114902ce823" } Frame { msec: 3920 - hash: "04339417259ddee10134e1479729ae1b" + hash: "1d25c2753ccabdaaf47a669c28d9e2cb" } Frame { msec: 3936 - hash: "0f1e6a0d9db7b6b8b874333682866ffa" + hash: "20fde9bbe26ebede31fc8c21dec3fcc5" } Frame { msec: 3952 - hash: "66500c2cc3d69b9fb48dc46e384aca6d" + hash: "c9147c159aebb7aa51d4bac28f96cb57" } Frame { msec: 3968 - hash: "70d6b73499c36138bee63e07afb0b186" + hash: "68d331f508b43e756d6e30ba9b60f9aa" } Frame { msec: 3984 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 4000 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 4016 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 4032 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 4048 - hash: "c526315dd5eec117266c68a7b6b64a3f" + hash: "af99069cdddfa9d099fbe25ba586e138" } Frame { msec: 4064 - hash: "70d6b73499c36138bee63e07afb0b186" + hash: "68d331f508b43e756d6e30ba9b60f9aa" } Frame { msec: 4080 - hash: "66500c2cc3d69b9fb48dc46e384aca6d" + hash: "c9147c159aebb7aa51d4bac28f96cb57" } Frame { msec: 4096 - hash: "0f1e6a0d9db7b6b8b874333682866ffa" + hash: "20fde9bbe26ebede31fc8c21dec3fcc5" } Frame { msec: 4112 - hash: "04339417259ddee10134e1479729ae1b" + hash: "1d25c2753ccabdaaf47a669c28d9e2cb" } Frame { msec: 4128 - hash: "7ffcff87e27dcb0be0047eb6fbcc9549" + hash: "bdd00cfe933985fe77626114902ce823" } Frame { msec: 4144 - hash: "efaa5e4483ed9cfec792e8f270b5079e" + hash: "23d9a9a6a9d032c7e447407193ca51ef" } Frame { msec: 4160 - hash: "c5199c908df1f550d7c4f133eb926134" + hash: "39c81c6efdbc32b6e0378810404bef2c" } Frame { msec: 4176 - hash: "483eca22c50750e7591785ed60813d1f" + hash: "756f36cf41c2bae3a8a8716701e55e37" } Frame { msec: 4192 - hash: "4091de379d8f6ccc7f19ea39f6c7993a" + hash: "fb09d44a5a5b5b795d562512e9547301" } Frame { msec: 4208 - hash: "cd58c0d4f7248315a787542b0edcb4fb" + hash: "183538d04cf009f100a1e49a3229c143" } Frame { msec: 4224 - hash: "458895f9ede4d56e0b851c6ed124405d" + hash: "2ec91bfdb0f106a526f6bde3eb0ed7ce" } Frame { msec: 4240 - hash: "29a28a97fc78a1b01252b852fb0446e2" + hash: "f34175acc261ad79bc9d2083af04ae10" } Frame { msec: 4256 - hash: "4fd9f22ad06e02b68319c298c2286e36" + hash: "39a59b2e9e0bee87d3ba50e1408bea1c" } Frame { msec: 4272 - hash: "a588e9dbeabd7519cd0cf2d26a123529" + hash: "db61ba19d56b69d148aeb182de596713" } Frame { msec: 4288 - hash: "bb74f706477e277284fad50752f078b5" + hash: "e0b07106a5adc1603788444d48b9c3db" } Frame { msec: 4304 - hash: "38f16a7deeaea6828edd15b00024fc19" + hash: "1dd5625fb6a0ddbaa3919a1702695e9c" } Frame { msec: 4320 - hash: "30c4aa33a6672f4df24186ad1e28bcf9" + hash: "d7d39e8f717bab17aaf8a12e4f9e0dfc" } Frame { msec: 4336 - hash: "7f2ac0854ddbcca94a2ad160ead5d4d3" + hash: "d7a226b40a049dee56755af9206246b4" } Frame { msec: 4352 - hash: "e1c083d0235ff5a2e002ce78f43009b0" + hash: "37d2d2830f6ae6bf0c8fb29c5d4f521a" } Frame { msec: 4368 - hash: "eaee6483a2a4a0b09a8e40bb1785a498" + hash: "21008b3a5179e25f9b132a4c05b8b8c4" } Frame { msec: 4384 - hash: "26530bded6311640c4d3f6d1485fa7d3" + hash: "a6f05fb5206a456bea790ba7ba31868c" } Frame { msec: 4400 - hash: "e54102edbf6cc0c9a32b09858f760ee5" + hash: "754e2fca1b3ed5ee9875aafb1a0c62d3" } Frame { msec: 4416 - hash: "27434828de3ba8f6a3b83f042b70eb8b" + hash: "75d1ae9c60573f9e27cd7c2d1706cbfc" } Frame { msec: 4432 - hash: "fdf68e988b988d068ea78a5a09ef349e" + hash: "c78608cde907bc09760d858795b43bbf" } Frame { msec: 4448 - hash: "f91cb29101f80f5dcb1e9e8c82e823b7" + hash: "3dce89f398d2c856bcd32da34867ebd8" } Frame { msec: 4464 - hash: "63f582dc2a9f707c1ec99f4285d13a84" + hash: "cbe34fd18b6355ae9be469a594b44192" } Frame { msec: 4480 - hash: "81b04a84982698ee80d13d392742edd3" + hash: "942476dd6fb7a4f3d10c398503cb7b90" } Frame { msec: 4496 - hash: "2bb72f191201572308e461021872fb4c" + hash: "e96dc6d611d23553b363a765195604f9" } Frame { msec: 4512 - hash: "0c55d6ea330b7365825864d4bdacafcb" + hash: "03325597bd4e7d7b6f7c84c848018872" } Frame { msec: 4528 - hash: "b686f4013f45885ab794aba9ff491286" + hash: "13db17cc3c6513014a95210a443e5842" } Frame { msec: 4544 - hash: "7c83d3bdb9abf8ab2cfe7f9464673a49" + hash: "91e2e5cc6efcffc9e58646a008a57c9d" } Frame { msec: 4560 - hash: "b47390495539756048ccc71047ebef7b" + hash: "a538ce971f34a497c05258da2567a208" } Frame { msec: 4576 - hash: "91edc3ca1e6c532bd92006a761073da2" + hash: "117d7ad2d2ae47f3a0c2a68928534b76" } Frame { msec: 4592 - hash: "e185f2594f038532a37b351384dc97ea" + hash: "3bc037fd17d0d394b82ba19914f31b90" } Frame { msec: 4608 - hash: "f9194d82b81f5ac58862c382caf5cf59" + hash: "27968050a9cf7d57d016274709086be1" } Frame { msec: 4624 - hash: "63259de84a6e07d42c9df94ec2a25920" + hash: "d5b0696cbe2969723bb2fe740deeb81f" } Frame { msec: 4640 - hash: "e8376079434393467b47a56ff00efb2b" + hash: "bf55fffd1727c0d076e05e274dcebb0d" } Frame { msec: 4656 - hash: "421fb8881fe7b300dcec0f44ff1743e3" + hash: "6d70d654998bbc0a2431ca7c4a58cd3c" } Frame { msec: 4672 - hash: "316f6bd365ca4b4f2e6fbf34a047e307" + hash: "27c59b474d706ce79b5d075713c1ea88" } Frame { msec: 4688 - hash: "0c713bbd7bb694d87f0fe14f87098b9b" + hash: "8cae649565b5655d606f216334a0b5b5" } Frame { msec: 4704 - hash: "e2ce168241b043db74867fe7ed6de956" + hash: "3dd49406c4b39980908d8869dc3c060a" } Frame { msec: 4720 - hash: "43b3bf8425e7a6b7115d8e6a0bcfd677" + hash: "18771337bbe826b5a34bd9705c79f56a" } Frame { msec: 4736 - hash: "b7a8d4b8bb2b83e4c886aa51c1a73895" + hash: "7f921d2293cf547de3b5573dbf98d5bb" } Frame { msec: 4752 - hash: "40b336a0e337b66d813089a82a88c712" + hash: "6d8b58612860febb13800958cab3aecd" } Frame { msec: 4768 - hash: "484ee552e1a9c5eafcfe1ac583fcdffd" + hash: "f6bac38774fa8a09084c045e34fd1732" } Frame { msec: 4784 - hash: "a27c65c0a49deb18b0766bba41a32e54" + hash: "ca35937be71e1f982cedd33bdd09d127" } Frame { msec: 4800 - image: "cursorDelegate.4.png" + hash: "4379bfd0da6fedac77e2111d9fdc5ecb" } Frame { msec: 4816 - hash: "0bd9f7de32b01d8144280bf252d9a18f" + image: "cursorDelegate.5.png" } Frame { msec: 4832 - hash: "bc3efeeebe7075cd09a6e57eef43d610" + hash: "4ab6780997a5a598d2da7fbbc19877b7" } Frame { msec: 4848 - hash: "5dba56a5bb5f8a6539a0066af35c73b8" + hash: "ad77330d51b1251576905a45fdbdf576" } Frame { msec: 4864 - hash: "ba721988a1708b8c0762d706820c48fc" + hash: "b701aa41aff9df45cc4b35d23789ad46" } Frame { msec: 4880 - hash: "4abbd51b620ac4ea91af95bc2d0881d7" + hash: "2bdc09121f13e95e15e331ac90fbbe5e" } Frame { msec: 4896 - hash: "944dc7026c6487838ede9ef94003ec90" + hash: "14bc879f562ace9d2d1a3f3980a72e1f" } Frame { msec: 4912 - hash: "51a1b8e79d209643d55d4cecc6a70ed0" + hash: "150b5a2f2e916b7023764c481c768492" } Frame { msec: 4928 - hash: "6ccc70f6120acb53152b71bcf95514ca" + hash: "0636b7c5cc215882c60b50f62133c715" } Frame { msec: 4944 - hash: "996da2eff9302908a55308dbcc8fb3c2" + hash: "f9e0bd08b722c16493a8886a19920dda" } Frame { msec: 4960 - hash: "264f34128dfe563126b9f187c65df61e" + hash: "f499f4b3017c88c63f0a2035ad527a0e" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.0.png Binary files differindex 57a1599..5f632d0 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.0.png +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.0.png 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 d327d5b..05dd690 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 c1e3dce..eb74cc5 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 differnew file mode 100644 index 0000000..3aed06c --- /dev/null +++ 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 9a26f57..2de4a10 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/echoMode.qml @@ -6,7 +6,7 @@ VisualTest { } Frame { msec: 16 - hash: "0e7c7dc19aab217751411568b58830ef" + image: "echoMode.0.png" } Frame { msec: 32 @@ -110,23 +110,23 @@ VisualTest { } Frame { msec: 368 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 384 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 400 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 416 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 432 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Key { type: 7 @@ -138,27 +138,27 @@ VisualTest { } Frame { msec: 448 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 464 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 480 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 496 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 512 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 528 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Key { type: 7 @@ -170,43 +170,43 @@ VisualTest { } Frame { msec: 544 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 560 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 576 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 592 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 608 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 624 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 640 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 656 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 672 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Frame { msec: 688 - hash: "d3151ba24f0011bf1add83377f32ec85" + hash: "bc06530170cf26690a09ed9f6c4014fd" } Key { type: 6 @@ -218,23 +218,23 @@ VisualTest { } Frame { msec: 704 - hash: "6b7c333ce19fede43aee84cc66c4c1bc" + hash: "8c64a986ce7bd19dcc88785309456f4e" } Frame { msec: 720 - hash: "6b7c333ce19fede43aee84cc66c4c1bc" + hash: "8c64a986ce7bd19dcc88785309456f4e" } Frame { msec: 736 - hash: "6b7c333ce19fede43aee84cc66c4c1bc" + hash: "8c64a986ce7bd19dcc88785309456f4e" } Frame { msec: 752 - hash: "6b7c333ce19fede43aee84cc66c4c1bc" + hash: "8c64a986ce7bd19dcc88785309456f4e" } Frame { msec: 768 - hash: "6b7c333ce19fede43aee84cc66c4c1bc" + hash: "8c64a986ce7bd19dcc88785309456f4e" } Key { type: 7 @@ -246,23 +246,23 @@ VisualTest { } Frame { msec: 784 - hash: "6b7c333ce19fede43aee84cc66c4c1bc" + hash: "8c64a986ce7bd19dcc88785309456f4e" } Frame { msec: 800 - hash: "6b7c333ce19fede43aee84cc66c4c1bc" + hash: "8c64a986ce7bd19dcc88785309456f4e" } Frame { msec: 816 - hash: "6b7c333ce19fede43aee84cc66c4c1bc" + hash: "8c64a986ce7bd19dcc88785309456f4e" } Frame { msec: 832 - hash: "6b7c333ce19fede43aee84cc66c4c1bc" + hash: "8c64a986ce7bd19dcc88785309456f4e" } Frame { msec: 848 - hash: "6b7c333ce19fede43aee84cc66c4c1bc" + hash: "8c64a986ce7bd19dcc88785309456f4e" } Key { type: 6 @@ -274,15 +274,15 @@ VisualTest { } Frame { msec: 864 - hash: "a5386e9b39daa0a5aad8a8cd5191909b" + hash: "4cfca8edcb96b1d9986db4ee491bf857" } Frame { msec: 880 - hash: "a5386e9b39daa0a5aad8a8cd5191909b" + hash: "4cfca8edcb96b1d9986db4ee491bf857" } Frame { msec: 896 - hash: "a5386e9b39daa0a5aad8a8cd5191909b" + hash: "4cfca8edcb96b1d9986db4ee491bf857" } Key { type: 7 @@ -294,23 +294,23 @@ VisualTest { } Frame { msec: 912 - hash: "a5386e9b39daa0a5aad8a8cd5191909b" + hash: "4cfca8edcb96b1d9986db4ee491bf857" } Frame { msec: 928 - hash: "a5386e9b39daa0a5aad8a8cd5191909b" + hash: "4cfca8edcb96b1d9986db4ee491bf857" } Frame { msec: 944 - hash: "a5386e9b39daa0a5aad8a8cd5191909b" + hash: "4cfca8edcb96b1d9986db4ee491bf857" } Frame { msec: 960 - image: "echoMode.0.png" + hash: "4cfca8edcb96b1d9986db4ee491bf857" } Frame { msec: 976 - hash: "a5386e9b39daa0a5aad8a8cd5191909b" + image: "echoMode.1.png" } Key { type: 6 @@ -322,19 +322,19 @@ VisualTest { } Frame { msec: 992 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1008 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1024 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1040 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Key { type: 7 @@ -346,51 +346,51 @@ VisualTest { } Frame { msec: 1056 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1072 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1088 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1104 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1120 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1136 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1152 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1168 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1184 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1200 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1216 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Frame { msec: 1232 - hash: "f9149723166015ed066b794cf86b27d0" + hash: "3d25316ea23ace5a88dbe8765b743eb3" } Key { type: 6 @@ -402,15 +402,15 @@ VisualTest { } Frame { msec: 1248 - hash: "56dd8557435509e5a96c2f2907d474eb" + hash: "fea82a32ec46a88027cc9b0c00aa0aba" } Frame { msec: 1264 - hash: "56dd8557435509e5a96c2f2907d474eb" + hash: "fea82a32ec46a88027cc9b0c00aa0aba" } Frame { msec: 1280 - hash: "56dd8557435509e5a96c2f2907d474eb" + hash: "fea82a32ec46a88027cc9b0c00aa0aba" } Key { type: 7 @@ -422,15 +422,15 @@ VisualTest { } Frame { msec: 1296 - hash: "56dd8557435509e5a96c2f2907d474eb" + hash: "fea82a32ec46a88027cc9b0c00aa0aba" } Frame { msec: 1312 - hash: "56dd8557435509e5a96c2f2907d474eb" + hash: "fea82a32ec46a88027cc9b0c00aa0aba" } Frame { msec: 1328 - hash: "56dd8557435509e5a96c2f2907d474eb" + hash: "fea82a32ec46a88027cc9b0c00aa0aba" } Key { type: 6 @@ -442,39 +442,39 @@ VisualTest { } Frame { msec: 1344 - hash: "b311772a9bf92f4222b1c1c7ddbe96c4" + hash: "fffa6f462ea15fe3bdbf2c199881fce4" } Frame { msec: 1360 - hash: "b311772a9bf92f4222b1c1c7ddbe96c4" + hash: "fffa6f462ea15fe3bdbf2c199881fce4" } Frame { msec: 1376 - hash: "b311772a9bf92f4222b1c1c7ddbe96c4" + hash: "fffa6f462ea15fe3bdbf2c199881fce4" } Frame { msec: 1392 - hash: "b311772a9bf92f4222b1c1c7ddbe96c4" + hash: "fffa6f462ea15fe3bdbf2c199881fce4" } Frame { msec: 1408 - hash: "b311772a9bf92f4222b1c1c7ddbe96c4" + hash: "fffa6f462ea15fe3bdbf2c199881fce4" } Frame { msec: 1424 - hash: "b311772a9bf92f4222b1c1c7ddbe96c4" + hash: "fffa6f462ea15fe3bdbf2c199881fce4" } Frame { msec: 1440 - hash: "b311772a9bf92f4222b1c1c7ddbe96c4" + hash: "fffa6f462ea15fe3bdbf2c199881fce4" } Frame { msec: 1456 - hash: "b311772a9bf92f4222b1c1c7ddbe96c4" + hash: "fffa6f462ea15fe3bdbf2c199881fce4" } Frame { msec: 1472 - hash: "b311772a9bf92f4222b1c1c7ddbe96c4" + hash: "fffa6f462ea15fe3bdbf2c199881fce4" } Key { type: 7 @@ -486,7 +486,7 @@ VisualTest { } Frame { msec: 1488 - hash: "b311772a9bf92f4222b1c1c7ddbe96c4" + hash: "fffa6f462ea15fe3bdbf2c199881fce4" } Key { type: 6 @@ -498,19 +498,19 @@ VisualTest { } Frame { msec: 1504 - hash: "8feb240ad13e1e9d8392bfeb484261db" + hash: "d874584748e4aa14fd71730aa36d676c" } Frame { msec: 1520 - hash: "8feb240ad13e1e9d8392bfeb484261db" + hash: "d874584748e4aa14fd71730aa36d676c" } Frame { msec: 1536 - hash: "8feb240ad13e1e9d8392bfeb484261db" + hash: "d874584748e4aa14fd71730aa36d676c" } Frame { msec: 1552 - hash: "8feb240ad13e1e9d8392bfeb484261db" + hash: "d874584748e4aa14fd71730aa36d676c" } Key { type: 7 @@ -522,27 +522,27 @@ VisualTest { } Frame { msec: 1568 - hash: "8feb240ad13e1e9d8392bfeb484261db" + hash: "d874584748e4aa14fd71730aa36d676c" } Frame { msec: 1584 - hash: "8feb240ad13e1e9d8392bfeb484261db" + hash: "d874584748e4aa14fd71730aa36d676c" } Frame { msec: 1600 - hash: "8feb240ad13e1e9d8392bfeb484261db" + hash: "d874584748e4aa14fd71730aa36d676c" } Frame { msec: 1616 - hash: "8feb240ad13e1e9d8392bfeb484261db" + hash: "d874584748e4aa14fd71730aa36d676c" } Frame { msec: 1632 - hash: "8feb240ad13e1e9d8392bfeb484261db" + hash: "d874584748e4aa14fd71730aa36d676c" } Frame { msec: 1648 - hash: "8feb240ad13e1e9d8392bfeb484261db" + hash: "d874584748e4aa14fd71730aa36d676c" } Key { type: 6 @@ -554,23 +554,23 @@ VisualTest { } Frame { msec: 1664 - hash: "cd240ccffd4b4a6304b47cfd1e55cf49" + hash: "5eac6452c3c01de25633be412b2c9fd6" } Frame { msec: 1680 - hash: "cd240ccffd4b4a6304b47cfd1e55cf49" + hash: "5eac6452c3c01de25633be412b2c9fd6" } Frame { msec: 1696 - hash: "cd240ccffd4b4a6304b47cfd1e55cf49" + hash: "5eac6452c3c01de25633be412b2c9fd6" } Frame { msec: 1712 - hash: "cd240ccffd4b4a6304b47cfd1e55cf49" + hash: "5eac6452c3c01de25633be412b2c9fd6" } Frame { msec: 1728 - hash: "cd240ccffd4b4a6304b47cfd1e55cf49" + hash: "5eac6452c3c01de25633be412b2c9fd6" } Key { type: 6 @@ -582,7 +582,7 @@ VisualTest { } Frame { msec: 1744 - hash: "437370a412fccbeee3d1f095e32c3584" + hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" } Key { type: 7 @@ -594,15 +594,15 @@ VisualTest { } Frame { msec: 1760 - hash: "437370a412fccbeee3d1f095e32c3584" + hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" } Frame { msec: 1776 - hash: "437370a412fccbeee3d1f095e32c3584" + hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" } Frame { msec: 1792 - hash: "437370a412fccbeee3d1f095e32c3584" + hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" } Key { type: 7 @@ -614,19 +614,19 @@ VisualTest { } Frame { msec: 1808 - hash: "437370a412fccbeee3d1f095e32c3584" + hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" } Frame { msec: 1824 - hash: "437370a412fccbeee3d1f095e32c3584" + hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" } Frame { msec: 1840 - hash: "437370a412fccbeee3d1f095e32c3584" + hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" } Frame { msec: 1856 - hash: "437370a412fccbeee3d1f095e32c3584" + hash: "8bf395bd43cf0483aea0ddf3e8ab8c56" } Key { type: 6 @@ -638,19 +638,19 @@ VisualTest { } Frame { msec: 1872 - hash: "eb4a45722e365b103ff5423117236fd3" + hash: "4a31bba56f9adaccf47e6335ed4e284f" } Frame { msec: 1888 - hash: "eb4a45722e365b103ff5423117236fd3" + hash: "4a31bba56f9adaccf47e6335ed4e284f" } Frame { msec: 1904 - hash: "eb4a45722e365b103ff5423117236fd3" + hash: "4a31bba56f9adaccf47e6335ed4e284f" } Frame { msec: 1920 - image: "echoMode.1.png" + hash: "4a31bba56f9adaccf47e6335ed4e284f" } Key { type: 7 @@ -662,27 +662,27 @@ VisualTest { } Frame { msec: 1936 - hash: "eb4a45722e365b103ff5423117236fd3" + image: "echoMode.2.png" } Frame { msec: 1952 - hash: "eb4a45722e365b103ff5423117236fd3" + hash: "4a31bba56f9adaccf47e6335ed4e284f" } Frame { msec: 1968 - hash: "eb4a45722e365b103ff5423117236fd3" + hash: "4a31bba56f9adaccf47e6335ed4e284f" } Frame { msec: 1984 - hash: "eb4a45722e365b103ff5423117236fd3" + hash: "4a31bba56f9adaccf47e6335ed4e284f" } Frame { msec: 2000 - hash: "eb4a45722e365b103ff5423117236fd3" + hash: "4a31bba56f9adaccf47e6335ed4e284f" } Frame { msec: 2016 - hash: "eb4a45722e365b103ff5423117236fd3" + hash: "4a31bba56f9adaccf47e6335ed4e284f" } Key { type: 6 @@ -694,11 +694,11 @@ VisualTest { } Frame { msec: 2032 - hash: "b53d0651627d008545e54063ceb8d689" + hash: "8bbabbbe84de490438d1111aa728c15f" } Frame { msec: 2048 - hash: "b53d0651627d008545e54063ceb8d689" + hash: "8bbabbbe84de490438d1111aa728c15f" } Key { type: 7 @@ -710,11 +710,11 @@ VisualTest { } Frame { msec: 2064 - hash: "b53d0651627d008545e54063ceb8d689" + hash: "8bbabbbe84de490438d1111aa728c15f" } Frame { msec: 2080 - hash: "b53d0651627d008545e54063ceb8d689" + hash: "8bbabbbe84de490438d1111aa728c15f" } Key { type: 6 @@ -726,19 +726,19 @@ VisualTest { } Frame { msec: 2096 - hash: "173b36137940b37001750e02d434b8e8" + hash: "5877f1d527fecaf1077ff5bd2fe1934f" } Frame { msec: 2112 - hash: "173b36137940b37001750e02d434b8e8" + hash: "5877f1d527fecaf1077ff5bd2fe1934f" } Frame { msec: 2128 - hash: "173b36137940b37001750e02d434b8e8" + hash: "5877f1d527fecaf1077ff5bd2fe1934f" } Frame { msec: 2144 - hash: "173b36137940b37001750e02d434b8e8" + hash: "5877f1d527fecaf1077ff5bd2fe1934f" } Key { type: 6 @@ -758,19 +758,19 @@ VisualTest { } Frame { msec: 2160 - hash: "2e636a964b4a1ab74ad3e23399c2ae8c" + hash: "1593ef669fdff28c33f54c12c7e7424e" } Frame { msec: 2176 - hash: "2e636a964b4a1ab74ad3e23399c2ae8c" + hash: "1593ef669fdff28c33f54c12c7e7424e" } Frame { msec: 2192 - hash: "2e636a964b4a1ab74ad3e23399c2ae8c" + hash: "1593ef669fdff28c33f54c12c7e7424e" } Frame { msec: 2208 - hash: "2e636a964b4a1ab74ad3e23399c2ae8c" + hash: "1593ef669fdff28c33f54c12c7e7424e" } Key { type: 6 @@ -782,7 +782,7 @@ VisualTest { } Frame { msec: 2224 - hash: "631c6034372c2e7675ebce0ec415f230" + hash: "da746581451954d7d941fbac825a1009" } Key { type: 7 @@ -794,23 +794,23 @@ VisualTest { } Frame { msec: 2240 - hash: "631c6034372c2e7675ebce0ec415f230" + hash: "da746581451954d7d941fbac825a1009" } Frame { msec: 2256 - hash: "631c6034372c2e7675ebce0ec415f230" + hash: "da746581451954d7d941fbac825a1009" } Frame { msec: 2272 - hash: "631c6034372c2e7675ebce0ec415f230" + hash: "da746581451954d7d941fbac825a1009" } Frame { msec: 2288 - hash: "631c6034372c2e7675ebce0ec415f230" + hash: "da746581451954d7d941fbac825a1009" } Frame { msec: 2304 - hash: "631c6034372c2e7675ebce0ec415f230" + hash: "da746581451954d7d941fbac825a1009" } Key { type: 7 @@ -822,11 +822,11 @@ VisualTest { } Frame { msec: 2320 - hash: "631c6034372c2e7675ebce0ec415f230" + hash: "da746581451954d7d941fbac825a1009" } Frame { msec: 2336 - hash: "631c6034372c2e7675ebce0ec415f230" + hash: "da746581451954d7d941fbac825a1009" } Key { type: 6 @@ -838,27 +838,27 @@ VisualTest { } Frame { msec: 2352 - hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f" + hash: "3e008b7ead8459c1667f4f385d4c5372" } Frame { msec: 2368 - hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f" + hash: "3e008b7ead8459c1667f4f385d4c5372" } Frame { msec: 2384 - hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f" + hash: "3e008b7ead8459c1667f4f385d4c5372" } Frame { msec: 2400 - hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f" + hash: "3e008b7ead8459c1667f4f385d4c5372" } Frame { msec: 2416 - hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f" + hash: "3e008b7ead8459c1667f4f385d4c5372" } Frame { msec: 2432 - hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f" + hash: "3e008b7ead8459c1667f4f385d4c5372" } Key { type: 7 @@ -870,19 +870,19 @@ VisualTest { } Frame { msec: 2448 - hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f" + hash: "3e008b7ead8459c1667f4f385d4c5372" } Frame { msec: 2464 - hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f" + hash: "3e008b7ead8459c1667f4f385d4c5372" } Frame { msec: 2480 - hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f" + hash: "3e008b7ead8459c1667f4f385d4c5372" } Frame { msec: 2496 - hash: "ea5c3cdde73009e1bd46e71e4cc3bf0f" + hash: "3e008b7ead8459c1667f4f385d4c5372" } Key { type: 6 @@ -894,15 +894,15 @@ VisualTest { } Frame { msec: 2512 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2528 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2544 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Key { type: 7 @@ -914,130 +914,130 @@ VisualTest { } Frame { msec: 2560 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2576 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2592 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2608 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2624 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2640 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2656 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2672 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2688 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2704 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2720 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2736 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2752 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2768 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2784 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2800 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2816 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2832 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2848 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2864 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2880 - image: "echoMode.2.png" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2896 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + image: "echoMode.3.png" } Frame { msec: 2912 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2928 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2944 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2960 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2976 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 2992 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 3008 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 3024 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 3040 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } Frame { msec: 3056 - hash: "91ef7f08d8fec2e0d353b1bf5da99c41" + hash: "1dbc7e1ab58dcec8691ff4195b0d581c" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.0.png Binary files differnew file mode 100644 index 0000000..6a32f0d --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.qml index 4c402ea..fd64d64 100644 --- a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.qml +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/hAlign.qml @@ -6,102 +6,102 @@ VisualTest { } Frame { msec: 16 - hash: "840c5f54c105f90c7b0c2254fee2e434" + image: "hAlign.0.png" } Frame { msec: 32 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 48 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 64 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 80 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 96 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 112 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 128 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 144 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 160 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 176 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 192 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 208 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 224 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 240 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 256 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 272 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 288 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 304 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 320 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 336 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 352 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 368 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 384 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } Frame { msec: 400 - hash: "840c5f54c105f90c7b0c2254fee2e434" + hash: "043c40378d2707bd231a448cd242aa3c" } } diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.0.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.0.png Binary files differnew file mode 100644 index 0000000..6ca52b6 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.0.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.1.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.1.png Binary files differnew file mode 100644 index 0000000..31d6b2c --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.1.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.10.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.10.png Binary files differnew file mode 100644 index 0000000..d89e2d8 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.10.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.11.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.11.png Binary files differnew file mode 100644 index 0000000..834516a --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.11.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.2.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.2.png Binary files differnew file mode 100644 index 0000000..31d6b2c --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.2.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.3.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.3.png Binary files differnew file mode 100644 index 0000000..31d6b2c --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.3.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.4.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.4.png Binary files differnew file mode 100644 index 0000000..8147bda --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.4.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.5.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.5.png Binary files differnew file mode 100644 index 0000000..c67e619 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.5.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.6.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.6.png Binary files differnew file mode 100644 index 0000000..646855f --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.6.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.7.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.7.png Binary files differnew file mode 100644 index 0000000..c1a9d5c --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.7.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.8.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.8.png Binary files differnew file mode 100644 index 0000000..d6c92b7 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.8.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.9.png b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.9.png Binary files differnew file mode 100644 index 0000000..e798d3b --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.9.png diff --git a/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.qml b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.qml new file mode 100644 index 0000000..a1a0821 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/qdeclarativetextinput/data-MAC/usingLineEdit.qml @@ -0,0 +1,4335 @@ +import Qt.VisualTest 4.7 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + image: "usingLineEdit.0.png" + } + Frame { + msec: 32 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 48 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 64 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 80 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 96 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 112 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 128 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 144 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 160 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 176 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 192 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 208 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 224 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 240 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 256 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 272 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 288 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 304 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 320 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 336 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 352 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 368 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 384 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 400 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 416 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 432 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 448 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 464 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 480 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 496 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 512 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 528 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 544 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 560 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 576 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 592 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 608 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 624 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 640 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 656 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 672 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 688 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 704 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 720 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 736 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 752 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 768 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 784 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 800 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 816 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 832 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 848 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 864 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 880 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 896 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 912 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Frame { + msec: 928 + hash: "b2bcfe5c299742bf7da166e9ae1e1126" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 85; y: 11 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 944 + hash: "1e95a74868a748e11efdc6fbb500f6e8" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 85; y: 11 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 960 + hash: "1e95a74868a748e11efdc6fbb500f6e8" + } + Mouse { + type: 4 + button: 1 + buttons: 1 + x: 85; y: 11 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 976 + image: "usingLineEdit.1.png" + } + Frame { + msec: 992 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1008 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1024 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1040 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1056 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 85; y: 11 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1072 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1088 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1104 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1120 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1136 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1152 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1168 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1184 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1200 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1216 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1232 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1248 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1264 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1280 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1296 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1312 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1328 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1344 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1360 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Key { + type: 6 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 1376 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1392 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1408 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1424 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1440 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1456 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1472 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1488 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1504 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1520 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1536 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1552 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1568 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1584 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1600 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1616 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1632 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1648 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1664 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1680 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1696 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1712 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1728 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1744 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1760 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1776 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1792 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1808 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1824 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1840 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1856 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1872 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1888 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1904 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1920 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1936 + image: "usingLineEdit.2.png" + } + Frame { + msec: 1952 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1968 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 1984 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Key { + type: 6 + key: 67 + modifiers: 67108864 + text: "03" + autorep: false + count: 1 + } + Frame { + msec: 2000 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2016 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2032 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2048 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2064 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2080 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2096 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2112 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Key { + type: 7 + key: 16777249 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 7 + key: 67 + modifiers: 0 + text: "63" + autorep: false + count: 1 + } + Frame { + msec: 2128 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2144 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2160 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2176 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2192 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2208 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2224 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2240 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2256 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2272 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2288 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2304 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2320 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2336 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2352 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2368 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2384 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2400 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2416 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2432 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2448 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2464 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2480 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Key { + type: 6 + key: 16777233 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 2496 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2512 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2528 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2544 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2560 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2576 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Key { + type: 7 + key: 16777233 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 2592 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2608 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2624 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2640 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2656 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2672 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2688 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2704 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2720 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2736 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2752 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2768 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2784 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Key { + type: 6 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 2800 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2816 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2832 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2848 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2864 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2880 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2896 + image: "usingLineEdit.3.png" + } + Frame { + msec: 2912 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2928 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2944 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2960 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2976 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 2992 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3008 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3024 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3040 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3056 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3072 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3088 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3104 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3120 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3136 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3152 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3168 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3184 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3200 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Frame { + msec: 3216 + hash: "c346bd1c6a8c04dff75bc14882a4d964" + } + Key { + type: 6 + key: 86 + modifiers: 67108864 + text: "16" + autorep: false + count: 1 + } + Frame { + msec: 3232 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3248 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3264 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3280 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3296 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3312 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3328 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Key { + type: 7 + key: 86 + modifiers: 67108864 + text: "16" + autorep: false + count: 1 + } + Frame { + msec: 3344 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3360 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3376 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3392 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3408 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3424 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3440 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3456 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3472 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3488 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3504 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3520 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3536 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Frame { + msec: 3552 + hash: "4e24e7e6a205160479b0d23057a50b37" + } + Key { + type: 6 + key: 86 + modifiers: 67108864 + text: "16" + autorep: false + count: 1 + } + Frame { + msec: 3568 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3584 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3600 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3616 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3632 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3648 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3664 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3680 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Key { + type: 7 + key: 86 + modifiers: 67108864 + text: "16" + autorep: false + count: 1 + } + Frame { + msec: 3696 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3712 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3728 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3744 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3760 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3776 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3792 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3808 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3824 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3840 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3856 + image: "usingLineEdit.4.png" + } + Frame { + msec: 3872 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3888 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3904 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3920 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3936 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3952 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3968 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 3984 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4000 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4016 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4032 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4048 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4064 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4080 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4096 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4112 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4128 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4144 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4160 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4176 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4192 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Key { + type: 7 + key: 16777249 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 4208 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4224 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4240 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4256 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4272 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4288 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4304 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4320 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4336 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4352 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4368 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4384 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4400 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4416 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4432 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4448 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4464 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4480 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4496 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4512 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4528 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4544 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4560 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4576 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4592 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4608 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4624 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4640 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4656 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4672 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4688 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Frame { + msec: 4704 + hash: "c6354c09a2bdf6ff23cae30640abdd65" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 69; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4720 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4736 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4752 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4768 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4784 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4800 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 69; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4816 + image: "usingLineEdit.5.png" + } + Frame { + msec: 4832 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4848 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4864 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4880 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4896 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4912 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4928 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4944 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4960 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4976 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 4992 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5008 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5024 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5040 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5056 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5072 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5088 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5104 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5120 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5136 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5152 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5168 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5184 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5200 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5216 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5232 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5248 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5264 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5280 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5296 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5312 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5328 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5344 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Frame { + msec: 5360 + hash: "b7e9475cc88b099f9e17b67f4d0c8ed0" + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5376 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5392 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5408 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5424 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5440 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5456 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5472 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5488 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5504 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5520 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5536 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5552 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5568 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5584 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5600 + hash: "5435254889b22b00b043f0d748021369" + } + Frame { + msec: 5616 + hash: "5435254889b22b00b043f0d748021369" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5632 + hash: "94fa3848acc33accfb607ce31029f06d" + } + Frame { + msec: 5648 + hash: "94fa3848acc33accfb607ce31029f06d" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5664 + hash: "1ea423dd8084001f2357f1613a77daa4" + } + Frame { + msec: 5680 + hash: "1ea423dd8084001f2357f1613a77daa4" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5696 + hash: "b0f808e85cc5721473da7cd84b1987dc" + } + Frame { + msec: 5712 + hash: "b0f808e85cc5721473da7cd84b1987dc" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5728 + hash: "0667aaf2eb49c2375b831301fefb0035" + } + Frame { + msec: 5744 + hash: "0667aaf2eb49c2375b831301fefb0035" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5760 + hash: "7680aca6b9feccc7e73efa79c1473ce8" + } + Frame { + msec: 5776 + image: "usingLineEdit.6.png" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5792 + hash: "fbbc99bf6a697d60ef348148c0a48bc2" + } + Frame { + msec: 5808 + hash: "fbbc99bf6a697d60ef348148c0a48bc2" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5824 + hash: "9550d8fab2512470dd9dde62f3494450" + } + Frame { + msec: 5840 + hash: "9550d8fab2512470dd9dde62f3494450" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5856 + hash: "9550d8fab2512470dd9dde62f3494450" + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5872 + hash: "ab79f5095d60f5cef526a074ef6d4e96" + } + Frame { + msec: 5888 + hash: "ab79f5095d60f5cef526a074ef6d4e96" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5904 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Key { + type: 7 + key: 16777236 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 5920 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 5936 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 5952 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 5968 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 5984 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 6000 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 6016 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 6032 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 6048 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Key { + type: 6 + key: 16777249 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6064 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 6080 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 6096 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 6112 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 6128 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Frame { + msec: 6144 + hash: "4e6ef470ed2c2a2418a4838c6e4ae64b" + } + Key { + type: 6 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6160 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6176 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6192 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6208 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6224 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6240 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6256 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6272 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6288 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6304 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6320 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6336 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6352 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6368 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6384 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6400 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Key { + type: 7 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6416 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6432 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Key { + type: 7 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6448 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6464 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Key { + type: 7 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Key { + type: 6 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Key { + type: 7 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6480 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6496 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6512 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6528 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6544 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6560 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6576 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6592 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6608 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6624 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6640 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6656 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6672 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6688 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6704 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6720 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6736 + image: "usingLineEdit.7.png" + } + Frame { + msec: 6752 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6768 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6784 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Key { + type: 6 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6800 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Key { + type: 7 + key: 16777234 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6816 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6832 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6848 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6864 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6880 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6896 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6912 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6928 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Frame { + msec: 6944 + hash: "ed2a8fae3e94e2f90232d172246d3783" + } + Key { + type: 6 + key: 16777236 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 6960 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 6976 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 6992 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7008 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Key { + type: 7 + key: 16777236 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 7024 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7040 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7056 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7072 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7088 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Key { + type: 6 + key: 16777236 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 7104 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7120 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7136 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7152 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Key { + type: 7 + key: 16777236 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 7168 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7184 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7200 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7216 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7232 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7248 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7264 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Key { + type: 6 + key: 16777236 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 7280 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7296 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7312 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7328 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7344 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Key { + type: 7 + key: 16777236 + modifiers: 67108864 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 7360 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7376 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7392 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7408 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7424 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7440 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7456 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7472 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7488 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7504 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7520 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Key { + type: 7 + key: 16777249 + modifiers: 0 + text: "" + autorep: false + count: 1 + } + Frame { + msec: 7536 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7552 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7568 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7584 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7600 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7616 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7632 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7648 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7664 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7680 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7696 + image: "usingLineEdit.8.png" + } + Frame { + msec: 7712 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7728 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7744 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7760 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7776 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7792 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7808 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7824 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7840 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7856 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7872 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7888 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7904 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7920 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7936 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7952 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7968 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 7984 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8000 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8016 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8032 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8048 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8064 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8080 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8096 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8112 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8128 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8144 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8160 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8176 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8192 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8208 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8224 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8240 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8256 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8272 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8288 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8304 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8320 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8336 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8352 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8368 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8384 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8400 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8416 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8432 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8448 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8464 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8480 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Frame { + msec: 8496 + hash: "f1c4f46ee86ce1eb24fcd72106da0248" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 61; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8512 + hash: "e779fc73a3ca131452f62e889d5c96ea" + } + Frame { + msec: 8528 + hash: "e779fc73a3ca131452f62e889d5c96ea" + } + Frame { + msec: 8544 + hash: "e779fc73a3ca131452f62e889d5c96ea" + } + Frame { + msec: 8560 + hash: "e779fc73a3ca131452f62e889d5c96ea" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 60; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 58; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8576 + hash: "e779fc73a3ca131452f62e889d5c96ea" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 46; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8592 + hash: "400b446983d944bac62889fb47e8d405" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 41; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 40; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8608 + hash: "400b446983d944bac62889fb47e8d405" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 32; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8624 + hash: "769278730ba7e2a31333496a0c99499f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 31; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 30; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8640 + hash: "769278730ba7e2a31333496a0c99499f" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 29; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8656 + image: "usingLineEdit.9.png" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 28; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 27; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8672 + hash: "c193a6f52a967c97961df08ebffe50c1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 26; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8688 + hash: "c193a6f52a967c97961df08ebffe50c1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 25; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 24; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8704 + hash: "c193a6f52a967c97961df08ebffe50c1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 23; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 22; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8720 + hash: "c193a6f52a967c97961df08ebffe50c1" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 20; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 19; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8736 + hash: "ce0d865bf18c5c3ff93bda82f95e97c2" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 18; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 17; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8752 + hash: "ce0d865bf18c5c3ff93bda82f95e97c2" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 16; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 15; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8768 + hash: "ce0d865bf18c5c3ff93bda82f95e97c2" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 14; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 13; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8784 + hash: "ce0d865bf18c5c3ff93bda82f95e97c2" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 12; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 11; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8800 + hash: "ce0d865bf18c5c3ff93bda82f95e97c2" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 10; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 8; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8816 + hash: "af2a9c17451a89153e04418e056d9ea5" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 6; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 5; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8832 + hash: "749a1ccf2050c809be5e3820d3b2fba9" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 3; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 2; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8848 + hash: "74f183256682200a804baa620a6ce978" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 0; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -1; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8864 + hash: "9d837fb68c47ac3659b93e9f77cea0af" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -2; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -3; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8880 + hash: "2dc20ba694548e05c80383d0fcc429fc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -5; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -6; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8896 + hash: "0f5b95fbbdd932c8dbfaffd0cdd44dec" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -7; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -9; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8912 + hash: "dd9e9d86eacd44b19c6c9c64c2abf007" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -10; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -11; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8928 + hash: "7c67140abcbe7b8a36a7324016377272" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -12; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -13; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8944 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -14; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -15; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8960 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 8976 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -16; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -17; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 8992 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -18; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9008 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 9024 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 9040 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 9056 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 9072 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 9088 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 9104 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 9120 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 9136 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 9152 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 9168 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 9184 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Frame { + msec: 9200 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -17; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9216 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -16; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9232 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -14; y: 35 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -13; y: 35 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9248 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -11; y: 35 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -10; y: 34 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9264 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -8; y: 34 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -7; y: 34 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9280 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -6; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -5; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9296 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -3; y: 32 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: -1; y: 32 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9312 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 1; y: 31 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 3; y: 31 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9328 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 4; y: 31 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 6; y: 30 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9344 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 7; y: 30 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 8; y: 30 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9360 + hash: "a085e2633649f0328f109bc4143eaccc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 10; y: 30 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 11; y: 30 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9376 + hash: "fe89231a1ac7f48eee7cea14167b6616" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 12; y: 30 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 14; y: 30 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9392 + hash: "fe89231a1ac7f48eee7cea14167b6616" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 15; y: 30 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 17; y: 30 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9408 + hash: "fe89231a1ac7f48eee7cea14167b6616" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 21; y: 30 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 24; y: 30 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9424 + hash: "e816757e030c8927d6721295f8685162" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 27; y: 31 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 30; y: 31 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9440 + hash: "48f3a7d217ff85ad6088e18c1b88d6d7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 33; y: 32 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 35; y: 32 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9456 + hash: "48f3a7d217ff85ad6088e18c1b88d6d7" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 38; y: 32 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 39; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9472 + hash: "6cb50f458ba606cc4204727a02e9191b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 43; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 45; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9488 + hash: "6cb50f458ba606cc4204727a02e9191b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 48; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 50; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9504 + hash: "936d1a2ceed861a48fb3dd0c54cb0982" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 51; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 53; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9520 + hash: "936d1a2ceed861a48fb3dd0c54cb0982" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 55; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9536 + hash: "936d1a2ceed861a48fb3dd0c54cb0982" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 56; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 58; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9552 + hash: "9fb9dbff35b91d65e1e7ce569baede55" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 61; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 64; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9568 + hash: "9fb9dbff35b91d65e1e7ce569baede55" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 67; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 70; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9584 + hash: "78038f8df4ef17a164172c5bce16527d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 73; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 74; y: 34 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9600 + hash: "b390e534fe43678ff031ec9de32b50d0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 76; y: 34 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9616 + image: "usingLineEdit.10.png" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 77; y: 34 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 78; y: 34 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9632 + hash: "b390e534fe43678ff031ec9de32b50d0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 79; y: 34 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 80; y: 35 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9648 + hash: "b390e534fe43678ff031ec9de32b50d0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 81; y: 35 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 84; y: 35 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9664 + hash: "94fa3848acc33accfb607ce31029f06d" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 88; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9680 + hash: "b0f808e85cc5721473da7cd84b1987dc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 89; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 91; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9696 + hash: "7680aca6b9feccc7e73efa79c1473ce8" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 92; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 94; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9712 + hash: "ab79f5095d60f5cef526a074ef6d4e96" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 95; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 96; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9728 + hash: "35c718664fc8e817e26054c307f908f9" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 98; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 100; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9744 + hash: "23267fdc8202daba400140e51f5e3bdc" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 102; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 104; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9760 + hash: "0b2765ae503f0194e6e526ea6f9ed8f9" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 105; y: 39 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 108; y: 39 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9776 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 109; y: 39 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 110; y: 39 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9792 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 111; y: 39 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9808 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 112; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9824 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 113; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9840 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 114; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9856 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 9872 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 115; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9888 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 116; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9904 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 117; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9920 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 118; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9936 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 9952 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 119; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9968 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 120; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 9984 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 121; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 10000 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10016 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 122; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 10032 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10048 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10064 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10080 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10096 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10112 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10128 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10144 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10160 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10176 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10192 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10208 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10224 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10240 + hash: "6f6154528c95da216e1f3830de000195" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 122; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 10256 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10272 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10288 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10304 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10320 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10336 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10352 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10368 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10384 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10400 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10416 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10432 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10448 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10464 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10480 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10496 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10512 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10528 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10544 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10560 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10576 + image: "usingLineEdit.11.png" + } + Frame { + msec: 10592 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10608 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10624 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10640 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10656 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10672 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10688 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10704 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10720 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10736 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10752 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10768 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10784 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10800 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10816 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10832 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10848 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10864 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10880 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10896 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10912 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10928 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10944 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10960 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10976 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 10992 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11008 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11024 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11040 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11056 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11072 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11088 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11104 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11120 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11136 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11152 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11168 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11184 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11200 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11216 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11232 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11248 + hash: "6f6154528c95da216e1f3830de000195" + } + Frame { + msec: 11264 + hash: "6f6154528c95da216e1f3830de000195" + } +} diff --git a/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp b/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp index 8d4d0d1..2a15102 100644 --- a/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp +++ b/tests/auto/declarative/qmlvisual/tst_qmlvisual.cpp @@ -104,14 +104,16 @@ void tst_qmlvisual::visual_data() QStringList files; files << findQmlFiles(QDir(QT_TEST_SOURCE_DIR)); if (qgetenv("QMLVISUAL_ALL") != "1") { - //Text on X11 varies per distro - and the CI system is currently using something outdated. #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); #endif - //We don't want QWS test results to mire down the CI system #if defined(Q_WS_QWS) + //We don't want QWS test results to mire down the CI system files.clear(); + //Needs at least one test data or it fails anyways + files << QT_TEST_SOURCE_DIR "/selftest_noimages/selftest_noimages.qml"; #endif } diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.0.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.0.png Binary files differnew file mode 100644 index 0000000..513aab6 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.0.png diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.1.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.1.png Binary files differnew file mode 100644 index 0000000..513aab6 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.1.png diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.10.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.10.png Binary files differnew file mode 100644 index 0000000..bb22d01 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.10.png diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.2.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.2.png Binary files differnew file mode 100644 index 0000000..1357551 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.2.png diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.3.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.3.png Binary files differnew file mode 100644 index 0000000..513aab6 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.3.png diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.4.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.4.png Binary files differnew file mode 100644 index 0000000..bb22d01 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.4.png diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.5.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.5.png Binary files differnew file mode 100644 index 0000000..bb22d01 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.5.png diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.6.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.6.png Binary files differnew file mode 100644 index 0000000..c61ae3f --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.6.png diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.7.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.7.png Binary files differnew file mode 100644 index 0000000..bb22d01 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.7.png diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.8.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.8.png Binary files differnew file mode 100644 index 0000000..bb22d01 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.8.png diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.9.png b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.9.png Binary files differnew file mode 100644 index 0000000..bb22d01 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.9.png diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.qml b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.qml new file mode 100644 index 0000000..c248167 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/flickable/data/flickweb.qml @@ -0,0 +1,6083 @@ +import Qt.VisualTest 4.7 + +VisualTest { + Frame { + msec: 0 + } + Frame { + msec: 16 + image: "flickweb.0.png" + } + Frame { + msec: 32 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 48 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 64 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 80 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 96 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 112 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 128 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 144 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 160 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 176 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 192 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 208 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 224 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 240 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 256 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 272 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 288 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 304 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 320 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 336 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 352 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 368 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 384 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 400 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 416 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 432 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 448 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 464 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 480 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 496 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 512 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 528 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 544 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 0; y: 7 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 0; y: 7 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 560 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 12; y: 10 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 576 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 15; y: 11 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 592 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 608 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 624 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 640 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 12; y: 10 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 11; y: 10 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 656 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 9; y: 10 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 672 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 688 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 9; y: 11 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 704 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 9; y: 12 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 9; y: 15 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 720 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 9; y: 18 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 12; y: 24 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 736 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 14; y: 28 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 18; y: 35 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 752 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 19; y: 39 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 22; y: 43 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 768 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 22; y: 44 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 23; y: 44 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 784 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 800 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 23; y: 43 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 816 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 24; y: 45 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 832 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 26; y: 47 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 28; y: 49 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 848 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 29; y: 51 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 32; y: 55 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 864 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 34; y: 57 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 36; y: 61 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 880 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 38; y: 62 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 41; y: 66 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 896 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 43; y: 68 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 48; y: 73 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 912 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 50; y: 76 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 57; y: 80 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 928 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 63; y: 85 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 66; y: 87 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 944 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 72; y: 91 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 74; y: 93 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 960 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 80; y: 97 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 82; y: 99 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 976 + image: "flickweb.1.png" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 86; y: 102 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 88; y: 103 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 992 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 91; y: 103 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 104 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1008 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 1024 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 1040 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 105 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1056 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 106 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1072 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 107 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 108 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1088 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 109 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1104 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 110 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 111 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1120 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 112 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1136 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 113 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 114 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1152 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 115 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 116 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1168 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 92; y: 117 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1184 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 1200 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 92; y: 117 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1216 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 92; y: 116 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 92; y: 115 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1232 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 91; y: 112 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 91; y: 111 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1248 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 90; y: 107 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 90; y: 104 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1264 + hash: "e891b00cd44578b4a8e635ffe4c6d3fd" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 90; y: 101 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 89; y: 96 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1280 + hash: "61a543282ffb5e751ea1d97f0c95b208" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 89; y: 93 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 89; y: 85 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1296 + hash: "102e4b664bade46ab3bbb611acee22c9" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 89; y: 81 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 87; y: 70 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1312 + hash: "6bf42ac28a14db681442aeb7ed0c7610" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 60 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 85; y: 60 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 56 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1328 + hash: "ef531060d6b75cec8a6e3c01b3f69cc0" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 51 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 49 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1344 + hash: "e839af9d67f6214f0901977b3aa96d1a" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 46 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 43 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1360 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 41 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 85; y: 39 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1376 + hash: "e4a562aa35aa532d15c9b129e22797bb" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1392 + hash: "029d347e9c99dd4a9cec5120ac7fc25e" + } + Frame { + msec: 1408 + hash: "3c16a74e18a59630f35511ab5514c769" + } + Frame { + msec: 1424 + hash: "5dc472d6c5198d5a628510bd45a61a11" + } + Frame { + msec: 1440 + hash: "430d60127ed59dbc5904647424ead40d" + } + Frame { + msec: 1456 + hash: "cb27cfcfbbb77b55c2a8bf7e51c0af07" + } + Frame { + msec: 1472 + hash: "46f2eb33b0e8316c4123ddbee2f60ae2" + } + Frame { + msec: 1488 + hash: "1df306111ca012c9f405018778c0a12b" + } + Frame { + msec: 1504 + hash: "1eafab8fd457ad9acda068344178b4a8" + } + Frame { + msec: 1520 + hash: "286656898100e53d6d7728b51ce93df5" + } + Frame { + msec: 1536 + hash: "e2a88f0ba3030a430028147930989bbb" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1552 + hash: "fb23cf265c4d253470c2515043bc5dd8" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1568 + hash: "1dba4f0e5e5948b7133725ea8bbef3e7" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1584 + hash: "8578965c5ad012284e4e0a14a42da25e" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 34 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1600 + hash: "3ef187decae08baa2ec92998c2cbb7f7" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 31 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1616 + hash: "4e0491128eac0bbfa7a131b1f18f243c" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 26 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1632 + hash: "c2d0799526e908204efbd3aa980e086c" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 23 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1648 + hash: "cc87e09a6784d61680f8c6ab0d6a38fa" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 22 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 85; y: 16 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1664 + hash: "13dec7e835b4f26970f98b66533f84f1" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 85; y: 14 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1680 + hash: "e5d2862bee024b64326b7d85e5e45399" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 85; y: 12 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1696 + hash: "0b1401ce4a91811ac9c3eec5f94b380d" + } + Frame { + msec: 1712 + hash: "0de290542c9d3e03ed78f51423011c16" + } + Frame { + msec: 1728 + hash: "4c9aa06ad1e246b4b026742fc8cf37bc" + } + Frame { + msec: 1744 + hash: "c33003a8262c2ba25510ece181e61bc9" + } + Frame { + msec: 1760 + hash: "c33003a8262c2ba25510ece181e61bc9" + } + Frame { + msec: 1776 + hash: "ad184fa88c4299b8911c9b7ada5b3736" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 85; y: 12 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 13 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 15 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1792 + hash: "ad184fa88c4299b8911c9b7ada5b3736" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 17 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 23 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1808 + hash: "c2d0799526e908204efbd3aa980e086c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 30 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 34 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1824 + hash: "b343a9ed7e9740ec1725837fad766745" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 41 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 44 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1840 + hash: "b33260ad955474452f204ed5d468ef78" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 51 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 86; y: 55 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1856 + hash: "9a647c54e378bd0ee35ef4164892722c" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 87; y: 61 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 88; y: 67 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 88; y: 67 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 89; y: 73 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1872 + hash: "dc553d1a7b678dffea41147fc6b841f6" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 89; y: 74 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 89; y: 78 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1888 + hash: "2d61b4fb1e5a8beb6e3c3cb53c21db42" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 89; y: 79 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 89; y: 82 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1904 + hash: "209faf0b20fd53d9a1c261c8cae9666f" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 90; y: 82 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 91; y: 83 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 1920 + hash: "3497258aa07c76f0e31b5a492ee7e7cb" + } + Frame { + msec: 1936 + image: "flickweb.2.png" + } + Frame { + msec: 1952 + hash: "64c677ac4fea0e525279e86bf831d5d3" + } + Frame { + msec: 1968 + hash: "76c6c887fea94288e9fd975655e5181c" + } + Frame { + msec: 1984 + hash: "71b85e596c88b84a851a52aa3389e63a" + } + Frame { + msec: 2000 + hash: "e4a562aa35aa532d15c9b129e22797bb" + } + Frame { + msec: 2016 + hash: "148484dd95c88720cc5ef196334cb9a8" + } + Frame { + msec: 2032 + hash: "924c6254ffa1707b69174f49e4e95213" + } + Frame { + msec: 2048 + hash: "9e61907acedb27941d8be2befa364cfb" + } + Frame { + msec: 2064 + hash: "9e61907acedb27941d8be2befa364cfb" + } + Frame { + msec: 2080 + hash: "f2c4e99db1bb087a40b277ce8ce628f6" + } + Frame { + msec: 2096 + hash: "f2c4e99db1bb087a40b277ce8ce628f6" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 91; y: 82 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2112 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 90; y: 82 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2128 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 89; y: 81 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 88; y: 80 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2144 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 87; y: 79 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 86; y: 77 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2160 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 86; y: 76 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 86; y: 75 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2176 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 85; y: 73 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 71 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2192 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 82; y: 68 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 81; y: 67 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2208 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 76; y: 61 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 75; y: 59 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2224 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 71; y: 54 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 70; y: 51 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2240 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 70; y: 50 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 70; y: 49 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2256 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 70; y: 47 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 69; y: 46 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2272 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 68; y: 45 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 67; y: 43 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2288 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 66; y: 43 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 65; y: 41 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2304 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 64; y: 40 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 64; y: 39 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2320 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 63; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 63; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2336 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 63; y: 35 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 63; y: 34 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2352 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 63; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2368 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 64; y: 32 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2384 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 65; y: 32 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 65; y: 31 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2400 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 66; y: 31 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 68; y: 31 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2416 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 69; y: 30 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 71; y: 29 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2432 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 73; y: 27 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 73; y: 26 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2448 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 74; y: 24 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 74; y: 22 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2464 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 74; y: 21 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 74; y: 20 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2480 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 74; y: 18 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 74; y: 17 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2496 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 74; y: 16 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 73; y: 15 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2512 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 73; y: 14 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2528 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Frame { + msec: 2544 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Frame { + msec: 2560 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 73; y: 14 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2576 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 73; y: 15 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 72; y: 17 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2592 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 72; y: 24 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 72; y: 29 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2608 + hash: "b2d6b68f1f7229e8e65bb37e4c418a1b" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 72; y: 40 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 71; y: 47 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2624 + hash: "c4dd48fca556c2760c8f81db7fea6938" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 70; y: 60 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 70; y: 78 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2640 + hash: "9dbad8cb2692807d67f74e7ac4a4a70e" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 70; y: 88 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 70; y: 96 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 70; y: 96 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2656 + hash: "152648affe4045a81f0d6ff9150889f1" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 70; y: 99 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 70; y: 102 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2672 + hash: "152648affe4045a81f0d6ff9150889f1" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 73; y: 103 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 74; y: 103 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2688 + hash: "152648affe4045a81f0d6ff9150889f1" + } + Frame { + msec: 2704 + hash: "152648affe4045a81f0d6ff9150889f1" + } + Frame { + msec: 2720 + hash: "152648affe4045a81f0d6ff9150889f1" + } + Frame { + msec: 2736 + hash: "152648affe4045a81f0d6ff9150889f1" + } + Frame { + msec: 2752 + hash: "152648affe4045a81f0d6ff9150889f1" + } + Frame { + msec: 2768 + hash: "c9eee2b7529b07a17151e7140444c099" + } + Frame { + msec: 2784 + hash: "c9eee2b7529b07a17151e7140444c099" + } + Frame { + msec: 2800 + hash: "c9eee2b7529b07a17151e7140444c099" + } + Frame { + msec: 2816 + hash: "c9eee2b7529b07a17151e7140444c099" + } + Frame { + msec: 2832 + hash: "c9eee2b7529b07a17151e7140444c099" + } + Frame { + msec: 2848 + hash: "c9eee2b7529b07a17151e7140444c099" + } + Frame { + msec: 2864 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 2880 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 2896 + image: "flickweb.3.png" + } + Frame { + msec: 2912 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 2928 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 74; y: 102 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2944 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 74; y: 101 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 73; y: 98 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2960 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 69; y: 93 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 67; y: 91 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2976 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 62; y: 85 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 60; y: 83 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 2992 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 56; y: 77 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 55; y: 75 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3008 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 52; y: 70 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 49; y: 67 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3024 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 49; y: 65 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 48; y: 61 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3040 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 48; y: 60 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 46; y: 56 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3056 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 45; y: 54 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 42; y: 50 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3072 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 39; y: 47 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 38; y: 45 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3088 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 37; y: 44 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 36; y: 43 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3104 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 35; y: 41 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 35; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3120 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 33; y: 39 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 33; y: 38 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3136 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 32; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3152 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 32; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 31; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3168 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 31; y: 35 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3184 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 30; y: 35 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 30; y: 33 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3200 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 28; y: 32 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 28; y: 31 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3216 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 26; y: 29 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 26; y: 28 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3232 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 25; y: 27 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3248 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 25; y: 26 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3264 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 3280 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 3296 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 3312 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 25; y: 26 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3328 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 3344 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 3360 + hash: "d045839439e4091210c745f0ea173e52" + } + Frame { + msec: 3376 + hash: "d045839439e4091210c745f0ea173e52" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 25; y: 26 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3392 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 25; y: 27 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3408 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 26; y: 27 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 26; y: 28 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3424 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 27; y: 28 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 27; y: 29 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3440 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3456 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3472 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3488 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3504 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 27; y: 30 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3520 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 28; y: 31 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 29; y: 34 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3536 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 31; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 37; y: 43 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3552 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 40; y: 48 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 50; y: 59 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3568 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 55; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 65; y: 73 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3584 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 69; y: 77 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 75; y: 83 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3600 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 78; y: 85 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 80; y: 86 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3616 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 82; y: 88 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 89 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3632 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 85; y: 90 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3648 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3664 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3680 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3696 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3712 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3728 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3744 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3760 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 85; y: 89 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3776 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3792 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 88 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 87 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3808 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 85; y: 85 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 83 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 3824 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3840 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3856 + image: "flickweb.4.png" + } + Frame { + msec: 3872 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3888 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3904 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3920 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3936 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3952 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3968 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 3984 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4000 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4016 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 84 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4032 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 87 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4048 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 88 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4064 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4080 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4096 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4112 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4128 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 89 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4144 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 82; y: 90 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4160 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 82; y: 91 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 82; y: 92 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4176 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 82; y: 93 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 82; y: 95 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4192 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 82; y: 97 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 100 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4208 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 101 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 105 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4224 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 107 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 110 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4240 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 113 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 114 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4256 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 115 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 116 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4272 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 117 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4288 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4304 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4320 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4336 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4352 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4368 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4384 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4400 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4416 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4432 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4448 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4464 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4480 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 116 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4496 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4512 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4528 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4544 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4560 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4576 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4592 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4608 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 82; y: 116 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4624 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4640 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 82; y: 117 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4656 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4672 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4688 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 82; y: 118 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4704 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4720 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4736 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4752 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4768 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4784 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 119 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4800 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4816 + image: "flickweb.5.png" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 83; y: 119 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4832 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 4848 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 84; y: 119 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4864 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 118 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 85; y: 117 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4880 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 86; y: 113 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 87; y: 111 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4896 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 89; y: 107 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 90; y: 104 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4912 + hash: "f10fa114e248809ed280788d03a3e234" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 92; y: 99 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 93; y: 95 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4928 + hash: "442357340d9690811d582f548f933d92" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 95; y: 88 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 98; y: 81 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 98; y: 81 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4944 + hash: "188b8f78b2a2180a8e96a8a05bb20fe2" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 77 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 99; y: 69 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4960 + hash: "2b8ee42c5660f4f938cf10507690abbe" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 100; y: 66 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 101; y: 60 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4976 + hash: "3d4aab388f62e64c5f72c631fb8584aa" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 103; y: 59 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 104; y: 56 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 4992 + hash: "439364cea3330411f526093d58ece463" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 104; y: 55 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 104; y: 53 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5008 + hash: "27653ec59651e6b3cb2ebf2bc81a975a" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 104; y: 52 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 104; y: 51 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5024 + hash: "d9c0fb2cbf968e0524291ae2570ca585" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 105; y: 50 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 105; y: 49 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5040 + hash: "ef75df694a972985f410e21182dbb12b" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 105; y: 48 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5056 + hash: "adda6aa851c1587c1bb2605809348725" + } + Frame { + msec: 5072 + hash: "196c12052069f0f8c775aa38d3291bef" + } + Frame { + msec: 5088 + hash: "eaa025b6aee87edf95643cc46880d0db" + } + Frame { + msec: 5104 + hash: "edeab897b82df47ae6deb858eca3087e" + } + Frame { + msec: 5120 + hash: "46e3b5da149cfc40036a860e74e0cd78" + } + Frame { + msec: 5136 + hash: "46e3b5da149cfc40036a860e74e0cd78" + } + Frame { + msec: 5152 + hash: "0fe9b13b9b0752ab4ad74f4e43f94d86" + } + Frame { + msec: 5168 + hash: "0fe9b13b9b0752ab4ad74f4e43f94d86" + } + Frame { + msec: 5184 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5200 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5216 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5232 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5248 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5264 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5280 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5296 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5312 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5328 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5344 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 105; y: 47 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 104; y: 46 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5360 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 103; y: 45 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 102; y: 45 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5376 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 102; y: 44 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5392 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 101; y: 43 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5408 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 101; y: 42 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 100; y: 42 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5424 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 99; y: 41 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 40 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5440 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 39 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5456 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 38 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5472 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 36 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 35 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5488 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 33 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 30 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5504 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 29 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 28 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5520 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 26 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 25 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5536 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 24 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 23 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5552 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 97; y: 23 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 97; y: 22 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5568 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5584 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5600 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5616 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5632 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 97; y: 22 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5648 + hash: "695e9c7292475cad011ca76799452042" + } + Frame { + msec: 5664 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 97; y: 24 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 97; y: 26 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5680 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 97; y: 28 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 97; y: 31 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5696 + hash: "695e9c7292475cad011ca76799452042" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 97; y: 37 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 97; y: 42 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5712 + hash: "27653ec59651e6b3cb2ebf2bc81a975a" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 97; y: 50 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 97; y: 58 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5728 + hash: "f2a68c3a60002a796b0cd595ae89e477" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 97; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 97; y: 71 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5744 + hash: "2628ffe66f06c997d9c9b66febc04ce8" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 97; y: 75 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 98; y: 83 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5760 + hash: "9b68c76d622f7b883a13927a112179f0" + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 99; y: 86 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 1 + x: 101; y: 91 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 101; y: 91 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5776 + image: "flickweb.6.png" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 103; y: 95 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 104; y: 95 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5792 + hash: "6d6d87355037ec4a15b2a81c8d48b74d" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 107; y: 95 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 107; y: 94 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5808 + hash: "6d6d87355037ec4a15b2a81c8d48b74d" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 107; y: 93 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5824 + hash: "6d6d87355037ec4a15b2a81c8d48b74d" + } + Frame { + msec: 5840 + hash: "6d6d87355037ec4a15b2a81c8d48b74d" + } + Frame { + msec: 5856 + hash: "34c3edc4500a268a326b5c2156c12f09" + } + Frame { + msec: 5872 + hash: "34c3edc4500a268a326b5c2156c12f09" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 106; y: 92 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 105; y: 91 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5888 + hash: "34c3edc4500a268a326b5c2156c12f09" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 104; y: 91 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 103; y: 90 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5904 + hash: "ac600900160ab37ec8a3e67eb82d0259" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 101; y: 89 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 100; y: 88 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5920 + hash: "ac600900160ab37ec8a3e67eb82d0259" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 99; y: 86 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 98; y: 86 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5936 + hash: "dc3cef419e3b7d59f450d3307aeebefa" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 97; y: 85 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 96; y: 85 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5952 + hash: "dc3cef419e3b7d59f450d3307aeebefa" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 94; y: 84 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 93; y: 83 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5968 + hash: "9b68c76d622f7b883a13927a112179f0" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 90; y: 82 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 86; y: 81 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 5984 + hash: "9b68c76d622f7b883a13927a112179f0" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 85; y: 80 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 81; y: 79 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6000 + hash: "9b68c76d622f7b883a13927a112179f0" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 79; y: 78 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 76; y: 76 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6016 + hash: "9b68c76d622f7b883a13927a112179f0" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 75; y: 76 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 72; y: 73 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6032 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 68; y: 70 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 66; y: 68 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6048 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 63; y: 65 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 61; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6064 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 58; y: 60 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 57; y: 59 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6080 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 54; y: 56 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 53; y: 54 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6096 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 51; y: 50 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 48; y: 46 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6112 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 48; y: 45 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 46; y: 41 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6128 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 45; y: 39 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 43; y: 36 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6144 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 43; y: 35 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 41; y: 32 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6160 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 40; y: 30 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 38; y: 28 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6176 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 36; y: 26 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 35; y: 24 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6192 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 33; y: 22 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 32; y: 21 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6208 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 31; y: 20 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 30; y: 19 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6224 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 29; y: 19 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 28; y: 18 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6240 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 27; y: 18 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 26; y: 17 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6256 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 25; y: 17 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6272 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 24; y: 17 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6288 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6304 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6320 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6336 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6352 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 2 + button: 1 + buttons: 1 + x: 24; y: 17 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6368 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6384 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6400 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6416 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 3 + button: 1 + buttons: 0 + x: 24; y: 17 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6432 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 24; y: 18 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6448 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 25; y: 18 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 25; y: 19 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6464 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 26; y: 19 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 27; y: 20 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6480 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 28; y: 21 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6496 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6512 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6528 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 29; y: 22 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6544 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 30; y: 23 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 31; y: 24 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6560 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 32; y: 25 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 33; y: 25 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6576 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 34; y: 26 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 34; y: 27 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6592 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 37; y: 30 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 38; y: 31 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6608 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 41; y: 35 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 42; y: 37 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6624 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 45; y: 42 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 50; y: 46 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6640 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 52; y: 49 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 57; y: 53 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6656 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 60; y: 55 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 65; y: 58 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6672 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 66; y: 59 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 71; y: 61 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6688 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 75; y: 62 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 77; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6704 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 80; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 81; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6720 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 83; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 84; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6736 + image: "flickweb.7.png" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 85; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 86; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6752 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 87; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 88; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6768 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 90; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 93; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6784 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 94; y: 64 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 99; y: 63 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6800 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 102; y: 63 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 106; y: 62 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6816 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 110; y: 62 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 116; y: 62 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6832 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 122; y: 62 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 124; y: 62 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6848 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 125; y: 62 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 6864 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6880 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6896 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6912 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6928 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6944 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6960 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6976 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 6992 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7008 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7024 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7040 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7056 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7072 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7088 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 126; y: 62 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7104 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 127; y: 62 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 129; y: 64 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7120 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 132; y: 65 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 134; y: 66 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7136 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 139; y: 68 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 144; y: 69 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7152 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 148; y: 69 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 154; y: 69 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7168 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 158; y: 68 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 162; y: 66 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7184 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 164; y: 65 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 165; y: 62 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7200 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 165; y: 60 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 165; y: 54 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7216 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 162; y: 45 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 159; y: 39 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7232 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 151; y: 27 + modifiers: 0 + sendToViewport: true + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 146; y: 22 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7248 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Mouse { + type: 5 + button: 0 + buttons: 0 + x: 129; y: 3 + modifiers: 0 + sendToViewport: true + } + Frame { + msec: 7264 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7280 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7296 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7312 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7328 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7344 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7360 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7376 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7392 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7408 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7424 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7440 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7456 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7472 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7488 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7504 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7520 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7536 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7552 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7568 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7584 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7600 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7616 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7632 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7648 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7664 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7680 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7696 + image: "flickweb.8.png" + } + Frame { + msec: 7712 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7728 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7744 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7760 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7776 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7792 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7808 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7824 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7840 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7856 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7872 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7888 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7904 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7920 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7936 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7952 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7968 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 7984 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8000 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8016 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8032 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8048 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8064 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8080 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8096 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8112 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8128 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8144 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8160 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8176 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8192 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8208 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8224 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8240 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8256 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8272 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8288 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8304 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8320 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8336 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8352 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8368 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8384 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8400 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8416 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8432 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8448 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8464 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8480 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8496 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8512 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8528 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8544 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8560 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8576 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8592 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8608 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8624 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8640 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8656 + image: "flickweb.9.png" + } + Frame { + msec: 8672 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8688 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8704 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8720 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8736 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8752 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8768 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8784 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8800 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8816 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8832 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8848 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8864 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8880 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8896 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8912 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8928 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8944 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8960 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8976 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 8992 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9008 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9024 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9040 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9056 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9072 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9088 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9104 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9120 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9136 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9152 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9168 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9184 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9200 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9216 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9232 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9248 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9264 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9280 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9296 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9312 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9328 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9344 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9360 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9376 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9392 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9408 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9424 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9440 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9456 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9472 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9488 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9504 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9520 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9536 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9552 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9568 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9584 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9600 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9616 + image: "flickweb.10.png" + } + Frame { + msec: 9632 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9648 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9664 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9680 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9696 + hash: "98990f624351f88347b2eb010bb5cd13" + } + Frame { + msec: 9712 + hash: "98990f624351f88347b2eb010bb5cd13" + } +} diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/flickweb.qml b/tests/auto/declarative/qmlvisual/webview/flickable/flickweb.qml new file mode 100644 index 0000000..af09389 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/flickable/flickweb.qml @@ -0,0 +1,35 @@ +import QtQuick 1.0 +import QtWebKit 1.0 + +Flickable { + id: flickable + width: 320 + height: 200 + contentWidth: Math.max(flickable.width,webView.width) + contentHeight: Math.max(flickable.height,webView.height) + pressDelay: 100 + + WebView { + id: webView + transformOrigin: Item.TopLeft + smooth: false // We don't want smooth scaling, since we only scale during (fast) transitions + url: "test.html" + preferredWidth: flickable.width + preferredHeight: flickable.height + contentsScale: 1 + onContentsSizeChanged: { + // zoom out + contentsScale = Math.min(1,flickable.width / contentsSize.width) + } + } + + Rectangle { + id: button + width: 50; height: 50; color: "red" + MouseArea { + anchors.fill: parent + onPressed: button.color = "blue" + onReleased: button.color = "green" + } + } +} diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/qtlogo.png b/tests/auto/declarative/qmlvisual/webview/flickable/qtlogo.png Binary files differnew file mode 100644 index 0000000..399bd0b --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/flickable/qtlogo.png diff --git a/tests/auto/declarative/qmlvisual/webview/flickable/test.html b/tests/auto/declarative/qmlvisual/webview/flickable/test.html new file mode 100644 index 0000000..35eb718 --- /dev/null +++ b/tests/auto/declarative/qmlvisual/webview/flickable/test.html @@ -0,0 +1,3 @@ +<html> + <img width="400" height="400" src="qtlogo.png"> +</html> diff --git a/tests/auto/lancelot/tst_lancelot.cpp b/tests/auto/lancelot/tst_lancelot.cpp index 8467672..7c6fe66 100644 --- a/tests/auto/lancelot/tst_lancelot.cpp +++ b/tests/auto/lancelot/tst_lancelot.cpp @@ -63,6 +63,8 @@ Q_OBJECT public: tst_Lancelot(); + static bool simfail; + private: ImageItem render(const ImageItem &item); void paint(QPaintDevice *device, const QStringList &script, const QString &filePath); @@ -91,6 +93,8 @@ private slots: #endif }; +bool tst_Lancelot::simfail = false; + tst_Lancelot::tst_Lancelot() { } @@ -290,12 +294,38 @@ void tst_Lancelot::paint(QPaintDevice *device, const QStringList &script, const { QPainter p(device); PaintCommands pcmd(script, 800, 800); + //pcmd.setShouldDrawText(false); pcmd.setType(ImageType); pcmd.setPainter(&p); pcmd.setFilePath(filePath); pcmd.runCommands(); p.end(); + + if (simfail) { + QPainter p2(device); + p2.setPen(QPen(QBrush(Qt::cyan), 3, Qt::DashLine)); + p2.drawLine(200, 200, 600, 600); + p2.drawLine(600, 200, 200, 600); + simfail = false; + } } +#define main rmain QTEST_MAIN(tst_Lancelot) +#undef main + +int main(int argc, char *argv[]) +{ + char *fargv[20]; + int fargc = 0; + for (int i = 0; i < qMin(argc, 19); i++) { + if (!qstrcmp(argv[i], "-simfail")) + tst_Lancelot::simfail = true; + else + fargv[fargc++] = argv[i]; + } + fargv[fargc] = 0; + return rmain(fargc, fargv); +} + #include "tst_lancelot.moc" diff --git a/tests/auto/linguist/lupdate/testdata/good/parsejscontexts/main.js b/tests/auto/linguist/lupdate/testdata/good/parsejscontexts/main.js new file mode 100644 index 0000000..aa510c1 --- /dev/null +++ b/tests/auto/linguist/lupdate/testdata/good/parsejscontexts/main.js @@ -0,0 +1,29 @@ +// No context specified, default should be used. +qsTr("One"); +QT_TR_NOOP("Two"); + +// TRANSLATOR Foo +qsTr("Three"); +QT_TR_NOOP("Four"); + +// TRANSLATOR Bar +qsTr("Five"); + +/* + TRANSLATOR Baz + This is a comment to the translator. +*/ +QT_TR_NOOP("Six"); + +// TRANSLATOR Foo.Bar +qsTr("Seven"); + +/* TRANSLATOR Bar::Baz */ +QT_TR_NOOP("Eight"); + +// qsTranslate() context is not affected. +qsTranslate("Foo", "Nine"); + +// Empty context. +// TRANSLATOR +qsTr("Ten"); diff --git a/tests/auto/linguist/lupdate/testdata/good/parsejscontexts/project.pro b/tests/auto/linguist/lupdate/testdata/good/parsejscontexts/project.pro new file mode 100644 index 0000000..d549039 --- /dev/null +++ b/tests/auto/linguist/lupdate/testdata/good/parsejscontexts/project.pro @@ -0,0 +1,3 @@ +SOURCES += main.js + +TRANSLATIONS = project.ts diff --git a/tests/auto/linguist/lupdate/testdata/good/parsejscontexts/project.ts.result b/tests/auto/linguist/lupdate/testdata/good/parsejscontexts/project.ts.result new file mode 100644 index 0000000..18407b2 --- /dev/null +++ b/tests/auto/linguist/lupdate/testdata/good/parsejscontexts/project.ts.result @@ -0,0 +1,81 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0"> +<context> + <name></name> + <message> + <location filename="main.js" line="29"/> + <source>Ten</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Bar</name> + <message> + <location filename="main.js" line="10"/> + <source>Five</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Bar::Baz</name> + <message> + <location filename="main.js" line="22"/> + <source>Eight</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Baz</name> + <message> + <location filename="main.js" line="12"/> + <source></source> + <comment>This is a comment to the translator.</comment> + <translation></translation> + </message> + <message> + <location filename="main.js" line="16"/> + <source>Six</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Foo</name> + <message> + <location filename="main.js" line="6"/> + <source>Three</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="main.js" line="7"/> + <source>Four</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="main.js" line="25"/> + <source>Nine</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>Foo.Bar</name> + <message> + <location filename="main.js" line="19"/> + <source>Seven</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>main</name> + <message> + <location filename="main.js" line="2"/> + <source>One</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="main.js" line="3"/> + <source>Two</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> diff --git a/tests/auto/qdbusconnection/tst_qdbusconnection.cpp b/tests/auto/qdbusconnection/tst_qdbusconnection.cpp index 96209b1..599abbd 100644 --- a/tests/auto/qdbusconnection/tst_qdbusconnection.cpp +++ b/tests/auto/qdbusconnection/tst_qdbusconnection.cpp @@ -298,7 +298,7 @@ void tst_QDBusConnection::registerObject() // register one object at root: MyObject obj; QVERIFY(con.registerObject(path, &obj, QDBusConnection::ExportAllSlots)); - QCOMPARE(con.objectRegisteredAt(path), &obj); + QCOMPARE(con.objectRegisteredAt(path), static_cast<QObject *>(&obj)); QVERIFY(callMethod(con, path)); QCOMPARE(obj.path, path); } @@ -495,7 +495,7 @@ void tst_QDBusConnection::callSelf() QDBusConnection connection = QDBusConnection::sessionBus(); QVERIFY(connection.registerObject("/test", &testObject, QDBusConnection::ExportAllContents)); - QCOMPARE(connection.objectRegisteredAt("/test"), &testObject); + QCOMPARE(connection.objectRegisteredAt("/test"), static_cast<QObject *>(&testObject)); QVERIFY(connection.registerService(serviceName())); QDBusInterface interface(serviceName(), "/test"); QVERIFY(interface.isValid()); diff --git a/tests/auto/qdial/tst_qdial.cpp b/tests/auto/qdial/tst_qdial.cpp index 2428eae..92c2964 100644 --- a/tests/auto/qdial/tst_qdial.cpp +++ b/tests/auto/qdial/tst_qdial.cpp @@ -54,6 +54,7 @@ private slots: void getSetCheck(); void valueChanged(); void sliderMoved(); + void wrappingCheck(); }; // Testing get/set functions @@ -143,5 +144,68 @@ void tst_QDial::sliderMoved() } +void tst_QDial::wrappingCheck() +{ + //This tests if dial will wrap past the maximum value back to the minimum + //and vice versa when changing the value with a keypress + QDial dial; + dial.setMinimum(0); + dial.setMaximum(100); + dial.setSingleStep(1); + dial.setWrapping(true); + dial.setValue(99); + dial.show(); + + { //set value to maximum but do not wrap + QTest::keyPress(&dial, Qt::Key_Up); + QCOMPARE( dial.value(), 100); + } + + { //step up once more and wrap clockwise to minimum + 1 + QTest::keyPress(&dial, Qt::Key_Up); + QCOMPARE( dial.value(), 1); + } + + { //step down once, and wrap anti-clockwise to minimum, then again to maximum - 1 + QTest::keyPress(&dial, Qt::Key_Down); + QCOMPARE( dial.value(), 0); + + QTest::keyPress(&dial, Qt::Key_Down); + QCOMPARE( dial.value(), 99); + } + + { //when wrapping property is false no wrapping will occur + dial.setWrapping(false); + dial.setValue(100); + + QTest::keyPress(&dial, Qt::Key_Up); + QCOMPARE( dial.value(), 100); + + dial.setValue(0); + QTest::keyPress(&dial, Qt::Key_Down); + QCOMPARE( dial.value(), 0); + } + + { //When the step is really big or small, wrapping should still behave + dial.setWrapping(true); + dial.setValue(dial.minimum()); + dial.setSingleStep(305); + + QTest::keyPress(&dial, Qt::Key_Up); + QCOMPARE( dial.value(), 5); + + dial.setValue(dial.minimum()); + QTest::keyPress(&dial, Qt::Key_Down); + QCOMPARE( dial.value(), 95); + + dial.setMinimum(-30); + dial.setMaximum(-4); + dial.setSingleStep(200); + dial.setValue(dial.minimum()); + QTest::keyPress(&dial, Qt::Key_Down); + QCOMPARE( dial.value(), -22); + } +} + QTEST_MAIN(tst_QDial) #include "tst_qdial.moc" diff --git a/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp b/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp index a26e34d..648b7e9 100644 --- a/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp +++ b/tests/auto/qfilesystemwatcher/tst_qfilesystemwatcher.cpp @@ -82,6 +82,8 @@ private slots: void removeFileAndUnWatch(); void cleanup(); + + void QTBUG15255_deadlock(); private: QStringList do_force_engines; bool do_force_native; @@ -135,14 +137,11 @@ void tst_QFileSystemWatcher::basicTest() // create watcher, forcing it to use a specific backend QFileSystemWatcher watcher; watcher.setObjectName(QLatin1String("_qt_autotest_force_engine_") + backend); + watcher.removePath(testFile.fileName()); watcher.addPath(testFile.fileName()); QSignalSpy changedSpy(&watcher, SIGNAL(fileChanged(const QString &))); QEventLoop eventLoop; - connect(&watcher, - SIGNAL(fileChanged(const QString &)), - &eventLoop, - SLOT(quit())); QTimer timer; connect(&timer, SIGNAL(timeout()), &eventLoop, SLOT(quit())); @@ -278,10 +277,6 @@ void tst_QFileSystemWatcher::watchDirectory() QSignalSpy changedSpy(&watcher, SIGNAL(directoryChanged(const QString &))); QEventLoop eventLoop; - connect(&watcher, - SIGNAL(directoryChanged(const QString &)), - &eventLoop, - SLOT(quit())); QTimer timer; connect(&timer, SIGNAL(timeout()), &eventLoop, SLOT(quit())); @@ -557,5 +552,23 @@ void tst_QFileSystemWatcher::removeFileAndUnWatch() watcher.addPath(filename); } +class SomeSingleton : public QObject +{ +public: + SomeSingleton() : mFsWatcher(new QFileSystemWatcher(this)) { mFsWatcher->addPath(QLatin1String("/usr/lib"));} + void bla() const {} + QFileSystemWatcher* mFsWatcher; +}; + +Q_GLOBAL_STATIC(SomeSingleton, someSingleton) + +void tst_QFileSystemWatcher::QTBUG15255_deadlock() +{ + someSingleton()->bla(); + //the test must still finish + QTest::qWait(30); +} + + QTEST_MAIN(tst_QFileSystemWatcher) #include "tst_qfilesystemwatcher.moc" diff --git a/tests/auto/qgl/tst_qgl.cpp b/tests/auto/qgl/tst_qgl.cpp index 7f9ee04..d99ab50 100644 --- a/tests/auto/qgl/tst_qgl.cpp +++ b/tests/auto/qgl/tst_qgl.cpp @@ -97,6 +97,7 @@ private slots: void qglContextDefaultBindTexture(); void textureCleanup(); void threadImages(); + void nullRectCrash(); }; tst_QGL::tst_QGL() @@ -2367,6 +2368,28 @@ void tst_QGL::threadImages() delete widget; } +void tst_QGL::nullRectCrash() +{ + if (!QGLFramebufferObject::hasOpenGLFramebufferObjects()) + QSKIP("QGLFramebufferObject not supported on this platform", SkipSingle); + + QGLWidget glw; + glw.makeCurrent(); + + QGLFramebufferObjectFormat fboFormat; + fboFormat.setAttachment(QGLFramebufferObject::CombinedDepthStencil); + + QGLFramebufferObject *fbo = new QGLFramebufferObject(128, 128, fboFormat); + + QPainter fboPainter(fbo); + + fboPainter.setPen(QPen(QColor(255, 127, 127, 127), 2)); + fboPainter.setBrush(QColor(127, 255, 127, 127)); + fboPainter.drawRect(QRectF()); + + fboPainter.end(); +} + class tst_QGLDummy : public QObject { Q_OBJECT diff --git a/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp b/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp index b173046..27b8330 100644 --- a/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp +++ b/tests/auto/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp @@ -124,6 +124,8 @@ private slots: void heightForWidth(); void widthForHeight(); void heightForWidthWithSpanning(); + void stretchAndHeightForWidth(); + void testDefaultAlignment(); }; class RectWidget : public QGraphicsWidget @@ -702,6 +704,10 @@ void tst_QGraphicsGridLayout::columnMaximumWidth() layout->setContentsMargins(0, 0, 0, 0); layout->setSpacing(0); + QCOMPARE(layout->minimumSize(), QSizeF(10+10+10, 10+10)); + QCOMPARE(layout->preferredSize(), QSizeF(25+25+25, 25+25)); + QCOMPARE(layout->maximumSize(), QSizeF(50+50+50, 50+50)); + // should at least be a very large number QVERIFY(layout->columnMaximumWidth(0) >= 10000); QCOMPARE(layout->columnMaximumWidth(0), layout->columnMaximumWidth(1)); @@ -709,17 +715,65 @@ void tst_QGraphicsGridLayout::columnMaximumWidth() layout->setColumnMaximumWidth(0, 20); layout->setColumnMaximumWidth(2, 60); - view.show(); - widget->show(); + QCOMPARE(layout->minimumSize(), QSizeF(10+10+10, 10+10)); + QCOMPARE(layout->preferredSize(), QSizeF(20+25+25, 25+25)); + QCOMPARE(layout->maximumSize(), QSizeF(20+50+60, 50+50)); + QCOMPARE(layout->maximumSize(), widget->maximumSize()); + widget->resize(widget->effectiveSizeHint(Qt::PreferredSize)); - QApplication::processEvents(); + layout->activate(); - QCOMPARE(layout->itemAt(0,0)->geometry().width(), 20.0); - QCOMPARE(layout->itemAt(1,0)->geometry().width(), 20.0); - QCOMPARE(layout->itemAt(0,1)->geometry().width(), 25.0); - QCOMPARE(layout->itemAt(1,1)->geometry().width(), 25.0); - QCOMPARE(layout->itemAt(0,2)->geometry().width(), 25.0); - QCOMPARE(layout->itemAt(1,2)->geometry().width(), 25.0); + QCOMPARE(layout->itemAt(0,0)->geometry(), QRectF(0, 0, 20, 25)); + QCOMPARE(layout->itemAt(1,0)->geometry(), QRectF(0, 25, 20, 25)); + QCOMPARE(layout->itemAt(0,1)->geometry(), QRectF(20, 0, 25, 25)); + QCOMPARE(layout->itemAt(1,1)->geometry(), QRectF(20, 25, 25, 25)); + QCOMPARE(layout->itemAt(0,2)->geometry(), QRectF(45, 0, 25, 25)); + QCOMPARE(layout->itemAt(1,2)->geometry(), QRectF(45, 25, 25, 25)); + + layout->setColumnAlignment(2, Qt::AlignCenter); + widget->resize(widget->effectiveSizeHint(Qt::MaximumSize)); + layout->activate(); + QCOMPARE(layout->geometry(), QRectF(0,0,20+50+60, 50+50)); + QCOMPARE(layout->itemAt(0,0)->geometry(), QRectF(0, 0, 20, 50)); + QCOMPARE(layout->itemAt(1,0)->geometry(), QRectF(0, 50, 20, 50)); + QCOMPARE(layout->itemAt(0,1)->geometry(), QRectF(20, 0, 50, 50)); + QCOMPARE(layout->itemAt(1,1)->geometry(), QRectF(20, 50, 50, 50)); + QCOMPARE(layout->itemAt(0,2)->geometry(), QRectF(75, 0, 50, 50)); + QCOMPARE(layout->itemAt(1,2)->geometry(), QRectF(75, 50, 50, 50)); + + for (int i = 0; i < layout->count(); i++) + layout->setAlignment(layout->itemAt(i), Qt::AlignRight | Qt::AlignBottom); + layout->activate(); + QCOMPARE(layout->itemAt(0,0)->geometry(), QRectF(0, 0, 20, 50)); + QCOMPARE(layout->itemAt(1,0)->geometry(), QRectF(0, 50, 20, 50)); + QCOMPARE(layout->itemAt(0,1)->geometry(), QRectF(20, 0, 50, 50)); + QCOMPARE(layout->itemAt(1,1)->geometry(), QRectF(20, 50, 50, 50)); + QCOMPARE(layout->itemAt(0,2)->geometry(), QRectF(80, 0, 50, 50)); + QCOMPARE(layout->itemAt(1,2)->geometry(), QRectF(80, 50, 50, 50)); + for (int i = 0; i < layout->count(); i++) + layout->setAlignment(layout->itemAt(i), Qt::AlignCenter); + + layout->setMaximumSize(layout->maximumSize() + QSizeF(60,60)); + widget->resize(widget->effectiveSizeHint(Qt::MaximumSize)); + layout->activate(); + + QCOMPARE(layout->itemAt(0,0)->geometry(), QRectF(0, 15, 20, 50)); + QCOMPARE(layout->itemAt(1,0)->geometry(), QRectF(0, 95, 20, 50)); + QCOMPARE(layout->itemAt(0,1)->geometry(), QRectF(20+30, 15, 50, 50)); + QCOMPARE(layout->itemAt(1,1)->geometry(), QRectF(20+30, 95, 50, 50)); + QCOMPARE(layout->itemAt(0,2)->geometry(), QRectF(20+60+50+5, 15, 50, 50)); + QCOMPARE(layout->itemAt(1,2)->geometry(), QRectF(20+60+50+5, 95, 50, 50)); + + layout->setMaximumSize(layout->preferredSize() + QSizeF(20,20)); + widget->resize(widget->effectiveSizeHint(Qt::MaximumSize)); + layout->activate(); + + QCOMPARE(layout->itemAt(0,0)->geometry(), QRectF(0, 0, 20, 35)); + QCOMPARE(layout->itemAt(1,0)->geometry(), QRectF(0, 35, 20, 35)); + QCOMPARE(layout->itemAt(0,1)->geometry(), QRectF(20, 0, 35, 35)); + QCOMPARE(layout->itemAt(1,1)->geometry(), QRectF(20, 35, 35, 35)); + QCOMPARE(layout->itemAt(0,2)->geometry(), QRectF(55, 0, 35, 35)); + QCOMPARE(layout->itemAt(1,2)->geometry(), QRectF(55, 35, 35, 35)); delete widget; } @@ -2375,6 +2429,11 @@ static QSizeF hfw3(Qt::SizeHint, const QSizeF &constraint) return result; } +static QSizeF hfw2(Qt::SizeHint /*which*/, const QSizeF &constraint) +{ + return QSizeF(constraint.width(), constraint.width()); +} + void tst_QGraphicsGridLayout::geometries_data() { @@ -2429,8 +2488,7 @@ void tst_QGraphicsGridLayout::geometries_data() << QRectF(0, 0, 50, 1) << QRectF(50, 0, 50, 1) << QRectF(0, 1, 50,100) << QRectF(50, 1, 50,400) ); -#if 0 - QTest::newRow("hfw-100x408") << (ItemList() + QTest::newRow("hfw-h408") << (ItemList() << ItemDesc(0,0) .minSize(QSizeF(1,1)) .preferredSize(QSizeF(50,10)) @@ -2444,9 +2502,9 @@ void tst_QGraphicsGridLayout::geometries_data() .preferredSize(QSizeF(50,10)) .maxSize(QSizeF(100, 100)) << ItemDesc(1,1) - .minSize(QSizeF(40,40)) - .preferredSize(QSizeF(50,400)) - .maxSize(QSizeF(500, 500)) + .sizeHint(Qt::MinimumSize, QSizeF(40,40)) + .sizeHint(Qt::PreferredSize, QSizeF(50,400)) + .sizeHint(Qt::MaximumSize, QSizeF(500, 500)) .dynamicConstraint(hfw1, Qt::Vertical) ) << QSizeF(100, 408) @@ -2454,7 +2512,6 @@ void tst_QGraphicsGridLayout::geometries_data() << QRectF(0, 0, 50, 8) << QRectF(50, 0, 50, 8) << QRectF(0, 8, 50,100) << QRectF(50, 8, 50,400) ); -#endif QTest::newRow("hfw-h410") << (ItemList() << ItemDesc(0,0) .minSize(QSizeF(1,1)) @@ -2717,6 +2774,150 @@ void tst_QGraphicsGridLayout::geometries_data() ); #endif + QTest::newRow("hfw-h470") << (ItemList() + << ItemDesc(0,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(0,1) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,1) + .sizeHint(Qt::MinimumSize, QSizeF(40,40)) + .sizeHint(Qt::PreferredSize, QSizeF(50,400)) + .sizeHint(Qt::MaximumSize, QSizeF(500,500)) + .dynamicConstraint(hfw1, Qt::Vertical) + ) + << QSizeF(100, 470) + << (RectList() + << QRectF(0, 0, 50,70) << QRectF(50, 0, 50,70) + << QRectF(0, 70, 50,100) << QRectF(50, 70, 50,400) + ); + + + // change layout width and verify + QTest::newRow("hfw-w100") << (ItemList() + << ItemDesc(0,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(0,1) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,1) + .sizeHint(Qt::MinimumSize, QSizeF(40,40)) + .sizeHint(Qt::PreferredSize, QSizeF(50,400)) + .sizeHint(Qt::MaximumSize, QSizeF(5000,5000)) + .dynamicConstraint(hfw1, Qt::Vertical) + ) + << QSizeF(100, 401) + << (RectList() + << QRectF( 0, 0, 50, 1) << QRectF( 50, 0, 50, 1) + << QRectF( 0, 1, 50, 100) << QRectF( 50, 1, 50, 400) + ); + + QTest::newRow("hfw-w160") << (ItemList() + << ItemDesc(0,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(0,1) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,1) + .sizeHint(Qt::MinimumSize, QSizeF(40,40)) + .sizeHint(Qt::PreferredSize, QSizeF(50,400)) + .sizeHint(Qt::MaximumSize, QSizeF(5000,5000)) + .dynamicConstraint(hfw1, Qt::Vertical) + ) + << QSizeF(160, 350) + << (RectList() + << QRectF( 0, 0, 80, 100) << QRectF( 80, 0, 80, 100) + << QRectF( 0, 100, 80, 100) << QRectF( 80, 100, 80, 250) + ); + + QTest::newRow("hfw-w500") << (ItemList() + << ItemDesc(0,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(0,1) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,0) + .minSize(QSizeF(1,1)) + .preferredSize(QSizeF(50,10)) + .maxSize(QSizeF(100, 100)) + << ItemDesc(1,1) + .sizeHint(Qt::MinimumSize, QSizeF(40,40)) + .sizeHint(Qt::PreferredSize, QSizeF(50,400)) + .sizeHint(Qt::MaximumSize, QSizeF(5000,5000)) + .dynamicConstraint(hfw1, Qt::Vertical) + ) + << QSizeF(500, 200) + << (RectList() + << QRectF( 0, 0, 100, 100) << QRectF(100, 0, 100, 100) + << QRectF( 0, 100, 100, 100) << QRectF(100, 100, 400, 50) + ); + + QTest::newRow("hfw-alignment-defaults") << (ItemList() + << ItemDesc(0,0) + .minSize(QSizeF(100, 100)) + .maxSize(QSizeF(100, 100)) + .dynamicConstraint(hfw2, Qt::Vertical) + << ItemDesc(1,0) + .minSize(QSizeF(200, 200)) + .maxSize(QSizeF(200, 200)) + .dynamicConstraint(hfw2, Qt::Vertical) + << ItemDesc(2,0) + .minSize(QSizeF(300, 300)) + .maxSize(QSizeF(300, 300)) + ) + << QSizeF(300, 600) + << (RectList() + << QRectF(0, 0, 100, 100) + << QRectF(0, 100, 200, 200) + << QRectF(0, 300, 300, 300) + ); + + QTest::newRow("hfw-alignment2") << (ItemList() + << ItemDesc(0,0) + .minSize(QSizeF(100, 100)) + .maxSize(QSizeF(100, 100)) + .dynamicConstraint(hfw2, Qt::Vertical) + .alignment(Qt::AlignRight) + << ItemDesc(1,0) + .minSize(QSizeF(200, 200)) + .maxSize(QSizeF(200, 200)) + .dynamicConstraint(hfw2, Qt::Vertical) + .alignment(Qt::AlignHCenter) + << ItemDesc(2,0) + .minSize(QSizeF(300, 300)) + .maxSize(QSizeF(300, 300)) + ) + << QSizeF(300, 600) + << (RectList() + << QRectF(200, 0, 100, 100) + << QRectF( 50, 100, 200, 200) + << QRectF( 0, 300, 300, 300) + ); + } void tst_QGraphicsGridLayout::geometries() @@ -2889,8 +3090,10 @@ void tst_QGraphicsGridLayout::heightForWidth() w11->setSizePolicy(sp); layout->addItem(w11, 1, 1); - QSizeF prefSize = layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(-1, -1)); - QCOMPARE(prefSize, QSizeF(50+50, 50+400)); + QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(-1, -1)), QSizeF(2, 2)); + QEXPECT_FAIL("", "QTBUG-14693", Continue); + QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(-1, -1)), QSizeF(210, 110)); + QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(-1, -1)), QSizeF(30100, 30100)); QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(2, -1)), QSizeF(2, 20001)); QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(2, -1)), QSizeF(2, 20050)); @@ -3008,23 +3211,128 @@ void tst_QGraphicsGridLayout::heightForWidthWithSpanning() w->setSizePolicy(sp); layout->addItem(w, 0,0,2,2); - QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(-1, -1)), QSizeF(1, 100)); + QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(-1, -1)), QSizeF(1, 1)); QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(-1, -1)), QSizeF(200, 100)); - QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(-1, -1)), QSizeF(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX)); + QEXPECT_FAIL("", "Due to an old bug this wrongly returns QWIDGETSIZE_MAX", Continue); + QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(-1, -1)), QSizeF(30000, 30000)); QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(200, -1)), QSizeF(200, 100)); QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(200, -1)), QSizeF(200, 100)); - QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(200, -1)), QSizeF(200, QWIDGETSIZE_MAX)); + QEXPECT_FAIL("", "Due to an old bug this wrongly returns QWIDGETSIZE_MAX", Continue); + QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(200, -1)), QSizeF(200, 100)); QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(2, -1)), QSizeF(2, 10000)); QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(2, -1)), QSizeF(2, 10000)); - QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(2, -1)), QSizeF(2, QWIDGETSIZE_MAX)); + QEXPECT_FAIL("", "Due to an old bug this wrongly returns QWIDGETSIZE_MAX", Continue); + QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(2, -1)), QSizeF(2, 10000)); QCOMPARE(layout->effectiveSizeHint(Qt::MinimumSize, QSizeF(200, -1)), QSizeF(200, 100)); QCOMPARE(layout->effectiveSizeHint(Qt::PreferredSize, QSizeF(200, -1)), QSizeF(200, 100)); - QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(200, -1)), QSizeF(200, QWIDGETSIZE_MAX)); + QEXPECT_FAIL("", "Due to an old bug this wrongly returns QWIDGETSIZE_MAX", Continue); + QCOMPARE(layout->effectiveSizeHint(Qt::MaximumSize, QSizeF(200, -1)), QSizeF(200, 10000)); } +void tst_QGraphicsGridLayout::stretchAndHeightForWidth() +{ + QGraphicsWidget *widget = new QGraphicsWidget(0, Qt::Window); + QGraphicsGridLayout *layout = new QGraphicsGridLayout; + widget->setLayout(layout); + layout->setContentsMargins(0, 0, 0, 0); + layout->setSpacing(0); + + RectWidget *w1 = new RectWidget; + w1->setSizeHint(Qt::MinimumSize, QSizeF(10, 10)); + w1->setSizeHint(Qt::PreferredSize, QSizeF(100, 100)); + w1->setSizeHint(Qt::MaximumSize, QSizeF(500, 500)); + layout->addItem(w1, 0,0,1,1); + + RectWidget *w2 = new RectWidget; + w2->setSizeHint(Qt::MinimumSize, QSizeF(10, 10)); + w2->setSizeHint(Qt::PreferredSize, QSizeF(100, 100)); + w2->setSizeHint(Qt::MaximumSize, QSizeF(500, 500)); + layout->addItem(w2, 0,1,1,1); + layout->setColumnStretchFactor(1, 2); + + QApplication::sendPostedEvents(); + QGraphicsScene scene; + QGraphicsView *view = new QGraphicsView(&scene); + + scene.addItem(widget); + + view->show(); + + widget->resize(500, 100); + // w1 should stay at its preferred size + QCOMPARE(w1->geometry(), QRectF(0, 0, 100, 100)); + QCOMPARE(w2->geometry(), QRectF(100, 0, 400, 100)); + + + // only w1 has hfw + w1->setConstraintFunction(hfw); + QSizePolicy sp(QSizePolicy::Preferred, QSizePolicy::Preferred); + sp.setHeightForWidth(true); + w1->setSizePolicy(sp); + QApplication::sendPostedEvents(); + + QCOMPARE(w1->geometry(), QRectF(0, 0, 100, 200)); + QCOMPARE(w2->geometry(), QRectF(100, 0, 400, 200)); + + // only w2 has hfw + w2->setConstraintFunction(hfw); + w2->setSizePolicy(sp); + + w1->setConstraintFunction(0); + sp.setHeightForWidth(false); + w1->setSizePolicy(sp); + QApplication::sendPostedEvents(); + + QCOMPARE(w1->geometry(), QRectF(0, 0, 100, 100)); + QCOMPARE(w2->geometry(), QRectF(100, 0, 400, 50)); + +} + +void tst_QGraphicsGridLayout::testDefaultAlignment() +{ + QGraphicsWidget *widget = new QGraphicsWidget; + QGraphicsGridLayout *layout = new QGraphicsGridLayout(widget); + layout->setContentsMargins(0, 0, 0, 0); + layout->setSpacing(0); + + QGraphicsWidget *w = new QGraphicsWidget; + w->setMinimumSize(50,50); + w->setMaximumSize(50,50); + layout->addItem(w,0,0); + + //Default alignment should be to the top-left + + //First, check by forcing the layout to be bigger + layout->setMinimumSize(100,100); + layout->activate(); + QCOMPARE(layout->geometry(), QRectF(0,0,100,100)); + QCOMPARE(w->geometry(), QRectF(0,0,50,50)); + layout->setMinimumSize(-1,-1); + + //Second, check by forcing the column and row to be bigger instead + layout->setColumnMinimumWidth(0, 100); + layout->setRowMinimumHeight(0, 100); + layout->activate(); + QCOMPARE(layout->geometry(), QRectF(0,0,100,100)); + QCOMPARE(w->geometry(), QRectF(0,0,50,50)); + layout->setMinimumSize(-1,-1); + layout->setColumnMinimumWidth(0, 0); + layout->setRowMinimumHeight(0, 0); + + + //Third, check by adding a larger item in the column + QGraphicsWidget *w2 = new QGraphicsWidget; + w2->setMinimumSize(100,100); + w2->setMaximumSize(100,100); + layout->addItem(w2,1,0); + layout->activate(); + QCOMPARE(layout->geometry(), QRectF(0,0,100,150)); + QCOMPARE(w->geometry(), QRectF(0,0,50,50)); + QCOMPARE(w2->geometry(), QRectF(0,50,100,100)); +} QTEST_MAIN(tst_QGraphicsGridLayout) #include "tst_qgraphicsgridlayout.moc" diff --git a/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp b/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp index 6107fa1..965e340 100644 --- a/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp +++ b/tests/auto/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp @@ -103,6 +103,9 @@ private slots: void removeLayout(); void avoidRecursionInInsertItem(); void styleInfoLeak(); + void testAlignmentInLargerLayout(); + void testOffByOneInLargerLayout(); + void testDefaultAlignment(); // Task specific tests void task218400_insertStretchCrash(); @@ -1465,6 +1468,121 @@ void tst_QGraphicsLinearLayout::task218400_insertStretchCrash() form->setLayout(layout); // crash } +void tst_QGraphicsLinearLayout::testAlignmentInLargerLayout() +{ + QGraphicsScene *scene = new QGraphicsScene; + QGraphicsWidget *form = new QGraphicsWidget; + scene->addItem(form); + QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical, form); + layout->setSpacing(0); + layout->setContentsMargins(0,0,0,0); + + QGraphicsWidget *a = new QGraphicsWidget; + a->setMaximumSize(100,100); + layout->addItem(a); + + QCOMPARE(form->maximumSize(), QSizeF(100,100)); + QCOMPARE(layout->maximumSize(), QSizeF(100,100)); + layout->setMinimumSize(QSizeF(200,200)); + layout->setMaximumSize(QSizeF(200,200)); + + layout->setAlignment(a, Qt::AlignCenter); + layout->activate(); + QCOMPARE(a->geometry(), QRectF(50,50,100,100)); + + layout->setAlignment(a, Qt::AlignRight | Qt::AlignBottom); + layout->activate(); + QCOMPARE(a->geometry(), QRectF(100,100,100,100)); + + layout->setAlignment(a, Qt::AlignHCenter | Qt::AlignTop); + layout->activate(); + QCOMPARE(a->geometry(), QRectF(50,0,100,100)); + + QGraphicsWidget *b = new QGraphicsWidget; + b->setMaximumSize(100,100); + layout->addItem(b); + + layout->setAlignment(a, Qt::AlignCenter); + layout->setAlignment(b, Qt::AlignCenter); + layout->activate(); + QCOMPARE(a->geometry(), QRectF(50,0,100,100)); + QCOMPARE(b->geometry(), QRectF(50,100,100,100)); + + layout->setAlignment(a, Qt::AlignRight | Qt::AlignBottom); + layout->setAlignment(b, Qt::AlignLeft | Qt::AlignTop); + layout->activate(); + QCOMPARE(a->geometry(), QRectF(100,0,100,100)); + QCOMPARE(b->geometry(), QRectF(0,100,100,100)); +} + +void tst_QGraphicsLinearLayout::testOffByOneInLargerLayout() { + QGraphicsScene *scene = new QGraphicsScene; + QGraphicsWidget *form = new QGraphicsWidget; + scene->addItem(form); + QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical, form); + layout->setSpacing(0); + layout->setContentsMargins(0,0,0,0); + + QGraphicsWidget *a = new QGraphicsWidget; + QGraphicsWidget *b = new QGraphicsWidget; + a->setMaximumSize(100,100); + b->setMaximumSize(100,100); + layout->addItem(a); + layout->addItem(b); + + layout->setAlignment(a, Qt::AlignRight | Qt::AlignBottom); + layout->setAlignment(b, Qt::AlignLeft | Qt::AlignTop); + layout->setMinimumSize(QSizeF(101,201)); + layout->setMaximumSize(QSizeF(101,201)); + layout->activate(); + QCOMPARE(a->geometry(), QRectF(1,0.5,100,100)); + QCOMPARE(b->geometry(), QRectF(0,100.5,100,100)); + + layout->setMinimumSize(QSizeF(100,200)); + layout->setMaximumSize(QSizeF(100,200)); + layout->activate(); + QCOMPARE(a->geometry(), QRectF(0,0,100,100)); + QCOMPARE(b->geometry(), QRectF(0,100,100,100)); + + layout->setMinimumSize(QSizeF(99,199)); + layout->setMaximumSize(QSizeF(99,199)); + layout->activate(); + QCOMPARE(a->geometry(), QRectF(0,0,99,99.5)); + QCOMPARE(b->geometry(), QRectF(0,99.5,99,99.5)); +} +void tst_QGraphicsLinearLayout::testDefaultAlignment() +{ + QGraphicsWidget *widget = new QGraphicsWidget; + QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical, widget); + layout->setContentsMargins(0, 0, 0, 0); + layout->setSpacing(0); + + QGraphicsWidget *w = new QGraphicsWidget; + w->setMinimumSize(50,50); + w->setMaximumSize(50,50); + layout->addItem(w); + + //Default alignment should be to the top-left + QCOMPARE(layout->alignment(w), 0); + + //First, check by forcing the layout to be bigger + layout->setMinimumSize(100,100); + layout->activate(); + QCOMPARE(layout->geometry(), QRectF(0,0,100,100)); + QCOMPARE(w->geometry(), QRectF(0,0,50,50)); + layout->setMinimumSize(-1,-1); + + //Second, check by adding a larger item in the column + QGraphicsWidget *w2 = new QGraphicsWidget; + w2->setMinimumSize(100,100); + w2->setMaximumSize(100,100); + layout->addItem(w2); + layout->activate(); + QCOMPARE(layout->geometry(), QRectF(0,0,100,150)); + QCOMPARE(w->geometry(), QRectF(0,0,50,50)); + QCOMPARE(w2->geometry(), QRectF(0,50,100,100)); +} + QTEST_MAIN(tst_QGraphicsLinearLayout) #include "tst_qgraphicslinearlayout.moc" diff --git a/tests/auto/qkeysequence/tst_qkeysequence.cpp b/tests/auto/qkeysequence/tst_qkeysequence.cpp index 256f9f3..d18f6e3 100644 --- a/tests/auto/qkeysequence/tst_qkeysequence.cpp +++ b/tests/auto/qkeysequence/tst_qkeysequence.cpp @@ -415,7 +415,7 @@ void tst_QKeySequence::mnemonic() #ifndef QT_NO_DEBUG if (warning) { - QString str = QString::fromLatin1("QKeySequence::mnemonic: \"%1\" contains multiple occurences of '&'").arg(string); + QString str = QString::fromLatin1("QKeySequence::mnemonic: \"%1\" contains multiple occurrences of '&'").arg(string); QTest::ignoreMessage(QtWarningMsg, qPrintable(str)); // qWarning(qPrintable(str)); } diff --git a/tests/auto/qscriptengine/translatable.js b/tests/auto/qscriptengine/translatable.js index 30e139a..c0d7ed0 100644 --- a/tests/auto/qscriptengine/translatable.js +++ b/tests/auto/qscriptengine/translatable.js @@ -7,3 +7,6 @@ var greeting_strings = [ ]; qsTr("One", "not the same one"); + +qsTr("%n message(s) saved", "", 10); +qsTranslate("FooContext", "%n fooish bar(s) found", "", "UnicodeUTF8", 10); diff --git a/tests/auto/qscriptengine/translations/translatable_la.qm b/tests/auto/qscriptengine/translations/translatable_la.qm Binary files differindex 703d0f1..d76b1ca 100644 --- a/tests/auto/qscriptengine/translations/translatable_la.qm +++ b/tests/auto/qscriptengine/translations/translatable_la.qm diff --git a/tests/auto/qscriptengine/translations/translatable_la.ts b/tests/auto/qscriptengine/translations/translatable_la.ts index 1598f39..36271c9 100644 --- a/tests/auto/qscriptengine/translations/translatable_la.ts +++ b/tests/auto/qscriptengine/translations/translatable_la.ts @@ -26,6 +26,14 @@ <source>Goodbye</source> <translation>Farvel</translation> </message> + <message numerus="yes"> + <location filename="translatable.js" line="12"/> + <source>%n fooish bar(s) found</source> + <translation> + <numerusform>%n fooaktig bar funnet</numerusform> + <numerusform>%n fooaktige barer funnet</numerusform> + </translation> + </message> </context> <context> <name>translatable</name> @@ -45,6 +53,14 @@ <comment>not the same one</comment> <translation>Enda en</translation> </message> + <message numerus="yes"> + <location filename="translatable.js" line="11"/> + <source>%n message(s) saved</source> + <translation> + <numerusform>%n melding lagret</numerusform> + <numerusform>%n meldinger lagret</numerusform> + </translation> + </message> <message> <source>Goodbye</source> <translation type="obsolete">Farvel</translation> diff --git a/tests/auto/qscriptengine/tst_qscriptengine.cpp b/tests/auto/qscriptengine/tst_qscriptengine.cpp index d529b8b..2fe7a2d 100644 --- a/tests/auto/qscriptengine/tst_qscriptengine.cpp +++ b/tests/auto/qscriptengine/tst_qscriptengine.cpp @@ -180,7 +180,12 @@ private slots: void incDecNonObjectProperty(); void installTranslatorFunctions_data(); void installTranslatorFunctions(); + void translateScript_data(); void translateScript(); + void translateScript_crossScript(); + void translateScript_callQsTrFromNative(); + void translateScript_trNoOp(); + void translateScript_callQsTrFromCpp(); void translateWithInvalidArgs_data(); void translateWithInvalidArgs(); void translationContext_data(); @@ -4728,78 +4733,134 @@ void tst_QScriptEngine::installTranslatorFunctions() QVERIFY(eng.evaluate("QT_TRID_NOOP()").isUndefined()); } -static QScriptValue callQsTr(QScriptContext *ctx, QScriptEngine *eng) -{ - return eng->globalObject().property("qsTr").call(ctx->thisObject(), ctx->argumentsObject()); -} - -void tst_QScriptEngine::translateScript() +class TranslationScope { - QScriptEngine engine; +public: + TranslationScope(const QString &fileName) + { + translator.load(fileName); + QCoreApplication::instance()->installTranslator(&translator); + } + ~TranslationScope() + { + QCoreApplication::instance()->removeTranslator(&translator); + } +private: QTranslator translator; - translator.load(":/translations/translatable_la"); - QCoreApplication::instance()->installTranslator(&translator); - engine.installTranslatorFunctions(); +}; + +void tst_QScriptEngine::translateScript_data() +{ + QTest::addColumn<QString>("expression"); + QTest::addColumn<QString>("fileName"); + QTest::addColumn<QString>("expectedTranslation"); QString fileName = QString::fromLatin1("translatable.js"); // Top-level - QCOMPARE(engine.evaluate("qsTr('One')", fileName).toString(), QString::fromLatin1("En")); - QCOMPARE(engine.evaluate("qsTr('Hello')", fileName).toString(), QString::fromLatin1("Hallo")); + QTest::newRow("qsTr('One')@translatable.js") + << QString::fromLatin1("qsTr('One')") << fileName << QString::fromLatin1("En"); + QTest::newRow("qsTr('Hello')@translatable.js") + << QString::fromLatin1("qsTr('Hello')") << fileName << QString::fromLatin1("Hallo"); // From function - QCOMPARE(engine.evaluate("(function() { return qsTr('One'); })()", fileName).toString(), QString::fromLatin1("En")); - QCOMPARE(engine.evaluate("(function() { return qsTr('Hello'); })()", fileName).toString(), QString::fromLatin1("Hallo")); + QTest::newRow("(function() { return qsTr('One'); })()@translatable.js") + << QString::fromLatin1("(function() { return qsTr('One'); })()") << fileName << QString::fromLatin1("En"); + QTest::newRow("(function() { return qsTr('Hello'); })()@translatable.js") + << QString::fromLatin1("(function() { return qsTr('Hello'); })()") << fileName << QString::fromLatin1("Hallo"); // From eval - QCOMPARE(engine.evaluate("eval('qsTr(\\'One\\')')", fileName).toString(), QString::fromLatin1("En")); - QCOMPARE(engine.evaluate("eval('qsTr(\\'Hello\\')')", fileName).toString(), QString::fromLatin1("Hallo")); + QTest::newRow("eval('qsTr(\\'One\\')')@translatable.js") + << QString::fromLatin1("eval('qsTr(\\'One\\')')") << fileName << QString::fromLatin1("En"); + QTest::newRow("eval('qsTr(\\'Hello\\')')@translatable.js") + << QString::fromLatin1("eval('qsTr(\\'Hello\\')')") << fileName << QString::fromLatin1("Hallo"); + // Plural + QTest::newRow("qsTr('%n message(s) saved', '', 1)@translatable.js") + << QString::fromLatin1("qsTr('%n message(s) saved', '', 1)") << fileName << QString::fromLatin1("1 melding lagret"); + QTest::newRow("qsTr('%n message(s) saved', '', 3).arg@translatable.js") + << QString::fromLatin1("qsTr('%n message(s) saved', '', 3)") << fileName << QString::fromLatin1("3 meldinger lagret"); - QCOMPARE(engine.evaluate("qsTranslate('FooContext', 'Two')", fileName).toString(), QString::fromLatin1("To")); - QCOMPARE(engine.evaluate("qsTranslate('FooContext', 'Goodbye')", fileName).toString(), QString::fromLatin1("Farvel")); + // Top-level + QTest::newRow("qsTranslate('FooContext', 'Two')@translatable.js") + << QString::fromLatin1("qsTranslate('FooContext', 'Two')") << fileName << QString::fromLatin1("To"); + QTest::newRow("qsTranslate('FooContext', 'Goodbye')@translatable.js") + << QString::fromLatin1("qsTranslate('FooContext', 'Goodbye')") << fileName << QString::fromLatin1("Farvel"); // From eval - QCOMPARE(engine.evaluate("eval('qsTranslate(\\'FooContext\\', \\'Two\\')')", fileName).toString(), QString::fromLatin1("To")); - QCOMPARE(engine.evaluate("eval('qsTranslate(\\'FooContext\\', \\'Goodbye\\')')", fileName).toString(), QString::fromLatin1("Farvel")); + QTest::newRow("eval('qsTranslate(\\'FooContext\\', \\'Two\\')')@translatable.js") + << QString::fromLatin1("eval('qsTranslate(\\'FooContext\\', \\'Two\\')')") << fileName << QString::fromLatin1("To"); + QTest::newRow("eval('qsTranslate(\\'FooContext\\', \\'Goodbye\\')')@translatable.js") + << QString::fromLatin1("eval('qsTranslate(\\'FooContext\\', \\'Goodbye\\')')") << fileName << QString::fromLatin1("Farvel"); - QCOMPARE(engine.evaluate("qsTranslate('FooContext', 'Goodbye', '', 'UnicodeUTF8')", fileName).toString(), QString::fromLatin1("Farvel")); - QCOMPARE(engine.evaluate("qsTranslate('FooContext', 'Goodbye', '', 'CodecForTr')", fileName).toString(), QString::fromLatin1("Farvel")); + QTest::newRow("qsTranslate('FooContext', 'Goodbye', '', 'UnicodeUTF8')@translatable.js") + << QString::fromLatin1("qsTranslate('FooContext', 'Goodbye', '', 'UnicodeUTF8')") << fileName << QString::fromLatin1("Farvel"); + QTest::newRow("qsTranslate('FooContext', 'Goodbye', '', 'CodecForTr')@translatable.js") + << QString::fromLatin1("qsTranslate('FooContext', 'Goodbye', '', 'CodecForTr')") << fileName << QString::fromLatin1("Farvel"); - QCOMPARE(engine.evaluate("qsTranslate('FooContext', 'Goodbye', '', 'UnicodeUTF8', 42)", fileName).toString(), QString::fromLatin1("Goodbye")); + QTest::newRow("qsTranslate('FooContext', 'Goodbye', '', 'UnicodeUTF8', 42)@translatable.js") + << QString::fromLatin1("qsTranslate('FooContext', 'Goodbye', '', 'UnicodeUTF8', 42)") << fileName << QString::fromLatin1("Goodbye"); - QCOMPARE(engine.evaluate("qsTr('One', 'not the same one')", fileName).toString(), QString::fromLatin1("Enda en")); + QTest::newRow("qsTr('One', 'not the same one')@translatable.js") + << QString::fromLatin1("qsTr('One', 'not the same one')") << fileName << QString::fromLatin1("Enda en"); - QCOMPARE(engine.evaluate("qsTr('One', 'not the same one', 42)", fileName).toString(), QString::fromLatin1("One")); + QTest::newRow("qsTr('One', 'not the same one', 42)@translatable.js") + << QString::fromLatin1("qsTr('One', 'not the same one', 42)") << fileName << QString::fromLatin1("One"); - QVERIFY(engine.evaluate("QT_TR_NOOP()").isUndefined()); - QCOMPARE(engine.evaluate("QT_TR_NOOP('One')").toString(), QString::fromLatin1("One")); - - QVERIFY(engine.evaluate("QT_TRANSLATE_NOOP()").isUndefined()); - QVERIFY(engine.evaluate("QT_TRANSLATE_NOOP('FooContext')").isUndefined()); - QCOMPARE(engine.evaluate("QT_TRANSLATE_NOOP('FooContext', 'Two')").toString(), QString::fromLatin1("Two")); + // Plural + QTest::newRow("qsTranslate('FooContext', '%n fooish bar(s) found', '', 'UnicodeUTF8', 1)@translatable.js") + << QString::fromLatin1("qsTranslate('FooContext', '%n fooish bar(s) found', '', 'UnicodeUTF8', 1)") << fileName << QString::fromLatin1("1 fooaktig bar funnet"); + QTest::newRow("qsTranslate('FooContext', '%n fooish bar(s) found', '', 'UnicodeUTF8', 2)@translatable.js") + << QString::fromLatin1("qsTranslate('FooContext', '%n fooish bar(s) found', '', 'UnicodeUTF8', 2)") << fileName << QString::fromLatin1("2 fooaktige barer funnet"); // Don't exist in translation - QCOMPARE(engine.evaluate("qsTr('Three')", fileName).toString(), QString::fromLatin1("Three")); - QCOMPARE(engine.evaluate("qsTranslate('FooContext', 'So long')", fileName).toString(), QString::fromLatin1("So long")); - QCOMPARE(engine.evaluate("qsTranslate('BarContext', 'Goodbye')", fileName).toString(), QString::fromLatin1("Goodbye")); - - // From C++ - // There is no context, but it shouldn't crash - QCOMPARE(engine.globalObject().property("qsTr").call( - QScriptValue(), QScriptValueList() << "One").toString(), QString::fromLatin1("One")); + QTest::newRow("qsTr('Three')@translatable.js") + << QString::fromLatin1("qsTr('Three')") << fileName << QString::fromLatin1("Three"); + QTest::newRow("qsTranslate('FooContext', 'So long')@translatable.js") + << QString::fromLatin1("qsTranslate('FooContext', 'So long')") << fileName << QString::fromLatin1("So long"); + QTest::newRow("qsTranslate('BarContext', 'Goodbye')@translatable.js") + << QString::fromLatin1("qsTranslate('BarContext', 'Goodbye')") << fileName << QString::fromLatin1("Goodbye"); // Translate strings from the second script (translatable2.js) QString fileName2 = QString::fromLatin1("translatable2.js"); - - QCOMPARE(engine.evaluate("qsTr('Three')", fileName2).toString(), QString::fromLatin1("Tre")); - QCOMPARE(engine.evaluate("qsTr('Happy birthday!')", fileName2).toString(), QString::fromLatin1("Gratulerer med dagen!")); + QTest::newRow("qsTr('Three')@translatable2.js") + << QString::fromLatin1("qsTr('Three')") << fileName2 << QString::fromLatin1("Tre"); + QTest::newRow("qsTr('Happy birthday!')@translatable2.js") + << QString::fromLatin1("qsTr('Happy birthday!')") << fileName2 << QString::fromLatin1("Gratulerer med dagen!"); // Not translated because translation is only in translatable.js - QCOMPARE(engine.evaluate("qsTr('One')", fileName2).toString(), QString::fromLatin1("One")); - QCOMPARE(engine.evaluate("(function() { return qsTr('One'); })()", fileName2).toString(), QString::fromLatin1("One")); + QTest::newRow("qsTr('One')@translatable2.js") + << QString::fromLatin1("qsTr('One')") << fileName2 << QString::fromLatin1("One"); + QTest::newRow("(function() { return qsTr('One'); })()@translatable2.js") + << QString::fromLatin1("(function() { return qsTr('One'); })()") << fileName2 << QString::fromLatin1("One"); // For qsTranslate() the filename shouldn't matter - QCOMPARE(engine.evaluate("qsTranslate('FooContext', 'Two')", fileName2).toString(), QString::fromLatin1("To")); - QCOMPARE(engine.evaluate("qsTranslate('BarContext', 'Congratulations!')", fileName).toString(), QString::fromLatin1("Gratulerer!")); + QTest::newRow("qsTranslate('FooContext', 'Two')@translatable2.js") + << QString::fromLatin1("qsTranslate('FooContext', 'Two')") << fileName2 << QString::fromLatin1("To"); + QTest::newRow("qsTranslate('BarContext', 'Congratulations!')@translatable.js") + << QString::fromLatin1("qsTranslate('BarContext', 'Congratulations!')") << fileName << QString::fromLatin1("Gratulerer!"); +} + +void tst_QScriptEngine::translateScript() +{ + QFETCH(QString, expression); + QFETCH(QString, fileName); + QFETCH(QString, expectedTranslation); + + QScriptEngine engine; + + TranslationScope tranScope(":/translations/translatable_la"); + engine.installTranslatorFunctions(); + + QCOMPARE(engine.evaluate(expression, fileName).toString(), expectedTranslation); + QVERIFY(!engine.hasUncaughtException()); +} + +void tst_QScriptEngine::translateScript_crossScript() +{ + QScriptEngine engine; + TranslationScope tranScope(":/translations/translatable_la"); + engine.installTranslatorFunctions(); + QString fileName = QString::fromLatin1("translatable.js"); + QString fileName2 = QString::fromLatin1("translatable2.js"); // qsTr() should use the innermost filename as context engine.evaluate("function foo(s) { return bar(s); }", fileName); engine.evaluate("function bar(s) { return qsTr(s); }", fileName2); @@ -4812,15 +4873,52 @@ void tst_QScriptEngine::translateScript() QCOMPARE(engine.evaluate("bar('Three')", fileName2).toString(), QString::fromLatin1("Three")); QCOMPARE(engine.evaluate("bar('One')", fileName).toString(), QString::fromLatin1("En")); QCOMPARE(engine.evaluate("bar('One')", fileName2).toString(), QString::fromLatin1("En")); +} +static QScriptValue callQsTr(QScriptContext *ctx, QScriptEngine *eng) +{ + return eng->globalObject().property("qsTr").call(ctx->thisObject(), ctx->argumentsObject()); +} + +void tst_QScriptEngine::translateScript_callQsTrFromNative() +{ + QScriptEngine engine; + TranslationScope tranScope(":/translations/translatable_la"); + engine.installTranslatorFunctions(); + + QString fileName = QString::fromLatin1("translatable.js"); + QString fileName2 = QString::fromLatin1("translatable2.js"); // Calling qsTr() from a native function engine.globalObject().setProperty("qsTrProxy", engine.newFunction(callQsTr)); QCOMPARE(engine.evaluate("qsTrProxy('One')", fileName).toString(), QString::fromLatin1("En")); QCOMPARE(engine.evaluate("qsTrProxy('One')", fileName2).toString(), QString::fromLatin1("One")); QCOMPARE(engine.evaluate("qsTrProxy('Three')", fileName).toString(), QString::fromLatin1("Three")); QCOMPARE(engine.evaluate("qsTrProxy('Three')", fileName2).toString(), QString::fromLatin1("Tre")); +} - QCoreApplication::instance()->removeTranslator(&translator); +void tst_QScriptEngine::translateScript_trNoOp() +{ + QScriptEngine engine; + TranslationScope tranScope(":/translations/translatable_la"); + engine.installTranslatorFunctions(); + + QVERIFY(engine.evaluate("QT_TR_NOOP()").isUndefined()); + QCOMPARE(engine.evaluate("QT_TR_NOOP('One')").toString(), QString::fromLatin1("One")); + + QVERIFY(engine.evaluate("QT_TRANSLATE_NOOP()").isUndefined()); + QVERIFY(engine.evaluate("QT_TRANSLATE_NOOP('FooContext')").isUndefined()); + QCOMPARE(engine.evaluate("QT_TRANSLATE_NOOP('FooContext', 'Two')").toString(), QString::fromLatin1("Two")); +} + +void tst_QScriptEngine::translateScript_callQsTrFromCpp() +{ + QScriptEngine engine; + TranslationScope tranScope(":/translations/translatable_la"); + engine.installTranslatorFunctions(); + + // There is no context, but it shouldn't crash + QCOMPARE(engine.globalObject().property("qsTr").call( + QScriptValue(), QScriptValueList() << "One").toString(), QString::fromLatin1("One")); } void tst_QScriptEngine::translateWithInvalidArgs_data() @@ -4890,9 +4988,7 @@ void tst_QScriptEngine::translationContext_data() void tst_QScriptEngine::translationContext() { - QTranslator translator; - translator.load(":/translations/translatable_la"); - QCoreApplication::instance()->installTranslator(&translator); + TranslationScope tranScope(":/translations/translatable_la"); QScriptEngine engine; engine.installTranslatorFunctions(); @@ -4903,17 +4999,13 @@ void tst_QScriptEngine::translationContext() QScriptValue ret = engine.evaluate(QString::fromLatin1("qsTr('%0')").arg(text), path); QVERIFY(ret.isString()); QCOMPARE(ret.toString(), expectedTranslation); - - QCoreApplication::instance()->removeTranslator(&translator); } void tst_QScriptEngine::translateScriptIdBased() { QScriptEngine engine; - QTranslator translator; - translator.load(":/translations/idtranslatable_la"); - QCoreApplication::instance()->installTranslator(&translator); + TranslationScope tranScope(":/translations/idtranslatable_la"); engine.installTranslatorFunctions(); QString fileName = QString::fromLatin1("idtranslatable.js"); @@ -4995,15 +5087,11 @@ void tst_QScriptEngine::translateScriptUnicode() QScriptEngine engine; - QTranslator translator; - QVERIFY(translator.load(":/translations/translatable-unicode")); - QCoreApplication::instance()->installTranslator(&translator); + TranslationScope tranScope(":/translations/translatable-unicode"); engine.installTranslatorFunctions(); QCOMPARE(engine.evaluate(expression, fileName).toString(), expectedTranslation); QVERIFY(!engine.hasUncaughtException()); - - QCoreApplication::instance()->removeTranslator(&translator); } void tst_QScriptEngine::translateScriptUnicodeIdBased_data() @@ -5030,15 +5118,11 @@ void tst_QScriptEngine::translateScriptUnicodeIdBased() QScriptEngine engine; - QTranslator translator; - QVERIFY(translator.load(":/translations/idtranslatable-unicode")); - QCoreApplication::instance()->installTranslator(&translator); + TranslationScope tranScope(":/translations/idtranslatable-unicode"); engine.installTranslatorFunctions(); QCOMPARE(engine.evaluate(expression).toString(), expectedTranslation); QVERIFY(!engine.hasUncaughtException()); - - QCoreApplication::instance()->removeTranslator(&translator); } void tst_QScriptEngine::functionScopes() diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue.cpp b/tests/auto/qscriptvalue/tst_qscriptvalue.cpp index de753d2..5a50e49 100644 --- a/tests/auto/qscriptvalue/tst_qscriptvalue.cpp +++ b/tests/auto/qscriptvalue/tst_qscriptvalue.cpp @@ -1254,6 +1254,10 @@ void tst_QScriptValue::toVariant() QCOMPARE(number.toVariant(), QVariant(123.0)); QCOMPARE(qscriptvalue_cast<QVariant>(number), QVariant(123.0)); + QScriptValue intNumber = QScriptValue(&eng, (qint32)123); + QCOMPARE(intNumber.toVariant().type(), QVariant((qint32)123).type()); + QCOMPARE((qscriptvalue_cast<QVariant>(number)).type(), QVariant((qint32)123).type()); + QScriptValue falskt = QScriptValue(&eng, false); QCOMPARE(falskt.toVariant(), QVariant(false)); QCOMPARE(qscriptvalue_cast<QVariant>(falskt), QVariant(false)); @@ -1341,52 +1345,53 @@ void tst_QScriptValue::toVariant() } } -// unfortunately, this is necessary in order to do qscriptvalue_cast<QPushButton*>(...) -Q_DECLARE_METATYPE(QPushButton*) - -void tst_QScriptValue::toQObject() +void tst_QScriptValue::toQObject_nonQObject_data() { - QScriptEngine eng; + newEngine(); + QTest::addColumn<QScriptValue>("value"); - QScriptValue undefined = eng.undefinedValue(); - QCOMPARE(undefined.toQObject(), (QObject *)0); - QCOMPARE(qscriptvalue_cast<QObject*>(undefined), (QObject *)0); + QTest::newRow("invalid") << QScriptValue(); + QTest::newRow("bool(false)") << QScriptValue(false); + QTest::newRow("bool(true)") << QScriptValue(true); + QTest::newRow("int") << QScriptValue(123); + QTest::newRow("string") << QScriptValue(QString::fromLatin1("ciao")); + QTest::newRow("undefined") << QScriptValue(QScriptValue::UndefinedValue); + QTest::newRow("null") << QScriptValue(QScriptValue::NullValue); - QScriptValue null = eng.nullValue(); - QCOMPARE(null.toQObject(), (QObject *)0); - QCOMPARE(qscriptvalue_cast<QObject*>(null), (QObject *)0); + QTest::newRow("bool bound(false)") << QScriptValue(engine, false); + QTest::newRow("bool bound(true)") << QScriptValue(engine, true); + QTest::newRow("int bound") << QScriptValue(engine, 123); + QTest::newRow("string bound") << QScriptValue(engine, QString::fromLatin1("ciao")); + QTest::newRow("undefined bound") << engine->undefinedValue(); + QTest::newRow("null bound") << engine->nullValue(); + QTest::newRow("object") << engine->newObject(); + QTest::newRow("array") << engine->newArray(); + QTest::newRow("date") << engine->newDate(124); + QTest::newRow("variant(12345)") << engine->newVariant(12345); + QTest::newRow("variant((QObject*)0)") << engine->newVariant(qVariantFromValue((QObject*)0)); + QTest::newRow("newQObject(0)") << engine->newQObject(0); +} - { - QScriptValue falskt = QScriptValue(&eng, false); - QCOMPARE(falskt.toQObject(), (QObject *)0); - QCOMPARE(qscriptvalue_cast<QObject*>(falskt), (QObject *)0); - QScriptValue sant = QScriptValue(&eng, true); - QCOMPARE(sant.toQObject(), (QObject *)0); - QCOMPARE(qscriptvalue_cast<QObject*>(sant), (QObject *)0); - - QScriptValue number = QScriptValue(&eng, 123.0); - QCOMPARE(number.toQObject(), (QObject *)0); - QCOMPARE(qscriptvalue_cast<QObject*>(number), (QObject *)0); +void tst_QScriptValue::toQObject_nonQObject() +{ + QFETCH(QScriptValue, value); + QCOMPARE(value.toQObject(), (QObject *)0); + QCOMPARE(qscriptvalue_cast<QObject*>(value), (QObject *)0); +} - QScriptValue str = QScriptValue(&eng, QString("ciao")); - QCOMPARE(str.toQObject(), (QObject *)0); - QCOMPARE(qscriptvalue_cast<QObject*>(str), (QObject *)0); - } +// unfortunately, this is necessary in order to do qscriptvalue_cast<QPushButton*>(...) +Q_DECLARE_METATYPE(QPushButton*); - QScriptValue object = eng.newObject(); - QCOMPARE(object.toQObject(), (QObject *)0); - QCOMPARE(qscriptvalue_cast<QObject*>(object), (QObject *)0); +void tst_QScriptValue::toQObject() +{ + QScriptEngine eng; QScriptValue qobject = eng.newQObject(this); QCOMPARE(qobject.toQObject(), (QObject *)this); QCOMPARE(qscriptvalue_cast<QObject*>(qobject), (QObject *)this); QCOMPARE(qscriptvalue_cast<QWidget*>(qobject), (QWidget *)0); - QScriptValue qobject2 = eng.newQObject(0); - QCOMPARE(qobject2.toQObject(), (QObject *)0); - QCOMPARE(qscriptvalue_cast<QObject*>(qobject2), (QObject *)0); - QWidget widget; QScriptValue qwidget = eng.newQObject(&widget); QCOMPARE(qwidget.toQObject(), (QObject *)&widget); @@ -1400,25 +1405,6 @@ void tst_QScriptValue::toQObject() QCOMPARE(qscriptvalue_cast<QWidget*>(qbutton), (QWidget *)&button); QCOMPARE(qscriptvalue_cast<QPushButton*>(qbutton), &button); - // V2 constructors - { - QScriptValue falskt = QScriptValue(false); - QCOMPARE(falskt.toQObject(), (QObject *)0); - QCOMPARE(qscriptvalue_cast<QObject*>(falskt), (QObject *)0); - - QScriptValue sant = QScriptValue(true); - QCOMPARE(sant.toQObject(), (QObject *)0); - QCOMPARE(qscriptvalue_cast<QObject*>(sant), (QObject *)0); - - QScriptValue number = QScriptValue(123.0); - QCOMPARE(number.toQObject(), (QObject *)0); - QCOMPARE(qscriptvalue_cast<QObject*>(number), (QObject *)0); - - QScriptValue str = QScriptValue(QString("ciao")); - QCOMPARE(str.toQObject(), (QObject *)0); - QCOMPARE(qscriptvalue_cast<QObject*>(str), (QObject *)0); - } - // wrapping a QObject* as variant QScriptValue variant = eng.newVariant(qVariantFromValue((QObject*)&button)); QCOMPARE(variant.toQObject(), (QObject*)&button); @@ -1437,10 +1423,6 @@ void tst_QScriptValue::toQObject() QCOMPARE(qscriptvalue_cast<QObject*>(variant3), (QObject*)0); QCOMPARE(qscriptvalue_cast<QWidget*>(variant3), (QWidget*)0); QCOMPARE(qscriptvalue_cast<QPushButton*>(variant3), &button); - - QScriptValue inv; - QCOMPARE(inv.toQObject(), (QObject *)0); - QCOMPARE(qscriptvalue_cast<QObject*>(inv), (QObject *)0); } void tst_QScriptValue::toObject() @@ -2937,127 +2919,169 @@ static QScriptValue ctorReturningNewObject(QScriptContext *, QScriptEngine *eng) return result; } -void tst_QScriptValue::construct() +void tst_QScriptValue::construct_nonFunction_data() +{ + newEngine(); + QTest::addColumn<QScriptValue>("value"); + + QTest::newRow("invalid") << QScriptValue(); + QTest::newRow("bool") << QScriptValue(false); + QTest::newRow("int") << QScriptValue(123); + QTest::newRow("string") << QScriptValue(QString::fromLatin1("ciao")); + QTest::newRow("undefined") << QScriptValue(QScriptValue::UndefinedValue); + QTest::newRow("null") << QScriptValue(QScriptValue::NullValue); + + QTest::newRow("bool bound") << QScriptValue(engine, false); + QTest::newRow("int bound") << QScriptValue(engine, 123); + QTest::newRow("string bound") << QScriptValue(engine, QString::fromLatin1("ciao")); + QTest::newRow("undefined bound") << engine->undefinedValue(); + QTest::newRow("null bound") << engine->nullValue(); +} + +void tst_QScriptValue::construct_nonFunction() +{ + QFETCH(QScriptValue, value); + QVERIFY(!value.construct().isValid()); +} + +void tst_QScriptValue::construct_simple() { QScriptEngine eng; + QScriptValue fun = eng.evaluate("(function () { this.foo = 123; })"); + QVERIFY(fun.isFunction()); + QScriptValue ret = fun.construct(); + QVERIFY(ret.isObject()); + QVERIFY(ret.instanceOf(fun)); + QCOMPARE(ret.property("foo").toInt32(), 123); +} - { - QScriptValue fun = eng.evaluate("(function () { this.foo = 123; })"); - QVERIFY(fun.isFunction()); - QScriptValue ret = fun.construct(); - QVERIFY(ret.isObject()); - QVERIFY(ret.instanceOf(fun)); - QCOMPARE(ret.property("foo").toInt32(), 123); - } +void tst_QScriptValue::construct_newObjectJS() +{ + QScriptEngine eng; // returning a different object overrides the default-constructed one - { - QScriptValue fun = eng.evaluate("(function () { return { bar: 456 }; })"); - QVERIFY(fun.isFunction()); - QScriptValue ret = fun.construct(); - QVERIFY(ret.isObject()); - QVERIFY(!ret.instanceOf(fun)); - QCOMPARE(ret.property("bar").toInt32(), 456); - } + QScriptValue fun = eng.evaluate("(function () { return { bar: 456 }; })"); + QVERIFY(fun.isFunction()); + QScriptValue ret = fun.construct(); + QVERIFY(ret.isObject()); + QVERIFY(!ret.instanceOf(fun)); + QCOMPARE(ret.property("bar").toInt32(), 456); +} - { - QScriptValue fun = eng.newFunction(ctorReturningUndefined); - QScriptValue ret = fun.construct(); - QVERIFY(ret.isObject()); - QVERIFY(ret.instanceOf(fun)); - QCOMPARE(ret.property("foo").toInt32(), 123); - } - { - QScriptValue fun = eng.newFunction(ctorReturningNewObject); - QScriptValue ret = fun.construct(); - QVERIFY(ret.isObject()); - QVERIFY(!ret.instanceOf(fun)); - QCOMPARE(ret.property("bar").toInt32(), 456); - } +void tst_QScriptValue::construct_undefined() +{ + QScriptEngine eng; + QScriptValue fun = eng.newFunction(ctorReturningUndefined); + QScriptValue ret = fun.construct(); + QVERIFY(ret.isObject()); + QVERIFY(ret.instanceOf(fun)); + QCOMPARE(ret.property("foo").toInt32(), 123); +} +void tst_QScriptValue::construct_newObjectCpp() +{ + QScriptEngine eng; + QScriptValue fun = eng.newFunction(ctorReturningNewObject); + QScriptValue ret = fun.construct(); + QVERIFY(ret.isObject()); + QVERIFY(!ret.instanceOf(fun)); + QCOMPARE(ret.property("bar").toInt32(), 456); +} + +void tst_QScriptValue::construct_arg() +{ + QScriptEngine eng; QScriptValue Number = eng.evaluate("Number"); QCOMPARE(Number.isFunction(), true); - { - QScriptValueList args; - args << QScriptValue(&eng, 123); - QScriptValue ret = Number.construct(args); - QCOMPARE(ret.isObject(), true); - QCOMPARE(ret.toNumber(), args.at(0).toNumber()); - } + QScriptValueList args; + args << QScriptValue(&eng, 123); + QScriptValue ret = Number.construct(args); + QCOMPARE(ret.isObject(), true); + QCOMPARE(ret.toNumber(), args.at(0).toNumber()); +} +void tst_QScriptValue::construct_proto() +{ + QScriptEngine eng; // test that internal prototype is set correctly - { - QScriptValue fun = eng.evaluate("(function() { return this.__proto__; })"); - QCOMPARE(fun.isFunction(), true); - QCOMPARE(fun.property("prototype").isObject(), true); - QScriptValue ret = fun.construct(); - QCOMPARE(fun.property("prototype").strictlyEquals(ret), true); - } + QScriptValue fun = eng.evaluate("(function() { return this.__proto__; })"); + QCOMPARE(fun.isFunction(), true); + QCOMPARE(fun.property("prototype").isObject(), true); + QScriptValue ret = fun.construct(); + QCOMPARE(fun.property("prototype").strictlyEquals(ret), true); +} +void tst_QScriptValue::construct_returnInt() +{ + QScriptEngine eng; // test that we return the new object even if a non-object value is returned from the function - { - QScriptValue fun = eng.evaluate("(function() { return 123; })"); - QCOMPARE(fun.isFunction(), true); - QScriptValue ret = fun.construct(); - QCOMPARE(ret.isObject(), true); - } + QScriptValue fun = eng.evaluate("(function() { return 123; })"); + QCOMPARE(fun.isFunction(), true); + QScriptValue ret = fun.construct(); + QCOMPARE(ret.isObject(), true); +} - { - QScriptValue fun = eng.evaluate("(function() { throw new Error('foo'); })"); - QCOMPARE(fun.isFunction(), true); - QScriptValue ret = fun.construct(); - QCOMPARE(ret.isError(), true); - QCOMPARE(eng.hasUncaughtException(), true); - QVERIFY(ret.strictlyEquals(eng.uncaughtException())); - } +void tst_QScriptValue::construct_throw() +{ + QScriptEngine eng; + QScriptValue fun = eng.evaluate("(function() { throw new Error('foo'); })"); + QCOMPARE(fun.isFunction(), true); + QScriptValue ret = fun.construct(); + QCOMPARE(ret.isError(), true); + QCOMPARE(eng.hasUncaughtException(), true); + QVERIFY(ret.strictlyEquals(eng.uncaughtException())); +} - QScriptValue inv; - QCOMPARE(inv.construct().isValid(), false); +void tst_QScriptValue::construct() +{ + QScriptEngine eng; + QScriptValue fun = eng.evaluate("(function() { return arguments; })"); + QVERIFY(fun.isFunction()); + QScriptValue array = eng.newArray(3); + array.setProperty(0, QScriptValue(&eng, 123.0)); + array.setProperty(1, QScriptValue(&eng, 456.0)); + array.setProperty(2, QScriptValue(&eng, 789.0)); + // construct with single array object as arguments + QScriptValue ret = fun.construct(array); + QVERIFY(!eng.hasUncaughtException()); + QVERIFY(ret.isValid()); + QVERIFY(ret.isObject()); + QCOMPARE(ret.property(0).strictlyEquals(array.property(0)), true); + QCOMPARE(ret.property(1).strictlyEquals(array.property(1)), true); + QCOMPARE(ret.property(2).strictlyEquals(array.property(2)), true); + // construct with arguments object as arguments + QScriptValue ret2 = fun.construct(ret); + QCOMPARE(ret2.property(0).strictlyEquals(ret.property(0)), true); + QCOMPARE(ret2.property(1).strictlyEquals(ret.property(1)), true); + QCOMPARE(ret2.property(2).strictlyEquals(ret.property(2)), true); + // construct with null as arguments + QScriptValue ret3 = fun.construct(eng.nullValue()); + QCOMPARE(ret3.isError(), false); + QCOMPARE(ret3.property("length").isNumber(), true); + QCOMPARE(ret3.property("length").toNumber(), 0.0); + // construct with undefined as arguments + QScriptValue ret4 = fun.construct(eng.undefinedValue()); + QCOMPARE(ret4.isError(), false); + QCOMPARE(ret4.property("length").isNumber(), true); + QCOMPARE(ret4.property("length").toNumber(), 0.0); + // construct with something else as arguments + QScriptValue ret5 = fun.construct(QScriptValue(&eng, 123.0)); + QCOMPARE(ret5.isError(), true); + // construct with a non-array object as arguments + QScriptValue ret6 = fun.construct(eng.globalObject()); + QVERIFY(ret6.isError()); + QCOMPARE(ret6.toString(), QString::fromLatin1("TypeError: Arguments must be an array")); +} - { - QScriptValue fun = eng.evaluate("(function() { return arguments; })"); - QVERIFY(fun.isFunction()); - QScriptValue array = eng.newArray(3); - array.setProperty(0, QScriptValue(&eng, 123.0)); - array.setProperty(1, QScriptValue(&eng, 456.0)); - array.setProperty(2, QScriptValue(&eng, 789.0)); - // construct with single array object as arguments - QScriptValue ret = fun.construct(array); - QVERIFY(!eng.hasUncaughtException()); - QVERIFY(ret.isValid()); - QVERIFY(ret.isObject()); - QCOMPARE(ret.property(0).strictlyEquals(array.property(0)), true); - QCOMPARE(ret.property(1).strictlyEquals(array.property(1)), true); - QCOMPARE(ret.property(2).strictlyEquals(array.property(2)), true); - // construct with arguments object as arguments - QScriptValue ret2 = fun.construct(ret); - QCOMPARE(ret2.property(0).strictlyEquals(ret.property(0)), true); - QCOMPARE(ret2.property(1).strictlyEquals(ret.property(1)), true); - QCOMPARE(ret2.property(2).strictlyEquals(ret.property(2)), true); - // construct with null as arguments - QScriptValue ret3 = fun.construct(eng.nullValue()); - QCOMPARE(ret3.isError(), false); - QCOMPARE(ret3.property("length").isNumber(), true); - QCOMPARE(ret3.property("length").toNumber(), 0.0); - // construct with undefined as arguments - QScriptValue ret4 = fun.construct(eng.undefinedValue()); - QCOMPARE(ret4.isError(), false); - QCOMPARE(ret4.property("length").isNumber(), true); - QCOMPARE(ret4.property("length").toNumber(), 0.0); - // construct with something else as arguments - QScriptValue ret5 = fun.construct(QScriptValue(&eng, 123.0)); - QCOMPARE(ret5.isError(), true); - // construct with a non-array object as arguments - QScriptValue ret6 = fun.construct(eng.globalObject()); - QVERIFY(ret6.isError()); - QCOMPARE(ret6.toString(), QString::fromLatin1("TypeError: Arguments must be an array")); - } - - // construct on things that are not functions - QVERIFY(!QScriptValue(false).construct().isValid()); - QVERIFY(!QScriptValue(123).construct().isValid()); - QVERIFY(!QScriptValue(QString::fromLatin1("ciao")).construct().isValid()); - QVERIFY(!QScriptValue(QScriptValue::UndefinedValue).construct().isValid()); - QVERIFY(!QScriptValue(QScriptValue::NullValue).construct().isValid()); +void tst_QScriptValue::construct_twoEngines() +{ + QScriptEngine engine; + QScriptEngine otherEngine; + QScriptValue ctor = engine.evaluate("(function (a, b) { this.foo = 123; })"); + QScriptValue arg(&otherEngine, 124567); + QTest::ignoreMessage(QtWarningMsg, "QScriptValue::construct() failed: cannot construct function with argument created in a different engine"); + QVERIFY(!ctor.construct(arg).isValid()); + QTest::ignoreMessage(QtWarningMsg, "QScriptValue::construct() failed: cannot construct function with argument created in a different engine"); + QVERIFY(!ctor.construct(QScriptValueList() << arg << otherEngine.newObject()).isValid()); } void tst_QScriptValue::construct_constructorThrowsPrimitive() diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue.h b/tests/auto/qscriptvalue/tst_qscriptvalue.h index 7bf0b66..46f5526 100644 --- a/tests/auto/qscriptvalue/tst_qscriptvalue.h +++ b/tests/auto/qscriptvalue/tst_qscriptvalue.h @@ -91,6 +91,8 @@ private slots: void toUInt32(); void toUInt16(); void toVariant(); + void toQObject_nonQObject_data(); + void toQObject_nonQObject(); void toQObject(); void toDateTime(); void toRegExp(); @@ -155,7 +157,18 @@ private slots: void call_array(); void call_nonFunction_data(); void call_nonFunction(); + void construct_nonFunction_data(); + void construct_nonFunction(); + void construct_simple(); + void construct_newObjectJS(); + void construct_undefined(); + void construct_newObjectCpp(); + void construct_arg(); + void construct_proto(); + void construct_returnInt(); + void construct_throw(); void construct(); + void construct_twoEngines(); void construct_constructorThrowsPrimitive(); void castToPointer(); void prettyPrinter_data(); diff --git a/tests/auto/qthread/tst_qthread.cpp b/tests/auto/qthread/tst_qthread.cpp index f290a2b..1e3fc28 100644 --- a/tests/auto/qthread/tst_qthread.cpp +++ b/tests/auto/qthread/tst_qthread.cpp @@ -106,7 +106,13 @@ private slots: void adoptMultipleThreads(); void QTBUG13810_exitAndStart(); + void QTBUG15378_exitAndExec(); + void connectThreadFinishedSignalToObjectDeleteLaterSlot(); + void wait2(); + void wait3_slowDestructor(); + void destroyFinishRace(); + void startFinishRace(); void stressTest(); }; @@ -976,6 +982,44 @@ void tst_QThread::QTBUG13810_exitAndStart() QCOMPARE(sync1.m_prop, 89); } +void tst_QThread::QTBUG15378_exitAndExec() +{ + class Thread : public QThread { + public: + QSemaphore sem1; + QSemaphore sem2; + volatile int value; + void run() { + sem1.acquire(); + value = exec(); //First entrence + sem2.release(); + value = exec(); // Second loop + } + }; + Thread thread; + thread.value = 0; + thread.start(); + thread.exit(556); + thread.sem1.release(); //should exit the first loop + thread.sem2.acquire(); + int v = thread.value; + QCOMPARE(v, 556); + + //test that the thread is running by executing queued connected signal there + Syncronizer sync1; + sync1.moveToThread(&thread); + Syncronizer sync2; + sync2.moveToThread(&thread); + connect(&sync2, SIGNAL(propChanged(int)), &sync1, SLOT(setProp(int)), Qt::QueuedConnection); + connect(&sync1, SIGNAL(propChanged(int)), &thread, SLOT(quit()), Qt::QueuedConnection); + QMetaObject::invokeMethod(&sync2, "setProp", Qt::QueuedConnection , Q_ARG(int, 89)); + QTest::qWait(50); + while(!thread.wait(10)) + QTest::qWait(10); + QCOMPARE(sync2.m_prop, 89); + QCOMPARE(sync1.m_prop, 89); +} + void tst_QThread::connectThreadFinishedSignalToObjectDeleteLaterSlot() { QThread thread; @@ -990,5 +1034,121 @@ void tst_QThread::connectThreadFinishedSignalToObjectDeleteLaterSlot() QVERIFY(p.isNull()); } +class Waiting_Thread : public QThread +{ +public: + enum { WaitTime = 800 }; + QMutex mutex; + QWaitCondition cond1; + QWaitCondition cond2; + + void run() + { + QMutexLocker locker(&mutex); + cond1.wait(&mutex); + cond2.wait(&mutex, WaitTime); + } +}; + +void tst_QThread::wait2() +{ + QElapsedTimer timer; + Waiting_Thread thread; + thread.start(); + timer.start(); + QVERIFY(!thread.wait(Waiting_Thread::WaitTime)); + qint64 elapsed = timer.elapsed(); + + QVERIFY(elapsed >= Waiting_Thread::WaitTime); + //QVERIFY(elapsed < Waiting_Thread::WaitTime * 1.4); + + timer.start(); + thread.cond1.wakeOne(); + QVERIFY(thread.wait(/*Waiting_Thread::WaitTime * 1.4*/)); + elapsed = timer.elapsed(); + QVERIFY(elapsed >= Waiting_Thread::WaitTime); + //QVERIFY(elapsed < Waiting_Thread::WaitTime * 1.4); +} + + +class SlowSlotObject : public QObject { + Q_OBJECT +public: + QMutex mutex; + QWaitCondition cond; +public slots: + void slowSlot() { + QMutexLocker locker(&mutex); + cond.wait(&mutex); + } +}; + +void tst_QThread::wait3_slowDestructor() +{ + SlowSlotObject slow; + QThread thread; + QObject::connect(&thread, SIGNAL(finished()), &slow, SLOT(slowSlot()), Qt::DirectConnection); + + enum { WaitTime = 1800 }; + QElapsedTimer timer; + + thread.start(); + thread.quit(); + //the quit function will cause the thread to finish and enter the slowSlot that is blocking + + timer.start(); + QVERIFY(!thread.wait(Waiting_Thread::WaitTime)); + qint64 elapsed = timer.elapsed(); + + QVERIFY(elapsed >= Waiting_Thread::WaitTime); + //QVERIFY(elapsed < Waiting_Thread::WaitTime * 1.4); + + slow.cond.wakeOne(); + //now the thread should finish quickly + QVERIFY(thread.wait(one_minute)); +} + +void tst_QThread::destroyFinishRace() +{ + class Thread : public QThread { void run() {} }; + for (int i = 0; i < 15; i++) { + Thread *thr = new Thread; + connect(thr, SIGNAL(finished()), thr, SLOT(deleteLater())); + QWeakPointer<QThread> weak(static_cast<QThread*>(thr)); + thr->start(); + while (weak) { + qApp->processEvents(); + qApp->processEvents(); + qApp->processEvents(); + qApp->processEvents(); + } + } +} + +void tst_QThread::startFinishRace() +{ + class Thread : public QThread { + public: + Thread() : i (50) {} + void run() { + i--; + if (!i) disconnect(this, SIGNAL(finished()), 0, 0); + } + int i; + }; + for (int i = 0; i < 15; i++) { + Thread thr; + connect(&thr, SIGNAL(finished()), &thr, SLOT(start())); + thr.start(); + while (!thr.isFinished() || thr.i != 0) { + qApp->processEvents(); + qApp->processEvents(); + qApp->processEvents(); + qApp->processEvents(); + } + QCOMPARE(thr.i, 0); + } +} + QTEST_MAIN(tst_QThread) #include "tst_qthread.moc" diff --git a/tests/auto/qthreadstorage/tst_qthreadstorage.cpp b/tests/auto/qthreadstorage/tst_qthreadstorage.cpp index ed86165..0237dac 100644 --- a/tests/auto/qthreadstorage/tst_qthreadstorage.cpp +++ b/tests/auto/qthreadstorage/tst_qthreadstorage.cpp @@ -77,6 +77,9 @@ private slots: void adoptedThreads(); void ensureCleanupOrder(); void QTBUG13877_crashOnExit(); + void QTBUG14579_leakInDestructor(); + void QTBUG14579_resetInDestructor(); + void valueBased(); }; class Pointer @@ -310,5 +313,192 @@ void tst_QThreadStorage::QTBUG13877_crashOnExit() QVERIFY(process.exitStatus() != QProcess::CrashExit); } +// S stands for thread Safe. +class SPointer +{ +public: + static QBasicAtomicInt count; + inline SPointer() { count.ref(); } + inline ~SPointer() { count.deref(); } + inline SPointer(const SPointer &other) { count.ref(); } +}; +QBasicAtomicInt SPointer::count = Q_BASIC_ATOMIC_INITIALIZER(0); + +Q_GLOBAL_STATIC(QThreadStorage<SPointer *>, QTBUG14579_pointers1) +Q_GLOBAL_STATIC(QThreadStorage<SPointer *>, QTBUG14579_pointers2) + +class QTBUG14579_class +{ +public: + SPointer member; + inline ~QTBUG14579_class() { + QVERIFY(!QTBUG14579_pointers1()->hasLocalData()); + QVERIFY(!QTBUG14579_pointers2()->hasLocalData()); + QTBUG14579_pointers2()->setLocalData(new SPointer); + QTBUG14579_pointers1()->setLocalData(new SPointer); + QVERIFY(QTBUG14579_pointers1()->hasLocalData()); + QVERIFY(QTBUG14579_pointers2()->hasLocalData()); + } +}; + + +void tst_QThreadStorage::QTBUG14579_leakInDestructor() +{ + class Thread : public QThread + { + public: + QThreadStorage<QTBUG14579_class *> &tls; + + Thread(QThreadStorage<QTBUG14579_class *> &t) : tls(t) { } + + void run() + { + QVERIFY(!tls.hasLocalData()); + tls.setLocalData(new QTBUG14579_class); + QVERIFY(tls.hasLocalData()); + } + }; + int c = SPointer::count; + + QThreadStorage<QTBUG14579_class *> tls; + + QVERIFY(!QTBUG14579_pointers1()->hasLocalData()); + QThreadStorage<int *> tls2; //add some more tls to make sure ids are not following each other too much + QThreadStorage<int *> tls3; + QVERIFY(!tls2.hasLocalData()); + QVERIFY(!tls3.hasLocalData()); + QVERIFY(!tls.hasLocalData()); + + Thread t1(tls); + Thread t2(tls); + Thread t3(tls); + + t1.start(); + t2.start(); + t3.start(); + + QVERIFY(t1.wait()); + QVERIFY(t2.wait()); + QVERIFY(t3.wait()); + + //check all the constructed things have been destructed + QCOMPARE(int(SPointer::count), c); +} + + +class QTBUG14579_reset; +Q_GLOBAL_STATIC(QThreadStorage<QTBUG14579_reset *>, QTBUG14579_resetTls) + +class QTBUG14579_reset { +public: + SPointer member; + ~QTBUG14579_reset() { + //Quite stupid, but WTF::ThreadSpecific<T>::destroy does it. + QTBUG14579_resetTls()->setLocalData(this); + } +}; + + +void tst_QThreadStorage::QTBUG14579_resetInDestructor() +{ + class Thread : public QThread + { + public: + void run() + { + QVERIFY(!QTBUG14579_resetTls()->hasLocalData()); + QTBUG14579_resetTls()->setLocalData(new QTBUG14579_reset); + QVERIFY(QTBUG14579_resetTls()->hasLocalData()); + } + }; + int c = SPointer::count; + + Thread t1; + Thread t2; + Thread t3; + t1.start(); + t2.start(); + t3.start(); + QVERIFY(t1.wait()); + QVERIFY(t2.wait()); + QVERIFY(t3.wait()); + + //check all the constructed things have been destructed + QCOMPARE(int(SPointer::count), c); +} + + +void tst_QThreadStorage::valueBased() +{ + struct Thread : QThread { + QThreadStorage<SPointer> &tlsSPointer; + QThreadStorage<QString> &tlsString; + QThreadStorage<int> &tlsInt; + + int someNumber; + QString someString; + Thread(QThreadStorage<SPointer> &t1, QThreadStorage<QString> &t2, QThreadStorage<int> &t3) + : tlsSPointer(t1), tlsString(t2), tlsInt(t3) { } + + void run() { + /*QVERIFY(!tlsSPointer.hasLocalData()); + QVERIFY(!tlsString.hasLocalData()); + QVERIFY(!tlsInt.hasLocalData());*/ + SPointer pointercopy = tlsSPointer.localData(); + + //Default constructed values + QVERIFY(tlsString.localData().isNull()); + QCOMPARE(tlsInt.localData(), 0); + + //setting + tlsString.setLocalData(someString); + tlsInt.setLocalData(someNumber); + + QCOMPARE(tlsString.localData(), someString); + QCOMPARE(tlsInt.localData(), someNumber); + + //changing + tlsSPointer.setLocalData(SPointer()); + tlsInt.localData() += 42; + tlsString.localData().append(QLatin1String(" world")); + + QCOMPARE(tlsString.localData(), (someString + QLatin1String(" world"))); + QCOMPARE(tlsInt.localData(), (someNumber + 42)); + + // operator= + tlsString.localData() = QString::number(someNumber); + QCOMPARE(tlsString.localData().toInt(), someNumber); + } + }; + + QThreadStorage<SPointer> tlsSPointer; + QThreadStorage<QString> tlsString; + QThreadStorage<int> tlsInt; + + int c = SPointer::count; + + Thread t1(tlsSPointer, tlsString, tlsInt); + Thread t2(tlsSPointer, tlsString, tlsInt); + Thread t3(tlsSPointer, tlsString, tlsInt); + t1.someNumber = 42; + t2.someNumber = -128; + t3.someNumber = 78; + t1.someString = "hello"; + t2.someString = "trolltech"; + t3.someString = "nokia"; + + t1.start(); + t2.start(); + t3.start(); + + QVERIFY(t1.wait()); + QVERIFY(t2.wait()); + QVERIFY(t3.wait()); + + QCOMPARE(c, int(SPointer::count)); + +} + + QTEST_MAIN(tst_QThreadStorage) #include "tst_qthreadstorage.moc" diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp index d230f2c..ae46fe6 100644 --- a/tests/auto/qwidget/tst_qwidget.cpp +++ b/tests/auto/qwidget/tst_qwidget.cpp @@ -4376,7 +4376,6 @@ class WinIdChangeWidget : public QWidget { public: WinIdChangeWidget(QWidget *p = 0) : QWidget(p) - , m_winIdChangeEventCount(0) { } @@ -4384,13 +4383,14 @@ protected: bool event(QEvent *e) { if (e->type() == QEvent::WinIdChange) { - ++m_winIdChangeEventCount; + m_winIdList.append(internalWinId()); return true; } return QWidget::event(e); } public: - int m_winIdChangeEventCount; + QList<WId> m_winIdList; + int winIdChangeEventCount() const { return m_winIdList.count(); } }; void tst_QWidget::winIdChangeEvent() @@ -4401,7 +4401,7 @@ void tst_QWidget::winIdChangeEvent() const WId winIdBefore = widget.internalWinId(); const WId winIdAfter = widget.winId(); QVERIFY(winIdBefore != winIdAfter); - QCOMPARE(widget.m_winIdChangeEventCount, 1); + QCOMPARE(widget.winIdChangeEventCount(), 1); } { @@ -4410,11 +4410,13 @@ void tst_QWidget::winIdChangeEvent() QWidget parent1, parent2; WinIdChangeWidget child(&parent1); const WId winIdBefore = child.winId(); - QCOMPARE(child.m_winIdChangeEventCount, 1); + QCOMPARE(child.winIdChangeEventCount(), 1); child.setParent(&parent2); const WId winIdAfter = child.internalWinId(); QVERIFY(winIdBefore != winIdAfter); - QCOMPARE(child.m_winIdChangeEventCount, 2); + QCOMPARE(child.winIdChangeEventCount(), 3); + // winId is set to zero during reparenting + QVERIFY(0 == child.m_winIdList[1]); } { @@ -4424,15 +4426,16 @@ void tst_QWidget::winIdChangeEvent() QWidget parent(&grandparent1); WinIdChangeWidget child(&parent); const WId winIdBefore = child.winId(); - QCOMPARE(child.m_winIdChangeEventCount, 1); + QCOMPARE(child.winIdChangeEventCount(), 1); parent.setParent(&grandparent2); const WId winIdAfter = child.internalWinId(); #ifdef Q_OS_SYMBIAN QVERIFY(winIdBefore != winIdAfter); - QCOMPARE(child.m_winIdChangeEventCount, 2); + QVERIFY(winIdAfter != 0); + QCOMPARE(child.winIdChangeEventCount(), 2); #else QCOMPARE(winIdBefore, winIdAfter); - QCOMPARE(child.m_winIdChangeEventCount, 1); + QCOMPARE(child.winIdChangeEventCount(), 1); #endif } @@ -4444,7 +4447,7 @@ void tst_QWidget::winIdChangeEvent() child.setParent(&parent2); const WId winIdAfter = child.internalWinId(); QCOMPARE(winIdBefore, winIdAfter); - QCOMPARE(child.m_winIdChangeEventCount, 0); + QCOMPARE(child.winIdChangeEventCount(), 0); } { @@ -4453,12 +4456,14 @@ void tst_QWidget::winIdChangeEvent() WinIdChangeWidget child(&parent); child.winId(); const WId winIdBefore = child.internalWinId(); - QCOMPARE(child.m_winIdChangeEventCount, 1); + QCOMPARE(child.winIdChangeEventCount(), 1); const Qt::WindowFlags flags = child.windowFlags(); child.setWindowFlags(flags | Qt::Window); const WId winIdAfter = child.internalWinId(); QVERIFY(winIdBefore != winIdAfter); - QCOMPARE(child.m_winIdChangeEventCount, 2); + QCOMPARE(child.winIdChangeEventCount(), 3); + // winId is set to zero during reparenting + QVERIFY(0 == child.m_winIdList[1]); } } diff --git a/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/qgraphicslinearlayout.pro b/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/qgraphicslinearlayout.pro new file mode 100644 index 0000000..ff85fe8 --- /dev/null +++ b/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/qgraphicslinearlayout.pro @@ -0,0 +1,6 @@ +load(qttest_p4) +TEMPLATE = app +TARGET = tst_bench_qgraphicslinearlayout + +SOURCES += tst_qgraphicslinearlayout.cpp + diff --git a/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp b/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp new file mode 100644 index 0000000..dc415fb --- /dev/null +++ b/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp @@ -0,0 +1,133 @@ +/**************************************************************************** +** +** 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 test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtTest/QtTest> +#include <QtGui/qgraphicslinearlayout.h> +#include <QtGui/qgraphicswidget.h> +#include <QtGui/qgraphicsview.h> + +class tst_QGraphicsLinearLayout : public QObject +{ + Q_OBJECT +public: + tst_QGraphicsLinearLayout() {} + ~tst_QGraphicsLinearLayout() {} + +private slots: + void heightForWidth_data(); + void heightForWidth(); +}; + + +struct MySquareWidget : public QGraphicsWidget +{ + MySquareWidget() {} + virtual QSizeF sizeHint ( Qt::SizeHint which, const QSizeF & constraint = QSizeF() ) const + { + if (which != Qt::PreferredSize) + return QGraphicsWidget::sizeHint(which, constraint); + if (constraint.width() < 0) + return QGraphicsWidget::sizeHint(which, constraint); + return QSizeF(constraint.width(), constraint.width()); + } +}; + +void tst_QGraphicsLinearLayout::heightForWidth_data() +{ + QTest::addColumn<bool>("hfw"); + QTest::addColumn<bool>("nested"); + + QTest::newRow("hfw") << true << false; + QTest::newRow("hfw, nested") << true << true; + QTest::newRow("not hfw") << false << false; + QTest::newRow("not hfw, nested") << false << true; +} + +void tst_QGraphicsLinearLayout::heightForWidth() +{ + QFETCH(bool, hfw); + QFETCH(bool, nested); + + QGraphicsScene scene; + QGraphicsWidget *form = new QGraphicsWidget; + scene.addItem(form); + + QGraphicsLinearLayout *outerlayout = 0; + if (nested) { + outerlayout = new QGraphicsLinearLayout(form); + for (int i = 0; i < 8; i++) { + QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(Qt::Vertical); + outerlayout->addItem(layout); + outerlayout = layout; + } + } + + QGraphicsLinearLayout *qlayout = 0; + qlayout = new QGraphicsLinearLayout(Qt::Vertical); + if (nested) + outerlayout->addItem(qlayout); + else + form->setLayout(qlayout); + + MySquareWidget *widget = new MySquareWidget; + for (int i = 0; i < 1; i++) { + widget = new MySquareWidget; + QSizePolicy sizepolicy = widget->sizePolicy(); + sizepolicy.setHeightForWidth(hfw); + widget->setSizePolicy(sizepolicy); + qlayout->addItem(widget); + } + // make sure only one iteration is done. + // run with tst_QGraphicsLinearLayout.exe "heightForWidth" -tickcounter -iterations 6 + // this will iterate 6 times the whole test, (not only the benchmark) + // which should reduce warmup time and give a realistic picture of the performance of + // effectiveSizeHint() + QSizeF constraint(hfw ? 100 : -1, -1); + QBENCHMARK { + (void)form->effectiveSizeHint(Qt::PreferredSize, constraint); + } + +} + + +QTEST_MAIN(tst_QGraphicsLinearLayout) + +#include "tst_qgraphicslinearlayout.moc" diff --git a/tests/manual/mkspecs/test.sh b/tests/manual/mkspecs/test.sh index 4b723c0..7e942a4 100755 --- a/tests/manual/mkspecs/test.sh +++ b/tests/manual/mkspecs/test.sh @@ -1,4 +1,45 @@ #!/bin/bash +############################################################################# +## +## 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 manual tests of the Qt Toolkit. +## +## $QT_BEGIN_LICENSE:LGPL$ +## 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 Lesser General Public License Usage +## Alternatively, this file may be used under the terms of the GNU Lesser +## General Public License version 2.1 as published by the Free Software +## Foundation and appearing in the file LICENSE.LGPL included in the +## packaging of this file. Please review the following information to +## ensure the GNU Lesser General Public License version 2.1 requirements +## will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +## +## In addition, as a special exception, Nokia gives you certain additional +## rights. These rights are described in the Nokia Qt LGPL Exception +## version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +## +## If you have questions regarding the use of this file, please contact +## Nokia at qt-info@nokia.com. +## +## +## +## +## +## +## +## +## $QT_END_LICENSE$ +## +############################################################################# + if [ "$1" == "--help" ]; then echo "Init a clean git repository somewhere and run this test script from that directory. The first run will" diff --git a/tools/assistant/tools/assistant/helpenginewrapper.cpp b/tools/assistant/tools/assistant/helpenginewrapper.cpp index ba54dd6..553ffc4 100644 --- a/tools/assistant/tools/assistant/helpenginewrapper.cpp +++ b/tools/assistant/tools/assistant/helpenginewrapper.cpp @@ -145,7 +145,7 @@ HelpEngineWrapper::HelpEngineWrapper(const QString &collectionFile) /* * Otherwise we will waste time if several new docs are found, - * because we will start to index them, only to be interupted + * because we will start to index them, only to be interrupted * by the next request. Also, there is a nasty SQLITE bug that will * cause the application to hang for minutes in that case. * This call is reverted by initialDocSetupDone(), which must be diff --git a/tools/assistant/tools/assistant/mainwindow.cpp b/tools/assistant/tools/assistant/mainwindow.cpp index 48469d4..d7d01da 100644 --- a/tools/assistant/tools/assistant/mainwindow.cpp +++ b/tools/assistant/tools/assistant/mainwindow.cpp @@ -460,14 +460,20 @@ void MainWindow::setupActions() menu->addAction(globalActions->printAction()); menu->addSeparator(); - QAction *tmp = menu->addAction(QIcon::fromTheme("application-exit"), - tr("&Quit"), this, SLOT(close())); - tmp->setMenuRole(QAction::QuitRole); + m_closeTabAction = menu->addAction(tr("&Close Tab"), m_centralWidget, + SLOT(closeTab())); + m_closeTabAction->setShortcuts(QKeySequence::Close); + + QIcon appExitIcon = QIcon::fromTheme("application-exit"); + QAction *tmp; #ifdef Q_OS_WIN + tmp = menu->addAction(appExitIcon, tr("E&xit"), this, SLOT(close())); tmp->setShortcut(QKeySequence(tr("CTRL+Q"))); #else + tmp = menu->addAction(appExitIcon, tr("&Quit"), this, SLOT(close())); tmp->setShortcut(QKeySequence::Quit); #endif + tmp->setMenuRole(QAction::QuitRole); menu = menuBar()->addMenu(tr("&Edit")); menu->addAction(globalActions->copyAction()); diff --git a/tools/configure/configure.pro b/tools/configure/configure.pro index 867f483..608d876 100644 --- a/tools/configure/configure.pro +++ b/tools/configure/configure.pro @@ -67,8 +67,8 @@ HEADERS = configureapp.h environment.h tools.h\ $$QT_SOURCE_TREE/src/corelib/tools/qunicodetables_p.h \ $$QT_SOURCE_TREE/src/corelib/xml/qxmlstream.h \ $$QT_SOURCE_TREE/src/corelib/xml/qxmlutils_p.h \ - $$QT_SOURCE_TREE/tools/shared/symbian/epocroot.h \ - $$QT_SOURCE_TREE/tools/shared/windows/registry.h + $$QT_SOURCE_TREE/tools/shared/symbian/epocroot_p.h \ + $$QT_SOURCE_TREE/tools/shared/windows/registry_p.h SOURCES = main.cpp configureapp.cpp environment.cpp tools.cpp \ diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index 3ca57b4..479fd4c 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -3236,7 +3236,8 @@ void Configure::generateConfigfiles() } // Copy configured mkspec to default directory, but remove the old one first, if there is any - QString defSpec = buildPath + "/mkspecs/default"; + QString mkspecsPath = buildPath + "/mkspecs"; + QString defSpec = mkspecsPath + "/default"; QFileInfo defSpecInfo(defSpec); if (defSpecInfo.exists()) { if (!Environment::rmdir(defSpec)) { @@ -3246,21 +3247,22 @@ void Configure::generateConfigfiles() } } - QString spec = dictionary.contains("XQMAKESPEC") ? dictionary["XQMAKESPEC"] : dictionary["QMAKESPEC"]; - QString pltSpec = sourcePath + "/mkspecs/" + spec; - if (!Environment::cpdir(pltSpec, defSpec)) { - cout << "Couldn't update default mkspec! Does " << qPrintable(pltSpec) << " exist?" << endl; + QDir mkspecsDir(mkspecsPath); + if (!mkspecsDir.mkdir("default")) { + cout << "Couldn't create default mkspec dir!" << endl; dictionary["DONE"] = "error"; return; } + QString spec = dictionary.contains("XQMAKESPEC") ? dictionary["XQMAKESPEC"] : dictionary["QMAKESPEC"]; + QString pltSpec = sourcePath + "/mkspecs/" + spec; outName = defSpec + "/qmake.conf"; - ::SetFileAttributes((wchar_t*)outName.utf16(), FILE_ATTRIBUTE_NORMAL); QFile qmakeConfFile(outName); - if (qmakeConfFile.open(QFile::Append | QFile::WriteOnly | QFile::Text)) { + if (qmakeConfFile.open(QFile::WriteOnly | QFile::Text)) { QTextStream qmakeConfStream; qmakeConfStream.setDevice(&qmakeConfFile); - qmakeConfStream << endl << "QMAKESPEC_ORIGINAL=" << pltSpec << endl; + qmakeConfStream << "QMAKESPEC_ORIGINAL=" << pltSpec << endl << endl; + qmakeConfStream << "include(" << pltSpec << "/qmake.conf)" << endl; qmakeConfStream.flush(); qmakeConfFile.close(); } @@ -3340,7 +3342,7 @@ void Configure::generateConfigfiles() if (tmpFile3.open()) { tmpStream.setDevice(&tmpFile3); tmpStream << "/* Evaluation license key */" << endl - << "static const char qt_eval_key_data [512 + 12] = \"qt_qevalkey=" << licenseInfo["LICENSEKEYEXT"] << "\";" << endl; + << "static const volatile char qt_eval_key_data [512 + 12] = \"qt_qevalkey=" << licenseInfo["LICENSEKEYEXT"] << "\";" << endl; tmpStream.flush(); tmpFile3.flush(); diff --git a/tools/configure/environment.cpp b/tools/configure/environment.cpp index 9446864..2efc58a 100644 --- a/tools/configure/environment.cpp +++ b/tools/configure/environment.cpp @@ -60,8 +60,8 @@ using namespace std; #include <qt_windows.h> #endif -#include <symbian/epocroot.h> // from tools/shared -#include <windows/registry.h> // from tools/shared +#include <symbian/epocroot_p.h> // from tools/shared +#include <windows/registry_p.h> // from tools/shared QT_BEGIN_NAMESPACE @@ -153,7 +153,7 @@ Compiler Environment::detectCompiler() QString paths = qgetenv("PATH"); QStringList pathlist = paths.toLower().split(";"); for(int i = 0; compiler_info[i].compiler; ++i) { - QString productPath = readRegistryKey(HKEY_LOCAL_MACHINE, compiler_info[i].regKey).toLower(); + QString productPath = qt_readRegistryKey(HKEY_LOCAL_MACHINE, compiler_info[i].regKey).toLower(); if (productPath.length()) { QStringList::iterator it; for(it = pathlist.begin(); it != pathlist.end(); ++it) { @@ -456,8 +456,8 @@ bool Environment::rmdir(const QString &name) QString Environment::symbianEpocRoot() { - // Call function defined in tools/shared/symbian/epocroot.h - return ::epocRoot(); + // Call function defined in tools/shared/symbian/epocroot_p.h + return ::qt_epocRoot(); } QT_END_NAMESPACE diff --git a/tools/designer/src/lib/shared/widgetdatabase.cpp b/tools/designer/src/lib/shared/widgetdatabase.cpp index 0c3e949..7ab450d 100644 --- a/tools/designer/src/lib/shared/widgetdatabase.cpp +++ b/tools/designer/src/lib/shared/widgetdatabase.cpp @@ -54,7 +54,8 @@ #include <QtDesigner/QDesignerFormEditorInterface> #include <QtXml/QXmlStreamWriter> -#include <QtCore/QtAlgorithms> + +#include <QtCore/QScopedPointer> #include <QtCore/qdebug.h> #include <QtCore/QMetaProperty> #include <QtCore/QTextStream> @@ -565,10 +566,10 @@ static QString xmlFromWidgetBox(const QDesignerFormEditorInterface *core, const const bool found = QDesignerWidgetBox::findWidget(core->widgetBox(), className, QString(), &widget); if (!found) return QString(); - DomUI *domUI = QDesignerWidgetBox::xmlToUi(className, widget.domXml(), false); - domUI->setAttributeVersion(QLatin1String("4.0")); - if (!domUI) + QScopedPointer<DomUI> domUI(QDesignerWidgetBox::xmlToUi(className, widget.domXml(), false)); + if (domUI.isNull()) return QString(); + domUI->setAttributeVersion(QLatin1String("4.0")); DomWidget *domWidget = domUI->elementWidget(); if (!domWidget) return QString(); @@ -615,7 +616,6 @@ static QString xmlFromWidgetBox(const QDesignerFormEditorInterface *core, const domUI->write(writer); writer.writeEndDocument(); } - delete domUI; return rc; } diff --git a/tools/linguist/lrelease/lrelease.pro b/tools/linguist/lrelease/lrelease.pro index 6beafa3..89694be 100644 --- a/tools/linguist/lrelease/lrelease.pro +++ b/tools/linguist/lrelease/lrelease.pro @@ -15,6 +15,7 @@ macx:SOURCES += $$QT_SOURCE_TREE/src/corelib/io/qsettings_mac.cpp include(../../../src/tools/bootstrap/bootstrap.pri) include(../shared/formats.pri) include(../shared/proparser.pri) +include(../../shared/symbian/epocroot.pri) win32:LIBS += -ladvapi32 # for qsettings_win.cpp diff --git a/tools/linguist/lupdate/main.cpp b/tools/linguist/lupdate/main.cpp index 49906e0..76a8756 100644 --- a/tools/linguist/lupdate/main.cpp +++ b/tools/linguist/lupdate/main.cpp @@ -350,6 +350,10 @@ static void processProjects( ProFileEvaluator visitor; visitor.setVerbose(options & Verbose); + QHash<QString, QStringList> lupdateConfig; + lupdateConfig.insert(QLatin1String("CONFIG"), QStringList(QLatin1String("lupdate_run"))); + visitor.addVariables(lupdateConfig); + QFileInfo pfi(proFile); ProFile pro(pfi.absoluteFilePath()); if (!visitor.queryProFile(&pro) || !visitor.accept(&pro)) { diff --git a/tools/linguist/lupdate/qscript.cpp b/tools/linguist/lupdate/qscript.cpp index 5323022..f9aff34 100644 --- a/tools/linguist/lupdate/qscript.cpp +++ b/tools/linguist/lupdate/qscript.cpp @@ -67,6 +67,8 @@ class LU { Q_DECLARE_TR_FUNCTIONS(LUpdate) }; +static QString MagicComment(QLatin1String("TRANSLATOR")); + class QScriptGrammar { public: @@ -2092,8 +2094,9 @@ public: ~QScriptParser(); void setLexer(QScript::Lexer *); + void setTranslator(Translator *); - bool parse(Translator *translator); + bool parse(); QString fileName() const { return lexer->fileName(); } @@ -2129,6 +2132,8 @@ protected: private: QScript::Lexer *lexer; + Translator *translator; + QString trcontext; QString extracomment; QString msgid; QString sourcetext; @@ -2160,7 +2165,8 @@ QScriptParser::QScriptParser(): sym_stack(0), state_stack(0), location_stack(0), - lexer(0) + lexer(0), + translator(0) { } @@ -2187,9 +2193,17 @@ void QScriptParser::setLexer(QScript::Lexer *lex) lexer = lex; } -bool QScriptParser::parse(Translator *translator) +void QScriptParser::setTranslator(Translator *tor) +{ + translator = tor; +} + +bool QScriptParser::parse() { Q_ASSERT(lexer != 0); + Q_ASSERT(translator != 0); + trcontext = QFileInfo(fileName()).baseName(); + const int INITIAL_STATE = 0; int yytoken = -1; @@ -2303,11 +2317,10 @@ case 66: { if (args.at(0).type() != QVariant::String) { yyMsg(identLineNo) << qPrintable(LU::tr("%1(): text to translate must be a literal string.\n").arg(name)); } else { - QString context = QFileInfo(fileName()).baseName(); QString text = args.at(0).toString(); QString comment = args.value(1).toString(); bool plural = (args.size() > 2); - recordMessage(translator, context, text, comment, extracomment, + recordMessage(translator, trcontext, text, comment, extracomment, msgid, extra, plural, fileName(), identLineNo); } } @@ -2533,6 +2546,32 @@ void QScriptParser::processComment(const QChar *chars, int length) } } sourcetext.resize(ptr - (ushort *)sourcetext.data()); + } else { + int idx = 0; + ushort c; + while ((c = chars[idx].unicode()) == ' ' || c == '\t' || c == '\n') + ++idx; + if (!memcmp(chars + idx, MagicComment.unicode(), MagicComment.length() * 2)) { + idx += MagicComment.length(); + QString comment = QString(chars + idx, length - idx).simplified(); + int k = comment.indexOf(QLatin1Char(' ')); + if (k == -1) { + trcontext = comment; + } else { + trcontext = comment.left(k); + comment.remove(0, k + 1); + TranslatorMessage msg( + trcontext, QString(), + comment, QString(), + fileName(), lexer->startLineNo(), QStringList(), + TranslatorMessage::Finished, /*plural=*/false); + msg.setExtraComment(extracomment.simplified()); + extracomment.clear(); + translator->append(msg); + translator->setExtras(extra); + extra.clear(); + } + } } } @@ -2558,7 +2597,8 @@ bool loadQScript(Translator &translator, const QString &filename, ConversionData QScript::Lexer lexer(&parser); lexer.setCode(code, filename, /*lineNumber=*/1); parser.setLexer(&lexer); - if (!parser.parse(&translator)) { + parser.setTranslator(&translator); + if (!parser.parse()) { std::cerr << qPrintable(filename) << ':' << parser.errorLineNumber() << ": " << qPrintable(parser.errorMessage()) << std::endl; return false; diff --git a/tools/linguist/lupdate/qscript.g b/tools/linguist/lupdate/qscript.g index 3655f2e..1335f55 100644 --- a/tools/linguist/lupdate/qscript.g +++ b/tools/linguist/lupdate/qscript.g @@ -104,6 +104,8 @@ class LU { Q_DECLARE_TR_FUNCTIONS(LUpdate) }; +static QString MagicComment(QLatin1String("TRANSLATOR")); + static void recordMessage( Translator *tor, const QString &context, const QString &text, const QString &comment, const QString &extracomment, const QString &msgid, const TranslatorMessage::ExtraData &extra, @@ -1423,8 +1425,9 @@ public: ~QScriptParser(); void setLexer(QScript::Lexer *); + void setTranslator(Translator *); - bool parse(Translator *translator); + bool parse(); QString fileName() const { return lexer->fileName(); } @@ -1460,6 +1463,8 @@ protected: private: QScript::Lexer *lexer; + Translator *translator; + QString trcontext; QString extracomment; QString msgid; QString sourcetext; @@ -1491,7 +1496,8 @@ QScriptParser::QScriptParser(): sym_stack(0), state_stack(0), location_stack(0), - lexer(0) + lexer(0), + translator(0) { } @@ -1518,9 +1524,17 @@ void QScriptParser::setLexer(QScript::Lexer *lex) lexer = lex; } -bool QScriptParser::parse(Translator *translator) +void QScriptParser::setTranslator(Translator *tor) +{ + translator = tor; +} + +bool QScriptParser::parse() { Q_ASSERT(lexer != 0); + Q_ASSERT(translator != 0); + trcontext = QFileInfo(fileName()).baseName(); + const int INITIAL_STATE = 0; int yytoken = -1; @@ -1719,11 +1733,10 @@ case $rule_number: { if (args.at(0).type() != QVariant::String) { yyMsg(identLineNo) << qPrintable(LU::tr("%1(): text to translate must be a literal string.\n").arg(name)); } else { - QString context = QFileInfo(fileName()).baseName(); QString text = args.at(0).toString(); QString comment = args.value(1).toString(); bool plural = (args.size() > 2); - recordMessage(translator, context, text, comment, extracomment, + recordMessage(translator, trcontext, text, comment, extracomment, msgid, extra, plural, fileName(), identLineNo); } } @@ -2181,6 +2194,32 @@ void QScriptParser::processComment(const QChar *chars, int length) } } sourcetext.resize(ptr - (ushort *)sourcetext.data()); + } else { + int idx = 0; + ushort c; + while ((c = chars[idx].unicode()) == ' ' || c == '\t' || c == '\n') + ++idx; + if (!memcmp(chars + idx, MagicComment.unicode(), MagicComment.length() * 2)) { + idx += MagicComment.length(); + QString comment = QString(chars + idx, length - idx).simplified(); + int k = comment.indexOf(QLatin1Char(' ')); + if (k == -1) { + trcontext = comment; + } else { + trcontext = comment.left(k); + comment.remove(0, k + 1); + TranslatorMessage msg( + trcontext, QString(), + comment, QString(), + fileName(), lexer->startLineNo(), QStringList(), + TranslatorMessage::Finished, /*plural=*/false); + msg.setExtraComment(extracomment.simplified()); + extracomment.clear(); + translator->append(msg); + translator->setExtras(extra); + extra.clear(); + } + } } } @@ -2206,7 +2245,8 @@ bool loadQScript(Translator &translator, const QString &filename, ConversionData QScript::Lexer lexer(&parser); lexer.setCode(code, filename, /*lineNumber=*/1); parser.setLexer(&lexer); - if (!parser.parse(&translator)) { + parser.setTranslator(&translator); + if (!parser.parse()) { std::cerr << qPrintable(filename) << ':' << parser.errorLineNumber() << ": " << qPrintable(parser.errorMessage()) << std::endl; return false; diff --git a/tools/qdoc3/doc/files/qt.qdocconf b/tools/qdoc3/doc/files/qt.qdocconf index 4546c7a..44cfbc1 100644 --- a/tools/qdoc3/doc/files/qt.qdocconf +++ b/tools/qdoc3/doc/files/qt.qdocconf @@ -22,7 +22,7 @@ edition.DesktopLight.groups = -graphicsview-api qhp.projects = Qt qhp.Qt.file = qt.qhp -qhp.Qt.namespace = com.trolltech.qt.471 +qhp.Qt.namespace = com.trolltech.qt.472 qhp.Qt.virtualFolder = qdoc qhp.Qt.indexTitle = Qt Reference Documentation qhp.Qt.indexRoot = @@ -36,9 +36,9 @@ qhp.Qt.extraFiles = classic.css \ images/dynamiclayouts-example.png \ images/stylesheet-coffee-plastique.png -qhp.Qt.filterAttributes = qt 4.7.1 qtrefdoc -qhp.Qt.customFilters.Qt.name = Qt 4.7.1 -qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.1 +qhp.Qt.filterAttributes = qt 4.7.2 qtrefdoc +qhp.Qt.customFilters.Qt.name = Qt 4.7.2 +qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.2 qhp.Qt.subprojects = classes overviews examples qhp.Qt.subprojects.classes.title = Classes qhp.Qt.subprojects.classes.indexTitle = Qt's Classes diff --git a/tools/qdoc3/test/designer.qdocconf b/tools/qdoc3/test/designer.qdocconf index 448ed23..f59fdf0 100644 --- a/tools/qdoc3/test/designer.qdocconf +++ b/tools/qdoc3/test/designer.qdocconf @@ -13,7 +13,7 @@ indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index qhp.projects = Designer qhp.Designer.file = designer.qhp -qhp.Designer.namespace = com.trolltech.designer.470 +qhp.Designer.namespace = com.trolltech.designer.480 qhp.Designer.virtualFolder = qdoc qhp.Designer.indexTitle = Qt Designer Manual qhp.Designer.extraFiles = images/bg_l.png \ diff --git a/tools/qdoc3/test/qdeclarative.qdocconf b/tools/qdoc3/test/qdeclarative.qdocconf index 45f48a6..4abe40c 100644 --- a/tools/qdoc3/test/qdeclarative.qdocconf +++ b/tools/qdoc3/test/qdeclarative.qdocconf @@ -21,7 +21,7 @@ edition.DesktopLight.groups = -graphicsview-api qhp.projects = Qml qhp.Qml.file = qml.qhp -qhp.Qml.namespace = com.trolltech.qml.470 +qhp.Qml.namespace = com.trolltech.qml.480 qhp.Qml.virtualFolder = qdoc qhp.Qml.indexTitle = Qml Reference @@ -61,9 +61,9 @@ qhp.Qml.extraFiles = images/bg_l.png \ style/style_ie8.css \ style/style.css -qhp.Qml.filterAttributes = qt 4.7.0 qtrefdoc -qhp.Qml.customFilters.Qt.name = Qt 4.7.0 -qhp.Qml.customFilters.Qt.filterAttributes = qt 4.7.0 +qhp.Qml.filterAttributes = qt 4.8.0 qtrefdoc +qhp.Qml.customFilters.Qt.name = Qt 4.8.0 +qhp.Qml.customFilters.Qt.filterAttributes = qt 4.8.0 qhp.Qml.subprojects = classes qhp.Qml.subprojects.classes.title = Elements qhp.Qml.subprojects.classes.indexTitle = Qml Elements diff --git a/tools/qdoc3/test/qt-build-docs_ja_JP.qdocconf b/tools/qdoc3/test/qt-build-docs_ja_JP.qdocconf index c24ddef..e775228 100644 --- a/tools/qdoc3/test/qt-build-docs_ja_JP.qdocconf +++ b/tools/qdoc3/test/qt-build-docs_ja_JP.qdocconf @@ -17,15 +17,15 @@ indexes = $QT_BUILD_TREE/doc-build/html-qt/qt.index qhp.projects = Qt qhp.Qt.file = qt.qhp -qhp.Qt.namespace = com.trolltech.qt.470 +qhp.Qt.namespace = com.trolltech.qt.480 qhp.Qt.virtualFolder = qdoc qhp.Qt.title = Qt qhp.Qt.indexTitle = Qt qhp.Qt.selectors = fake:example -qhp.Qt.filterAttributes = qt 4.7.0 qtrefdoc ja_JP -qhp.Qt.customFilters.Qt.name = Qt 4.7.0 -qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.0 +qhp.Qt.filterAttributes = qt 4.8.0 qtrefdoc ja_JP +qhp.Qt.customFilters.Qt.name = Qt 4.8.0 +qhp.Qt.customFilters.Qt.filterAttributes = qt 4.8.0 # Files not referenced in any qdoc file (last four are needed by qtdemo) # See also extraimages.HTML diff --git a/tools/qdoc3/test/qt.qdocconf b/tools/qdoc3/test/qt.qdocconf index dedf806..b7b5371 100644 --- a/tools/qdoc3/test/qt.qdocconf +++ b/tools/qdoc3/test/qt.qdocconf @@ -62,7 +62,6 @@ qhp.Qt.extraFiles = index.html \ qhp.Qt.filterAttributes = qt 4.8.0 qtrefdoc qhp.Qt.customFilters.Qt.name = Qt 4.8.0 qhp.Qt.customFilters.Qt.filterAttributes = qt 4.8.0 -qhp.Qt.subprojects = classes overviews examples qhp.Qt.subprojects = classes qmlelements overviews examples qhp.Qt.subprojects.classes.title = Classes qhp.Qt.subprojects.classes.indexTitle = Qt's Classes diff --git a/tools/qdoc3/test/qt_ja_JP.qdocconf b/tools/qdoc3/test/qt_ja_JP.qdocconf index f9ce142..69c0748 100644 --- a/tools/qdoc3/test/qt_ja_JP.qdocconf +++ b/tools/qdoc3/test/qt_ja_JP.qdocconf @@ -19,15 +19,15 @@ indexes = $QTDIR/doc/html/qt.index qhp.projects = Qt qhp.Qt.file = qt.qhp -qhp.Qt.namespace = com.trolltech.qt.470 +qhp.Qt.namespace = com.trolltech.qt.480 qhp.Qt.virtualFolder = qdoc qhp.Qt.title = Qt qhp.Qt.indexTitle = Qt qhp.Qt.selectors = fake:example -qhp.Qt.filterAttributes = qt 4.7.0 qtrefdoc ja_JP -qhp.Qt.customFilters.Qt.name = Qt 4.7.0 -qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.0 +qhp.Qt.filterAttributes = qt 4.8.0 qtrefdoc ja_JP +qhp.Qt.customFilters.Qt.name = Qt 4.8.0 +qhp.Qt.customFilters.Qt.filterAttributes = qt 4.8.0 # Files not referenced in any qdoc file (last four are needed by qtdemo) # See also extraimages.HTML diff --git a/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.cpp b/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.cpp index d348e70..b660eb3 100644 --- a/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.cpp +++ b/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.cpp @@ -46,6 +46,7 @@ #include <private/qgraphicssystem_runtime_p.h> #include <private/qpixmap_raster_p.h> #include "qmeegoruntime.h" +#include "qmeegoswitchevent.h" QString QMeeGoGraphicsSystemHelper::runningGraphicsSystemName() { @@ -81,8 +82,16 @@ void QMeeGoGraphicsSystemHelper::switchToMeeGo() if (QApplicationPrivate::instance()->graphics_system_name != QLatin1String("runtime")) qWarning("Can't switch to meego - switching only supported with 'runtime' graphics system."); else { + QMeeGoSwitchEvent willSwitchEvent(QLatin1String("meego"), QMeeGoSwitchEvent::WillSwitch); + foreach (QWidget *widget, QApplication::topLevelWidgets()) + QCoreApplication::sendEvent(widget, &willSwitchEvent); + QApplication *app = static_cast<QApplication *>(QCoreApplication::instance()); app->setGraphicsSystem(QLatin1String("meego")); + + QMeeGoSwitchEvent didSwitchEvent(QLatin1String("meego"), QMeeGoSwitchEvent::DidSwitch); + foreach (QWidget *widget, QApplication::topLevelWidgets()) + QCoreApplication::sendEvent(widget, &didSwitchEvent); } } @@ -94,8 +103,16 @@ void QMeeGoGraphicsSystemHelper::switchToRaster() if (QApplicationPrivate::instance()->graphics_system_name != QLatin1String("runtime")) qWarning("Can't switch to raster - switching only supported with 'runtime' graphics system."); else { + QMeeGoSwitchEvent willSwitchEvent(QLatin1String("raster"), QMeeGoSwitchEvent::WillSwitch); + foreach (QWidget *widget, QApplication::topLevelWidgets()) + QCoreApplication::sendEvent(widget, &willSwitchEvent); + QApplication *app = static_cast<QApplication *>(QCoreApplication::instance()); app->setGraphicsSystem(QLatin1String("raster")); + + QMeeGoSwitchEvent didSwitchEvent(QLatin1String("raster"), QMeeGoSwitchEvent::DidSwitch); + foreach (QWidget *widget, QApplication::topLevelWidgets()) + QCoreApplication::sendEvent(widget, &didSwitchEvent); } } diff --git a/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.h b/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.h index 2baacbb..d47c829 100644 --- a/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.h +++ b/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.h @@ -102,6 +102,9 @@ public: When running with the 'runtime' graphics system, sets the currently active system to 'meego'. The window surface and all the resources are automatically migrated to OpenGL. Will fail if the active graphics system is not 'runtime'. + Calling this function will emit QMeeGoSwitchEvent to the top level widgets. + Two events will be emitted for each switch -- one before the switch (QMeeGoSwitchEvent::WillSwitch) + and one after the switch (QMeeGoSwitchEvent::DidSwitch). */ static void switchToMeeGo(); @@ -111,6 +114,9 @@ public: system to 'raster'. The window surface and the graphics resources (including the EGL shared image resources) are automatically migrated back to the CPU. All OpenGL resources (surface, context, cache, font cache) are automaticall anihilated. + Calling this function will emit QMeeGoSwitchEvent to the top level widgets. + Two events will be emitted for each switch -- one before the switch (QMeeGoSwitchEvent::WillSwitch) + and one after the switch (QMeeGoSwitchEvent::DidSwitch). */ static void switchToRaster(); diff --git a/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.pro b/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.pro index 161a31b..360847e 100644 --- a/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.pro +++ b/tools/qmeegographicssystemhelper/qmeegographicssystemhelper.pro @@ -6,5 +6,5 @@ include(../../src/qbase.pri) QT += gui INCLUDEPATH += '../../src/plugins/graphicssystems/meego' -HEADERS = qmeegographicssystemhelper.h qmeegooverlaywidget.h qmeegolivepixmap.h qmeegoruntime.h qmeegolivepixmap_p.h qmeegofencesync.h qmeegofencesync_p.h -SOURCES = qmeegographicssystemhelper.cpp qmeegooverlaywidget.cpp qmeegoruntime.cpp qmeegolivepixmap.cpp qmeegographicssystemhelper.h qmeegooverlaywidget.h qmeegolivepixmap.h qmeegoruntime.h qmeegolivepixmap_p.h qmeegofencesync.h qmeegofencesync_p.h qmeegofencesync.cpp +HEADERS = qmeegographicssystemhelper.h qmeegooverlaywidget.h qmeegolivepixmap.h qmeegoruntime.h qmeegolivepixmap_p.h qmeegofencesync.h qmeegofencesync_p.h qmeegoswitchevent.h +SOURCES = qmeegographicssystemhelper.cpp qmeegooverlaywidget.cpp qmeegoruntime.cpp qmeegolivepixmap.cpp qmeegographicssystemhelper.h qmeegooverlaywidget.h qmeegolivepixmap.h qmeegoruntime.h qmeegolivepixmap_p.h qmeegofencesync.h qmeegofencesync_p.h qmeegofencesync.cpp qmeegoswitchevent.cpp qmeegoswitchevent.h diff --git a/tools/qmeegographicssystemhelper/qmeegoswitchevent.cpp b/tools/qmeegographicssystemhelper/qmeegoswitchevent.cpp new file mode 100644 index 0000000..22ea0fe --- /dev/null +++ b/tools/qmeegographicssystemhelper/qmeegoswitchevent.cpp @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** 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 plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qmeegoswitchevent.h" + +static int switchEventNumber = -1; + +QMeeGoSwitchEvent::QMeeGoSwitchEvent(const QString &graphicsSystemName, QMeeGoSwitchEvent::State s) : QEvent(QMeeGoSwitchEvent::eventNumber()) +{ + name = graphicsSystemName; + switchState = s; +} + +QString QMeeGoSwitchEvent::graphicsSystemName() const +{ + return name; +} + +QMeeGoSwitchEvent::State QMeeGoSwitchEvent::state() const +{ + return switchState; +} + +QEvent::Type QMeeGoSwitchEvent::eventNumber() +{ + if (switchEventNumber < 0) + switchEventNumber = QEvent::registerEventType(); + + return (QEvent::Type) switchEventNumber; +}
\ No newline at end of file diff --git a/tools/qmeegographicssystemhelper/qmeegoswitchevent.h b/tools/qmeegographicssystemhelper/qmeegoswitchevent.h new file mode 100644 index 0000000..0ddbd3d --- /dev/null +++ b/tools/qmeegographicssystemhelper/qmeegoswitchevent.h @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** 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 plugins of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QEvent> +#include <QString> + +//! A custom event representing a graphics system switch. +/*! + This event is sent two times -- before the actual switch and after the switch. + The current mode of the event can be detected by looking at the State of the + event. + + The end-user application can use the event to drop it's own allocated GL resources + when going to software mode. +*/ + +class QMeeGoSwitchEvent : public QEvent +{ +public: + + //! The state represented by this event. + enum State { + WillSwitch, + DidSwitch + }; + + //! Constructor for the event. + /*! + Creates a new event with the given name and the given state. + */ + QMeeGoSwitchEvent(const QString &graphicsSystemName, State s); + + //! Returns the name of the target graphics system. + /*! + Depending on the state, the name represents the system we're about to swtich to, + or the system we just switched to. + */ + QString graphicsSystemName() const; + + //! Returns the state represented by this event. + State state() const; + + //! Returns the event type/number for QMeeGoSwitchEvent. + /*! + The type is registered on first access. Use this to detect incoming + QMeeGoSwitchEvents. + */ + QEvent::Type eventNumber(); + +private: + QString name; + State switchState; +}; diff --git a/tools/qml/main.cpp b/tools/qml/main.cpp index 579f1ab..209c72f 100644 --- a/tools/qml/main.cpp +++ b/tools/qml/main.cpp @@ -155,7 +155,11 @@ void usage() qWarning(" -I <directory> ........................... prepend to the module import search path,"); qWarning(" display path if <directory> is empty"); qWarning(" -P <directory> ........................... prepend to the plugin search path"); +#if defined(Q_WS_MAC) + qWarning(" -no-opengl ............................... don't use a QGLWidget for the viewport"); +#else qWarning(" -opengl .................................. use a QGLWidget for the viewport"); +#endif qWarning(" -script <path> ........................... set the script to use"); qWarning(" -scriptopts <options>|help ............... set the script options to use"); @@ -370,8 +374,13 @@ static void parseCommandLineOptions(const QStringList &arguments) } else if (arg == "-translation") { if (lastArg) usage(); opts.translationFile = arguments.at(++i); +#if defined(Q_WS_MAC) + } else if (arg == "-no-opengl") { + opts.useGL = false; +#else } else if (arg == "-opengl") { opts.useGL = true; +#endif } else if (arg == "-qmlbrowser") { opts.useNativeFileBrowser = false; } else if (arg == "-warnings") { diff --git a/tools/qml/qmlruntime.cpp b/tools/qml/qmlruntime.cpp index 78bc409..7ea77d1 100644 --- a/tools/qml/qmlruntime.cpp +++ b/tools/qml/qmlruntime.cpp @@ -1012,7 +1012,7 @@ void QDeclarativeViewer::addPluginPath(const QString& plugin) void QDeclarativeViewer::reload() { - open(currentFileOrUrl); + launch(currentFileOrUrl); } void QDeclarativeViewer::openFile() diff --git a/tools/shared/symbian/epocroot.cpp b/tools/shared/symbian/epocroot.cpp index ae1dcb1..eabae98 100644 --- a/tools/shared/symbian/epocroot.cpp +++ b/tools/shared/symbian/epocroot.cpp @@ -39,13 +39,13 @@ ** ****************************************************************************/ -#include <iostream> - #include <QtCore/qdir.h> #include <QtCore/qxmlstream.h> -#include "epocroot.h" -#include "../windows/registry.h" +#include "epocroot_p.h" +#include "../windows/registry_p.h" + +QT_BEGIN_NAMESPACE // Registry key under which the location of the Symbian devices.xml file is // stored. @@ -64,35 +64,26 @@ // Stored as a static value in order to avoid unnecessary re-evaluation. static QString epocRootValue; -#ifdef QT_BUILD_QMAKE -std::ostream &operator<<(std::ostream &s, const QString &val) { - s << val.toLocal8Bit().data(); - return s; -} -#else -// Operator implemented in configureapp.cpp -std::ostream &operator<<(std::ostream &s, const QString &val); -#endif - -QString getDevicesXmlPath() +static QString getDevicesXmlPath() { // Note that the following call will return a null string on platforms other // than Windows. If support is required on other platforms for devices.xml, // an alternative mechanism for retrieving the location of this file will // be required. - return readRegistryKey(SYMBIAN_SDKS_REG_HANDLE, SYMBIAN_SDKS_REG_SUBKEY); + return qt_readRegistryKey(SYMBIAN_SDKS_REG_HANDLE, QLatin1String(SYMBIAN_SDKS_REG_SUBKEY)); } /** * Checks whether epocRootValue points to an existent directory. * If not, epocRootValue is set to an empty string and an error message is printed. */ -void checkEpocRootExists(const QString &source) +static void checkEpocRootExists(const QString &source) { if (!epocRootValue.isEmpty()) { QDir dir(epocRootValue); if (!dir.exists()) { - std::cerr << "Warning: " << source << " is set to an invalid path: " << epocRootValue << std::endl; + qWarning("Warning: %s is set to an invalid path: '%s'", qPrintable(source), + qPrintable(epocRootValue)); epocRootValue = QString(); } } @@ -103,32 +94,30 @@ void checkEpocRootExists(const QString &source) */ static void fixEpocRoot(QString &path) { - path.replace("\\", "/"); + path.replace(QLatin1Char('\\'), QLatin1Char('/')); - if (!path.size() || path[path.size()-1] != QChar('/')) { - path += QChar('/'); + if (!path.size() || path[path.size()-1] != QLatin1Char('/')) { + path += QLatin1Char('/'); } } /** * Determine the epoc root for the currently active SDK. */ -QString epocRoot() +QString qt_epocRoot() { if (epocRootValue.isEmpty()) { // 1. If environment variable EPOCROOT is set and points to an existent // directory, this is returned. - epocRootValue = qgetenv("EPOCROOT"); - checkEpocRootExists("EPOCROOT"); + epocRootValue = QString::fromLocal8Bit(qgetenv("EPOCROOT").constData()); + checkEpocRootExists(QLatin1String("EPOCROOT environment variable")); if (epocRootValue.isEmpty()) { // 2. The location of devices.xml is specified by a registry key. If this // file exists, it is parsed. QString devicesXmlPath = getDevicesXmlPath(); - if (devicesXmlPath.isEmpty()) { - std::cerr << "Error: Symbian SDK registry key not found" << std::endl; - } else { - devicesXmlPath += "/devices.xml"; + if (!devicesXmlPath.isEmpty()) { + devicesXmlPath += QLatin1String("/devices.xml"); QFile devicesFile(devicesXmlPath); if (devicesFile.open(QIODevice::ReadOnly)) { @@ -138,87 +127,90 @@ QString epocRoot() // 4. If a device element marked as default is found in devices.xml and its // epocroot value points to an existent directory, this is returned. - const QString epocDeviceValue = qgetenv("EPOCDEVICE"); + const QString epocDeviceValue = QString::fromLocal8Bit(qgetenv("EPOCDEVICE").constData()); bool epocDeviceFound = false; QXmlStreamReader xml(&devicesFile); while (!xml.atEnd()) { xml.readNext(); - if (xml.isStartElement() && xml.name() == "devices") { - if (xml.attributes().value("version") == "1.0") { - while (!(xml.isEndElement() && xml.name() == "devices") && !xml.atEnd()) { + if (xml.isStartElement() && xml.name() == QLatin1String("devices")) { + if (xml.attributes().value(QLatin1String("version")) == QLatin1String("1.0")) { + while (!(xml.isEndElement() && xml.name() == QLatin1String("devices")) && !xml.atEnd()) { xml.readNext(); - if (xml.isStartElement() && xml.name() == "device") { - const bool isDefault = xml.attributes().value("default") == "yes"; - const QString id = xml.attributes().value("id").toString(); - const QString name = xml.attributes().value("name").toString(); - const QString alias = xml.attributes().value("alias").toString(); - bool epocDeviceMatch = (id + ":" + name) == epocDeviceValue; + if (xml.isStartElement() && xml.name() == QLatin1String("device")) { + const bool isDefault = xml.attributes().value(QLatin1String("default")) == QLatin1String("yes"); + const QString id = xml.attributes().value(QLatin1String("id")).toString(); + const QString name = xml.attributes().value(QLatin1String("name")).toString(); + const QString alias = xml.attributes().value(QLatin1String("alias")).toString(); + bool epocDeviceMatch = QString(id + QLatin1String(":") + name) == epocDeviceValue; if (!alias.isEmpty()) epocDeviceMatch |= alias == epocDeviceValue; epocDeviceFound |= epocDeviceMatch; if((epocDeviceValue.isEmpty() && isDefault) || epocDeviceMatch) { // Found a matching device - while (!(xml.isEndElement() && xml.name() == "device") && !xml.atEnd()) { + while (!(xml.isEndElement() && xml.name() == QLatin1String("device")) && !xml.atEnd()) { xml.readNext(); - if (xml.isStartElement() && xml.name() == "epocroot") { + if (xml.isStartElement() && xml.name() == QLatin1String("epocroot")) { epocRootValue = xml.readElementText(); const QString deviceSource = epocDeviceValue.isEmpty() - ? "default device" - : "EPOCDEVICE (" + epocDeviceValue + ")"; + ? QLatin1String("default device") + : QString(QLatin1String("EPOCDEVICE (") + epocDeviceValue + QLatin1String(")")); checkEpocRootExists(deviceSource); } } if (epocRootValue.isEmpty()) - xml.raiseError("No epocroot element found"); + xml.raiseError(QLatin1String("No epocroot element found")); } } } } else { - xml.raiseError("Invalid 'devices' element version"); + xml.raiseError(QLatin1String("Invalid 'devices' element version")); } } } if (xml.hasError()) { - std::cerr << "Error: \"" << xml.errorString() << "\" when parsing devices.xml" << std::endl; + qWarning("Warning: Error \"%s\" when parsing devices.xml", + qPrintable(xml.errorString())); } else { if (epocRootValue.isEmpty()) { if (!epocDeviceValue.isEmpty()) { if (epocDeviceFound) { - std::cerr << "Error: missing or invalid epocroot attribute " - << "in device '" << epocDeviceValue << "'"; + qWarning("Warning: Missing or invalid epocroot attribute in device '%s' in devices.xml.", + qPrintable(epocDeviceValue)); } else { - std::cerr << "Error: no device matching EPOCDEVICE (" - << epocDeviceValue << ")"; + qWarning("Warning: No device matching EPOCDEVICE (%s) in devices.xml.", + qPrintable(epocDeviceValue)); } } else { if (epocDeviceFound) { - std::cerr << "Error: missing or invalid epocroot attribute " - << "in default device"; + qWarning("Warning: Missing or invalid epocroot attribute in default device in devices.xml."); } else { - std::cerr << "Error: no default device"; + qWarning("Warning: No default device set in devices.xml."); } } - std::cerr << " found in devices.xml file." << std::endl; } } } else { - std::cerr << "Error: could not open file " << devicesXmlPath << std::endl; + qWarning("Warning: Could not open file: '%s'.", qPrintable(devicesXmlPath)); } } } if (epocRootValue.isEmpty()) { // 5. An empty string is returned. - std::cerr << "Error: failed to find epoc root" << std::endl - << "Either" << std::endl - << " 1. Set EPOCROOT environment variable to a valid value" << std::endl - << " or 2. Ensure that the HKEY_LOCAL_MACHINE\\" SYMBIAN_SDKS_REG_SUBKEY - " registry key is set, and then" << std::endl - << " a. Set EPOCDEVICE environment variable to a valid device" << std::endl - << " or b. Specify a default device in the devices.xml file." << std::endl; + qWarning("Warning: failed to resolve epocroot." +#ifdef Q_OS_WIN32 + "\nEither\n" + " 1. Set EPOCROOT environment variable to a valid value.\n" + " or 2. Ensure that the HKEY_LOCAL_MACHINE\\" SYMBIAN_SDKS_REG_SUBKEY + " registry key is set, and then\n" + " a. Set EPOCDEVICE environment variable to a valid device\n" + " or b. Specify a default device in the devices.xml file."); +#else + " Set EPOCROOT environment variable to a valid value."); +#endif } else { fixEpocRoot(epocRootValue); } @@ -227,3 +219,4 @@ QString epocRoot() return epocRootValue; } +QT_END_NAMESPACE diff --git a/tools/shared/symbian/epocroot.pri b/tools/shared/symbian/epocroot.pri new file mode 100644 index 0000000..f0f0dab --- /dev/null +++ b/tools/shared/symbian/epocroot.pri @@ -0,0 +1,11 @@ +# Epocroot resolving is only required for tools, so omit it from all mobile/embedded builds +!symbian:!wince*:!embedded { +HEADERS += \ + $$QT_SOURCE_TREE/tools/shared/symbian/epocroot_p.h \ + $$QT_SOURCE_TREE/tools/shared/windows/registry_p.h +SOURCES += \ + $$QT_SOURCE_TREE/tools/shared/symbian/epocroot.cpp \ + $$QT_SOURCE_TREE/tools/shared/windows/registry.cpp +INCLUDEPATH += $$QT_SOURCE_TREE/tools/shared +DEFINES += QLIBRARYINFO_EPOCROOT +} diff --git a/tools/shared/symbian/epocroot.h b/tools/shared/symbian/epocroot_p.h index 9846485..c97b593 100644 --- a/tools/shared/symbian/epocroot.h +++ b/tools/shared/symbian/epocroot_p.h @@ -39,11 +39,24 @@ ** ****************************************************************************/ -#ifndef SYMBIAN_EPOCROOT_H -#define SYMBIAN_EPOCROOT_H +#ifndef QT_SYMBIAN_EPOCROOT_H +#define QT_SYMBIAN_EPOCROOT_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// #include <QtCore/qstring.h> +QT_BEGIN_NAMESPACE + /** * Determine the epoc root for the currently active SDK. * @@ -62,6 +75,9 @@ * Any return value other than the empty string therefore is guaranteed to * point to an existent directory. */ -QString epocRoot(); +QString qt_epocRoot(); + +QT_END_NAMESPACE + +#endif // QT_SYMBIAN_EPOCROOT_H -#endif // EPOCROOT_H diff --git a/tools/shared/windows/registry.cpp b/tools/shared/windows/registry.cpp index 67d9b56..48e9ae6 100644 --- a/tools/shared/windows/registry.cpp +++ b/tools/shared/windows/registry.cpp @@ -40,8 +40,11 @@ ****************************************************************************/ #include <QtCore/qstringlist.h> -#include "registry.h" +#include "registry_p.h" +QT_BEGIN_NAMESPACE + +#ifdef Q_OS_WIN32 /*! Returns the path part of a registry key. e.g. @@ -73,12 +76,13 @@ static QString keyName(const QString &rKey) return rKey; QString res(rKey.mid(idx + 1)); - if (res == "Default" || res == ".") - res = ""; + if (res == QLatin1String("Default") || res == QLatin1String(".")) + res = QString(); return res; } +#endif -QString readRegistryKey(HKEY parentHandle, const QString &rSubkey) +QString qt_readRegistryKey(HKEY parentHandle, const QString &rSubkey) { QString result; @@ -128,7 +132,7 @@ QString readRegistryKey(HKEY parentHandle, const QString &rSubkey) break; l.append(s); } - result = l.join(", "); + result = l.join(QLatin1String(", ")); break; } @@ -158,4 +162,5 @@ QString readRegistryKey(HKEY parentHandle, const QString &rSubkey) return result; } +QT_END_NAMESPACE diff --git a/tools/shared/windows/registry.h b/tools/shared/windows/registry_p.h index 3896527..4aae5f9 100644 --- a/tools/shared/windows/registry.h +++ b/tools/shared/windows/registry_p.h @@ -39,8 +39,21 @@ ** ****************************************************************************/ -#ifndef WINDOWS_REGISTRY_H -#define WINDOWS_REGISTRY_H +#ifndef QT_WINDOWS_REGISTRY_H +#define QT_WINDOWS_REGISTRY_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +QT_BEGIN_NAMESPACE #include <QtCore/qglobal.h> @@ -59,6 +72,9 @@ * if this code is compiled for a platform other than Windows), a null * string is returned. */ -QString readRegistryKey(HKEY parentHandle, const QString &rSubkey); +QString qt_readRegistryKey(HKEY parentHandle, const QString &rSubkey); + +QT_END_NAMESPACE + +#endif // QT_WINDOWS_REGISTRY_H -#endif // WINDOWS_REGISTRY_H diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp index cfe5956..ccb238b 100644 --- a/util/unicode/main.cpp +++ b/util/unicode/main.cpp @@ -85,6 +85,41 @@ static void initAgeMap() } +enum Joining { + Joining_None, + Joining_Left, + Joining_Causing, + Joining_Dual, + Joining_Right, + Joining_Transparent + + , Joining_Unassigned +}; + +static QHash<QByteArray, Joining> joining_map; + +static void initJoiningMap() +{ + struct JoiningList { + Joining joining; + const char *name; + } joinings[] = { + { Joining_None, "U" }, + { Joining_Left, "L" }, + { Joining_Causing, "C" }, + { Joining_Dual, "D" }, + { Joining_Right, "R" }, + { Joining_Transparent, "T" }, + { Joining_Unassigned, 0 } + }; + JoiningList *d = joinings; + while (d->name) { + joining_map.insert(d->name, d->joining); + ++d; + } +} + + static const char *grapheme_break_string = " enum GraphemeBreak {\n" " GraphemeBreakOther,\n" @@ -370,6 +405,7 @@ static const char *methods = " inline int script(const QChar &ch)\n" " { return script(ch.unicode()); }\n\n"; +static const int SizeOfPropertiesStruct = 20; struct PropertyFlags { bool operator ==(const PropertyFlags &o) { @@ -460,18 +496,22 @@ struct UnicodeData { p.combiningClass = 0; p.direction = QChar::DirL; + // DerivedBidiClass.txt // DirR for: U+0590..U+05FF, U+07C0..U+08FF, U+FB1D..U+FB4F, U+10800..U+10FFF if ((codepoint >= 0x590 && codepoint <= 0x5ff) || (codepoint >= 0x7c0 && codepoint <= 0x8ff) || (codepoint >= 0xfb1d && codepoint <= 0xfb4f) - || (codepoint >= 0x10800 && codepoint <= 0x10fff)) + || (codepoint >= 0x10800 && codepoint <= 0x10fff)) { p.direction = QChar::DirR; - // DirAL for: U+0600..U+07BF, U+FB50..U+FDCF, U+FDF0..U+FDFF, U+FE70..U+FEFE + } + // DirAL for: U+0600..U+07BF, U+FB50..U+FDFF, U+FE70..U+FEFF + // minus noncharacter code points (intersects with U+FDD0..U+FDEF) if ((codepoint >= 0x600 && codepoint <= 0x7bf) || (codepoint >= 0xfb50 && codepoint <= 0xfdcf) || (codepoint >= 0xfdf0 && codepoint <= 0xfdff) - || (codepoint >= 0xfe70 && codepoint <= 0xfefe)) + || (codepoint >= 0xfe70 && codepoint <= 0xfeff)) { p.direction = QChar::DirAL; + } mirroredChar = 0; decompositionType = QChar::NoDecomposition; @@ -876,24 +916,31 @@ static void readArabicShaping() if (line.isEmpty()) continue; - QList<QByteArray> shaping = line.split(';'); - Q_ASSERT(shaping.size() == 4); + QList<QByteArray> l = line.split(';'); + Q_ASSERT(l.size() == 4); bool ok; - int codepoint = shaping[0].toInt(&ok, 16); + int codepoint = l[0].toInt(&ok, 16); Q_ASSERT(ok); - QChar::Joining j = QChar::OtherJoining; - QByteArray shape = shaping[2].trimmed(); - if (shape == "R") - j = QChar::Right; - else if (shape == "D") - j = QChar::Dual; - else if (shape == "C") - j = QChar::Center; + Joining joining = joining_map.value(l[2].trimmed(), Joining_Unassigned); + if (joining == Joining_Unassigned) + qFatal("unassigned or unhandled joining value: %s", l[2].constData()); + + if (joining == Joining_Left) { + // There are currently no characters of joining type Left_Joining defined in Unicode. + qFatal("%x: joining type '%s' was met; the current implementation needs to be revised!", codepoint, l[2].constData()); + } UnicodeData d = unicodeData.value(codepoint, UnicodeData(codepoint)); - d.p.joining = j; + if (joining == Joining_Right) + d.p.joining = QChar::Right; + else if (joining == Joining_Dual) + d.p.joining = QChar::Dual; + else if (joining == Joining_Causing) + d.p.joining = QChar::Center; + else + d.p.joining = QChar::OtherJoining; unicodeData.insert(codepoint, d); } } @@ -2031,8 +2078,8 @@ static QByteArray createPropertyInfo() qDebug(" block data uses: %d bytes", smp_block_data); qDebug(" trie data uses : %d bytes", smp_trie); - qDebug("\n properties use : %d bytes", uniqueProperties.size()*20); - qDebug(" memory usage: %d bytes", bmp_mem+smp_mem + uniqueProperties.size()*20); + qDebug("\n properties uses : %d bytes", uniqueProperties.size() * SizeOfPropertiesStruct); + qDebug(" memory usage: %d bytes", bmp_mem + smp_mem + uniqueProperties.size() * SizeOfPropertiesStruct); QByteArray out; out += "static const unsigned short uc_property_trie[] = {\n"; @@ -2566,8 +2613,9 @@ int main(int, char **) { initAgeMap(); initCategoryMap(); - initDirectionMap(); initDecompositionMap(); + initDirectionMap(); + initJoiningMap(); initGraphemeBreak(); initWordBreak(); initSentenceBreak(); |