Commit Graph

14343 Commits (c26d5cf6ef50ea102cfb18eb2109f60bcdfdafb6)

Author SHA1 Message Date
J-P Nurmi c793839681 Android: add support for Android.R.attr.state_accelerated
This lets the Qt Quick Controls Android Style choose the appropriate
window background that is meant to be used with HW acceleration.

Change-Id: I65d6f9319d77364637460e7c4ebb7ea3f4d53f12
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-08-06 22:18:53 +02:00
Marc Mutz 7f78d547ca QCommandLineParser: support extremely concise option configuration in C++11
The goal of this commit to make the code in the test work:

    QCommandLineParser parser;
    parser.addOptions({
        { "a",                "The A option." },
        { { "v", "verbose" }, "The verbose option." },
        { { "i", "infile" },  "The input file.", "value" },
    });

For this, QCommandLineParser needs a version of addOption that can
take a list of options. That's what addOptions() is for.

More importantly, the QCommandLineOption ctors mustn't be explicit.
OTOH, any implicit conversion from QString or QStringList to
QCommandLineOption is also undesirable.

To solve this dilemma, add new QCommandLineOption ctors that just
take one argument and are explicit, and make the existing ctors
implicit. In order to avoid ambiguities, remove the default values
of their resp. 2nd arguments. The new ctors are by intention not
\since 5.4, as they are completely transparent to the user.

Et voila, even better than getopt_long(3).

[ChangeLog][QtCore][QCommandLineParser] Added addOptions() method.

Change-Id: I5e779f3406cd0f6c8ec6ecbf6c8074af226de300
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-08-06 22:17:22 +02:00
BogDan Vatra a2ad0ba630 Android: Fix debugging.
When re-install a package without uninstalling it first, a few files
are leftover from the previous installation which makes the debugging to
fail.

Change-Id: I603491668bcec2a6f8054951ea2dea806fcc4c88
Reviewed-by: hjk <hjk121@nokiamail.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-08-06 22:07:52 +02:00
Paul Olav Tvete 1fec23f927 Enable devicePixelRatio for non-Apple platforms
Remove #ifdef Q_OS_MAC around devicePixelRatio code. We are planning
to make it available on other platforms.

Task-number: QTBUG-38858
Change-Id: I25230cb53ea1291095335ef5883b15087e44f6b8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-08-06 17:33:51 +02:00
Eskil Abrahamsen Blomfeldt 8306dee38f Windows: Fix stored family name of fallback fonts
When we create fallback fonts, we copy the fontdef of the main font, but
we need to update the family name to match reality, otherwise a QRawFont
created with the font engine will have the wrong family name. This is
already done in the default implementation of loadEngine(), but was missing
from the Windows implementation.

One large consequence of this was that when the distance field renderer
cloned the font engine (to change its size), it would clone it with the
wrong family name. When it later painted its glyph indexes, they would
of course refer to the wrong font (the fallback) so random characters
would appear.

[ChangeLog][Windows] Fixed using QRawFont with fallback fonts, e.g.
in the case of text rendering in Qt Quick.

Task-number: QTBUG-39172
Change-Id: Ic8fcd9dfc20ec7aadf0b47d4a80417f401f355fd
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-08-06 17:17:09 +02:00
Christian Strømme 1671dacb52 Android: Remove native views when their window is destroyd.
destroySurface() was not removing the native view as they are not
in the m_surfaces map.

Task-number: QTBUG-40159
Change-Id: Ib5457e0bd34141654fa47883f5e125d894b0bd05
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-08-06 17:16:36 +02:00
Christian Strømme 4946ed0496 Android: Fix QAndroidPlatformServices::openUrl().
Return true only if an activity was found for the intent.

Task-number: QTBUG-34716
Change-Id: I764caf1e8afa3b17b2d71f52873c17e5d834a956
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-08-06 17:16:30 +02:00
Christian Strømme 682976def7 Android: Fix recursion bug in callStaticMethod()
calling callStaticMethod() with template type jlong, jdouble or
jboolean would cause the call to loop indefinitely.

Change-Id: I99caa576e761fdef623ece04e0779e4cf2535592
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-08-06 17:16:22 +02:00
Shawn Rutledge 2ad9e69a9f GTK file dialog: pre-fill the filename if given to a Save dialog
The docs for gtk_file_chooser_set_filename explain that if a file is
new, we should call gtk_file_chooser_set_current_name instead.
(But in that case it is necessary to set the directory separately.)
Qt doesn't make a distinction between a save dialog for saving a
new file vs. a dialog for re-saving an existing file, so it seems this
is the better way to do it all the time, since a save dialog would
most often be used for saving a new file.

Task-number: QTBUG-40573
Change-Id: I285e898fafc54ae39f09d564ca431a279a8f8919
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
2014-08-06 17:10:07 +02:00
Shawn Rutledge 276036179a QFileDialog docs: remove misleading sentence about static functions
Native dialogs are used whenever possible, not just when the dialog is
instantiated via the static function.

Task-number: QTBUG-36657
Change-Id: Ibad67114e67f8e2f9956037f8469542c72bfd8ea
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2014-08-06 17:09:50 +02:00
Richard Moe Gustavsen 1a47595d3a QPlatformMenu: add overloaded function 'showPopup' that takes a target rect
When showing an edit menu on touch platforms, you need to specify a target
rect for where to place the menu. The target rect is normally a rectangle
that encompasses the whole text selection. Using this information the OS
will place the menu so that is doesn't obscure the selection itself, or fall
outside the screen (or overlaps e.g the keyboard). Since we don't know the
size of the menu, or if the OS will end up placing the menu above or below the
pos we give it, we need to do it the correct way and forward the whole target
rect instead.

Change-Id: I638586e9d0dd14c430a22c403c6dce099192a075
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
2014-08-06 16:17:06 +02:00
Shawn Rutledge c1d2a04923 Add debug operator for QTouchEvent::TouchPoint
dfde72e436 added debug support for
QWindowSystemInterface::TouchPoint, which is useful only near the
QPA interface; but in qtdeclarative it's useful to be able to log
individual touch points too.

Change-Id: I237d354d7018e6326e586ae3355c8aa6f781eff8
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-08-06 16:16:35 +02:00
Allan Sandfeld Jensen 589894c072 Be consistent in GrayScale vs Grayscale naming
The enum GrayScale was renamed Grayscale without similarly changing the
helper class for the same enum.

Change-Id: Ie1b34a68654f22a843ce4cfc2ddc1bf06af8dea1
Reviewed-by: Axel Rasmussen <axel.rasmussen1@gmail.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-06 16:04:06 +02:00
Allan Sandfeld Jensen 28fe4e3a86 Remove specific maemo/meego codepaths
We no longer support the maemo/meego platform, so we can remove the
specific code for that platform.

Change-Id: Ia7f0730eba2d96794b97b7ca4753f63a2d7bc2a8
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
2014-08-06 15:48:02 +02:00
Ivan Komissarov 54ca39afec Add the QTabBar::changeCurrentOnDrag property.
This property indicates that the current tab will change whilst dragging
over the tabbar

[ChangeLog][QtWidgets][QTabBar] Added changeCurrentOnDrag property.

Change-Id: Ib7d5a7613c9cd8432b84c523f66c02cd6c3c3c81
Reviewed-by: David Faure <david.faure@kdab.com>
2014-08-06 15:19:22 +02:00
Marc Mutz e3e2e68774 Micro-optimize QProgressDialogPrivate::ensureSizeIsAtLeastSizeHint()
QWidget::isVisible() is an inline call, but sizeHint() is a virtual function.
Use QSize operations to call each one only once.

Also reduces the number of q-> qualifications needed.

It must be noted that this change is not entirely behavior-preserving:
If sizeHint() returns a negative component, and the dialog is not
visible, resize() will be called with that negative component now,
instead of zero as was the case previously.

I believe this is not a problem, because the way sizeHint() is currently
implemented, the width cannot be less than 200 and for the height to be
negative, the sum of label, bar and button size hint height would need
to be negative, which is next to impossible.

Change-Id: Ie8ba110e193532921eb4732a0393a377e38d7f7e
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-08-06 14:56:51 +02:00
Marc Mutz f74566e08b QProgressDialog: Extract Method QProgressDialogPrivate::ensureSizeIsAtLeastSizeHint()
The code was used in five different places, time to centralize.

Change-Id: I32338bdae247169a180f59314c50a9b855cae5f0
Reviewed-by: David Faure <david.faure@kdab.com>
2014-08-06 14:56:36 +02:00
Marc Mutz 869a8f51b1 QProgressDialog: Extract Method QProgressDialogPrivate::adoptChildWidget()
The same code was used in three methods. Collect it in one place.

