Commit Graph

23647 Commits

Author SHA1 Message Date
Friedemann Kleint
bf440c18bb Fix return value of QWindowsFileSystemWatcherEngine::removePaths().
Previously, the path was removed from list returned (indicating failure
to remove) only when the thread's list was empty
(last file in directory). Move the statement up so that removal
happens when it is found in thread's list.

Task-number: QTBUG-46449
Change-Id: Ib79199c731f79357b0e5c17636254fbeb3a754a0
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2015-06-09 09:50:35 +00:00
Kai Uwe Broulik
b38615c7e4 Don't manually delete QPlatformScreen
Change-Id: Ic0cdb08c948a0fd9a4da2d76fe321e72e1c478d5
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2015-06-09 09:14:30 +00:00
Marcel Krems
8046a574d2 Added support for Windows 10 in QSysInfo::productVersion()
Change-Id: I9e21ae62eea6c694e0b3b68dfd14264c3ce76246
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-06-09 07:59:02 +00:00
Friedemann Kleint
25fb41a58c QTest::qExtractTestData(): Set permissions of extracted files.
Currently, the files are extracted with read-only permissions.
If the data are extracted under a temporary directory, this prevents
it from being deleted, causing a leak and test failures (for example,
tst_qfileinfo).

Change-Id: Idc85f31265af234446ed21d736e9a2b9866dc62d
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
2015-06-08 15:48:22 +00:00
Thiago Macieira
861cbef49f Remove useless truncation to the size the string already has
Caused by the refactor in 05351b0cde.

The count was probably wrong in the creation of the QKeyEvent, so this
commit keeps it wrong.

Change-Id: I049a653beeb5454c9539ffff13e573bba826e927
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
2015-06-08 13:23:51 +00:00
Alexander Volkov
5ca4cab712 xcb: Ignore emulated pointer events
X server sends emulated XI_Motion events before each touch sequence.
Filter them out to avoid a mess with mouse events synthesized in
QGuiApplication.

Change-Id: Ic919c86b41e2467a594de7c903cc0f3fc88a6804
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-06-08 12:59:10 +00:00
Alexander Volkov
e098b93488 xcb: Fix getting the window types from the property of QWindow
wm_window_type_property_id is a dynamic property, so we should
check that it is set by using QObject::dynamicPropertyNames()
instead of QMetaObject::indexOfProperty().

Change-Id: Ic7f3408a0d028f349538e0538c40c4b58360f7df
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-06-08 12:58:56 +00:00
Jaeyoon Jung
5772d7fe06 Load GLESv2 library with correct major version
Make sure GLESv2 library to be loaded even when the symlink of .so is
not installed.

Change-Id: Ie7c810a137cebc7fa59612830e3643861b532fdb
Reviewed-by: Jaeyoon Jung <jaeyoon.jung@lge.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-06-08 12:10:25 +00:00
Roman Bogolyubov
7672e1a8eb Fixing error with reading Time fields by qibase sql driver.
Change-Id: I8b874d2fbf54d0a2dcd6eea13f5b6d7405f6e663
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2015-06-08 12:07:10 +00:00
Friedemann Kleint
eb926dc31f QSwipeGestureRecognizer: Allow for small direction changes.
When trying to do a straight right/left/up/down swipe, a minimal
change in the other direction caused to the gesture to be canceled.
Introduce a threshold for checking such to prevent this.

Task-number: QTBUG-46195
Change-Id: I3e199f2ec0c81d23a16073b1f5b8fff004958239
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2015-06-07 20:10:12 +00:00
Alexander Volkov
6468cf4e79 Fix centering dialogs
QDialog::setVisible() tries to adjusts the dialog position, but
it's not really possible if the dialog size is not defined yet.
Besides, if the dialog window is not created, QWidget::move()
will not really move it and will set WA_PendingMoveEvent flag.
And QWidget::setVisible() also will not change the position,
because we reset WA_Moved flag. Thus it may break adjusting
the position in QDialog::showEvent().

So adjust the position only in QDialog::showEvent().

