Commit Graph

22605 Commits

Author SHA1 Message Date
Allan Sandfeld Jensen
b678445901 Fix leaking ISA extensions in LTCG builds
Due to common subexpression elimination instruction set extensions may
leak from the objects where they were enabled when doing link-time
optimizations.

To avoid that this patch disables LTCG/LTO on files built with extra
instruction set extensions.

Change-Id: Ie34ad900be7fb04a0dc4d3562187ee170c183333
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-03-04 16:45:05 +00:00
Oswald Buddenhagen
8ac63a3323 Merge remote-tracking branch 'origin/5.4' into 5.5
Change-Id: I556be99cc7ad3fc6f7177542b7444269616a7478
2015-03-04 13:44:29 +01:00
Eirik Aavitsland
88550543f8 Painting: Avoid endless loop for certain bezier curves
If the coordinates were too close (at the limit of the number
accuracy), the splitting algorithm in QBezier::shifted() would never
finish. Ref. testcase in bugreport.

Task-number: QTBUG-44674
Change-Id: I2a575cdc6284504ef5e3eb2b749857576fe433c3
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-03-04 09:18:24 +00:00
Thiago Macieira
96e9b41e25 tst_QNetworkDiskCache: Stop using actual web servers
www.example.com is a reserved domain (RFC 6761), but IANA is running a
web server there. As for www.foo.com, that also exists, is a real
website and is often content-filtered in corporations (it triggers a
firewall warning for me -- "You attempted to visit a site that is in
violation of Intel acceptable use guidelines").

So use a localhost instead, since we don't actually need to connect to
the servers to do the work. And since we don't need to connect, I chose
port 4 as it's extremely unlikely someone is running an HTTP server
there (/etc/services lists it as unassigned).

Change-Id: Ia0aac2f09e9245339951ffff13c82439c6d5f945
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-03-04 09:17:10 +00:00
Allan Sandfeld Jensen
59f168c5e5 Optimize fallback RGB888 to RGB32 conversion
Improves the conversion from RGB888 to RGB32 on platforms without SIMD
versions. This includes the fallback used on non-neon ARM devices.

Besides image conversion the routine is also used for decoding JPEG.

On x86 this version is within 0.7x of the speed of the SSSE3 version.

Change-Id: Id131994d7c3c4f879d89e80f9d6c435bb5535ed7
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-03-03 13:38:17 +00:00
Olivier Goffart
bfb92c03e0 Document Q_ENUM and Q_FLAG
[ChangeLog][QtCore] Q_ENUMS and Q_FLAGS have been deprecated, and replaced
by Q_ENUM and Q_FLAG macros. These two new macros automatically register the
enum with the Qt metatype system, allowing automatic conversion to or from
string in QVariant, or to show the strings by QDebug operators. They also
enable the new QMetaEnum::fromType function.

Change-Id: I80cccd7ad3fc46b11aee2fe50681a8126debf972
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-03-03 13:31:44 +00:00
Shawn Rutledge
b134327475 QTabletEvent manual test: use built-in QDebug operator
There's no need to decode the event details here anymore, and anyway
this had a bug: it always said the device is unknown.

Change-Id: If99dddbe2136d95e818f4fe526f62650cbd7c1ca
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-03-03 13:30:54 +00:00
Shawn Rutledge
3b6d2575ae QEvent types: use Q_ENUM qDebug support instead of custom formatters
Change-Id: I10886de57b3ba24dddfcd4b78e1a32c470ac1889
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-03-03 13:30:45 +00:00
Shawn Rutledge
877032bfdf autotests: fix the build in case of QT_NO_WHEELEVENT
Wheel event tests aren't possible if there's no wheel event.

Change-Id: Ibe380c01fbf6cebfd2f43c6ecb52863134ea3c01
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-03-03 13:30:39 +00:00
Shawn Rutledge
34a58b0eb7 avoid sending QPinchGestures based on unreasonable pinch deltas
On some devices there can be spurious events indicating that the two
touchpoints are very close together, so that the ratio of present
line length to previous line length can be very large, and the angle
delta can be random.  But in the normal scenario, there will be a lot
of events, in which the touch point movements are small.  So if the
line length ratio is unreasonable, it's safe to ignore one event and
wait for the next.

Task-number: QTBUG-44665
Change-Id: Ibb7fe560b6a3f7db72d73aad3468c61f24a95d13
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-03-03 13:30:32 +00:00
Shawn Rutledge
a9515cd02f doc: imagegestures example: document the pinch handler
The swipe handler is simple, and also doesn't currently work on every
platform.  But the pinch handler is the one that needs explanation,
because the difference between incremental and absolute values of the
rotation and scale properties is tricky.

Change-Id: Ie3c7f4941d4a17734c9a920a8dd978f86fb03c4b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-03-03 13:30:25 +00:00
Dmitry Shachnev
30e3a2beb1 Remove unneeded exec permission from icomoon fonts
Change-Id: I47f111b4fa1278889689c28da762fabe94b95015
Reviewed-by: Lisandro Damián Nicanor Pérez Meyer <perezmeyer@gmail.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-03-02 10:39:24 +00:00
Oswald Buddenhagen
2b5982aac8 Merge remote-tracking branch 'origin/5.4' into 5.5
Change-Id: I95b3a87c5068c6b8068b30a35655b4c2419e7f9e
2015-03-02 09:23:07 +01:00
Joni Poikelin
fc3733cba4 Fix drawing of background for multipage QTextTable cells
Task-number: QTBUG-31330
Change-Id: I0103919ee2864b7cd8bed41e6d6fe4ac5b84142e
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-03-02 06:07:18 +00:00
Thiago Macieira
f9c70128bb Revert "Update the DNS and name-resolver tests to the official zone"
This reverts commit 24c52bd44b and makes
the Qt unit tests requiring DNS zones to use the temporary test zone in
macieira.org (Thiago's domain).

Change-Id: Ia0aac2f09e9245339951ffff13c6d3752c83b773
Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
Reviewed-by: Tony Sarajärvi <tony.sarajarvi@digia.com>
2015-03-01 18:45:56 +00:00
Liang Jian
5f2f38854f Register font's english name as alias when populating font database
Register font's english name as alias in the callback of
EnumFontFamiliesEx() at the time
QWindowsFontDatabase::populateFontDatabase() is being called. This will
help us to resolve english font family name to its corresponding localized
alias once windows font database has been populated. It will also fix an
assertion in Chinese Windows.

Task-number: QTBUG-44647
Change-Id: I265d93c16a1677a7f31ff56d60c24f6e90666419
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-02-27 09:29:53 +00:00
Sergio Ahumada
e78643dc0a Replace old qt-project.org wiki with wiki.qt.io
Change-Id: If6c05a5b1f60e97c64f3d6b64041a84c3af82964
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-02-27 09:27:13 +00:00
Samuli Piippo
efe3f631f2 Add mfloat-abi to linker flags for ARM devices
Cross compilers from latest yocto (dizzy) are no longer built with
default value for mfloat-abi, which means it needs to be given for
both compiler and linker to produce correct binaries. Otherwise
linker will selected dynamic linker as /lib/ld-linux.so.3, instead
of /lib/ld-linux-armhf.so.3 when compiling for hard-float.

Change-Id: I2fe116b1a90a0fbd078a4e8757abd4bc64a7b56e
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-02-27 08:12:30 +00:00
Shawn Rutledge
2e63f7bf92 xcb: Don't log mouse moves by default
It produces too much log output, so now it must be enabled by both
defining Q_XCB_DEBUG and enabling the qt.qpa.input category.

Change-Id: Id2eb7545a7cd07dadd70da31a1f17c2999feec0d
Reviewed-by: Alexander Volkov <a.volkov@rusbitech.ru>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-02-27 06:54:47 +00:00
Friedemann Kleint
175b12beba Prevent static functions of Q[Gui]Application from crashing if there is no instance.
Add tests.

Task-number: QTBUG-44499
Change-Id: I160b089ad3f23ab71a87519e50f8a2ef5d2a4a6f
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-27 06:02:44 +00:00
Eskil Abrahamsen Blomfeldt
4e966497ce Android: Fix compilation for x86
Bionic on x86 does not have an implementation of ffs(),
for some reason. The declaration is available in
strings.h, but causes a linker error. The toolchain has
a builtin version though, which can be used instead.

Change-Id: Iaf4c27542c1aabe88713842303251db44ae6ba86
Reviewed-by: Jani Heikkinen <jani.heikkinen@theqtcompany.com>
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-27 05:54:36 +00:00
Allan Sandfeld Jensen
3f858a0772 Remove some uses of the private Q_PI constant
The patch removes several uses of the private Q_PI constant and removes
the qmath_p.h from the includes. A few places are optimized to multiply
with reciprocals instead of dividing by Q_PI.

Change-Id: I097af6a929e0609d6935563064e81c856005f4bc
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-26 20:31:20 +00:00
Andy Shaw
a782369071 Delete the file that we will move to not the new file before moving
In the case of Windows Embedded Compact we need to delete the destination
file before doing the move if DeleteAndRenameFile has failed since
MoveFile will fail if the destination file exists.

Change-Id: I29d04c147bf8b6b5de850fd7da7bb3dc6a827f1d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-02-26 20:16:05 +00:00
Konstantin Ritt
4ed795df24 Use C++ <cmath> instead of <math.h> in math3d autotests
Change-Id: I2e13ec190ec42ac7732ce9ed3ca5567f637beb1e
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
2015-02-26 20:15:04 +00:00
Konstantin Ritt
d07166af64 Fix QMatrix4x4::lookAt() in case of null direction
If direction is null, any valid orientation fits, so that the resulting
matrix must be valid.

Change-Id: Ie8060f44801822ee337b25f75fb275bd02223fe8
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2015-02-26 20:15:00 +00:00
Andy Shaw
4054f8a5ad Specific the correct mibEnum value for the 'macintosh' codec
Change-Id: Ib57dd3c98a2ae3994898d7ea40baa0fed482c99a
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-02-26 17:30:14 +00:00
Allan Sandfeld Jensen
ad2d4e8386 Remove unused private definitions and function
Remove two definitions and one function not used anywhere in the Qt
source code.

Change-Id: I275e7c7a2d52dd4ac90cc9e6c782cbdfc14791f3
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-02-26 13:54:52 +00:00
Topi Reinio
01d5c77389 qdoc: Fix generation of Doxygen tag files
This change addresses two issues that affect generating .tags files
in QDoc:
    - Paths written to the .tags file are now always relative to output
      subdirectory, i.e. the same folder where the file is created in.
    - Opening the file for writing no longer fails silently. If the
      'tagfile' configuration variable specifies no path, or the path
      does not exist, the file is written to the output directory by
      default.

Change-Id: I23ac529dbfa67575ae96da1c3123ea487cd664f5
Task-number: QTBUG-44366
(cherry picked from commit 5113fdeb7d)
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-02-26 13:46:33 +00:00
Martin Smith
99120ca3cf qdoc: Correct parsing of the using clause
qdoc could only parse the using clause where the 'using'
keyword was followed by 'namespace'. Now it can parse
using clauses with or without 'namespace'.

Change-Id: Ic4aad025c00b3bda2bc1cbd52d0ba8dbbad653e5
Task-number: QTBUG-44553
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-02-26 13:24:13 +00:00
Topi Reinio
ba5f93956b Doc: Update online documentation template
- Online CSS tweaks: Max-width, font-sizes,
      font-weights to improve readability, other
      minor fixes
    - Remove duplicate include statement and unnecessary
      definitions for online template

Change-Id: I713bddd0e175235668c4d9790d0df58b4131d19f
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-02-26 12:26:15 +00:00
Topi Reinio
04e313d708 Doc: Update Copyright information in template/footer
This change updates the copyright information as it appears
in the footer for both offline and online documentation
templates.

   - Update copyright year to 2015
   - Update copyright holder to The Qt Company Ltd

Change-Id: I82fef6067dee42ec9db561aef9c3c506beafb3c6
Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com>
2015-02-26 12:26:01 +00:00
Friedemann Kleint
cd46d94906 Output registered enums in qDebug operator for QFlags.
Change-Id: Ia424df234fbd333782c10f0a4422875bb1bfc1f5
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-26 12:16:51 +00:00
Erik Verbruggen
9608629d7e OSX: fix leaks due to missing NSAutoreleasePool
env OBJC_DEBUG_MISSING_POOLS=YES qtcreator

Change-Id: Ibbe5f42af5b94a439be3f0dd0f2b6e34bb1afd3f
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
2015-02-26 12:11:33 +00:00
Konstantin Ritt
b7d4e4ffeb Optimize quaternion to rotation matrix convertion
Rearrange operands to get rid of 50% of multiplications
(i.e. `2 * (x * x + z * z)` -> `(x + x) * x + (z + z) * z`).

Change-Id: Ib5279425ead999fc571b4964ac1681b6e22f9a7e
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2015-02-26 11:02:59 +00:00
Konstantin Ritt
e628c80dc3 [QQuaternion] Add operator* that rotates a vector with a quaternion
Same as quaternion.rotatedVector(vec).
Expression like `vec = quat * vec` quite common in the 3D world.

Change-Id: I0edd5a5f80537bd149f03f682b3de15c54463e23
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2015-02-26 11:02:47 +00:00
Konstantin Ritt
1872857ca7 [QQuaternion] Fix naming of the new methods
According to the Qt naming policy, methods that return value(s) via
the mutable parameter(s) should have "get" prefix to mention that.

[ChangeLog][QtGui][QQuaternion] Added methods to convert a quaternion
to/from Euler angles and to/from rotation matrix.

Change-Id: I95704e1f4623dc4ca54cd237ea203539fb60d452
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2015-02-26 11:02:38 +00:00
Oswald Buddenhagen
ade2778bee Fix VS build for target path with spaces
VS expects references to $(TargetPath) to be quoted by the user.

Task-number: QTBUG-25030
Change-Id: Ib5a07730836a42533d5488882e877074ccceea4c
Reviewed-by: Prasanth Ullattil <prasanth.u@gmail.com>
2015-02-26 11:01:10 +00:00
Allan Sandfeld Jensen
d49b2f700f Minor optimization in SSE4 unpremultiply
Use a more direct conversion to desired unpacked format.

Change-Id: I47e4a31c580f294c4e717850c4a420e16214e0a9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-26 09:56:22 +00:00
Allan Sandfeld Jensen
a09e67c2f7 Remove unused CGImage in qcocoabackingstore
Since 916dfcb827 m_cgImage has been unsed
in the QCocoaBackingStore and can be removed.

Change-Id: Ib289b1a3b848e05dda2dfc76ca5d857770883a0b
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
2015-02-26 09:49:13 +00:00
Friedemann Kleint
05e0dfa006 Reverse iteration in QMetaEnum::valueToKeys().
Otherwise, values that are composed of others are not handled
correctly. For example,
Qt::Dialog|Qt::FramelessWindowHint (Qt::Dialog=0x2|Qt::Window)
is currently output as
"Window|FramelessWindowHint" since
Qt::Window matches first and its bits are removed from the flag value
so that Qt::Dialog in the next iteration no longer matches.

Change-Id: I67db5c977c75f887392aa8f345c5e6e9d82c5c26
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-02-26 09:49:10 +00:00
Michal Klocek
081afb2a16 Fix android menubar's menu not opening at the first press.
In case of selected item in submenu, call aboutToHide() on still
visible menus. This will allow quickquickcontrols to act
poperly when menus are closed.

This patch is a resubmission of
dbd6d158e3 which was merged to dev
although it should have targeted 5.5.

Task-number: QTBUG-42188
Change-Id: I868cc6fc8403f0586f35a1734e0cb026982f6063
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-02-26 09:49:04 +00:00
Eirik Aavitsland
68762151db Fix crash when converting format of QImage created from buffer
When doing format conversion, the optimized inplace codepath did not
check if the image data was readonly, i.e. if the QImage had been
created by the constructor taking an existing external buffer.

Task-number: QTBUG-44610
Change-Id: I085ff8da427bc4ee392f548dffd2418b63148965
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
2015-02-26 01:27:37 +00:00
Oswald Buddenhagen
a659b4e56b fix default of SettingsPath when qt.conf is present
it's documented to fall back to Prefix if qt.conf is present but
Settings is not specified.

Task-number: QTBUG-44644
Change-Id: I8ef6659cbdad51b2fb3c1075ea6f0af4997117ed
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-25 19:14:50 +00:00
Peter Seiderer
a59028d6e9 configure: add '-psql_config' option
Allow setting of pg_config path for cross compilation where pg_config is
not in the command search path (do the same as for mysql_config).
This is e.g. used for buildroot (see [1] for details).

[1] http://lists.busybox.net/pipermail/buildroot/2015-February/119714.html

Change-Id: I11d084496ffbb6f8bc350dbcf2971a5be8e3b346
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-02-25 19:12:07 +00:00
Allan Sandfeld Jensen
efcc16a0a7 Remove PREMUL and INV_PREMUL macros
These macros have been deprecated since 5.3 and have always been
private.

Change-Id: I8c80b059a4c026c037f55279a3dfc0dca58c5d5c
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-02-25 16:18:44 +00:00
Thiago Macieira
41ef1965c5 QSysInfo: expand Linux distribution detection to /etc/lsb-release
Some older (or weird) Linux distributions don't have /etc/os-release, so
let's try to read /etc/lsb-release instead. If we find a file called
/etc/<distronamelowercase>-release and it's bigger than the pretty name
we read from /etc/lsb-release, use that.

Because the order of the keys changes between the two *-release files,
we can't do a sorted search anymore.

Change-Id: I1a800c709d3543699131ffff13c48532d5074f3c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Dirk Hohndel <dirk@hohndel.org>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-02-25 15:49:20 +00:00
Eskil Abrahamsen Blomfeldt
71962474b8 Android: Don't include Qt D-Bus by default
Recently, a dependency on Qt D-Bus was added to
Qt Platform Support if Qt was configured to support it. Since
Qt defaults to checking for Qt D-Bus at run-time, the platform
plugin and thus all applications would depend on libQt5DBus.so.

Qt D-Bus really doesn't make much sense on Android, so we default
to disabling it instead on this particular platform. People
with use cases where this might be used can still configure Qt
to include support by passing -dbus to configure.

Note that this makes OS X and Linux builds consistent with
Windows builds, where Qt D-Bus was already disabled because
the dbus.h header was missing.

Change-Id: Id733ff00918c706bf1aa5a667299e7d578b4b0c1
Task-number: QTBUG-44581
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-02-25 14:41:53 +00:00
Friedemann Kleint
28fedba03b Fix various qdoc-warnings.
qtbase/src/corelib/itemmodels/qitemselectionmodel.cpp:1199: warning: Undocumented parameter 'model' in QItemSelectionModel::modelChanged()
qtbase/src/corelib/plugin/qpluginloader.cpp:420: warning: Can't link to 'staticPlugin()'
qtbase/src/gui/text/qtextdocument.cpp:1452: warning: No such parameter 'from' in QTextDocument::find()
qtbase/src/testlib/qtestcase.cpp:2770: warning: No documentation for 'QTest::qExtractTestData()'

Change-Id: I76758dbdf3ad7b0ae1f14de0407a6fde523827d0
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2015-02-25 15:26:04 +00:00
Olivier Goffart
be4f5d55fc QVariant: fix converting enum to string
Use QMetaEnum::valueToKey instead of valueToKeys.

Change-Id: I270f0820a03aaebde94c37c011c5e9b81421b50f
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-02-25 15:24:40 +00:00
Sergio Ahumada
18ab75be81 Doc: Fix typos
Change-Id: Id7ecc747545f9675b84c3a8c284a52e72a584135
Reviewed-by: Sune Vuorela <sune@vuorela.dk>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
2015-02-25 15:13:44 +00:00