Change-Id: I0e3bf14474590eb99e94d240aad8158fd8fbe033
Reviewed-by: David Faure <david.faure@kdab.com>
2014-08-06 14:56:20 +02:00
Marc Mutz 18bb58a5a6 QProgressDialog: fix setBar() not properly adopting the new QProgressBar
The "adoption" code is taken from setLabel().

Task-number: QTBUG-40503
Change-Id: Id512b28eb756b4a80e5701e599e2cbdf5346ff62
Reviewed-by: David Faure <david.faure@kdab.com>
2014-08-06 14:55:36 +02:00
Laszlo Agocs 53b781cb12 Document the destroy/create behavior of QOpenGLContext::create()
This is not obvious since in some other classes with similar design subsequent
create() calls are ignored. In some others it results in a warning. In case of
QOpenGLContext it leads to recreating. Therefore it must be documented.

Change-Id: I16efa73ebae15b3ffc26832d8d5cc2cd5d0ed469
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-06 14:37:13 +02:00
Laszlo Agocs ed9d1ef082 Add missing devicePixelRatio multiplication in QOpenGLWidget size checks
Change-Id: I142cbe536f90eca242d08b34e5f9042076525c7b
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-06 14:37:05 +02:00
Jędrzej Nowacki 1fceabe8c7 Implement QStringRef::split
[ChangeLog][QtCore] Added the QStringRef::split() function

Change-Id: I28709c9761785dea7be4e7d621ecf4e1ae007a72
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-08-06 14:04:40 +02:00
Friedemann Kleint fc16dcce9d Restrict tooltips triggered by mouse move events to widget area.
Tooltips may occur outside the widget area when it has mouse grab.

Task-number: QTBUG-40261
Change-Id: I68c1e28ad264fc5aaeb7d96273342f1d4bca8ce6
Reviewed-by: David Faure <david.faure@kdab.com>
2014-08-06 14:03:01 +02:00
Friedemann Kleint 07bbc4da32 Windows: Refactor QWindowsDragCursorWindow().
QWindowsDragCursorWindow is a helper window used to display the drag
cursor when doing DnD by touch, in which case Windows hides the mouse
cursor. Base it on QRasterWindow and fix the size calculation for
device pixel ratio scaling.

Task-number: QTBUG-38858
Task-number: QTBUG-38993
Change-Id: I462ece3e5c8fe8be914e039ba391a28a77e0d771
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-08-06 14:00:35 +02:00
Marc Mutz de8a9dee5a QPalette: add move constructor
As with many other implicitly shared classes, efficient move semantics
requires setting the d-pointer to nullptr, which then needs to be checked
for in the dtor and the copy assignment operator.

Change-Id: I654d181a1dfdd9a16e2f9fb96b57475cdd0b4561
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-06 13:52:24 +02:00
Thiago Macieira fa31f9761a Make sure that QPixelFormat is constexpr
by declaring the array of formats constexpr too.

Change-Id: I5c8e23ef9dc0fcac9c246f48dbee24c390d4583c
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-08-06 13:20:03 +02:00
Jerome Pasion 77b40ab79b Doc: Placed Qt OpenGL class convention in code block.
-QDoc tried to autolink where it should not.
-The syntax looks much better in a code block than in a paragraph.

Change-Id: I21d08cbb1537186d09b52898d7b70a5c0794256c
Task-number: QTBUG-35019
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-06 12:55:51 +02:00
Peter Kümmel 4124cd159e Undo: Fix state entry bug for parallel state groups
This commit reverts c4cef6fae9.
The above fix for QTBUG-25958 (cloned in QTBUG-40219) is not
complete and introduces the regression QTBUG-30049.

Task-number: QTBUG-30049, QTBUG-25958, QTBUG-40219
Change-Id: I3c4b774dce06c13cb4e089f8413a7747cedfd212
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-08-06 07:21:18 +02:00
Friedemann Kleint 088e9bbb4b QHeaderView::restoreState(): Add sanity check.
Read data into local variables and apply only after a check.

Task-number: QTBUG-40462
Change-Id: Id06060d0d5b0eafc2d303526a86d552ff5747a72
Reviewed-by: David Faure <david.faure@kdab.com>
2014-08-06 06:28:39 +02:00
Laszlo Agocs bde755558c Do not add QOffscreenSurface windows to the global list
QOffscreenSurface has to stay usable even after returning from app.exec().
Hence close()ing the underlying hidden window, that is used on platforms that
do not provide real offscreen surfaces, is wrong.