Task-number: QTBUG-36185
Task-number: QTBUG-39259
Task-number: QTBUG-41844
Change-Id: I015a19f2e533f68178f4ee7519b17f5e9b5def7b
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
2015-06-06 17:48:46 +00:00
Dyami Caliri
2d8c7087fb Fix race condition with QProcess on OSX 10.7
Closing the forkfd descriptor before disabling the deathNotifier causes
a race condition in ~QProcess. This is the same underlying cause as
QTBUG-22789.

Change-Id: I1cbdedc567fdfa8d95d111827b7bf9994661ecc7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-06-06 03:07:35 +00:00
Joerg Bornemann
f54a3d783e embed a VERSIONINFO resource into QML plugins
On Windows, we set VERSION for QML plugins, because this embeds a
VERSIONINFO resource into the DLL that can be inspected by the user.

Change-Id: Ifb42efed6ceee05d05f61a271e028776cac6a3a2
Task-number: QTBUG-46473
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-06-05 13:08:41 +00:00
Topi Reinio
b0d85c45ad qdoc: Clear the map of HTML anchors for each generated page
To avoid conflicting anchors within an HTML page, QDoc keeps
the used anchors in a map, and appends 'x' to new anchors if
it was already used. However, this map was never cleared, so
anchors on one page affected the ones generated for another
page.

This commit clears the map for each page when generating the
page header.

Change-Id: Id30baced46917bb4d48cf58dde047f4fbcdf74cf
Task-number: QTBUG-46153
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-06-05 12:57:09 +00:00
Oswald Buddenhagen
d32f47b703 fix usage of wince scope
Fix style issues along the way.

Change-Id: Ic6a6de28e198eb0b14c198b802e78845703909b9
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-06-05 10:29:10 +00:00
Tim Blechmann
92b3397a89 testlib: fix compile error with macosx10.8
[NSDate date] returns an id, so one needs to send a message instead of
accessing a property.

Change-Id: I21ce9b64310315accb7a89278b292dd5c73adc4d
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-06-04 11:52:51 +00:00
Tim Blechmann
536c5df13f Cocoa: QCocoaApplicationDelegate - correctly install cleanup handler
+ (id)allocWithZone:(NSZone *)zone returns before the cleanup handler is
installed. this causes the QCocoaApplicationDelegate not to be cleaned up
by the garbage collector

Change-Id: Ic4862b96228539f3da857955f08157402974a104
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
2015-06-04 07:56:48 +00:00
Alexander Volkov
015bc9d7ce xcb: Track touch points on a per device basis
Until now there was no connection between the tracked touch points and
the touch device. So the touch point for one device could be updated
by the touch event from another device.

Change-Id: I09fcf03a171cc361c6b5b4995758aa53d29ff414
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2015-06-03 14:05:11 +00:00
Allan Sandfeld Jensen
f04ed82ca2 Font definitions with different style names are not equal
Since we added font matching by style name, the style name is not just
a derived property and should not be ignored in comparisons.

The QFontDef::exactMatch comparison is left unchanged, since it tests
if a loaded font matches a requested one.

Task-number: QTBUG-30851
Change-Id: I4187c5b993815001f35bcf24dc449059bfdcba6f
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-06-03 14:00:07 +00:00
Mitch Curtis
525a660ea3 Clarify QPainter::drawText() documentation.
The difference between rectangle and boundingRect was not quite clear.
This patch adds a snippet with a corresponding image, in order to
illustrate the difference.

Change-Id: Icb1fe737788cc93f1c5baa16bc0e04b8ec728f3a
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-06-03 13:41:37 +00:00
Allan Sandfeld Jensen
8f760808e0 Fix premul conversion from ARGB32 to A2RGB30 formats.
When a premultiplied alpha changes value because it is rounded to fewer
bits the premultiplied colors may need to be recalculated with the new
value. Otherwise the color will both be wrong and potentially invalid.

Change-Id: I9ec74a22aac73cd7ffab04e180cf2bf35bb4c315
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-06-03 12:01:26 +00:00
Liang Qi
754efa57d8 Merge "Merge remote-tracking branch 'origin/5.5.0' into 5.5" into refs/staging/5.5 2015-06-02 23:39:22 +00:00
Sérgio Martins
f44a59f390 Don't assign iterator to const_iterator
It should also be possible to use QT_STRICT_ITERATORS in Qt's own code base

