514 lines
19 KiB
Plaintext
514 lines
19 KiB
Plaintext
|
Qt 4.7 introduces many new features and improvements as well as bugfixes
|
||
|
over the 4.6.x series. For more details, refer to the online documentation
|
||
|
included in this distribution. The documentation is also available online:
|
||
|
|
||
|
http://qt.nokia.com/doc/4.7
|
||
|
|
||
|
The Qt version 4.7 series is binary compatible with the 4.6.x series.
|
||
|
Applications compiled for 4.6 will continue to run with 4.7.
|
||
|
|
||
|
Some of the changes listed in this file include issue tracking numbers
|
||
|
corresponding to tasks in the Qt Bug Tracker:
|
||
|
|
||
|
http://bugreports.qt.nokia.com/
|
||
|
|
||
|
Each of these identifiers can be entered in the bug tracker to obtain more
|
||
|
information about a particular change.
|
||
|
|
||
|
****************************************************************************
|
||
|
* General *
|
||
|
****************************************************************************
|
||
|
|
||
|
General Improvements
|
||
|
--------------------
|
||
|
|
||
|
- Documentation and Examples
|
||
|
|
||
|
- Support for the GL_EXT_geometry_shader4, aka Geometry Shaders, was added
|
||
|
to QGLShaderProgram.
|
||
|
|
||
|
New features
|
||
|
------------
|
||
|
|
||
|
- QNetworkSession, QNetworkConfiguration, QNetworkConfigurationManager
|
||
|
* New bearer management classes added.
|
||
|
|
||
|
- QStaticText class was added to support high-performance output of
|
||
|
seldomly altered text.
|
||
|
|
||
|
Third party components
|
||
|
----------------------
|
||
|
|
||
|
- Updated libpng to version 1.4.0
|
||
|
|
||
|
- Updated libjpeg to version 8
|
||
|
|
||
|
- Updated libtiff to version 3.9.2
|
||
|
|
||
|
|
||
|
****************************************************************************
|
||
|
* Library *
|
||
|
****************************************************************************
|
||
|
|
||
|
QtCore
|
||
|
------
|
||
|
|
||
|
- QString
|
||
|
* Added QString(const QChar *) constructor.
|
||
|
NOTE: This is source-incompatible for the bogus QString(0) case.
|
||
|
* Removed internal but exported qt_winQString2MB() and qt_winMB2QString()
|
||
|
* Added setRawData() function (also revived the one in QByteArray)
|
||
|
* Various performance improvements
|
||
|
- QList
|
||
|
* Added reserve() function
|
||
|
* Various performance improvements
|
||
|
- QMetaType
|
||
|
* Significantly improved performance of the type() function
|
||
|
* [QTBUG-8235] Support QEasingCurve as a built in metatype.
|
||
|
* Added possibility to register several name for the same type with
|
||
|
qRegisterMetaType<>() (ie. for typedef)
|
||
|
- QState
|
||
|
* [QTBUG-7741] Added a function to get the out-going transitions
|
||
|
- QXmlStreamReader
|
||
|
* [QTBUG-9196] fixed crash when parsing
|
||
|
- QTimer
|
||
|
* singleShot with 0 timeout will now avoid allocating objects
|
||
|
- QAbstractAnimation
|
||
|
* [QTBUG-10654] Avoids animation with loopCount == 0 to change state
|
||
|
to running and stopped.
|
||
|
- QVarLenghtArray
|
||
|
* Added some API to be more consistant with other containers
|
||
|
|
||
|
QtGui
|
||
|
-----
|
||
|
|
||
|
- QAbstractItemView
|
||
|
* Fixed a bug that would cause keyboard searches not to behave
|
||
|
properly when used within 400 milliseconds of midnight.
|
||
|
|
||
|
- QComboBox
|
||
|
* [QTBUG-8796] Made ForegroundRole work for all styles.
|
||
|
|
||
|
- QCommandLinkButton
|
||
|
* [QTBUG-5995] Fixed text and icon alignment issues.
|
||
|
|
||
|
- QPrinter
|
||
|
* Obsoleted the slightly confusing setNumCopies() and numCopies()
|
||
|
functions, and replaced them with setCopyCount(), copyCount() and
|
||
|
supportsMultipleCopies().
|
||
|
|
||
|
- QPrintDialog/QPrinter
|
||
|
* Added support for printing the current page.
|
||
|
|
||
|
- QCommonStyle
|
||
|
* Fixed a bug that led to missing text pixels in QTabBar when using
|
||
|
small font sizes. (QTBUG-7137)
|
||
|
|
||
|
- QGraphicsEffect
|
||
|
* Fixed rendering bugs when scrolling graphics items with drop
|
||
|
shadows.
|
||
|
|
||
|
- QGraphicsItem
|
||
|
* [QTBUG-8112] itemChange() is now called when transformation
|
||
|
properties change (setRotation, setScale, setTransformOriginPoint).
|
||
|
* [QTBUG-9024] Improved performance when calling update() on items that
|
||
|
are clipped by an ancestor (QGraphicsItem::ItemClipsChildrenToShape).
|
||
|
* [QTBUG-7703], [QTBUG-8378] Fixed scrolling issues
|
||
|
* [QTBUG-12112] Fixed focusItem() returning incorrect value.
|
||
|
|
||
|
- QGraphicsTextItem
|
||
|
* [QTBUG-7333] Fixed keyboard shortcuts not being triggered when the
|
||
|
the item has focus and something else has the same shortcut sequence.
|
||
|
* [QTBUG-10574] Fixed crash when flag "QGraphicsItem::ItemIgnoresTransformations"
|
||
|
is set.
|
||
|
|
||
|
- QGraphicsView
|
||
|
* [QTBUG-7438] Fixed viewport cursor getting reset when releasing
|
||
|
the mouse.
|
||
|
* [QTBUG-10338] Fixed drawing artifacts due to rounding errors.
|
||
|
|
||
|
- QGraphicsWidget
|
||
|
* [QTBUG-12056] Fixed a crash occuring when adding a QGraphicsWidget
|
||
|
to a scene after removing and deleting another QGraphicsWidget.
|
||
|
|
||
|
- QImage
|
||
|
* [QTBUG-9640] Prevented unneccessary copy in QImage::setAlphaChannel().
|
||
|
* [QTBUG-7982] Added QImage::bitPlaneCount().
|
||
|
* [QTBUG-9072] Fixed alpha check for 1-bit-per-pixel images.
|
||
|
|
||
|
- QLineEdit
|
||
|
* [QTBUG-9823] Placeholder text is now correctly aligned with text.
|
||
|
|
||
|
- QPicture
|
||
|
* [QTBUG-4974] Printing QPictures containing text to a high resolution
|
||
|
QPrinter would in many cases cause incorrect character spacing.
|
||
|
|
||
|
- QPainter
|
||
|
* Added QPainter::drawPixmapFragments(), which makes it possible to draw
|
||
|
pixmaps, or sub-rectangles of pixmaps, at various positions with
|
||
|
different scale, opacity and rotation.
|
||
|
* [QTBUG-10018] Fixed image drawing inconsistencies when drawing
|
||
|
1x1 source rects with rotating / shear / perspective transforms.
|
||
|
* Optimized various blending and rendering operations for ARM
|
||
|
processors with a NEON vector unit.
|
||
|
* Fixed some performance issues when drawing sub-pixmaps of large
|
||
|
pixmaps and falling back to raster in the X11 paint engine.
|
||
|
* [QTBUG-7596] Safeguard ourselves against corrupt registry values for
|
||
|
ClearType gamma on Windows.
|
||
|
* [QTBUG-9218] Fixed flattening of largely scaled, thin, dashed beziers.
|
||
|
* [QTBUG-9437] Fixed crash in the raster paint engine when drawing largely
|
||
|
scaled images.
|
||
|
|
||
|
- QPainterPath
|
||
|
* [QTBUG-3778] Fixed bug in painter path polygon intersection code.
|
||
|
* [QTBUG-7396] Optimized painter path intersections for when at
|
||
|
least one of the paths is a rectangle by special casing.
|
||
|
* [QTBUG-8035] Got rid of bezier intersection code in the boolean
|
||
|
operators (intersect, subtract, unite) to prevent numerical
|
||
|
stability issues.
|
||
|
* [QTBUG-11291] Fixed infinite recursion when drawing very large painter
|
||
|
paths.
|
||
|
|
||
|
- QPixmap
|
||
|
* [QTBUG-4149] Fixed QPixmap::grabWidget() on widgets that have not yet
|
||
|
been shown.
|
||
|
|
||
|
- QPlastiqueStyle
|
||
|
* [QTBUG-6516] Respect AlternateBase role for list views.
|
||
|
|
||
|
- QRegion
|
||
|
* [QTBUG-7699] Fixed crash caused by large x-coordinates.
|
||
|
|
||
|
- QSplitter
|
||
|
* [QTBUG-9335] Improve support for 1-pixel splitters by using a
|
||
|
larger drag area.
|
||
|
|
||
|
- QTextDocumentWriter
|
||
|
* Fixed tab-stops and table padding in ODF export.
|
||
|
|
||
|
- QTextLayout
|
||
|
* [QTBUG-11427] Fix possible crash in QTextLayout for glyphless
|
||
|
items.
|
||
|
* [QTBUG-8864] Fix regression in right alignment of text with
|
||
|
negative right bearing.
|
||
|
|
||
|
- QTransform
|
||
|
* [QTBUG-8557] Fixed bug in QTransform::type() potentially occuring
|
||
|
after using operator/ or operator* or their overloads.
|
||
|
|
||
|
QtOpenGL
|
||
|
--------
|
||
|
- Improve performance of text by adding special cased fragment shader.
|
||
|
|
||
|
- Made width and height of glyph cache power-of-two for performance
|
||
|
improvements on some hardware.
|
||
|
|
||
|
- [QTBUG-9706] Improved appearance of text antialiasing.
|
||
|
|
||
|
- QTreeView
|
||
|
* Optimized
|
||
|
|
||
|
QtNetwork
|
||
|
---------
|
||
|
- QHostInfo: Added a small 60 second DNS cache
|
||
|
- QNetworkAccessManager
|
||
|
* Performance improvements for file:// and http://
|
||
|
* Crash fixes
|
||
|
* Improvements on HTTP pipelining
|
||
|
* Fix problem with canReadLine()
|
||
|
* Fix problem with HTTP 100 reply
|
||
|
* Some new attributes for QNetworkRequest
|
||
|
* [QTBUG-8206] add method to send custom requests
|
||
|
* [QTBUG-9618] [MR 2372] send secure cookies only over secure connections
|
||
|
* [QTBUG-7713] Fix bug related to re-sending request
|
||
|
* [QTBUG-7673] Fix issue with some webservers
|
||
|
* [QTBUG-11029] do not accept cookies with non-alpha-numerical domain
|
||
|
- Sockets
|
||
|
* Better support for derived QTcpServer
|
||
|
* [QTBUG-7054] Fix error handling with waitFor*() for socket engine
|
||
|
* [QTBUG-7316, QTBUG-7317] Also handle unknown errors from socket engine
|
||
|
- SSL
|
||
|
* [QTBUG-2515] Do not make OpenSSL prompt for a password
|
||
|
* [QTBUG-6504, QTBUG-8924, QTBUG-5645] Fix memleak
|
||
|
* [QTBUG-9973] QSslCertificate: support large serial numbers
|
||
|
* [QTBUG-8833] make QSslSocket::systemCaCertificates() use system certs
|
||
|
* [QT-3567] QSslSocket: improve error handling (fixes Secunia Advisory SA40389)
|
||
|
* [QBTUG-4455, MR 731] Fix handling of SSL certificates with wildcard domain names
|
||
|
|
||
|
QtScript
|
||
|
--------
|
||
|
- Updated src/3rdparty/javascriptcore to a more recent version
|
||
|
- Significantly improved performance of the Qt/C++<-->JavaScript bridge
|
||
|
- QScriptValueIterator: Significantly improved performance
|
||
|
- [QTBUG-3637] Added a wrap option for excluding slots from a QObject binding
|
||
|
- [QTBUG-6238] Added a function for reporting additional memory cost
|
||
|
- [QTBUG-6908] Significantly improved performance of qsTr()
|
||
|
|
||
|
QtSvg
|
||
|
-----
|
||
|
- QSvgRenderer
|
||
|
* [QTBUG-8264] Fixed rounded rectangles when 'rx' or 'ry' is zero.
|
||
|
* [QTBUG-10022] Fixed assert failure when loading an invalid SVG.
|
||
|
|
||
|
QtXmlPatterns
|
||
|
-------------
|
||
|
|
||
|
- [QTBUG-8920] fixed crash with anonymous types in XsdSchemaChecker
|
||
|
- [QTBUG-8394] include/import/redefine schemas only once
|
||
|
- QXmlSchema: fix crash with referencing elements
|
||
|
- [QBTUG-6485] QXmlSchema: allow usage of xsd:all
|
||
|
|
||
|
Qt Plugins
|
||
|
----------
|
||
|
|
||
|
- Jpeg image IO plugin
|
||
|
* Fixed failure to store certain QImage formats as jpeg (QTBUG-7780)
|
||
|
* Optimized smoothscaling
|
||
|
* Optimized to avoid data copy when reading from memory device (QTBUG-9095)
|
||
|
|
||
|
- SVG image IO plugin
|
||
|
* Added support for svgz format (QTBUG-8227)
|
||
|
* Fixed canRead() so that it can be used also for non-sequential
|
||
|
devices. (QTBUG-9053)
|
||
|
* Added support for clipping and scaling and backgroundcolor
|
||
|
* Optimized to avoid data copy when reading from memory device (QTBUG-9095)
|
||
|
|
||
|
****************************************************************************
|
||
|
* Database Drivers *
|
||
|
****************************************************************************
|
||
|
- Sqlite
|
||
|
* [QTBUG-11904] Pointer aliasing problem in sqlite
|
||
|
- OCI
|
||
|
* [QTBUG-10919] Unable to insert unicode chars with codepoint > 255
|
||
|
in nvarchar2 column on oracle
|
||
|
* [QTBUG-8210] Oracle - DATE in db with a year greater or equal to 2800
|
||
|
returns an invalid date
|
||
|
|
||
|
****************************************************************************
|
||
|
* Platform Specific Changes *
|
||
|
****************************************************************************
|
||
|
|
||
|
Qt for Linux/X11
|
||
|
----------------
|
||
|
- QGtkStyle
|
||
|
* Fixed rtl issues with sliders (QTBUG-8986)
|
||
|
* Fixed missing pressed appearance on scroll bar handles. (QTBUG-10396)
|
||
|
* Fixed crash when creating QGtkStyle before QApplication. (QTBUG-10758)
|
||
|
|
||
|
- QFontDatabase
|
||
|
* [QTBUG-4428] Fixed regression when using bitmap fonts on some
|
||
|
Linux systems.
|
||
|
|
||
|
- QFontEngine
|
||
|
* [QTBUG-9442] Avoid possible square root of negative number in
|
||
|
FreeType font engine.
|
||
|
|
||
|
- QFontMetrics
|
||
|
* [QTBUG-10448] Fix crash when using fonts in non-gui QApplication.
|
||
|
|
||
|
|
||
|
Qt for Windows
|
||
|
--------------
|
||
|
- Popup windows now implicitly activate when shown. (QTBUG-7386)
|
||
|
- QComboBox [QTBUG-7552] Fix an issue where only "..." would be shown for
|
||
|
QComboBox with certain DPI settings.
|
||
|
- Fixed a problem where menus exec'ed on system tray icons did not
|
||
|
disappear. (QTBUG-7386)
|
||
|
- Improved look and feel for QWizard on Windows 7 and Vista. (QTBUG-9873),
|
||
|
(QTBUG-11974) and (QTBUG-6120)
|
||
|
- QLocalSocket
|
||
|
* Pipe handle leak fixed, when closing a QLocalSocket that still has
|
||
|
unwritten data. (QTBUG-7815)
|
||
|
* Fixed closing state for local sockets with unwritten data. (QTBUG-9681)
|
||
|
* Improved performance of writing to QLocalSocket.
|
||
|
|
||
|
|
||
|
Qt for Mac OS X
|
||
|
---------------
|
||
|
- QMacStyle
|
||
|
* Removed frame around statusbar items. (QTBUG-3574)
|
||
|
* More native appearance of item view headers and frames. (QTBUG-10047)
|
||
|
* Increased spacing between tree view items. (QTBUG-10190)
|
||
|
* Removed frame around status bar items. (QTBUG-3574)
|
||
|
|
||
|
- QFontEngine
|
||
|
* Enable fractional metrics for the font engine on Mac in all
|
||
|
stages of text layout.
|
||
|
* [QTBUG-5529] Enable design metrics for correct character spacing
|
||
|
in ATSUI font engine. (Mac/Carbon)
|
||
|
|
||
|
- QTextDocument
|
||
|
* [QTBUG-8791] Fix misalignment of fixed width fonts between
|
||
|
format changes on Cocoa.
|
||
|
|
||
|
- QTextLayout
|
||
|
* [QTBUG-9879] Fix off-by-one in vertical position for elided and
|
||
|
non-elided text.
|
||
|
|
||
|
Qt for Embedded Linux
|
||
|
---------------------
|
||
|
|
||
|
* Add support for WA_TranslucentBackground (QTBUG-5739)
|
||
|
* Add support for QFont::NoAntialias (QTBUG-5936)
|
||
|
|
||
|
Qt for Windows CE
|
||
|
-----------------
|
||
|
|
||
|
- Core changes
|
||
|
* Fixed menu handling on Windows mobile. (QTBUG-8754)
|
||
|
* Fixed a crash when receiving a certain type of WM_SETTINGSCHANGE
|
||
|
message. (QTBUG-7943)
|
||
|
|
||
|
- QWindowsMobileStyle
|
||
|
* Huge performance penalty for QTabWidget fixed for
|
||
|
Windows mobile 6.5. (QTBUG-8419)
|
||
|
* QTabBar scroll button size has been fixed. (QTBUG-8757)
|
||
|
* Detection of Windows mobile 6.5 fixed. (QTBUG-8418)
|
||
|
|
||
|
Qt for Symbian
|
||
|
--------------
|
||
|
|
||
|
- QSplashScreen
|
||
|
* [QTBUG-11129] Fixed a hanging bug in QSplashScreen on 3.1 devices.
|
||
|
|
||
|
- QS60Main... classes
|
||
|
* The future compatibility of QS60MainAppUi, QS60MainDocument and
|
||
|
QS60MainApplication are improved by removing the need for any
|
||
|
sub-class to link to Avkon functions that may not exist in future.
|
||
|
|
||
|
|
||
|
****************************************************************************
|
||
|
* Compiler Specific Changes *
|
||
|
****************************************************************************
|
||
|
|
||
|
|
||
|
****************************************************************************
|
||
|
* Tools *
|
||
|
****************************************************************************
|
||
|
|
||
|
- Build System
|
||
|
|
||
|
- [QT-3540] Fixed Symbian resources not honoring TARGET with a path.
|
||
|
- "configure -fast" on Windows now also works for other make tools than
|
||
|
nmake. (QTBUG-8562)
|
||
|
- [QTBUG-11351] Fixed memory restrictions not being passed on to elf2e32.
|
||
|
- [QTBUG-11385] Removed the need to specify -arch symbian when compiling
|
||
|
for Symbian on Linux.
|
||
|
- [QTBUG-11396] "configure -qtlibinfix" now works when compiling for
|
||
|
Symbian on Linux.
|
||
|
- [QTBUG-11670] Fixed a bug which caused "make runonphone" to look for
|
||
|
package in the wrong place.
|
||
|
- [QTBUG-11727] Fixed a bug which made builds outside of the Qt tree fail
|
||
|
to compile.
|
||
|
- [QTBUG-11927] "configure -silent" now works with the
|
||
|
symbian/linux-armcc and symbian/linux-gcce mkspecs.
|
||
|
|
||
|
- Assistant
|
||
|
|
||
|
|
||
|
- Designer
|
||
|
- [QTBUG-9351] Fixed a bug that caused modified headerview-properties
|
||
|
of item views to be duplicated in the UI-file.
|
||
|
- [QTBUG-8347] Fixed a layout problem caused by embedded images in the rich
|
||
|
text of a QLabel.
|
||
|
- [QTBUG-8041], [QTBUG-8213] Fixed a crash related to undo while moving
|
||
|
widgets by arrow keys.
|
||
|
- [QTBUG-7822] Added support for the 'windowOpacity'-property.
|
||
|
- [QTBUG-7764] Fixed the emission of the propertyChanged()-signal of
|
||
|
QDesignerPropertyEditorInterface.
|
||
|
- [QTBUG-5492] Made widgetbox-filter match on class names, too.
|
||
|
|
||
|
- Linguist
|
||
|
* The GNU gettext PO format support has been improved
|
||
|
|
||
|
- rcc
|
||
|
|
||
|
|
||
|
- moc
|
||
|
* Fixed several parsing bugs. Including changes in the normalized signature.
|
||
|
|
||
|
- uic
|
||
|
|
||
|
- uic3
|
||
|
|
||
|
- [QTBUG-9207] Fixed export of image files of type XPM, added
|
||
|
compatibility option -limit-xpm-linelength.
|
||
|
|
||
|
- qmake
|
||
|
* Removed remainder of tmake compatibility
|
||
|
* Removed remainder of mac9 mode
|
||
|
* Removed MSVC6 generator
|
||
|
* Removed makespecs for MSVC.NET and MSVC2002
|
||
|
* Deprecated -win32/-unix/-macx options, following various cleanups
|
||
|
relating to platform support. Cross-building makespecs should now
|
||
|
specify a TARGET_PLATFORM.
|
||
|
* Started to warn about use of various constructs:
|
||
|
- non-lowercased replace $$function() calls
|
||
|
- deprecated variables
|
||
|
- unescaped backslashes.
|
||
|
NOTE: You should use UNIX path separators where possible. qmake
|
||
|
will warn about unnecessary Windows path separators in the future.
|
||
|
* Removed expansion of qmake- & environment variables in some unexpected
|
||
|
cases (double expansions, command line options, etc.)
|
||
|
* Removed splitting at semicolons of literal values which were assigned
|
||
|
directly to INCLUDEPATH and DEPENDPATH
|
||
|
* Removed UNIX-specific exporting of all qmake variables to the environment
|
||
|
of subprocesses invoked via system(). You should put specific assignments
|
||
|
into the invoked shell command instead.
|
||
|
* Started to short-cut evaluation inside if() tests, consistently with
|
||
|
evaluation outside if().
|
||
|
* Added possibility to request project recursion from within a PRO file
|
||
|
|
||
|
|
||
|
- configure
|
||
|
|
||
|
|
||
|
- qtconfig
|
||
|
|
||
|
|
||
|
- qt3to4
|
||
|
|
||
|
|
||
|
****************************************************************************
|
||
|
* Plugins *
|
||
|
****************************************************************************
|
||
|
|
||
|
|
||
|
****************************************************************************
|
||
|
* Important Behavior Changes *
|
||
|
****************************************************************************
|
||
|
|
||
|
QtScript: Changes due to updating src/3rdparty/javascriptcore:
|
||
|
- It is no longer possible to delete an undeletable property from C++
|
||
|
using QScriptValue::setProperty().
|
||
|
- The QScriptEngineAgent::positionChange() callback will always report
|
||
|
a column number of 1.
|
||
|
- QScriptValueIterator will include the "length" property when iterating
|
||
|
over Array objects.
|
||
|
|
||
|
QtCore:
|
||
|
- QChar no longer carries the Q_PACKED tag on ARM. This flag was
|
||
|
used to allow proper alignment of QChar on 2 bytes on older ARM
|
||
|
ABIs, but it also allowed for unaligned access. Qt never generates
|
||
|
or uses unaligned access and the new EABI aligns as expected, so
|
||
|
the flag was removed.
|
||
|
- QTextBoundaryFinder is now consistent with ICU when it comes to
|
||
|
line breaking, reporting the index of the boundary at which the line
|
||
|
break should occur rather than the index of the character.
|
||
|
|
||
|
QtGui:
|
||
|
- QWidget::setLayoutDirection no longer affects the text layout
|
||
|
direction (Qt::LeftToRight or Qt::RightToLeft) of QTextEdit, QLineEdit
|
||
|
and widgets based on them. The default text layout direction
|
||
|
(Qt::LayoutDirectionAuto) is now detected from keyboard layout and
|
||
|
language of the text (conforms to Unicode standards). To
|
||
|
programmatically force the text direction of a QTextEdit, you can
|
||
|
change the defaultTextOption of the QTextDocument associated with that
|
||
|
widget with a new QTextOption of different textDirection property. For
|
||
|
QLineEdit, the only way so far is sending a Qt::Key_Direction_L/R
|
||
|
keyboard event to that widget.
|
||
|
|
||
|
QtNetwork:
|
||
|
- Qt does no longer provide its own CA bundle, but uses system APIs for
|
||
|
retrieving the default system certificates.
|