Normally all QWindows are closed (and thus destroy()'ed) when quitting the application,
meaning the the offscreen surface cannot be made current anymore after returning
from exec(). This is an unnecessary limitation and makes certain cleanup operations
impossible.

Backport of ba79f36cb1 from dev. This is necessary for
the 5.3 series too to avoid issues on exit in QQickWidget apps, on OS X in particular.

Task-number: QTBUG-40505
Task-number: QTBUG-39908
Change-Id: Iea1489378a18f29ff84ba8f13a6dad2d66d2b315
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-05 22:01:51 +02:00
Thiago Macieira 11bbacf194 Remove the last remnants of iWMMXt in Qt
This code hasn't been tested for at least 4 years. It's not maintained
and probably doesn't work.

Change-Id: I4b9a5179e34111b400914f91caa6b741b69771bb
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-08-05 19:23:31 +02:00
Thiago Macieira 9c22b5c30a Doc: normalize the {to,from}WCharArray text about encodings
Properly capitalize the names UTF-16 and UCS-4 and make sure we talk
about UTF-16 and not UCS-2. UCS-2 is not the same and does not support
surrogate pairs.

Task-number: QTBUG-35287
Change-Id: If33270996bacc9ae5d04c87423fa1ee9ddaff230
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-08-05 19:23:29 +02:00
Thiago Macieira 986230eef9 Add a few missing Neon constructs
The #undef in qcompilerdetection.h was missing.

And apparently we can detect Neon since Windows Mobile 6 too.

Change-Id: I38a5f71b2704a29a706183e39f43db3a78a729db
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-08-05 19:22:52 +02:00
David Faure cd33318025 QFileDialog: turn workingDirectory into a QUrl
In order to make this work better with remote URLs.

Change-Id: Ic440735142441150838b05e88940adcc12a90d09
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-08-05 18:10:05 +02:00
Marc Mutz a86f2d4083 QPixelFormat: have field 'unused' have the correct number of bits
4+6*6+3*1+4+2+6+8 = 63, not 64, so make 'unused' have 9 bits width.

Change-Id: I06e66074a09e93538fac01182c5a0d009d9b6583
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-08-05 18:05:25 +02:00
Marc Mutz fe01a3bea6 QPixelFormat: make data fields private instead of protected
The convenience subclasses use the QPixelFormat ctor, not the data fields directly.

Change-Id: I011299837cfb3b7006bc8425848989e5739b6082
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-08-05 18:05:17 +02:00
Marc Mutz 559a72e4b6 QtConcurrent::run: allow to select the thread pool on which to run the task
This is the second and last part of the forward-port of
https://qt.gitorious.org/qt/qt/merge_requests/1281

[ChangeLog][QtConcurrent] run() now optionally takes as its first argument
the QThreadPool to run the task on.

Task-number: QTBUG-17220
Change-Id: I4b46eca6ef7de9cd34dac07e6d4b8ad830426b97
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-05 18:05:04 +02:00
Marc Mutz c55aec2ed7 QFutureInterface: allow to work with a QThreadPool != globalInstance()
Background:
It is often necessary/advisable to schedule tasks on thread pools !=
globalInstance(). As Herb Sutter writes in
http://www.drdobbs.com/parallel/use-thread-pools-correctly-keep-tasks-sh/216500409
and the Qt Training Material stresses, tasks you schedule on a (global)
thread pool should be non-blocking, which currently rules out using any of
the QtConcurrent functions for, say, file I/O.

Nonetheless it's often convenient to have thread pools also for file I/O, as
the thumbnail viewer exercise in the Qt Training Material shows. In this
case, you'd use a dedicated thead pool, leaving the global thread pool for
CPU-bound tasks.

Yet, none of the QtConcurrent functions allow to pick the QThreadPool
instance on which to schedule the work created with them.

This patch prepares for them to do so.

This is the first part of the forward-port of
https://qt.gitorious.org/qt/qt/merge_requests/1281.

Implement by using a new QThreadPool* member that defaults to nullptr,
and adding setThreadPool to set this member, then using it in lieu of
QThreadPool::globalInstance() everywhere.

I chose to leave m_pool == nullptr to mean globalInstance() to avoid
creating the global instance whenever a QFuture is created, even if the
future represents the result of a calculation not run on the global thread
pool.

[ChangeLog][QtCore][QFuture] Can now be used with any QThreadPool, not
just globalInstance().

Task-number: QTBUG-17220
Change-Id: I4e1dc18d55cf60141b2fa3d14e2d44a3e9e74858
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-05 18:04:56 +02:00
Gabriel de Dietrich a258ac8feb Android: Extract assets for 'listSeparatorTextViewStyle'
These are used in Qt Quick Control's TableViewStyle.headerDelegate.

Change-Id: I2d87896b9987b86e30123b34872f9322d304a190
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-08-05 17:38:25 +02:00
David Fries 3a347a4e70 OpenGL: destroy QGLContext allocated by QGLContext::fromOpenGLContext
QGLContext already uses ownContext to identify when it "owns" QOpenGLContext
and will delete QOpenGLContext when needed.  In the other way
QGLContext::fromOpenGLContext creates a QGLContext for QOpenGLContext, and is
now using qGLContextDeleteFunction to identify if QOpenGLContext "owns"
QGLContext by QGLContext only passing a delete function when QOpenGLContext
should delete QGLContext, and by QOpenGLContext calling deleteQGLContext() from
destory() to do the destruction avoiding the previous leak and sometimes crash
on exit.

Change-Id: I65e791776e99b456e4d0c70fc5b5cdb33c975893
Task-number: QTBUG-40286
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-08-05 17:30:03 +02:00
Ivan Komissarov c0ba249a48 Add SubType setters/getters and SupportedSubTypes option.
SubType can be used to determine an internal format of an image such as
pixel format and/or compression algorithms.

Change-Id: Icf296d54bb509e4e2bdb70544df678fc53f57c79
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-05 17:23:12 +02:00
Richard Moe Gustavsen 5097e31030 QPlatformMenu: add MenuType enum
On mobile platforms several different popup menu types exist.
E.g on iOS, you have a special popup just for selecting text.
This patch will add a new enum that lets UI controls select/hint
which one to use for a particular QPlatformMenu. It's likely
that the enum needs to be extended later (DropdownMenu, PopoverMenu
etc), but being able to specify the edit menu at least will do for now.

Change-Id: I2aefa5eedb9429921560ac2b778a88721f153459
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
2014-08-05 17:00:45 +02:00
Shawn Rutledge d7fea8e5d2 Improve qDebug output for QTabletEvent
Change-Id: Ic2819eaa5ed0e3666062f00994b72dee0b2cba66
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-08-05 17:00:45 +02:00
Olivier Goffart 27b67c5399 Logging: use the known function when the first frame of the backtrace is unknown
Change-Id: Ia591805c82e7bf77dc7af04f1054c7daca58eb6a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-05 16:52:34 +02:00
Fredrik Höglund decb88693c Make it possible to capture GLXBufferSwapComplete events
DRI2 clients don't receive GLXBufferSwapComplete events on the wire.
Instead the event is synthesized by the DRI2 WireToEvent handler,
so for an application to be able to see it we have to convert the
synthetic event to an xcb_glx_buffer_swap_complete_event_t and pass
it to the native event filter.

Change-Id: Ic466ff26487937b03f072a57e0ee4df335492a5f
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-08-05 16:50:48 +02:00
Laszlo Agocs 68c9a2f82d Enhance QOpenGLWidget docs about resource management
Change-Id: Idd1181a34055237b13643dbc58e855db411d0a7c
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-05 16:47:59 +02:00
Laszlo Agocs 34fbc61f22 Introduce QRasterWindow
A simple convenience class providing a QWindow that has a
paintEvent and supports opening a painter on itself. It
behaves exactly like QOpenGLWindow in this respect, which is not
surprising since they share the same base class (QPaintDeviceWindow).

QRasterWindow does not however have any OpenGL dependencies and will
be present in -no-opengl builds too.

[ChangeLog] Added QRasterWindow, a thin convenience wrapper for a
QWindow on which a QPainter can be opened.

Done-with: Jorgen Lind <jorgen.lind@digia.com>
Change-Id: I37e82720492945d7b85d5f713eea8d5f7556e511
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
2014-08-05 16:47:42 +02:00
Laszlo Agocs e48737ae77 Introduce QOpenGLWindow
[ChangeLog] Added QOpenGLWindow. This serves as a convenience class for
creating windows showing OpenGL content via an API similar to QGLWidget
and without any widget dependencies.

Done-with: Jorgen Lind <jorgen.lind@digia.com>
Task-number: QTBUG-36899
Change-Id: I52e9bc61acb129dbfd3841b3adeffab2dbcf7f05
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-05 16:47:37 +02:00
Frederik Gladhorn b53e08e335 Merge "Merge remote-tracking branch 'origin/5.3' into dev" into refs/staging/dev 2014-08-05 16:47:13 +02:00
Andrew Knight c48484ea6d winrt: Fix orientation update mask
On WP8.0, setting auto rotation preferences at runtime worked like an
orientation update mask, and did not modify the behavior of the window.
With WP8.1, setting auto rotation preferences has the side effect that the
compositor will then resize the window when moving from e.g. portrait to
landscape. Because of this, the auto rotation API should not be called
inside orientationUpdateMask(). The default implementation is now
sufficient, so the platform override is removed.

Developers looking to set auto rotation preferences should use the
application manifest or call the native api directly.

Task-number: QTBUG-35953
Change-Id: I90cf4290ced34df1bb350cb6aa5deff209622865
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-08-05 16:44:18 +02:00
Andrew Knight a93bfc1ebe Remove d3dcompiler_qt
This library was created as a work around for limitations on Windows
Phone 8.0, which will not be supported going forward (Qt 5.4). Therefore,
we no longer need (or want to maintain) this experimental feature and
should remove it from the repository.

Change-Id: Ia417833f9de43e2d3e0940df93625e7d87a555ea
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-08-05 16:44:13 +02:00
Andrew Knight 1e72704d88 winrt: Fix EGL context getProcAddress()
As ANGLE doesn't resolve non-extension functions, these need to be
resolved manually.

Change-Id: I0fe45005f662f7d7f2b53c09ef129efd65fb999a
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-08-05 16:44:07 +02:00
Jochen Seemann fcb8dc0cb9 WinRT: Fix physical size of screen
Currently, the physical size of the screen is calculated with the
logicalSize and the logicalDpi of the screen. This doesn't work because
logicalDpi has a user-defined multiplier and a strange value.
The easiest and accuratest way is to take the raw dpi of the axis and
the raw pixel size (logicalSize*scaleFactor).
This all is needed for a correct value
of Screen.pixelDensity in QtQuick.

Change-Id: I8be0139d762364140043c3fa0d203298ca7ef293
Reviewed-by: Jochen Seemann <seemann.jochen@gmail.com>
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
2014-08-05 16:43:52 +02:00
Andrew Knight 42f681ea8d winrt: Use physical window resolution
This partially reverts eea02ff1 in that devicePixelRatio() will now
always return 1. This is because non-integer ratios are bound to cause
problems with pixel alignments, and their use prevents users from
accessing the complete pixel grid in Qt Quick. Now, the full physical
resolution of the screen/window is reported instead.

The EGL initialization is adjusted to match requirements for ANGLE 2.1.

Change-Id: I24c6dcf4419f30e5e4c73c592beb446a418a0b8b
Reviewed-by: Jochen Seemann <seemann.jochen@gmail.com>
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
2014-08-05 16:43:38 +02:00
Andrew Knight 093e179b71 ANGLE: Add support for querying platform device
The EGL_EXT_device_base extension allows for querying the platform
device of the graphics hardware via eglQueryDisplayAttribEXT().
As that extension is not supported by ANGLE, this patch adds similar
functionality to the existing eglQuerySurfacePointerANGLE API. When
EGL_DEVICE_EXT is passed as the queried attribute, the underlying
D3D/DXGI device pointer is passed back to the caller via the value
argument.

The D3D device is needed for video support in QtMultimedia as well as
the IDXGIDevice3::Trim() calls required by the Windows Store.

Change-Id: Ibdf228d81d6604e56db9dd8597d7cd2983ebc428
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-08-05 16:43:34 +02:00
Andrew Knight a6a12d8c0f ANGLE: upgrade to 2.1~07d49ef5350a
This version of ANGLE provides partial ES3 support, numerous
bug fixes, and several potentially useful vendor extensions.

All patches have been rebased. The following changes are noted:

0000-General-fixes-for-ANGLE-2.1.patch
  contains compile fixes for the new ANGLE

0004-Make-it-possible-to-link-ANGLE-statically-for-single.patch
  has incorporated patch 0015.

0007-Make-DX9-DX11-mutually-exclusive.patch
  has been removed as it was fixed upstream.

0007-Fix-ANGLE-build-with-Microsoft-Visual-Studio-14-CTP.patch
  has been moved up to fill the patch number gap.

0010-ANGLE-Enable-D3D11-for-feature-level-9-cards.patch
  now contains patch 0014 and 0017.

0013-ANGLE-Allow-for-universal-program-binaries.patch
  has been removed as it is no longer relevant.

0014-ANGLE-D3D11-Fix-internal-index-buffer-for-level-9-ha.patch
  has been merged with patch 0010.

0015-ANGLE-Don-t-export-DLLMain-functions-for-static-buil.patch
  has been merged with patch 0004.

0016-ANGLE-WinRT-Call-Trim-when-application-suspends.patch
  has been removed and will be replaced by a follow-up patch using a
  different technique.

0017-ANGLE-D3D11-Don-t-use-mipmaps-in-level-9-textures.patch
  has been merged with patch 0010.

0018-ANGLE-WinRT-Create-swap-chain-using-physical-resolut.patch
  has been removed and will be replaced by a follow-up patch extending
  the EGL_ANGLE_window_fixed_size extension.

0019-Fix-ANGLE-build-with-Microsoft-Visual-Studio-14-CTP.patch
  is now patch 0007.

[ChangeLog][Third-party libraries] ANGLE has been upgraded to
version 2.1, bringing partial support for OpenGL ES3 over
Direct3D 11, numerous bug fixes, and several new vendor extensions.

Change-Id: I6d95ce1480462d67228d83c1e5c74a1706b5b21c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-08-05 16:43:22 +02:00
Friedemann Kleint 14f9c09542 Rewrite debug output of event classes.
- Introduce functions to return class name and type name by type.
- Move QDebugStateSaver up.
- Add verbose output for DnD, tablet, native gestures,  context
  menu, enter and expose events.

Task-number: QTBUG-38858

[ChangeLog][QtGui][QEvent] The debug output for events has
been significantly improved.

Change-Id: I3f11e34c3c9d6a3c6db596be4051b801f00e6153
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-08-05 06:35:58 +02:00
Friedemann Kleint 72037c804d Add Q_ENUMS for Qt::MouseEventSource, Qt::FocusReason.
Change-Id: Ic91b9a74d0c28ec225d2708a13aafddd1e2c32af
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-08-05 06:33:39 +02:00
Friedemann Kleint 02702dd776 QList: Fix MSVC 64bit warning about loss of data.
qlist.h(133) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data
qlist.h(131) : while compiling class template member function 'QList<QString>::QList(std::initializer_list<T>)'

Change-Id: I8a11e298cd10da199490fbd8b269405a9e1cf5f3
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-05 06:32:28 +02:00
Friedemann Kleint f6ee80912f Windows: Ensure DPI awareness is set only once.
Fix warning:

QWARN  : tst_QGuiApplication::execAfterExit() SetProcessDpiAwareness failed: "COM error 0xffffffff80070005  (Unknown error 0x0ffffffff80070005)"

occurring when instantiating QGuiApplication repeatedly in tests.

Task-number: QTBUG-38993
Change-Id: Id6c8e915b25011bb60c2f8b1d0e4a794cd345647
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2014-08-05 06:31:50 +02:00
Oswald Buddenhagen 85011b82f0 fix paths in installed qtmain.prl
simply make use of the infrastructure used for "proper" modules.

Task-number: QTBUG-40026
Change-Id: Iffab72f7fb7a128549da2839a7497cff2f48b777
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2014-08-04 18:35:41 +02:00
Friedemann Kleint 501fe9f939 Implement focus change for Windows Input context.
Keep track of the focus object in the input context ensuring
that events on canceling are sent to the right object.

Task-number: QTBUG-40402
Change-Id: I79820db94d97e21b47abc8fe2bae6fa012d31236
Reviewed-by: Liang Qi <liang.qi@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-08-04 17:13:36 +02:00
Jocelyn Turcotte 219c2eb4e2 Rename globalShareContext to qt_gl_global_share_context
This makes it easier to forward-declare the exported symbol from
other Qt modules without having to include the private headers.

This keeps the old API until dependent submodules are updated.

Change-Id: I08310a684b79f2f612f2ce897a601ff74178bee6
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-08-04 11:00:09 +02:00
Frederik Gladhorn 0936bc54f9 Merge remote-tracking branch 'origin/5.3' into dev
Conflicts:
	config.tests/arch/arch.cpp
	src/opengl/qgl_qpa.cpp
	src/widgets/kernel/qapplication.cpp

Change-Id: I80b442a4c2c9632743a5b5c7319ff201ec5bc4fd
2014-08-04 09:51:36 +02:00
Robin Burchell 83080e8a7c QNativeSocketEngine: Add debug in createNewSocket.
If this fails, we want to know about it when trying to debug.

Change-Id: I33f05186e93fcd9284a7e7c609d00fe7ac87cd4e
Reviewed-by: Richard J. Moore <rich@kde.org>
2014-08-04 05:05:53 +02:00
Robin Burchell e9782fee8f QNativeSocketEngine: use stream-style qDebug to fix a warning about FD types.
FD types differ depending on the platform, so using the stream form is the
easiest way to make this work.

Change-Id: I00b1a303f3d865fe5e89ba97bd438c51c6cd8f09
Reviewed-by: Richard J. Moore <rich@kde.org>
2014-08-04 05:05:50 +02:00
Allan Sandfeld Jensen 7ff4621100 Add QFont strategy to disable subpixel antialiasing
This patch adds the option to disable subpixel antialiasing on QFont
basis. This can be useful when painting to offscreen surfaces. On OS X
this option disables the aggressive LCD font smoothing, which can be
necessary for certain fonts it may otherwise ruin.

Task-number: QTBUG-40396
Change-Id: I1664b636520ae63ee1503b5df7436748106b9f5c
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-08-03 16:19:24 +02:00
Marc Mutz 86789a48f7 QList: add missing reserve() call in the initializer_list ctor
Change-Id: Idc46a347009556d06db4bc1f7ce3e2613fb1a405
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-03 01:26:14 +02:00
Maurice Kalinowski 3ce554bef0 Add sqlite to Windows Phone default build
sqlite 3.8.5 supports Windows Phone 8.1. Make required
adaptations and add it to the default build.

For WinRT and Windows Phone the QSqlQueryModel unit-test
fails, both with plugin compiled and using the system
sqlite. Root cause seems to be deep inside sqlite, hoping
for a fix soon. However, all other tests pass and hence we
should enable it.

Task-number: QTBUG-37770
Change-Id: I700dde4a44a8f1d74460ef6cb4a1e1d330073d66
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-08-02 20:10:33 +02:00
Maurice Kalinowski 4354165e92 update bundled sqlite to 3.8.5.0
The "Fixed CE build of sqlite3" patch is preserved in this change.
(ea70ec8711)

Change-Id: I8ae83bdb0006ee12e371a2a6f396b4a7b798a5e3
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@digia.com>
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-08-02 20:10:22 +02:00
Allan Sandfeld Jensen 985ebe32f2 Support multimedia keys on Windows
We currently do not receive events from most multimedia keys on Windows
because they are sent using appcommand events instead of the normal key
events.

This patchs adds support for parsing appcommand events.

Change-Id: I19f568b6fa0d3d136e3a22318df1499a1fab6edb
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-08-02 03:00:38 +02:00
BogDan Vatra c0c80f14af Android: Fix exceptions in ExtractStyle.java on Android L
Android L adds support for 64 bit (arm and x86) and they did lots of
changes that are incompatible with old implementation.

Task-number: QTBUG-40120
Change-Id: I69b78a9eed896d2ddabc1bf2a55886faeae47974
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
2014-08-01 22:12:41 +02:00
Laszlo Agocs 61179c1447 Avoid calling syncWindow with already destroyed platform windows
Issuing a metacall from swapBuffers is dangerous since the window
may get destroyed by the time the slot is invoked.

This patch changes it to use an event, which is more efficient anyway,
that can be invalidated in case the QXcbWindow is destroy()'ed before
the event is delivered.

Change-Id: I44618ac1cb8b221aecce001ea39702164dcab6a5
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
Reviewed-by: Uli Schlachter <psychon@znc.in>
2014-08-01 20:42:31 +02:00
Laszlo Agocs 751a74c339 Update QOpenGLFunctions docs
Mention QOpenGLContext::functions() which is used quite commonly in Qt
itself and also some examples.

Also, make it clear that new instances do not degrade performance since
function resolving is done only once.

Change-Id: I74ac194a0b3956a70e5078dd5a1bcdd277b5cc28
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-01 20:42:26 +02:00
Laszlo Agocs e453484bca Make QOpenGLWidget public
QOpenGLWidget is now public.

In addition Qt::WA_AlwaysStackOnTop is introduced to support the
special case of semi-transparent QOpenGLWidget or QQuickWidget on
top of regular widgets.

hellogl_es2 becomes the qopenglwidget example. This example performs
painting both via QPainter and native GL commands and has the OpenGL
widget combined with other, normal widgets.

The widget stack receives some changes when it comes to renderToTexture
widgets like QQuickWidget and QOpenGLWidget. Calling update() will now
result in a paint event, which is essential for QOpenGLWidget since we
want it to behave like a regular widget. The dirty region handling is
extended specially for such widgets due to performance reasons.
(an OpenGL content update must not result in any backingstore painting,
and is thus handled as a different kind of dirtiness)

[ChangeLog] Added QOpenGLWidget. This widget serves as a replacement for QGLWidget.

Task-number: QTBUG-36899
Task-number: QTBUG-40086
Change-Id: Ibf7f82fea99b39edfffd2fc088e7e0eadbca25cf
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-08-01 17:13:59 +02:00
Allan Sandfeld Jensen 718f248a89 Fix high DPI icons in menu items
The position of high DPI icons is wrong in the Fusion style because
the pixel resolution is not taking into account when centering them.

Task-number: QTBUG-40277
Change-Id: I3593ed461ea57543c3ddfd473105fdc698789132
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-08-01 16:25:40 +02:00
Aleix Pol aca98e2f0e Remove pointless debug output
Removes some debug output that indicates that we're dealing with a dock.
It looks like somebody was testing some implementation more than useful
output information.

Change-Id: I04ebbc1f0f1d29ed2099bab9d9e9fc18c9bf0c86
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
2014-08-01 11:17:59 +02:00
Friedemann Kleint 61be664eeb Fix linking of the Direct2D platform plugin with dynamic Open GL.
Change-Id: I0a3272233de7e685c750f001eb45a5e326d0f35b
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-07-31 21:32:39 +02:00
Marc Mutz 0e7100d8c0 QTimeZone: optimize QTimeZonePrivate::isValidId()
This function is used in the named timezone ctor and was using QByteArray::split(),
followed by size checks and a linear scan for invalid chars per section. The use of
split() resulted in a lot of memory allocations and, unsurprisingly, bad performance.

The new code just performs one linear scan through the byte array, calculating
section sizes on the fly.

Benchmark results (with the test data in tst_QTimeZone::isValidId_data()) show
typical speedups of ~10x for valid IDs:

   RESULT : tst_QTimeZone::isValidId_bench():"minimal middle":
  -     0.00036 msecs per iteration (total: 95, iterations: 262144)
  +     0.000035 msecs per iteration (total: 74, iterations: 2097152)

Even in the sweet-spot case of the old code---a space character anywhere in the
string, checked for before the split---the new code is anywhere between slightly
faster and not much slower:

   RESULT : tst_QTimeZone::isValidId_bench():"invalid char ' ' front":
  -     0.000011 msecs per iteration (total: 94, iterations: 8388608)
  +     0.000010 msecs per iteration (total: 86, iterations: 8388608)
   RESULT : tst_QTimeZone::isValidId_bench():"invalid char ' ' middle":
  -     0.000014 msecs per iteration (total: 62, iterations: 4194304)
  +     0.000016 msecs per iteration (total: 69, iterations: 4194304)
   RESULT : tst_QTimeZone::isValidId_bench():"invalid char ' ' back":
  -     0.000018 msecs per iteration (total: 79, iterations: 4194304)
  +     0.000023 msecs per iteration (total: 98, iterations: 4194304)

This is not surprising, as the space character was singled out for a fast-exit
check before. For any other invalid character, the new version is anywhere from
15x to 35x faster:

   RESULT : tst_QTimeZone::isValidId_bench():"invalid char ? front":
  -     0.00034 msecs per iteration (total: 91, iterations: 262144)
  +     0.000010 msecs per iteration (total: 87, iterations: 8388608)
   RESULT : tst_QTimeZone::isValidId_bench():"invalid char ? middle":
  -     0.00036 msecs per iteration (total: 96, iterations: 262144)
  +     0.000016 msecs per iteration (total: 68, iterations: 4194304)
   RESULT : tst_QTimeZone::isValidId_bench():"invalid char ? back":
  -     0.00035 msecs per iteration (total: 94, iterations: 262144)
  +     0.000021 msecs per iteration (total: 92, iterations: 4194304)

If there was a deeper reason to single out the space character, that fast-exit
path can easily be restored.

This function is often used in conjunction with availableTimeZoneIds(), which
currently vastly dominates the runtime of the function calling both, but I'll
add another optimization for the common use-case of just checking for a time-zone's
existence in a subsequent commit.

Change-Id: Ife1d096fcd39464083ea464c23e49ad98fabf345
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-07-31 21:05:20 +02:00
Allan Sandfeld Jensen d8dc664b94 Ensure valid data after QImage::invertPixels
QImage::invertPixels may produce invalid data after inversions of
images with premultiplied alpha, because the inverted colors will be
larger than the alpha.

This patch converts any image with a premultiplied alpha channel to
ARGB32 before inverting the pixels, and then back to the original
format after the inversion.

Support is added for correct inversion of RGBA8888 and RGB30 formats.

Task-number: QTBUG-39901
Change-Id: Ief24c55f495e67ef2ad6429b5b418d02963a64dd
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-07-31 20:16:09 +02:00
BogDan Vatra 1852ece715 Android: Cleanup androidjnimain.cpp/.h files
Remove unused includes
Remove unused static vars
use Q_NULLPTR insead of 0 or NULL

Change-Id: Id8c99c83c64425c9725e441108010f3821bd3b44
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-07-31 19:21:21 +02:00
BogDan Vatra 80c6f00efa Android: Fix expose region.
It seems that the second parameter of handleExposeEvent function is
about the region inside the window, not its position on the screen.

Change-Id: I89f5b2b13c9b0993253542823a84547d6a994c31
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-07-31 19:20:57 +02:00
BogDan Vatra 96f0ff4f28 Android: Release all windows when the application is suspended.
When an application is suspended on Android all its Gl surfaces
are destroyed and can't be used to render anymore, so we should
release them in order to give back to the system the memory used
by them.

[ChangeLog] [Android] Release all windows when the application is
suspended.

Task-number: QTBUG-29069
Change-Id: I038aaa2006da1f3188fccba943ec4ffb3e551cf0
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2014-07-31 19:20:42 +02:00
BogDan Vatra 734c126826 Android: Really suspend apps that are put in the background
The main event loop will be paused when an application is suspended,
this is also the normal behavior of any Android application. When an
application is suspended on Android all its Gl surfaces are destroyed
and can't be used to render anymore. So, we need to pause the main
event loop in order to pause all the timers which might trigger
drawings. The event loop is resumed immediately after the application
is foreground. AndroidManifest.xml contains more info about how to
disable this behavior and what might happen if you do it.

[ChangeLog][Android][Important Behavior Changes] The main event loop is
now stopped when the app is suspended

Task-number: QTBUG-36274
Change-Id: I4c0ba5df9d95f348bca67ea5c76865d6d20775e4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-07-31 19:20:28 +02:00
Thiago Macieira 7f9398fd4d Add ascii_isspace to replace the locale-dependent isspace(3)
Change-Id: Icee42515179e6f3ddefe0692af69e90054449618
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-07-31 18:51:40 +02:00
Oswald Buddenhagen a5cf862f61 Merge "Merge remote-tracking branch 'origin/stable' into 5.3" into refs/staging/5.3 2014-07-31 17:29:06 +02:00
Rainer Keller c0429719c1 Add missing power button keycode to keymap
Change-Id: I03682716aaea8344ebb5b71dcea5fe18babcd610
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-07-31 14:24:01 +02:00
Sérgio Martins 291c6615a3 cocoa: Fix compiler warnings about unused functions.
Change-Id: Id85c86dd2f2468b3ac17751aefdebe0e8666a0c0
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2014-07-31 13:40:34 +02:00
Laszlo Agocs 07e1f524f3 Propagate swapInterval to QGLFormat
Task-number: QTBUG-39370
Change-Id: Ib3a46a0ae24e5f6d690625b1d91be9e599bbc927
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-07-31 12:51:49 +02:00
Laszlo Agocs 429beecb19 Fix double clicks in eglfs
The window can be null in the qpa event. This is indicated by the nullWindow
field to be able to differentiate between a dead window and a genuinely
null input.

[ChangeLog] Double click events are now sent correctly on eglfs.

Task-number: QTBUG-40146
Change-Id: I63c8d08e0dec217b929161d2e827e0c273b4dd3e
Reviewed-by: Will Wagner <willw@carallon.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-07-31 12:32:51 +02:00
Shawn Rutledge b48febd568 OS X: correct tablet stylus rotation to range -180..180 degrees
When the user holds the Wacom Art Pen straight, rotation is zero;
when turning it counter-clockwise, it should have a negative angle,
whereas the driver sends a positive angle;
when turning it clockwise it should have a positive angle up to 180,
whereas the driver sends 360 going downwards towards 180.
These corrections make the angle reading consistent between Linux,
Windows and OS X.

Task-number: QTBUG-39570
Change-Id: I7a57cc1fb56d4f7128ca1add10aff2597f29c507
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
2014-07-31 12:21:19 +02:00
Shawn Rutledge 9a096cba22 OS X: add buttons to tablet events
Task-number: QTBUG-39458
Change-Id: I112107e392bf3b55771039b72271fdf887e2e5db
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
2014-07-31 12:21:08 +02:00
Shawn Rutledge 6c1a12c558 OS X: correct tablet airbrush tangentialPressure to range -1..1
The driver sends values in the range 0..1, but we want the "center"
value to be 0.  This correction makes tangentialPressure consistent
between Linux, Windows and OS X.

Task-number: QTBUG-40469
Change-Id: Ia4aa777efdf015c2802b945f6ca7a8e442bbf5fc
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
2014-07-31 12:20:22 +02:00
Friedemann Kleint b5ce3d504c Windows plugin: Refactor input context.
- Use static invocation of QGuiApplication accessor.
- Use QInputMethod::queryFocusObject().

Task-number: QTBUG-40402
Change-Id: Ic1a7f66389df532acca88ddda37d35d6e7049a53
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-07-31 09:03:26 +02:00
Jędrzej Nowacki 2eea6034bc Micro-optimize QXmlStreamReaderPrivate.
Avoid redundant QStringRef to QString conversions.

Change-Id: I4a65119e7821206e2f72387a5d02cec5ce39dbfb
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-07-31 08:50:42 +02:00
Jędrzej Nowacki f5c3126201 Add QString::splitRef functions.
The functions can be used to optimize code that do not need to use
the split results as QString directly.

[ChangeLog][QtCore] QString can now split a string to a list of
QStringRef.

Change-Id: Ic2dc929e1fba82f9a060e37c51068a301cb5b866
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-07-31 08:50:22 +02:00
Jędrzej Nowacki b80c449c2d Micro-optimize uic
Avoid redundant QStringRef to QString conversion.

Change-Id: I93c4f19798e81515f483371f0cc6fcccc7fe36c7
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-07-31 08:49:41 +02:00
Jędrzej Nowacki ac38fa541b Micro-optimize qdoc
Avoid redundant QStringRef to QString conversions.

Change-Id: I535e7ba02b4ac5abef6036f631e228205e63f32a
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-07-31 08:49:31 +02:00
Thiago Macieira 2ef10d8473 Doc: update the list of typical values for xxxCpuArchitecture
If we wanted to make the list exhaustive for buildCpuArchitecture, we'd
add alpha, avr32, bfin, s390(x), and sh. I don't want to make it
exhaustive because that's cluttering the documentation and we'd have to
keep in sync with archdetect.cpp. And we can't make
currentCpuArchitecture exhaustive, since it depends on the output from
uname(2).

You can argue that neither IA-64, POWER, nor SPARC architectures are
typical these days...

Change-Id: I0a5310770947263e1bafd9443ea59420813c51a8
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
2014-07-31 03:23:16 +02:00
Thiago Macieira b5d5d06353 Attempt to add support for Solaris sysinfo call
Totally untested.

Change-Id: I2c2347a66cb3fcb71d97782090ac628bef0b247f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-07-31 03:23:12 +02:00
Thiago Macieira 01cce12820 Use an enum to check that the OS is saving the register state
It's easier to read AVXState and AVX512State than 6 and 0xe6.

Also add a note that where we should have checked whether the SSE state
is being saved by the OS. However, we won't do it because it's just a
waste of CPU cycles: any OS Qt 5 runs on will enable the proper
state-saving.

Change-Id: Id87b59fe1388a6cab983c9412341e36a86dd15c5
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-07-31 00:52:35 +02:00
Marc Mutz c7386938b4 QProgressDialog: make the cancel button retranslate on LanguageChange
It is documented to be, and the LanguageChange event is caught and processed.
However, retranslateStrings() uses QProgressDialog::setCancelButtonText(),
which unconditionally sets useDefaultCancelText=true, blocking any further
changes to the button text by subsequent LanguageChange events.

The fix is to use extracted QProgressDialogPrivate::setCancelButtonText()
which - quite intentionally - doesn't set useDefaultCancelText.

Task-number: QTBUG-40504
Change-Id: I6e701deda10c454cb088c0b0778ac2d6adff574a
Reviewed-by: David Faure <david.faure@kdab.com>
2014-07-30 23:41:01 +02:00
Marc Mutz ab79a8a76c QProgressDialog: Extract Method QProgressDialogPrivate::setCancelButtonText()
This is in preparation of a fix for the broken online-retranslatability of
the cancel button.

Change-Id: Ie62540766e50e1f1ec07d251cc56a2ee0745d434
Reviewed-by: David Faure <david.faure@kdab.com>
2014-07-30 23:40:34 +02:00
Marc Mutz e2331c6f76 QProgressDialog: don't crash when setting the same {bar,button,label} again
The associated test has unearthed that setBar() fails to make the new bar a child
of the progress dialog. This will be fixed in a separate commit.

Task-number: QTBUG-40502
Change-Id: I2d09ebb07ae6395449a4efe38a638df831eebdd7
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: David Faure <david.faure@kdab.com>
2014-07-30 23:39:24 +02:00
Andras Becsi f16baae9d8 Add EglDisplay case to nativeResourceForContext on eglfs
This is needed to make it possible to use the same interface for
retrieving the EGLDisplay on Windows and EGLFS, thus get rid of
cluttering ifdefs.

Change-Id: I37b848b1017eacbf8a29627cd157b74e22e5f40c
Reviewed-by: Michael Bruning <michael.bruning@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-07-30 22:31:09 +02:00
Andras Becsi 00b63b18ce Allow lower case resource names in native interface on Windows
The native interface implementation in QEGLPlatformIntegration
lower-cases the resource key strings, where as in the Windows
implementation we currently only check for camel-case resource
names to retriece the same resources.
Make it possible to use lower-case strings on Windows as well
by using the same key look-up mechanism as used in the eglfs
implementation.

Change-Id: Id2a594310df610cadbe420409c090f0abb316474
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-07-30 22:30:50 +02:00
Frederik Gladhorn 4010cfbf2d Merge "Merge remote-tracking branch 'origin/5.3' into dev" into refs/staging/dev 2014-07-30 22:52:15 +02:00
Frederik Gladhorn d71f9d8c05 Accessibility: Top level widgets should only be in the hierarchy once
On Linux for example Orca gets confused when showing a dialog that is a
child of another widget since it would show up twice in the hierarchy.

Task-number: QTBUG-39444
Change-Id: I84773ecc3d6774a652dbeb29ad201779f5b3191c
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-07-30 20:52:41 +02:00
Frederik Gladhorn d448725403 Accessibility Linux: Also send meta key as modifier
Change-Id: I0b33bf3d6ad468176e7c7e5a71b3bcba966ffd9f
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-07-30 20:52:33 +02:00
Marc Mutz 22c96b07c1 Fix documented default value of QProgressDialog::maximum
Seems to have been a cut'n'paste from 'minimum'.

Change-Id: Ifc3a4441809a9fc75ecac621cff59950235f6bc7
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: David Faure <david.faure@kdab.com>
2014-07-30 20:27:32 +02:00
Allan Sandfeld Jensen d702ba20e5 Support RGB30 formats in OpenGL framebuffers and paint engine
This patch adds support for binding RGB30 images as textures, and as
internal format of framebuffer objects. Together with the
QOpenGLPaintDevice
this provides support for rendering to and from RGB30 in full precision.

[ChangeLog][QtGui][QOpenGLFramebufferObject] Support 10-bit per color
channels formats as the internal framebuffer format, making it possible
to render in that precision.

Change-Id: I06de2d12dfe1c1adc466d574fdffbc77f88f4f16
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-07-30 20:03:09 +02:00
Tor Arne Vestbø 0437e1cef6 Use runtime check instead of ifdef to detect ES3 in QVertexArrayObjectHelper
The code path in QOpenGLVertexArrayObjectPrivate::create() that triggers
the creation of a QVertexArrayObjectHelper is guarded by runtime checks
for ES3 or the GL_OES_vertex_array_object extension, but the actual
function lookup was ifdef'ed, which broke on iOS where the SDK may
support ES3, but an older (supported) runtime target might not.

Change-Id: Id578667c1f5aebf53e197f3a79eb2f9273fea487
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-07-30 20:01:52 +02:00
Giuseppe D'Angelo 12867bb8e2 QOpenGLVAO: refactor the helper class and export it
It is useful in other places, for instance in QtQuick, to avoid
duplicating the same resolver logic.

Change-Id: I9748a420a0abeb07cc84f948965b1e0321a95ca2
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-07-30 20:01:49 +02:00
Thiago Macieira 7616586691 Don't parse /etc/os-release every time we need to do uname(2)
This is just an optimization of the code: instead of opening and parsing
/etc/os-release every time QSysInfo::kernelType() is called on Linux, do
that only in QSysInfo::productType() and productVersion().

Change-Id: I201504934ecf7a51854cb49c790bd9d30eba644b
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-07-30 19:48:41 +02:00
Thiago Macieira 5d11688d02 Fix QByteArray::to{Upper,Lower} when the array contains embedded nulls
[ChangeLog][QtCore][QByteArray] Fixed a bug that would cause QByteArray
to stop converting toUpper or toLower at the first embedded null
character.

Change-Id: Ia369037206617813d86a8f1489589243c82aa51b
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-07-30 19:48:41 +02:00
Thiago Macieira 5aacc43e64 Rework of QSysInfo OS and kernel version functions
This patch splits the OS product from the kernel name and versions.
Previously, it was a little confusing.

Thus, osType is split in two: kernelType() always returns the kernel
type, which includes "linux" for Android, "darwin" for iOS and OS X,
"qnx" for BlackBerry, and "windows" for all the Windows OSes. The Linux
distribution name and the visible product names are found in
productType(), with the respective versions in productVersion().

For an update system, applications probably want to send all four
tokens:
 - for Android, BlackBerry, iOS, OS X and Windows, the relevant
   information is productType and productVersion
 - for Linux distributions, in addition to productType and
   productVersion, the kernelType ("linux") is useful as a fallback and
   it's important for Debian/kFreeBSD and Debian/GNU
 - for other Unix systems, the relevant information is kernelType and
   kernelVersion

Change-Id: I66c36d5a4ddfad47babfc6744d752273705e7076
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-07-30 19:43:15 +02:00
Thiago Macieira 4da120192e Add QSysInfo::currentCpuArchitecture()
buildCpuArchitecture() returns the CPU Qt was built for, while this
function returns the CPU that Qt is running on -- if the OS was kind
enough to tell us.

Change-Id: Ib27937e3ff028cb500d263c4921ef00d3a567715
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-07-30 19:42:55 +02:00
BogDan Vatra a64da3fbd2 Cache the parsed drawables.
Change-Id: I4a386c644505ac84a5ddd15a898c3e9c58e682b3
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
2014-07-30 16:32:22 +02:00
Kai Koehne 5b0be0c217 QDebug: Improve QDebug stream operator for QFlags
Use the built-in hex, showbase manipulator to format the number in
hex. Also, apply nospace() only once.

Change-Id: Id4b3d5f082ad13f52c8711408d7ec609bec3a621
Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
2014-07-30 16:27:33 +02:00
Kai Koehne b795e8d7c2 Remove normalization of "default" category
Commit d61e774307 got rid of the special handling of the 'default'
category in the qloggingregistry, so we don't need the private header
file anymore, nor does it gain us anything to 'normalize' all default
categories to one string.

Change-Id: I027b4b82ff915428287432f39f76b4e719cf7874
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
2014-07-30 16:27:26 +02:00
Kai Koehne e968793e81 Add qFormatLogMessage()
Export the former qMessageFormatString() as qFormatLogMessage(). This
allows custom message handlers to format their messages just like the
default message handler, taking qSetMessagePattern() /
QT_MESSAGE_PATTERN into account.

The method should arguably not add the '\n' at the end, which a follow
up commit will fix.

Change-Id: Ib2a9cfda91473df079daf03bf3197e6ac63e013e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
2014-07-30 16:27:22 +02:00
J-P Nurmi c38af4e6bb Android: extract ListView divider & selection
Change-Id: I2a4f72d94c4868f9db4b8066bbdadbe222d0da62
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-07-30 16:24:50 +02:00
Oswald Buddenhagen 87d15f2c1b Merge remote-tracking branch 'origin/stable' into 5.3
Change-Id: I2a044d44ca991ba20ddd710053b85afb51e362d3
2014-07-30 15:53:07 +02:00
Thiago Macieira 3866c89dee Work around ICC bug in local static symbols for Q_GLOBAL_STATIC
When compiling the innerFunction() of the Q_GLOBAL_STATIC expansion, ICC
emits global symbols for the internal "holder" local static variable and
its guard. If there are two global statics of the same name in two
different .cpp files, the linker will incorrectly merge the two "holder"
variables.

This was noted between the "customTypes" global statics of qmetatype.cpp
and qdbusmetatype.cpp in a static build.

The C++ standard requires that local static variables declared in inline
functions must be the same, regardless of whether the body of the
function got inlined or not. The IA-64 C++ ABI does that by requiring
local static symbols for inline functions to be global and mergeable
("link once"). However, two functions in anonymous namespaces in
different files are not considered to be the same function, so their
local statics should not be merged. This is where ICC failed: the local
statics are global and mergeable, even though the function is in an
anonymous namespace. ICC correctly emits the function itself as a local
symbol.

Alternative solutions were:
  1) add "static", but you can't use a static symbol in a template
     parameter in C++98 mode
  2) remove the "inline" keyword, but then GCC 4.8 will not inline