Change-Id: I0914db480d4d2b06e71e3a2588163efdd3ff6d27
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-06-02 19:41:16 +00:00
Friedemann Kleint
cd0bed6d71 Polish and stabilize tst_qtooltip.
- Implement init() and cleanup() to verify that
  no top level widgets are leaked.
- Position widget in tst_QToolTip::task183679() and set
  window title.
- Remove hardcoded wait in tst_QToolTip::whatsThis()
  and use a find function within QTRY_VERIFY().
- Rearrange and clean code a bit.

Change-Id: I0b1ad88444fc9441c1071a2527f75de1f68ea9e5
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
2015-06-02 18:51:25 +00:00
Allan Sandfeld Jensen
71fe2df773 Syntax clean up in qimagescale
Corrects a few white-spaces, return statements and else statements
to fit Qt coding style.

Comment updated to indicate how far the code is getting from its
original roots.

No semantic changes.

Change-Id: Ia2288c501788a291bfc4e8b70e8eb1efb7a90128
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-06-02 07:46:17 +00:00
Richard Moe Gustavsen
e5d85ff44e imageviewer example: support loading images on iOS
Use the last path from QSP to hint that we want to
load photos from the global photo library. This
should currently only make a difference on iOS.

Change-Id: I7a6217dbbbc2e247b69bf406c02001458c757211
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2015-06-02 07:46:14 +00:00
Liang Qi
166c2499d9 Merge remote-tracking branch 'origin/5.5.0' into 5.5
Change-Id: I060b0e10e55487a4a4a101f77ad7c8dc8cf0f553
2015-06-02 09:44:03 +02:00
Pier Luigi Fiorini
11512d6a2c eglfs_kms: Virtual desktop
Now we can choose to use separate screens or virtual desktop.

With virtual desktop the geometry of all screens is taken
into account so that the input plugin do not clamp global
pointer coordinates to the first screen anymore, we also
create only one hardware cursor that can now freely move
on all the screens.

Virtual desktop is enabled by default, but the old default
behavior can be restored by setting separateScreens to true.

Change-Id: I78dbf9e8d3dd44f68d33350dc8fc3727bf8a26fe
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-06-02 07:37:51 +00:00
Morten Johan Sørvig
f7047d52da Cocoa: add QT_MAC_USE_NSWINDOW env. variable
When enabled, all QWindows will be backed by a NSWindow.
This is unlike the default where only top-level
QWindows get a NSWindow.

The QWindow still has (Q)NSView as the NSWindow content
view. The return value of the winId functions are
still the NSView and is not affected by this switch.

Change-Id: I131b89af04c09451a6e7515d1da3f7498f53979a
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
2015-06-02 04:44:28 +00:00
Jani Heikkinen
7bc9310a22 Merge "Merge remote-tracking branch 'origin/5.4' into 5.5" into refs/staging/5.5.0 2015-06-02 04:20:54 +00:00
Allan Sandfeld Jensen
6b4c1ad58c Fix wrong method name in QColor documentation
The methods are called hslHue and hslSaturation. This was leading
to dead links.

Change-Id: I0997c415958aae9a66fb037d98f8ad3d43b38231
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-06-01 17:57:18 +00:00
Oswald Buddenhagen
6e008cd579 Merge 5.5 into 5.5.0
Change-Id: I27921a25a0fc56afb5429e40fc1e9b4b9a645a9a
2015-06-01 19:44:29 +02:00
Liang Qi
fcfd31c9fd Merge remote-tracking branch 'origin/5.4' into 5.5
Conflicts:
	qmake/generators/mac/pbuilder_pbx.cpp
	src/corelib/global/qglobal.h

Change-Id: I2c0f7544bf194f2d0f59218fd583c822901487b0
2015-06-01 17:46:58 +02:00
Friedemann Kleint
6fba3c1904 Stabilize tst_qtouchevent.
- Use QTRY_COMPARE() in touchBeginWithGraphicsWidget.
- Change raw event translation tests to wait for the
  window to become active to avoid WM positioning issues.
- Blacklist the raw event translation tests on Linux.