Intel issue ID: 6000058488
Task-number: QTBUG-40053
Change-Id: I307622222499682dde711b2771c8cf7557400799
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-07-30 10:24:29 +02:00
Jędrzej Nowacki 1f4b958438 Add initializer list support in QJsonObject.
It allows to create a QJsonObject instance in C++ by using
initializer list of pairs QString QJsonValue, for example:

QJsonObject o = {{"property1", 1}, {"property2", 2}};

[ChangeLog][QtCore][QtJson] QJsonObject now supports
C++11 initializer lists.

Task-number: QTBUG-26606
Change-Id: I67af881e175f427e563e685336c48a5f8466b476
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-07-30 10:20:28 +02:00
J-P Nurmi 8738f09b9f Reduce the default frame rate of style animations
Halves the amount of paint events triggered by transient scrollbars.

Task-number: QTBUG-30316
Change-Id: Ifdf968d5c45013332758a6b751ce11d1ef2a2ca8
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
2014-07-30 10:18:08 +02:00
Friedemann Kleint 0240110c58 QMdiArea: Store focus widget when new QMdiSubWindow is added.
Introduce function QMdiSubWindowPrivate::storeFocusWidget()
to store focus widget and call this when de-activating a
sub window. Change restoreFocus() to return a bool and call
it from QMdiSubWindowPrivate::setActive().

Task-number: QTBUG-38378
Change-Id: I18dbe66ce85213ca5b4907b5a09126544415351a
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-07-30 06:29:00 +02:00
Friedemann Kleint cd89ec830d Streamline debug output of QMainWindowLayout.
Remove define Q_DEBUG_MAINWINDOW_LAYOUT and dependent exported
function, introduce operators for QDebug.

Task-number: QTBUG-38761
Change-Id: I7794cffbfaea20ead0eac9e8ace4e3a910c50f95
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-07-30 06:27:28 +02:00
Laszlo Agocs 32e2d8e58c Do not show warning on null result in getProcAddress
Other platforms do not do this either. What is more, some of the
extension handling code will try to resolve functions that are not
necessiarly present, and this is not an error.

Change-Id: I39dad8f8d89fc45de3ea83f04727a8e38b6a3387
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-07-29 22:01:20 +02:00
Gabriel de Dietrich e7839d9717 QCoreTextFontDatabase: Fix font weight value when populating a family
kCTFontWeightTrait returns a normalized value between -1.0 (lightest)
and 1.0 (heaviest), 0.0 being the regular font weight. The threshold
values used in this change have been estimated from the weight values
of fonts from the Helvetica Neue and Myriad Pro font families.

Change-Id: I49de8e8bd5894107de4842aeda7ace2e83f95be3
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2014-07-29 17:33:19 +02:00
Allan Sandfeld Jensen 0afc80c922 Don't convert signed to unsigned when we need all 32bit
The fast scale methods qt_scale_image_16bit and qt_scale_image_32bit
were incorrectly assigning an unsigned value to a signed variable, which
broke their support of images with dimensions from 32384 to 65535.
Images with dimensions higher than that are already using another code-
path.