Task-number: QTBUG-46266
Change-Id: I73aae375ee279a518a2a083d0ce8919cce474cb3
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
2015-06-01 13:39:13 +00:00
Laszlo Agocs
0e1b4e896f Avoid QWidget dependency in QtGui
It's not a real dependency as all we need is to store a pointer,
but better not to use the name QWidget at all.

Change-Id: I30ef1dd44ac7e42c1b9c84675f94088b8c516076
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-06-01 13:38:18 +00:00
Laszlo Agocs
78e3354083 Clip QOpenGLWidget and QQuickWidget correctly
Introduce support for the widgets' clipRect(). Right now render-to-texture widgets
in scroll areas placed close to each other result in broken (non-existent) clipping.
Similarly, stack-on-top widgets fail to clip when placed inside a scroll area.

This is now corrected and the qopenglwidget example is enhanced to utilize a scroll
area.

Task-number: QTBUG-45860
Change-Id: I859a63d61a50d64ba9e87244f83c5969dce12337
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-06-01 13:38:14 +00:00
Oswald Buddenhagen
275709fb43 don't process .prl files recursively
they are self-contained, as they are the result of another project's
full resolution. consequently, recursing them just burns cycles, and
additionally introduces the risk of an endless loop if the file is
botched.

Task-number: QTBUG-12711
Change-Id: I401ee691c170092cc61fe05538cec4272ed8f922
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-06-01 13:27:06 +00:00
Oswald Buddenhagen
85c12d5745 fix incorrect path separators coming from installed .prl files
we use qmake properties in the installed .prl files, so the paths
need to be converted to native separators before emission.

Task-number: QTBUG-46217
Change-Id: If3fb0a84488795478fc2a701271c931c62eba6aa
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-06-01 13:27:03 +00:00
Oswald Buddenhagen
26f7223769 fix installing unix dll symlinks on windows hosts
... by implementing a fake ln in qmake.

symlinks are supported only since vista (we officially still support
xp), and even there are permission-restricted (MS being (rightfully)
afraid of symlink attacks). so we fake the links by copying the files
instead.

the previous hack was a bit naive, simply using cp/copy instead of ln.
this didn't work with relative paths, as real symlinks are resolved
against their parent directory, not the working directory of the "ln"
command. the new fake does this correctly.

Change-Id: Ia2f5d68a39d6ffcc8a4383f9d0fc63a9da0a05c3
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-06-01 13:26:57 +00:00
Ivan Komissarov
069be16543 Fix statfs usage for BSD4 systems in QStorageInfo
According to NETBSD manual pages, there's no statfs structure; statvfs
should be used instead, change introduces defines for the stat(v)fs
struct/function.

Task-number: QTBUG-40785
Change-Id: I98599e4635e46f90ffcc99c768f4c250f09f914f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-06-01 09:08:19 +00:00
Maurice Kalinowski
55f3e6bc34 WinRT: Fix argument handling on Windows 10
The Windows 10 CRT does not export __getmainargs(), so we need to move
to GetCommandLine like on WinCE and desktop Windows. As CommandLineToArgv
is not available, the command line is split according by spaces, allowing
for quotes (and quote escaping) around arguments.

Change-Id: Ibc969df94ca5423a3a71d8190bbacd201189ea19
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
2015-06-01 07:47:11 +00:00
Timur Pocheptsov
ecb25dac68 QCocoaMenu: return YES if we have a shortcut for a pseudo-first responder
When running a modal session with NSOpenPanel (QFileDialog), our menu delegate
should not touch qApp->focusObject, since it's not what actually has focus
inside NSOpenPanel (will be some native view). Return YES instead.

Task-number: QTBUG-17291
Change-Id: I94f3281237fb25495d317b02310bf9d77b21d2ba
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-06-01 07:02:26 +00:00
Laszlo Agocs
53d289ec4c xcb: Use XIGrabDevice instead of xcb_grab_pointer with XI 2.2
Switch to using the pointer events from XI2 when touch is available (i.e.
version is >= 2.2). This allows us to select and grab the button and motion
events together with the touch ones. This prevents the issue of not getting
touch events when grabbing via the plain xcb functions.

To prevent touch sequences from being replayed after ungrabbing (for example after
dismissing a popup that caused a grab), we try to accept touches via XIAllowTouchEvents.
Unfortunately this leads to a deadlock and therefore we can only do it when we know
we have a new enough libXi. This is a configure time check which is not ideal since
the system on which apps run can have a newer libXi than the machine that did the Qt
build, but seems like the best we can do.