Task-number: QTBUG-40297
Change-Id: I8c971889e069381224cea2befbb5c66cd93ea5c2
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-07-29 15:16:50 +02:00
Frederik Gladhorn ea90032685 Merge remote-tracking branch 'origin/5.3' into dev
Conflicts:
	src/network/ssl/qsslsocket_openssl_symbols.cpp

Change-Id: Ic62419fa1fee5f4de6c372459d72e6e16f9a810b
2014-07-29 12:56:06 +02:00
BogDan Vatra f5edb62cc2 Export QAbstractState active property.
It is needed to check if a State is active.

Change-Id: I8aa0230b8cd96fb9b95b86b2ce118fe280f9ce97
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
2014-07-29 11:27:09 +02:00
Friedemann Kleint c67f7c0f0f Windows/Direct2D platform plugins: Add Q_DECL_OVERRIDE.
Replace old virtual declarations by Q_DECL_OVERRIDE where
applicable.
Errors discovered: QWindowsScreen::primaryOrientation() did not
overwrite any method, changed to orientation().

Task-number: QTBUG-38858
Task-number: QTBUG-38993
Change-Id: Ie85d5235f3cd35c7a24cac3c1c7693c6508b1009
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-07-29 08:39:33 +02:00
Joni Poikelin 7e74f8f398 Fix compilation if EC is disabled in OpenSSL
Some Linux distributions disable EC by default which causes compile
errors on those platforms.

Task-number: QTBUG-40394
Change-Id: If5816d473bd1d64b1d4977860db662704a83310f
Reviewed-by: Richard J. Moore <rich@kde.org>
2014-07-29 06:33:08 +02:00
Joni Poikelin 3fed060b94 Fix warning message when re-setting text on tooltip
Fix warning message that gets printed when changing tooltip message
without rect and widget parameters for already shown tooltip widget.

Task-number: QTBUG-39550
Change-Id: I69ed8747e5e77ca618525d74479c72e02b7ab897
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-07-29 06:32:58 +02:00
Aleix Pol 87242756d4 Don't reset the window type on window show
We were resetting the window type on show, this was breaking some
deployments, since it used to be possible to set the xcb properties from
the user application.
This change requires the user to at least start using the
QtPlatformHeaders before overriding the window properties with the values
set there.

Change-Id: Ic58919a42b6d532035c7ec6158a086b85666a22f
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-07-29 02:17:28 +02:00
Friedemann Kleint 61fecb23c2 Add debug output for input method related events.
Task-number: QTBUG-40402
Change-Id: Ide96588488eb6d95f4c39f3da749d301d9ec858e
Reviewed-by: Liang Qi <liang.qi@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-07-28 22:13:28 +02:00
Shawn Rutledge 178a1548f3 QTabletEvent documentation improvements
Recent patches have added new functionality, and other aspects of the
documentation have been outdated for some time.