The environment variable QT_XCB_NO_XI2_MOUSE can be set to 1 in order to prevent
processing mouse events through XInput. This restores the old behavior with broken
grabbing.

[ChangeLog][QtGui] Pointer event delivery on X11 is now done via XInput 2.2+ when available.

Done-with: Michal Klocek <michal.klocek@theqtcompany.com>
Done-with: Alexander Volkov <a.volkov@rusbitech.ru>
Task-number: QTBUG-43525
Task-number: QTBUG-45054
Task-number: QTBUG-30417
Change-Id: I7cb2002b31bef4cd527aa427549dcf2d5467968e
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-06-01 06:34:22 +00:00
Kai Koehne
2d7004c587 configure: Show only LGPLv3 for WinRT & WinCE
With Qt 5.5 we are changing the license of the Qt for the WinRT &
WinCE ports to LGPLv3 / GPLv2+ / commercial.

Change-Id: I221559c5c42b1dcda172eb85e6bfa53c91976b23
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-06-01 06:30:13 +00:00
Allan Sandfeld Jensen
218e6cc6c9 Fix subpixel rendered text in QGLWidget
Subpixel rendered text doesn't work in the old OpenGL paint engine
because it assumes the glyphs are returned in RGB32 format, when they
may be in ARGB32. This patch changes the test of the returned format
to just check for 32bit matching the logic in the new OpenGL paint
engine.

Change-Id: Ib5b784dedba51cf22f216e2f035361518610b96b
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-05-30 17:20:01 +00:00
Allan Sandfeld Jensen
45751d0ea3 Fix combobox regression 5.4 -> 5.5
To avoid a touch release outside the combobox triggering the popup,
a check was added that the combobox was hit. This fails if the combox
itself is only used for the popup and associated behavior, but does
not exist as widget. This patch changes the check so that only touch
release checks for a hit, but a generic click still behaves as in 5.4
to avoid regressions.

This fixes comboboxes no longer working in QtWebKit, since QtWebKit
renders its own comboxes in webpages, and only uses the popup of
the QComboBox.


Task-number: QTBUG-46152
Change-Id: I74fd57b2e42e77aa4a269d812ca4a6689f254889
Reviewed-by: Florian Bruhin <qt-project.org@the-compiler.org>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-05-30 09:14:17 +00:00
Olivier Goffart
71c85c554a moc: Fix crash parsing invalid macro invocation
When invoking a macro with less argument than it expect, we would
crash trying to access the vector of arguments from the invocation
as we are trying to substitute an argument.

(Note that we do not show an error in case of argument mismatch
because ithat might happen parsing valid code as moc's c++ parser
is not 100% accurate (that was QTBUG-29331))

Task-number: QTBUG-46210
Change-Id: I3f08d7f5049e593a5bdc02a594ea63cadf66e7a4
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
2015-05-30 08:37:11 +00:00
Eskil Abrahamsen Blomfeldt
5b739a5b8c Revert "Android: Don't show translucent system UI on top of Qt"
This reverts commit c9aaa3e2cd.
This fix broke fullscreen mode on Android. A better solution is
in the works, but we'll probably push that to Qt 5.5.1 instead
since it comes with a risk and we don't want to delay the release
any further.

Change-Id: I3aae6d52ebb8425089cdb6f7fc4c8ce9ad4911df
Task-number: QTBUG-38700
Task-number: QTBUG-46234
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2015-05-30 05:55:56 +00:00
Allan Sandfeld Jensen
455653d77f Combine x and y oriented sample helpers
The range sampling operates the same in both directions just with
different step-sizes, so the code can be unduplicated,

Change-Id: I47805a7e925d4058f62c558ef08e79485915e937
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-05-30 01:18:23 +00:00
Allan Sandfeld Jensen
a7a0b741c5 Remove unused call indirection
The global variable is a left over from when there was an MMX assembler
implementation, and is now just making the compiler's job harder.

Change-Id: I686704b64a2f8c68ec8ca83f2ac3e465ded773e0
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-05-30 01:18:16 +00:00