Task-number: QTBUG-39458
Change-Id: Ib7013eee091ff443971485133a58785d9284bc3d
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2014-07-28 16:38:43 +02:00
Friedemann Kleint 5c24c14a0e Windows: Streamline rawfont-lookup code.
Fix ugly warnings by MinGW:

qwindowsfontdatabase.cpp: In member function '{anonymous}::TableDirectory*
{anonymous}::EmbeddedFont::tableDirectoryEntry(const QByteArray&)':qwindowsfontdatabase.cpp:167:42: warning: comparison between signed and unsigned  integer expressions [-Wsign-compare]
         if (Q_UNLIKELY(m_fontData.size() < sizeof(OffsetSubTable)))
                                          ^
..\..\..\..\include/QtCore/../../src/corelib/global/qcompilerdetection.h:202:49:
 note: in definition of macro 'Q_UNLIKELY'

Change-Id: I47fac598ed1b6623146fb437c00da64d8e8b6984
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-07-28 16:38:02 +02:00
Shawn Rutledge 6ad66140b1 add buttons to QTabletEvent
Until now, it has been necessary for tablet-oriented applications which
care about multi-button styli to reject each tablet event and wait for
the mouse event in order to know which buttons are pressed.  This patch
adds the new API and also the X11/xcb implementation.

[ChangeLog][QtCore][Tablet support] Added buttons to QTabletEvent

Task-number: QTBUG-39458
Change-Id: If2c9ec1ceacc1700a82686c5fc6f568f9111055a
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
2014-07-28 16:37:44 +02:00
Shawn Rutledge 67410cd644 Windows: correct tablet stylus rotation to range -180..180 degrees
When the user holds the Wacom Art Pen straight, rotation is zero;
when turning it counter-clockwise, it should have a negative angle,
whereas the driver sends a positive angle multiplied by 10;
when turning it clockwise it should have a positive angle up to 180,
whereas the driver sends 360 * 10 going downwards towards 180 * 10.
These corrections make the angle reading the same between Linux and
Windows.

Task-number: QTBUG-39570
Change-Id: I9f18ef6629bffa849c8d65cba02d42b21469cebc
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
2014-07-28 16:37:31 +02:00
Bernd Weimer ec703836b3 Improve dbus cross compilation
Building QtDBus on Linux host for QNX target had two issues:
* Configure check failed, because dbus-1 library was not linked in,
  if target platform doesn't support pkg-config.
* Host tools were not built, because pkg-config was not used to locate
  dbus headers on the host.

Task-number: QTBUG-37324
Change-Id: I71d8309599fd40ef2dd8c9e3b44b93a7482019f1
Reviewed-by: Rolf Eike Beer <eb@emlix.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-07-28 14:08:22 +02:00
Artem Shevchenko 553325abfd Fix buffer overrun error with some proxy servers
In some cases, depending on the proxy server response, the current
implementation of QHttpSocketEngine may write to memory beyond the
allocated buffer size. That will trigger undefined behavior on UNIX
systems and a buffer overrun exception if compiled with visual studio.

Change-Id: I5769d10c56b6a7483d6d94672aa4321287b82651
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-07-28 13:30:28 +02:00
Olivier Goffart 9f598d5ee9 Logging: support %{backtrace} in QT_MESSAGE_PATTERN
On supported platform, allow to show a backtrace by using
%{backtrace} or %{backtrace depth=N separator="|"}

[ChangeLog][QtCore][Logging] QT_MESSAGE_PATTERN can include a
backtrace using %{backtrace}

Change-Id: Ib00418c070d3bd6fe846dc04bf69fa91ba64f9cd
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
2014-07-28 09:03:47 +02:00
João Abecasis 04b92bfa1a Don't track the sharable bit upon detach
"Unsharables", given they can't be shared, don't need to detach, so skip the
check altogether and don't try to propagate the flag. It shouldn't be.

Change-Id: Icc483401d5a57708b43d64bd3cebc66c6b934815
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-07-28 08:40:34 +02:00
Jędrzej Nowacki 959808cc4d Refactor QString::split functions.
Implementation of the functions were moved to templatized helper
functions that will be shared with QString::splitRef in future.

Change-Id: Ie25fab57f77f5ceb11ced26ab7e7f86739f4c78b
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-07-28 08:40:09 +02:00
João Abecasis 116d711cb1 Ensure mutating operations are NOT performed on immutable data
"Static" and "raw" data are immutable and shouldn't be modified from
within the QArrayData API. Adding the asserts here gives us a basic
safety net.

Change-Id: Ie2fec03fa1ef5a7f73c50e5badf8b8ab863728b4
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-07-28 08:39:59 +02:00
Konstantin Ritt dc4dfe4ffa A basic justification algorithm for HarfBuzz-NG
This does mostly the same HB-old did, except of non-BMP codepoints
support and better handling of space and punctuation characters.

Change-Id: Iaf8565a35f27d5f4837128cec345eff3d9d2bdf0
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-07-27 22:31:39 +02:00
Friedemann Kleint da6aac0950 Windows: Use common code paths for default font families.
Factor out function to determine the font family for a style
hint and use that for the FreeType font database as well.

Task-number: QTBUG-39961
Change-Id: Ic5ec0928c7994b61e4d2b10d829826658b1aa1d5
Reviewed-by: Björn Breitmeyer <bjoern.breitmeyer@kdab.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-07-26 11:30:43 +02:00