Commit Graph

14717 Commits

Author SHA1 Message Date
Marc Mutz
f90308c0c3 QVector: check d for equality before d->size for inequality
Assuming the CPU has already loaded 'this', the value of 'd' is just
an indirect load away. The value of d->size, however, is two indirect
loads away, one of which is the load of 'd'.

So it makes more sense to check for d-pointer equality first, as that
can proceed in parallel with the fetch for d->size, which the CPU
may speculatively trigger.

In addition, at least GCC in release mode after this change doesn't
set up the stack frame if the d-pointer check succeeds.

Change-Id: I61f9b245070dd1742fca6ccb8d4936a0b1aa7c07
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2014-08-28 09:52:36 +02:00
Andrew Knight
da72e1b0e8 winrt: Refactor internal socket buffer
Simplify the temporary buffer usage by using the built-in WinRT Buffer
class. This also allows one use of the local event loop to be removed.

Change-Id: Ice552910227ffbe31c6e8716ff7896af7c4532ef
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@digia.com>
2014-08-28 05:59:15 +02:00
Andrew Knight
dd305aee78 winrt: Fix socket descriptor storage in native socket engine
This stores the socket pointer in the descriptor, rather than an
abitrary handle, so that it is easier to access from e.g. SSL socket.

To further support SSL sockets, a special case for SSL sockets is
made so that the the socket reader installation can be delayed until
after the socket is encrypted (as this is the only supported mode of
operation with StreamSocket).

Change-Id: I693229189722dc43b221b167e8256f5497a50346
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@digia.com>
2014-08-28 05:58:43 +02:00
Andrew Knight
6d57f3f27e network: Add pending close on disconnect for non-empty write buffer
Similarly to 1b19f660 (which added socket flushing before close), the
socket should have a chance to disconnect if the write buffer is not
empty. Instead of flushing, the pendingClose is added so that the
backend may disconnect the socket once these bytes have been written.

Change-Id: I2d85b6356c3e158bade3d5d86161d3e33649cad6
Reviewed-by: Richard J. Moore <rich@kde.org>
2014-08-28 05:58:22 +02:00
Dyami Caliri
1d7408cc8b CoreWLan: terminate scan thread in QCoreWlanEngine destructor
The scan thread can take an indeterminate amount of time, often longer
than the 5 seconds we had previously waited. Since this destructor is
only called when the application quits, it's ok that some resources may
be lost.

Task-number: QTBUG-36000
Change-Id: Ib184156b5a23c39ea4f7937a26ecb099554bd4de
Reviewed-by: Peter Hartmann <phartmann@blackberry.com>
2014-08-27 17:14:25 +02:00
Yoann Lopes
4dc751360a Android: added more devices to the FBO readback workaround check.
Task-number: QTBUG-40483
Change-Id: I7f3d375934a57fe3ac58ae35cb00d394349cb33f
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-08-27 15:15:55 +02:00
Andrew Knight
ecbf6dfbf5 ssl: Share the host name matching utilities
This moves the socket backend's host name matching functions up to
QSslSocketPrivate so that they can be shared between backends. This
works, as there is no OpenSSL-specific code here.

Change-Id: I73c2081fdc2e60a44c90e90800d1e1877391a626
Reviewed-by: Richard J. Moore <rich@kde.org>
2014-08-27 15:03:58 +02:00
Nico Vertriest
be4db73231 Doc: language corrections QStorageInfo class
Task-number: QTBUG-40984
Change-Id: Idf8c6ecedb25f6c55b3fe8db69e6de9d9f2eaf74
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-08-27 14:45:18 +02:00
Risto Avila
e5b36bb54e Enables remap of NumpadKeys when Numlock is on and using evkeyboard.
Task-number: QTBUG-32823
Change-Id: I80841a965c61a117e8b50a2775431bb723ca8eca
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-08-27 14:38:11 +02:00
Paul Olav Tvete
4c6ebe5f9e Android quickfix: Avoid crash at shutdown
Qt Quick does a processEvents() at shutdown. On some versions of
Android, this can trigger a getTextAfterCursor() after
QGuiApplication shutdown. This patch still has a theoretical
race condition, but should reduce the crash probablity to
practically zero.

[ChangeLog][Android] Fixed bug on some devices where the application
would crash at shutdown if the virtual keyboard was open.

Task-number: QTBUG-40957
Change-Id: Iefcc10a77e3d506c32ea151c27a3e87a7be40e68
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-08-27 12:22:07 +02:00
Erik Verbruggen
f2e4ff4fd4 Also print the class name in the QObject::killTimer error msg.
When no objectName is set, this will give at least some information,
other than the memory address of the current instance.

Change-Id: Iae452c0e9fe38f0aab35094ddf0edc0fd6b28c20
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-27 12:18:13 +02:00
Gabriel de Dietrich
e94642a9b0 QMacStyle: Fix push buttons focus ring on Yosemite
HITheme renders the focus ring in a way that diminishes contrast
on the focused button edges. The same issue seems to affect
combo boxes, check boxes, and radio buttons.

We refactor the code that was used to draw CE_FocusFrame into
qt_drawFocusRingOnPath(). We use it to render our own path for
the push button contour. This should also allow us to implement
the focus ring animation in the future.

As a side note, notice how the square button part (kThemeBevelButton)
is a complete joke. Not only we impose the wrong button kind and
let HITheme do what it can with it, but we also prevent ourselves
from using it by never adding padding for the focus ring.
Hopefully, we can fix this whole button sizing and padding mess
in 5.5 or 6.0, whatever breaks less apps around.

Task-number: QTBUG-40833
Change-Id: Ib9e7829d99b38dc926c55b31c3d6d5d32b691867
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2014-08-27 12:13:01 +02:00
Laszlo Agocs
63f48d00aa Initialize textureId in platform backing store
Setting it initially to 0 is very important, otherwise we will
do a glDeleteTextures with the undefined value.

The result sometimes goes unnoticed and sometimes causes bizarre
issues: For example in the 'textures' example one face of one cube
out of the six did go blank from time to time since the corresponding
texture was deleted by the backingstore.

Change-Id: Iebf68e20b2af426c979980d8bc4449db2b98f2f0
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-08-27 10:40:07 +02:00
Nico Vertriest
8e96e73ebc Doc: corrected autolink errors corelib io
Task-number: QTBUG-40362
Change-Id: If11700d57db75ad7605bd8d53681002639c2e785
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2014-08-27 10:26:38 +02:00
Marc Mutz
53eeddf855 Use ctor-init-list in QRegionPrivate(QRect) ctor
Change-Id: I531b862db7bdec0a504c6022c1a15635aaf3fc8d
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-26 20:47:47 +02:00
Marc Mutz
2b153ad6cb QRegionPrivate: remove copy ctor and assignment operator
They're identical to the compiler-generated ones, and probably inhibit
move operators here and there.

Change-Id: I918f2946f6b6aa49aa883420dc87df44013938a5
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-26 20:47:41 +02:00
Topi Reinio
15c32361d9 qdoc: Enable listing of example files with .html extension
If a (non-external) link string ends in '.html', qdoc assumed it is
a direct link to a generated html page. However, it could also refer
to an example file with .html extension.

This commit fixes a corner case where links to an example file page
were broken for such files.

Task-number: QTBUG-40831
Change-Id: I31acc141970b6768f0a93964723be82611d37a3d
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2014-08-26 20:08:58 +02:00
Topi Reinio
d28e2e225c qdoc: Restore navigation bar title for module pages and groups
Adapt the code that generates the navigation bar to the recent
changes in node hierarchy - Module pages, QML module pages and
groups are no longer DocNodes.

This change will ensure that if a page has a title, it will be
visible in the navigation bar regardless of the the page (node)
type.

Change-Id: I697a12d5904d88f91771764ab7ed607b79e4eab1
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-08-26 20:08:40 +02:00
Topi Reinio
4cc3a41819 qdoc: Write all generated files to .qhp
When writing the Qt Help Project XML file, QDoc traverses the
documentation nodes recursively, adding html filenames for each node
to the XML.

The logic that QDoc uses for this process is not perfect, and needs
to be kept up to date whenever the internal structure of the node
tree changes. This often leads to problems where some pages are
generated but not added to the .qhp, resulting in missing pages in
the offline documentation.

This change fixes this problem by having the generator keep track
of the created filenames, and passing that to the help project
writer.

Task-number: QTBUG-40572
Change-Id: Ife60a30724183a2b6dcd2397ea79bfbdc2addd04
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2014-08-26 20:08:05 +02:00
Topi Reinio
4f2d1e2e04 qdoc: Fix output of \br command
Since the \br was promoted from a macro to a QDoc command, its output
has been enclosed in extra paragraph end/start tags, adding to the
visible vertical space.

This change fixes the issue by not closing the paragraph when QDoc
encounters a \br command.

Also removes the now-obsolete \br and \hr macros, as they are both
proper commands. \BR and \HR substitute macros are kept.

Task-number: QTBUG-37361
Change-Id: Iabbefb6e79268419792ccba42386f6342ccd175d
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-08-26 20:07:40 +02:00
Friedemann Kleint
92c7cb8155 Close popup widgets when wheel events are received
Task-number: QTBUG-40656
Change-Id: I134b07705744c23af9718dee486ab5e9ad4352cf
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-08-26 19:58:56 +02:00
Oliver Wolff
0475822d01 Added qsslcertificate_qt.cpp
Having QAsn1Element in place, we can have a common foundation
for the ssl certificate class for upcoming ports like WinRT
and SecureTransport. The only thing that has to be added to
the existing class is the handle() functionality.

Change-Id: I560a8e412b26f350855c7bc456fcdb8e9b750939
Reviewed-by: Richard J. Moore <rich@kde.org>
2014-08-26 18:48:36 +02:00
Tor Arne Vestbø
852dbe7658 iOS: Use dispatch_async instead of performSelectorOnMainThread for IME
Gets rid of awkward wrapping of Qt::InputMethodQueries as integer in a
NSObject.

Change-Id: Ia7e368fc12ec7957ca8ab602d8cec1e0a071af1d
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2014-08-26 18:13:04 +02:00
Tor Arne Vestbø
ad120dbf13 iOS: Add UIResponder helper to get current first responder
Change-Id: I422d45860a52861893d963fabbecd4ac30477272
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2014-08-26 18:12:50 +02:00
Morten Johan Sørvig
7a413fa40c QCoreTextFontDatabase: Remove number type asserts.
On iOS 8, the value 0 is returned as a kCFNumberIntType.
The code still works - CFNumberGetValue converts it
to a 0.0 double.

Change-Id: Ic50900b22e4fa19ad1481e8e0e293559bbfd8cd2
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
2014-08-26 18:12:44 +02:00
Tor Arne Vestbø
9aff2fbd86 Send QWindow::focusObjectChanged when clearing widget focus
We do this for QWidget::setFocus(), but were missing a call on clearing
the focus widget. Since QWidgetWindow::focusObject() will fall back to
returning itself if there is no focus widget, we need to pass the
result of window->focusObject() to the change signal instead of 0.

Change-Id: I52a5519a19bb20e74b4a7c2a1abc9d47e2ea1315
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-08-26 18:12:37 +02:00
Allan Sandfeld Jensen
f1bce3bc17 Avoid crash if querying device that has gone away
A device removed very fast after being inserted might disappear while
we are still seting it up. We must therefore check if we indeed still
get a matching device

Task-number: QTBUG-40820
Change-Id: I4372fb1932264e5799f37cea0d016795e28ebed6
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-08-26 17:16:13 +02:00
Friedemann Kleint
f85f3acd78 Document loading of high resolution versions of images.
Task-number: QTBUG-38858
Change-Id: I87ee18b66e137f5f5c01d77910f1a7f256b85e18
Reviewed-by: Alessandro Portale <alessandro.portale@digia.com>
2014-08-26 16:59:36 +02:00
Friedemann Kleint
4017605d56 Mention supportedMimeTypes() in QImageReader documentation.
Change-Id: Iaa07a463e07982352fe2c7dd77d691a390a65f35
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2014-08-26 16:59:28 +02:00
Frederik Gladhorn
910c639db6 Accessibility iOS: Fix crash after deleting a view
Change-Id: I64e8357fcbf7f312308490351b7c692d31db5a43
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@digia.com>
2014-08-26 16:40:46 +02:00
Frederik Gladhorn
de95953c75 Clean up QAccessibleTabBar
Change-Id: Ic0949e4d76a7332ef1a42c93a06a0e4515c1192d
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-08-26 16:40:43 +02:00
Frederik Gladhorn
e944b93bf1 Remove QAccessibleToolButton::text
This function actually is worse than just calling
QAccessibleButton::text which it already does. It would mess up the
shortcut handling in addition to that.

Change-Id: I56cb95a44624da4c5fccb43e6835f6012a083337
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-08-26 16:40:40 +02:00
Frederik Gladhorn
0c3967f92c Remove unused variable
Change-Id: I0414d7bab89371f330d5b0cfa88758e3f1668f32
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2014-08-26 16:40:37 +02:00
Gabriel de Dietrich
e9e66079b1 QMacStyle: Fix QTabBar appearance on Yosemite
The selected tab text color should be white except when the
window is not active. Also, no text shadow should be rendered
in any case. Finally, there's no need to move the tab shape up
anymore.

Task-number: QTBUG-40833
Change-Id: Ibb35f0bb7a12fb005202fd8c082eb9bb19645b2b
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2014-08-26 16:06:38 +02:00
Gabriel de Dietrich
f8da177c0f QMacStyle: Fix default button look on Yosemite
The default button has different text color on OS X 10.10, and
doesn't pulsate anymore.

We first make sure we don't start any animation for default buttons.
Then, we set the right text color in the attached palette, which
implies making a copy of the style option object. This increases the
size of this patch but keeps things sane. (It's also more concise than
the QGtkStyle approach that consists on duplicating QCommonstyle's
code for rendering CE_PushButtonLabel).

Task-number: QTBUG-40833
Change-Id: Ifac118bb607eec17400c6ae42342a223a40843b4
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2014-08-26 16:06:30 +02:00
Christian Strømme
2529a8aaa2 Android: Avoid caching the same class twice.
The class name scheme can be separated by '/' or '.', if both formats
where used we would end-up caching those classes twice.

Change-Id: I3ae69694d6a8616bbaadfb3c2d0717fbf9ccb9fc
Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
2014-08-26 10:59:08 +02:00
Marc Mutz
2d4954810b QDataWidgetMapper: micro-optimize clearMapping()
QList<WidgetMapper>::takeLast() is a needlessly expensive operation
(involves copying a QPersistentModelIndex and a QPointer).

Instead of looping over takeLast() until empty, reverse-iterate
over the list and call removeEventFilter(), then clear the whole
list.

We reverse-iterate to preserve existing behavior. Also, since the
original code popped the WidgetMapper instance before calling
removeEventFilter(), we move the whole list into a local copy
before iterating. There's little chance that a removeEventFilter()
call will cause reentrancy into QDataWidgetMapper, but better safe
than sorry.

This and the previous change together save 448 bytes of text size in
libQt5Widgets.

Change-Id: I1bfe907751659f31e618aa05bbb7b840f0aa61f4
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-08-26 09:07:25 +02:00
Marc Mutz
1c73a237ce QDataWidgetMapper: micro-optimize handling of the widget map
Don't use index-based iteration, but use iterators.

Change-Id: I57c9582aed644fc58ced1a1af940dcd20d11d970
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-08-26 09:07:12 +02:00
Tasuku Suzuki
44b9e31a0a fix a camel case include guard macro
Change-Id: I502ecf6c862f101e426536e11f5c466ed3419946
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-08-26 03:43:20 +02:00
Sérgio Martins
1498c99e9d BlackBerry PlayBook build fixes
Change-Id: I32b232883bb29ca7305bca1da1df263f106ddd93
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2014-08-26 00:12:05 +02:00
Friedemann Kleint
c47b04696a Add devicePixelRatio support to the Windows QPA plugin.
This adds support for the environment variable
QT_DEVICE_PIXEL_RATIO for the Windows platform plugin.

Task-number: QTBUG-38993
Task-number: QTBUG-38858
Change-Id: I6831eb6d3a09a80be7bbef46395e91531b61cc50
Reviewed-by: Alessandro Portale <alessandro.portale@digia.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-08-25 21:21:27 +02:00
Dyami Caliri
d8168f10a1 QEvent check for QT_NO_GESTURES in new debug code.
Latest changes to QEvent break compiling with -no-feature-gestures.

Change-Id: Ibbddd73a4f567051c3793a7aaf438240add6583a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-08-25 20:49:47 +02:00
Allan Sandfeld Jensen
8f547c4252 Avoid crash if querying device that has gone away
A device removed very fast after being inserted might disappear while
we are still seting it up. We must therefore check if we indeed still
get a matching device

Task-number: QTBUG-40820
Change-Id: I4372fb1932264e5799f37cea0d016795e28ebed6
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-08-25 20:42:52 +02:00
Laszlo Agocs
f9de7efe60 QOpenGLTextureBlitter: Do not call vao functions if it failed to create
Follow the good practice of checking for isCreated() before calling
VAO functions like bind(). Use also the vao binder where applicable.

Change-Id: Ib827f3bce838396bf2e08f9480fa63801d4d3a50
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-08-25 17:40:28 +02:00
Laszlo Agocs
a4f50269f8 Support QOpenGLWidget and QQuickWidget on Android
It gets somewhat complicated due to the fact that a RasterGLSurface window
(i.e. any widget window since 5.3) may behave either like an OpenGLSurface
or a RasterSurface, and the expected behavior may change on each backingstore
sync.

This does not fit designs where the platform window implementation is separated
and there is different behavior for raster and GL windows.

Therefore QAndroidPlatformOpenGLWindow is now made capable of behaving like the
raster one, based on a flag communicated from the widget stack via QWindowPrivate
(since the plugin knows nothing about widgets).

This means that widget windows that do not have renderToTexture children (QOpenGLWidget,
QQuickWidget) will go through the raster path, while the ones that have will behave
like an OpenGL window with the actual rendering happening in
QPlatformBackingStore::composeAndFlush().
The surface type is RasterGLSurface in both cases nonetheless.

Task-number: QTBUG-37907
Change-Id: I6f9261fc0fd993afcda7f30d379c5410069033d3
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-08-25 17:40:23 +02:00
Shawn Rutledge
9d9ef74a6c OS X QColorDialog: emit reject() when closed by the titlebar button
but only if there is a Cancel button.  A color dialog without a cancel
button might be kept open and apply to various selections, so it
doesn't make sense to reject such a dialog, only to close it.

Task-number: QTBUG-40855
Change-Id: Ifffb4ae81307c72259ed388a4776ba09543603e7
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
2014-08-25 17:04:37 +02:00
Laszlo Agocs
4ca7b23dc0 Initialize textureId in platform backing store
Setting it initially to 0 is very important, otherwise we will
do a glDeleteTextures with the undefined value.

The result sometimes goes unnoticed and sometimes causes bizarre
issues: For example in the 'textures' example one face of one cube
out of the six did go blank from time to time since the corresponding
texture was deleted by the backingstore.

Change-Id: Id19eb2164471b542b08a277a65edfcb5d0f8248d
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-08-25 16:57:58 +02:00
Andy Nichols
5afebb05b4 DirectFB Fix issue with showing dialogs
If the window was not visible when the geometry was set, then the
DirectFB window would not be resized.

Change-Id: I7790c90ed0fb755aebee0e32c877ebd9e48417cd
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-08-25 16:47:25 +02:00
Andy Nichols
6e7e73c014 DirectFB Unbreak mouse input for child windows
The local and global coordinates for mouse events were being translated
incorrectly from the native DirectFB events.

Change-Id: Id904a4335459b87c92f4b8b46d535c78fb7dad8c
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-08-25 16:47:18 +02:00
Andy Nichols
3fcebba79c DirectFB Make usable again with QWidget
Previously when we created any QWidget based application a
QDesktopWidget would be created as a physical window like any other, but
this window would steal input from the application.  We now create a
DirectFB window for the Qt::Desktop type of widget now, but it does not
receive input events and can not be painted to or displayed.

Change-Id: I6a090c5384b1f83383e40680dbede5d0edc41983
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-08-25 16:47:14 +02:00
Andy Nichols
8917d0be00 DirectFB Provide a native interface
Using the same multiple inheiritance that is used in the EGLFS platform
plugin.

Change-Id: I016f904bfc365bec6266c3f5d638ab15ecefe63b
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-08-25 16:47:08 +02:00
Andy Nichols
e3ef095469 DirectFB Add QGenericUnixServices and inputContext
The DirectFB platform plugin was missing support for services and
inputContext.

Change-Id: I010fdcbed5e172b019b4dce79f3beea0f9c5025d
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-08-25 16:47:02 +02:00
Morten Johan Sørvig
30bb830fc1 OS X: Fix pan gestures.
The QPanGesture recognizer requires single-point touch events. The touch
implementation in Qt 4 would test Qt::WA_TouchPadAcceptSingleTouchEvents
and forward single touch events if set.

Making this work in Qt 5 is a little bit more involved since the platform
plugins don't know about widgets.

Change the Cocoa touch implementation to send single-point touch events
to QWidgetWindow windows only. Make QApplication forward single-point
touch events only if the target widget has the
Qt::WA_TouchPadAcceptSingleTouchEvents attribute set.

Task-number: QTBUG-35893
Change-Id: I68712a5e3efb4ece7a81ca42f49c412e525eeb3a
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
2014-08-25 16:07:36 +02:00
Allan Sandfeld Jensen
7dce962200 Add operator-> to QJson iterators
The iterators for QJsonArray and QJsonObject are currently lacking an
operator-> definition. Unfortunately it is not possible to do in clean
way without redefining either the iterators or QJsonValueRef class.

This patch instead adds two fake pointer classes that are only used
to handle the operator-> return value.

Task-number: QTBUG-29573
Change-Id: Ief785a6afbbedc9e89cf3b6f3958c2c755997a66
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-08-25 16:03:42 +02:00
Nico Vertriest
9286fdf4a0 Doc: corrected autolink errors Qjsonvalue
Task-number: QTBUG-40362
Change-Id: I2ae782ea606e8ee55ee0fcfbbb29db3216b0574b
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-08-25 14:43:36 +02:00
Laszlo Agocs
f16de5c1fd Fix composition for translucent AlwaysStackOnTop widgets
Writing out the alpha is re-enabled too early. When blitting the
AlwaysStackOnTop widgets as the last step of the composition, they
need the exact same settings as the backingstore content, meaning
blending but without writing out alpha.

Move the glColorMask call to fix this. This will avoid issues with
semi-transparent AlwaysStackOnTop widgets when the top-level has
alpha enabled too.

Task-number: QTBUG-40910
Change-Id: Id6d0d684cfa78bf79b65a097efd92de575e73b2c
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-08-24 23:01:58 +02:00
Morten Johan Sørvig
7f1051ed62 Cocoa: Work around faulty screen list on startup
The NSScreen API has been observed to a return a
screen list with one mirrored, non-primary screen
when Qt is running as a startup item. Always use
the screen if there's only one screen in the list.

Change-Id: I721e25bb7595599287b97f6528e04060ce5da6c1
Task-id: QTBUG-37878
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-08-24 22:19:57 +02:00
Marc Mutz
e3e4fe7910 Use std::vector range ctor in QVector::toStdVector()
There are three reasons to do so:

1. This could be more efficient, depending on the STL implementation.

2. By using QTypedArrayData iterators (T*) instead of QVector ones,
   we actually invoke the non-templated range ctor of std::vector,
   at least in the common case that std::vector<T>::const_iterator
   is also const T*.

3. The change turns a former NRVO return into a RVO one, potentially
   allowing more compilers to perform the copy elision.

Change-Id: I70b35aaeae70ba06a971a36b8b1b1da997e8094f
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-24 13:42:42 +02:00
Shawn Rutledge
b983818219 standardize QPA input event logging category hierarchy
If qtlogging.ini contains a rule
qt.qpa.input*=true
then all available input event logging will be enabled on any platform.
There are more specific categories for touch, tablet, gestures,
input methods etc. on some platforms.

Change-Id: I8754ce23df8f0b750a4b7dfcf3afe5bab800ead8
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-08-24 10:27:25 +02:00
Jeremy Lainé
4040bc21ab Added QAsn1Element
This element can be used for backends that do not offer all the
information that is needed when implementing a ssl certificate backend.
WinRT and the SecureTransport lack functionality in this area for
example.

The sources and tests are added for ssl and openssl configurations in order
to be tested. The condition for adding these can be changed as soon
as they are used by an actual implementation

Change-Id: I2b836133105afdc178bf3b1ee7d732bea069effa
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
2014-08-24 06:01:05 +02:00
Laszlo Agocs
2d0072b0b3 Do not resolve core functions on GLES in texture helper
As the spec for eglGetProcAddress says, some implementations may not return
function pointers for core functions. Similarly to how we cannot get
OpenGL 1.0/1.1 functions with WGL for example.

To make sure QOpenGLTexture does not just crash with such implementations,
we simply use the statically exported functions in -opengl es2 builds.

Change-Id: I213bfcc21e58888b17e0ebcd0a26f26f77517e40
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-08-23 19:13:46 +02:00
Markus Goetz
3e68148a4d Network: Fix NTLM (SSPI) with HTTP and HTTPS proxies
This commit should fix proxy authentication when NTLM is used.
NTLM differs from normal HTTP(S) authentication by having 2 roundtrips
instead of 1, some parts of our code however were not prepared for that.

I've tested this patch with Microsoft Forefront, both with normal
NTLM and with NTLM SSPI (in Windows domain).

I removed an optimization added in 3c3ea9a8, I could not see that behavior
anymore. That commit was the wrong fix in my opinion.

[ChangeLog][QtNetwork] Fix NTLM (SSPI) Proxy Authentication (HTTP/HTTPS)

Task-number: QTBUG-30829
Task-number: QTBUG-35101
Change-Id: Idcc9c0dbf388b011d49f2806e9a6dd55ebc35cec
Reviewed-by: Richard J. Moore <rich@kde.org>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Peter Hartmann <phartmann@blackberry.com>
2014-08-23 17:35:51 +02:00
Lorn Potter
3862171315 remove always ask option.
Jolla removed the always ask option in the UI, which is the reason
for all this code.
Now, if mobile data is autoconnectable, whether roaming or home, it will
be connected.

Change-Id: I6a86315262e8c4c5551b2b2097389559096f14d5
Reviewed-by: Pasi Sjöholm <pasi.sjoholm@jolla.com>
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2014-08-23 16:35:12 +02:00
Pekka Vuorela
4a6772a587 Fix handling QT_IM_MODULE=none
Was added with 19a39a4 to allow no input context to be created.
Broken by commit 24c10b0. Especially if compose input context didn't
get compiled, the first input context found was loaded.

Also made Xcb integration use compose plugin by default.

Change-Id: I992eaa8b383320e4ab725bb7b79f561f4f841458
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
2014-08-23 15:27:16 +02:00
Marc Mutz
7c6a4276f0 QIconLoader: don't inherit QObject
QIconLoader did not use the services from QObject and the
Q_OBJECT macro was missing, too, so external code couldn't
have used it in a qobject_cast or inherits(), either.

Change-Id: I1f33dd540fa2ded48d871d848a77eee743a4e3c0
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-23 13:20:07 +02:00
Marc Mutz
87ccab8bd6 QIconLoader: replace an inefficient QList with a QVector
QIconDirInfo is larger than a pointer, so holding it in a
QList is horribly inefficient.

Fix by holding it in a QVector instead.

Change-Id: I6551d2d2941447e600a33c3d68edf46db002d96c
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-23 13:19:58 +02:00
Marc Mutz
0611f8d995 QIconLoader: mark virtual overrides
Change-Id: I72f20b5935d56d7c090fdd685e2bedc0778db505
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-23 13:19:49 +02:00
Marc Mutz
91f1b0b4e4 QIconLoader: mark a helper type as movable
QIconDirInfo is held in Qt containers, so reap the performance
benefit of a movable type.

Change-Id: I317c69ec46d324623b21a33043856e22f60e21b1
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-23 13:18:53 +02:00
Marc Mutz
28f7404256 QIconLoader: replace while(!empty()) delete takeLast() with qDeleteAll()
There's no calling back into QIconLoaderEngine from the QIconLoaderEngineEntry
dtors, so don't bother slicing off one element by one from the container as
they are deleted, the more so as m_entires is either move-assigned or deleted
right after these loops.

Change-Id: Ic9ffa442ef0b0c59e19eb91d164183ea5c3bab67
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-23 13:18:33 +02:00
Marc Mutz
6244665faa QIconLoader: don't re-evaluate container.size() all the time (II)
Experience shows that the compiler does not recognize the
size() call as a constant expression, so help it along.

Change-Id: I688244f37c555365566cd1a59dc601974316a2e6
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-23 13:18:23 +02:00
Marc Mutz
5335a71535 QIconLoader: don't re-evaluate container.size() all the time
Experience shows that the compiler does not recognize the
size() call as a constant expression, so help it along.

Change-Id: I60cd1754f8be123c62e3b47f6f721f42a69fe3c5
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-23 13:18:15 +02:00
Marc Mutz
8f0f7acb67 QIconLoader: remove another unused variable
Change-Id: I2b11944d1964878ff5f6f666f33a97ea842ffea7
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-23 13:18:07 +02:00
Marc Mutz
c07a9d6c63 QIconLoader: remove an unused variable
Change-Id: I4f1fee2da9358f63c4d3c9e46b8d69b4a1b280c7
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-23 13:17:45 +02:00
Maurice Kalinowski
1b7969f94d WinRT: apply text color to WindowText as well
Otherwise some text gets rendered black, which is the default background
color on Windows Phone.

Change-Id: I963875879655207e881ab0199bdac98a1e4f4ea5
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
2014-08-23 13:10:57 +02:00
Simon Hausmann
fe70d005d5 Fix valgrind support in QTestLib's benchmarking
Valgrind has reached double-digit versions, so the regexp for detecting
the version from the string needs to be widened accordingly.

Change-Id: Ib95994f96d6b1e94a34bedd1b98525076851984b
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2014-08-22 22:17:45 +02:00
Michael Brasser
970390e114 Incorporate fixes from QQmlAnimationTimer into QAnimationTimer.
Incorporates animation timer fixes in:
  * 7da483bfbefcaabb1dbbf3e2f1d5b5f7aadc3b06
  * b02eeeee586abe343b8866385c1327ac009b3ef0
  * 59d5c5cf555a51cd7559cea197a198ef3a792614
from qtdeclarative.

With these changes, we no longer need to call updateAnimationTimers
in QUnifiedTimer::startTimers.

Change-Id: Ic24501cfdc3cb572bd891d84f684f11c3bef1b50
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-22 18:59:09 +02:00
Martin Smith
2a56a3bad7 qdoc: Fix a few cases for '[ ... ]' linking
This update fixes a few cases that didn't work
correctly. The problem was caused by calling
findNodeForTarget() with a pointer to a relative
node, but the relative node pointer should always
be 0, when the domain tree to be searched is not
the same as the tree containing the relative node.
This fix sets the relative node pointer to 0 in
that case.

Change-Id: I2fe4a7a4a3b6392199666c7d49b473a56697e7b5
Task-number: QTBUG-39221
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-08-22 18:24:08 +02:00
Martin Smith
f752a7ab6c qdoc: Report error in square bracket parameter
This update makes qdoc report an error, when it can't
recognize a parameter in square brackets.

Change-Id: I45d31ec875ac533736ee4a565ff3f217353068dd
Task-number: QTBUG-39221
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-08-22 18:24:02 +02:00
Martin Smith
af7f944dc5 qdoc: Add new checkForCollision()
But don't use it yet. qdoc will check for name
collisions within a module, once we decide what
collisions to look for and what to do about them.
This change puts a rewritten checkForCollision()
function back in, but doesn't use it yet.

Change-Id: I41f9275c3ca29f228268ccf7cb2d99bbe0ce557c
Task-number: QTBUG-40506
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-08-22 18:23:50 +02:00
Martin Smith
a5570bbf9a qdoc: Remove all collision node stuff from qdoc
Now that the qdoc link command has ability to tell qdoc which module
contains a link target or whether to link to a QML or CPP entity,
collision pages should no longer be necessary. In fact, qdoc hasn't
been generating any collisions for some time. This task removes all
the collision node code from qdoc.

Task-number: QTBUG-40506
Change-Id: I34d1980ca1c0fe4bb5ad27dd4b00e61fa7e6e335
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-08-22 18:23:39 +02:00
Laszlo Agocs
701b72c261 Rework platformheaders qdoc conf
In an attempt to make the classes show up in the generated documentation.

Change-Id: I198f788a42f6007802db2384e3cd79e988f573e7
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-08-22 09:26:27 +02:00
Andrew Knight
67c83f329e Tighten Q_OS_WINRT ifdefs in qfunctions_winrt.h
This allows the convenience macros to be used on desktop Windows 8 when
interacting with Windows Runtime types.

Change-Id: I09c6b18a6ee9711371ef7dc23fb1d3354198db1c
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@digia.com>
2014-08-21 18:21:52 +02:00
Pelle Johnsen
4a2e297b4f Replacement for QWS_DBLCLICK_DISTANCE
Add QT_DBL_CLICK_DIST to replace QWS_DBLCLICK_DISTANCE for controlling
the distance for detecting double clicks, which can be very useful on
embedded devices

[ChangeLog][QtGui] environment variable QT_DBL_CLICK_DIST 
customizes the amount of movement allowed when detecting a double click.

Task-number: QTBUG-40841
Change-Id: I0a7534ad6cd6387d127eb49021a92d414d45670e
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-08-21 17:53:52 +02:00
Shawn Rutledge
f45efafacf QTextCodec::codecForHtml looks at the first 1024 bytes
The HTML 5 spec requires it, instead of only looking at the first 512.

Task-number: QTBUG-40383
Change-Id: Ie10cf8c745ed1a3402914e126a02bc43d5035fff
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
2014-08-21 17:50:39 +02:00
Shawn Rutledge
dd6080ceac Debug logging support for QNativeGestureEvent
The most useful information is what kind of gesture the event
represents, but it was missing until now.

Also added a line of documentation about the NativeGesture event type.

Change-Id: I1ba3c951dcc5751e937d762d9b647ab0bf8d93b8
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
2014-08-21 17:49:44 +02:00
Shawn Rutledge
d88de0452a xcb: set up touch devices even if debug is not turned on
59ba84d31c introduced a mistake.
It's necessary to populate the device data structure
even if we are not going to log anything.  Now the accessor
is renamed to touchDeviceForId and the struct is renamed to
XInput2TouchDeviceData to make it more clear that it is only
for touch devices.

Change-Id: Iaa3cce2d6cae250318f5a200becb9de9626b6437
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
2014-08-21 17:31:40 +02:00
Allan Sandfeld Jensen
b78e81f7c2 Outline drawing should not override the default freetype loadflags
We set FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH as the default load flags
for freetype fonts, but due to using = instead of =| the default flags
gets overridden when outline drawing sets FT_LOAD_NO_BITMAP.

Change-Id: I26b45aa2bbf613689d278eb07ae028ef9757023c
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-08-21 17:31:33 +02:00
Martin Smith
6b12d781fa qdoc: Generate obsolete members page for QML types
Generation of the obsolete members page, for QML types
that have obsolete members, had not been implemented.
This update implements that missing feature. The link
to the page appears right below the link to the "All
Members" page.

Change-Id: I3e4bb2a68d5c8ef2bbe2e0c431eccf94ecb1fd3c
Task-number: QTBUG-40214
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-08-20 21:59:53 +02:00
Martin Smith
a2c432e978 qdoc: Allow choice of linking to QML or CPP
This update enables using QML or CPP as the parameter
in square brackets for the \l command. You will use this
when, for example, there exist both a C++ class named
QWidget and a QML type named QWidget and your \l {QWidget}
links to the wrong one.

Suppose you write \l {QWidget} expecting it to link
to the QML type named QWidget, but it links to the C++
class named QWidget. Then write this instead:

\l [QML] {QWidget}

Or if you wrote \l {QWidget} expecting it to link to
the C++ class, but it links to the QML type, write this
instead:

\l [CPP] {QWidget}

A qdoc warning is printed if qdoc can not recognize the
parameter in square brackets.

There will be a further update to complete this task for
implementing the other type of parameter that can be in
the square brackets.

Task-number: QTBUG-39221
Change-Id: I5dd85478f968025ecbe337a8aabcc31d8b12a86d
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2014-08-20 21:59:23 +02:00
Dyami Caliri
07c34fcc8a xcb: use keyboard event source window to determine auto-repeat value
The xcb auto-repeat checking code checks for queued events on the target
(focused) window. This breaks down if you have a native child widget,
and QKeyEvent::autoRepeat is never true.

Task-number: QTBUG-21500
Change-Id: Ia979edfa8a3afce07a3e1cbaa778541ffb9ce5dc
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
2014-08-20 19:43:02 +02:00
Gunnar Sletta
dfc8f8b5d4 Rework how animationsystem interoperate with an animation driver.
We need to keep track of both wall time which are used for pauses
and actual animation driver time which is used for actual animations.
When switching between these, we need to also maintain the temporal
drift potentially introduced by the driver and also the time
that has passed in wall-time from when a pause has started until
an action animation takes over.

This change introduces a well defined elapsed() function in
QUnifiedTimer which will return the right value based on which
mode we are currently in. It also introduces start/stopAnimationDriver
functions which helps us maintain the temporal drift and pause-delta.

Change-Id: I5b5100432a6db444a413d1bca4f2d5f800e8cf3e
Reviewed-by: Michael Brasser <michael.brasser@live.com>
2014-08-20 18:53:09 +02:00
Paul Olav Tvete
8688dfcd7c Android: use correct size when leaving fullscreen
On Android, fullscreen means enabling "immersive mode", which
results in the screen available geometry changing. When restoring
normal mode, oldAvailableGeometry == oldGeometry, which means that
the fullscreen branch would be chosen even though the state is not
fullscreen. By doing the maximized test first, we will default to
non-fullscreen geometry for non-fullscreen windows.

Task-number: QTBUG-39977
Change-Id: Ifc7e8b4de7e96d8c00603ce0cd136b95f58012bb
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-08-20 18:38:18 +02:00
Allan Sandfeld Jensen
9b11f0bac8 Fix invalid memcpy(dst, src) calls where dst == src
The convert_generic_inline method was not correctly handling the case
where both the conversion methods were passthrough and the last store
is therefore not needed and may trigger an invalid memcpy call.

Change-Id: Ic88780f50e1ff9dedc04b8ff1ab3527dd0c8150c
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-20 15:54:41 +02:00
Eskil Abrahamsen Blomfeldt
198009db79 Fix several regressions in font selection
In Qt 5.3.0 a change was added which automatically adapts Common
script to surrounding scripts in accordance with the Unicode tr#24.

This broke *a lot* of cases of font selection because the font
selection algorithm is not prepared for handling characters with
adapted scripts. We need to disable this change for now and redo it
later with patches to font selection to avoid the regressions.

[ChangeLog][Text] Fixed several regressions in font selection when
combining different writing systems in the same text.

Task-number: QTBUG-39930
Task-number: QTBUG-39860
Change-Id: Id02b5ae2403c06542ed5d81e7c4deb2e0c7d816e
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-08-20 13:10:55 +02:00
Allan Sandfeld Jensen
29787ec29c Detect wrongly labelled wheel buttons
A mouse device with both missing labels and a wrongly placed label
on the mouse wheel buttons have been spotted.

This patch makes the XInput2 code even more lenient to better match
legacy systems that always assumed button 4 and 5 are mapped that way.

Task-number: QTBUG-40806
Change-Id: I7cc52f3d9c54e15e6f3ddcc2bdeb1bb8e0ac9eca
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-08-20 10:21:13 +02:00
Allan Sandfeld Jensen
1bae226076 Make QWindowContainer handle drag'n'drop
Drag'n'drop events were not propagated by a the QWindowContainer to the
embedded QWindow. This patch makes the widget accept the events and
pass them on

Task-number: QTBUG-40603
Change-Id: I97320fbcad27f7c6aa48c95c90bb42dda634764e
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-20 10:11:37 +02:00
Paul Olav Tvete
97384030ef Resize correctly on orientation change.
Make sure that the screen geometry is updated before the available
geometry, since Qt uses available geometry change as the trigger
for updating the application.

Task-number: QTBUG-39965
Change-Id: Icb660f2de739367cf1fa99ddfe600f37eb6174eb
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-08-20 10:07:45 +02:00
Paul Olav Tvete
90ed77c044 Use correct size in fullscreen mode
Android does not report the full screen size in display metrics.
However, it does report the correct size for layouts, which we use
to get the available geometry. Since by definition, the available
geometry should always be inside the screen geometry, it is safe to
use the maximum of the two sizes.

Task-number: QTBUG-39977
Change-Id: I78d974f12274ca67eada43f5e1d80e70149efe3f
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-08-20 10:07:34 +02:00
Marc Mutz
b8989f937a Properly null-terminate ifreq::irf_name
It's unclear whether it has to be, but there are a lot of patches floating around
on the net that indicate that Coverty requires this, and the SIOCGIFADDR micro-howto
also NUL-terminates the string.

So who is Qt to differ?

Change-Id: I1aa5a2de47a58b1d9b73556d5a6ddc48b2c40ce3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-08-19 18:14:01 +02:00
Timur Pocheptsov
6b6e51e5ab OS X - QCollator::compare() returns wrong results.
kUCCollateDigitsAsNumberMask works only if kUCCollateDigitsOverrideMask
is also set.
Update 0: - test added.
Task-number: QTBUG-40777
Change-Id: I48bfec78f5f8439a51f8d749f0fc4397a72b29f2
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-08-19 17:53:36 +02:00
Thiago Macieira
36a30d8e49 Restore foreach macro for GCC 4.3 and 4.4 in C++11 mode
In C++98, typename can only be used for argument-dependent types and
that's not the case here. This was tracked as language defect 382 and
was fixed in the final C++11 standard, but the fix didn't make it to GCC
4.3 and 4.4 (which do have decltype).

qthreadpool.cpp:274: error: using 'typename' outside of template

Task-number: QTBUG-40783
Change-Id: I0eb702b33d2e8c95284f52841b0021dbfc743874
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-19 17:33:25 +02:00
Frederik Gladhorn
41f496cb7f Accessibility: QSpinBox should not have any children
On both iOS and Android it is very confusing to be able to move the focus to both, the line edit and the outer frame that is the spin box.
For Linux this fixes an issue that orca would not read the value correctly after pressing the up/down buttons.

Task-number: QTBUG-39861
Task-number: QTBUG-39442
Change-Id: I73c50c91e9021324c52d168d537afd0ea719a48f
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-08-19 14:23:13 +02:00
Frederik Gladhorn
cf621f1b9e Accessibility Linux: add action interfaces for value
Change-Id: I454493fc6e9e93f44d15986ca843c3244f97cbe6
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-08-19 14:22:48 +02:00
Paul Olav Tvete
ae5f2a6672 devicePixelRatio support for XCB
This adds support for the environment variable
QT_DEVICE_PIXEL_RATIO for the xcb platform plugin.

Task-number: QTBUG-38858
Change-Id: I7faca2f2e7dc5c601a82b3cc08456870b3e5602d
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-08-19 13:22:20 +02:00
Louai Al-Khanji
98cd256d24 Fix QGlyphRun text rendering
When drawing QGlyphRun objects through QPainter the QFont passed in
QStaticTextItem/QTextItem is not properly initialized with the correct
size, weight, style strategy etc. Shuffle things around so we always go
through QFontEngine for font data, as that should be more reliable.

Change-Id: I43811c868ebd4fb1d9e937ee28a6d637267b4c7f
Reviewed-by: Risto Avila <risto.avila@digia.com>
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
2014-08-19 12:00:46 +02:00
James Turner
6ebc0bd863 Allow ES3 (and ES1) context creation on iOS
Instead of hardcoding an ES2 context, use the major version
from QSurfaceFormat. The EAGL API constants match the
major versions so simply cast to avoid SDK version issues.

Change-Id: Ieb46f10ea6b797d65c6c8b778bb043becb7a2f95
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-08-19 11:46:10 +02:00
Robin Burchell
97cd20b2a0 Remove QPlatformScreenPageFlipper.
Use of this was removed from QtWayland quite a long time ago, which was the only
public user of this API.

Furthermore, it isn't easily possible to implement any use of this API without
full control of the graphics stack (a very rare occurrence) and there is no
public demonstration of this.

There is ongoing research to provide a better replacement for this in the form
of QPlatformHardwareCompositor.

Change-Id: I80d666a5b465aa80f73fed6c44838ce7210bbd30
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-19 10:10:03 +02:00
Andrew Knight
636d2e3402 winrt: Remove depth/stencil from the default window format
After the last ANGLE upgrade, some hardware fails to render proper
QtQuick scenes when using a depth buffer (which is present in the default
window format). As the batched renderer no longer requires a depth
buffer, this workaround can be safely applied.

Task-number: QTBUG-40649
Change-Id: Id0f6e418aa5c6346186678728f88a6c18af5fb74
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@digia.com>
2014-08-19 09:36:17 +02:00
Eskil Abrahamsen Blomfeldt
c26d5cf6ef Harfbuzz-NG: Compile on WinRT
There is no environment (like WinCE) and the basic version
of InitializeCriticalSection is unsupported.

Change-Id: I7c5038115f0dbfdc616bce89a9be166b5f2a1dcc
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-08-19 09:30:12 +02:00
Maurice Kalinowski
c73fe94285 WinRT: Do not forget the path specification
The path value can be used to access any container or subcontainer
in the settings, even if it is not created by Qt.

Change-Id: I431d8a8b129dafb4ec85227421dc37ec76c18ecf
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
2014-08-19 08:58:09 +02:00
Giuseppe D'Angelo
1b149c2bf5 If a tess/compute shader compilation fails, print its type correctly
Change-Id: I7536b596b890ed304846572b3068b3e932c0f594
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-08-18 22:03:40 +02:00
Giuseppe D'Angelo
75b62f3a17 Merge "Merge remote-tracking branch 'origin/5.3' into 5.4" into refs/staging/5.4 2014-08-19 00:42:00 +02:00
Frederik Gladhorn
65240c602b Accessibility Linux: use Frame for Windows
On Linux it's actually more common to use frame as role for windows
since they are per definition normal main windows.

Change-Id: Iee5bdfca139049846c1be864661231a594edf695
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-08-18 21:09:01 +02:00
Shawn Rutledge
59ba84d31c xcb XInput: use categorized logging for devices and events
[ChangeLog][Platform Specific Changes][X11 / XCB] environment variables
QT_XCB_DEBUG_XINPUT and QT_XCB_DEBUG_XINPUT_DEVICES are deprecated and
replaced with logging categories qt.qpa.events.input and
qt.qpa.devices respectively

Change-Id: I287a56de5cb9ece2ac14df6510b9aa52c864c99b
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
2014-08-18 13:49:28 +02:00
Allan Sandfeld Jensen
6efa8cd70a Support antialias and rgba Xft settings as used by GNOME and UNITY
We only parsed the hintstyle from the Xft settings. This patch adds
parsing for also subpixel style and disabling antialiasing.

Task-number: QTBUG-27106
Change-Id: Icdb88ccc10e50d76eb30a5b126bee7590e257022
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-08-18 12:55:03 +02:00
Andy Shaw
2289f3ee29 Fix a memory leak in QFseventsFileSystemWatcherEngine
Add a missing NSAutoReleasePool

Task-number: QTBUG-38637
Change-Id: Ib69d92b6e9c4327cbb74f7814a45773bfc2ee526
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
2014-08-18 11:47:41 +02:00
Robin Burchell
20c14d87f2 eglfs/stub: Die fatally if the framebuffer can't be opened.
There's no point trying to continue, everything graphical is not going to work.

Change-Id: I4c85de63746618ddf73435b491a3244b7e53a76c
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-08-17 12:37:34 +02:00
Robin Burchell
6af327216b kms: Also initialize in resize(), if required.
It appears to have been an incorrect assumption that flush always comes before
resize. At least for me, that is not the case. It also strikes me as being more
robust this way.

Change-Id: Iafd2cfe7b89802899e844152e0901e588ff0d8a6
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-08-17 12:36:44 +02:00
Allan Sandfeld Jensen
2a33bfcfd1 GTK2 theme should use GTK configured font variant
This patch makes the GTK2 theme read the font configuration and use
that as the default system font.

Task-number: QTBUG-39643
Change-Id: Ieacf8968e54f34c6d44669350d349c9a96ed6cc5
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-08-17 03:46:30 +02:00
Eskil Abrahamsen Blomfeldt
3e0a6c1b36 Android: Also support android style for debug deployment
Both bundling and debug deployment can use the local cache for
the Android style assets, since Ministro is not necessarily
available in these cases.

Change-Id: I33367aceec1829f27377fcb6793ca95ecf5cc434
Task-number: QTBUG-40676
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-08-16 23:27:40 +02:00
Allan Sandfeld Jensen
b35176f43a Support autohint and lcdfilter fontconfig configuration
This patch adds support for reading autohint and lcdfilter settings
from fontconfig and pass them on to freetype.

Task-number: QTBUG-32254
Change-Id: Iaa69b70f7005ee7f21126a8d984c07b3a46a3e7f
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-08-16 19:09:29 +02:00
BogDan Vatra
ef4a999a9f Forward menu button events to Qt if there is no visible menubar.
Task-number: QTBUG-32334
Change-Id: If1b4517f233b04d4c6c165cbfe62c8cf7b624c60
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
2014-08-16 13:41:01 +02:00
Allan Sandfeld Jensen
eb5ef33122 Handle 10-bit per color formats in qt_mac_toCGImage
Add support for the four new RGB30 formats to qt_mac_toCGImage so
that they get converted to ARGB32_Premultiplied instead of potentially
misinterpreted.

Change-Id: I0921edaef7509c1db9bd547b454dade03d289ea3
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-16 09:50:01 +02:00
Allan Sandfeld Jensen
04c42d2d09 Compile on Android without statfs.f_flags
Not all Android versions appear to have f_flags in statfs, but we
can check for the presence using a feature define.

Change-Id: Ib2acf6063d6211b871f462ee491459ac8675aa37
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-08-16 09:49:53 +02:00
Matt Broadstone
45cbbe56bc refactor disconnectFromFtp to remove cached entries when necessary
In cases where a cached ftp connection fails to connect, or a file
transfer has failed, we should removed the cached connection. Since qnam
has an idea of a single internal QFtp per full operation, when file
transfers failed previously the cached connection would be reused for
subsequent connections and thus fail.

[ChangeLog][QtNetwork][QNetworkAccessManager] QNetworkAccessManager now
properly handles FTP transfer failures by removing failed cached ftp
connections.

Task-number: QTBUG-40797
Change-Id: Ie090a39ceddd7e58a0d8baf7d01f2a08c70162e5
Reviewed-by: Richard J. Moore <rich@kde.org>
2014-08-15 19:48:36 +02:00
Marc Mutz
09d6bbebc2 QMimeData: replace an inefficient QList with a QVector
QMimeDataStruct is larger than a pointer, so holding it in a
QList is horribly inefficient.

Fix by marking as movable and holding in a QVector instead.

Change-Id: If285dd31546066db0b240ea0d4d30668f50b5f2c
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-15 19:19:20 +02:00
Giuseppe D'Angelo
e60079a55c GLX: request up to OpenGL 4.5 / ES 3.1 by default
Change-Id: I55fd53a8f7f81708a103e24e35c09894b939f245
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-08-15 18:45:06 +02:00
Frederik Gladhorn
a9fa9b80f5 Fix compilation of QPixelFormat with old clang
The enum would break on old clang trying to cast it to strings when
building webkit.

 In file included from /work/build/qt/qtbase/lib/QtGui.framework/Versions/5/Headers/qimage.h:48:
/work/build/qt/qtbase/lib/QtGui.framework/Headers/qpixelformat.h:78:33: error: use of overloaded operator '+' is ambiguous (with operand types 'int' and 'QPixelFormat::FieldWidth')

Change-Id: I614cf89d0832dea505001d55188b4c748e948ef9
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-08-15 18:34:49 +02:00
Simon Hausmann
258d35ceb3 Add support for accelerated glyph rendering in the directfb plugin
Change-Id: I44ae087c900e5cffdada45845cb7f34aab89b8ab
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2014-08-15 18:28:37 +02:00
Andy Nichols
b0781780ff DirectFB fix build error in QDirectFBWindow
This error was introduced by the Make the expose region local on all
platforms fix.

Change-Id: I961a53cb81c400471dff112664aa6d56e445d21c
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-08-15 13:01:04 +02:00
Andy Nichols
63ec4d42c0 DirectFB define platform integration capabilities
Make sure that the DirectFB plugin defines that it is capable of using
Threaded Pixmaps, Multiple Windows, and OpenGL when available.

Change-Id: I68a0a69568af8e00e47cd2c59bbf6a301df6ec34
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2014-08-15 13:01:00 +02:00
Allan Sandfeld Jensen
cd912ce067 Fix mistake in function extraTryFontsForFamily
Taiwan and mainland China were inverted in the extraTryFontsForFamily
method. This patch fixes it and makes sure to match the rest of the
Chinese LANGIDs.

Task-number: QTBUG-33307
Change-Id: I45048ff5e9c00d20f8e922902701129e80ed459d
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-08-15 10:19:40 +02:00
Allan Sandfeld Jensen
a128347c9b Fix rendering of fonts matched based on stretch
If the fontdatabase matches a font based on the stretch aka width
then the stretch factor on the font-engine needs to be 100
to avoid the fontengine doing manual stretching.

Without this a font requested with 75 stretch and matched with a font
of 75 stretch would be further condensed 25% by the fontengine.

Change-Id: Ib85ff027420c0ce891b0808dab13d25417d22df1
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-08-14 17:54:34 +02:00
Julien Brianceau
91e103d757 Fix x86/32-bit build when using an old version of gcc
Versions prior to 4.3 don't define __SIZEOF_POINTER__ macro.

Change-Id: I3144329778acd276e2fb885cb197a4532a15da70
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-08-14 17:47:44 +02:00
Allan Sandfeld Jensen
a0b021d136 Fix selection of fonts based on styleName
By carrying the styleName through from QFontDef to
bestFoundry and giving it to bestStyle that can use it
we can accurately match fonts based on styleName. This
makes it possible to match styles such as DejaVu Sans
Condensed and Ubuntu Medium.

The example fontsampler is updated so it can actually
sample all the different styles it lists.

Change-Id: I381effc74130311f98794cd07d30be10dee4fe45
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-08-14 14:39:20 +02:00
Allan Sandfeld Jensen
b3431a9553 QFusionStyle paints sliders outside of clip
When painting a slider the QFusionStyle overrides the existing clip
on QPainter thereby causing itself to be painting unclipped.

Changes replace clipping with intersection clipping.

Task-number: QTBUG-40530
Change-Id: I0135928c36ca1d23c906cf82c584ded01720b1cc
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-14 13:50:31 +02:00
aavit
319cbb7597 Fix QPainter::drawPolyline() painting errors with cosmetic pen
Task-number: QTBUG-31579
Change-Id: I8fd2c03ff9a22e4963bfcbcfe196ae4c61b9e10f
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-14 11:13:51 +02:00
aavit
509d6770d9 Let QImage::mirrored() retain dots-per-meter settings
Task-number: QTBUG-40582
Change-Id: Iffeba44fa6d1f34331bb69ff9aabce88efe279a7
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-14 11:11:22 +02:00
Laszlo Agocs
0b153bc93a Make sure to have a pbuffer-capable config for the temp pbuffer
The temporary pbuffer has to have a config that is pbuffer capable.
Otherwise the makeCurrent() can potentially fail with drivers that
strictly differentiate between the different configurations.

Change-Id: Id63f52da5c5a1308072b1f1bb4b297ea6a547166
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-14 11:02:42 +02:00
Allan Sandfeld Jensen
12ce167a96 Fix documentation and memrotate of new RGB30 QImage formats
This patch contains two changes that were lost when RGB30 support was
merged. Documentation of the formats being added, and corrected
memrotate methods.

Change-Id: Ia3c87d7c984134576badbba92c421f832896cf97
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-14 10:57:43 +02:00
Allan Sandfeld Jensen
9e1d6eec8e Move SubpixelAntialiasingType from QFontEngineFT to QFontEngine
To be able to use the SubpixelAntialiasingType enum without depending
on QFontEngineFT we need to move it to QFontEngine.

The patch also cleans up the left-overs of other enums moved the same
way.

Change-Id: I025bc8a5b429d376cfab0a643121ed6f99204988
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-08-14 10:49:33 +02:00
Laszlo Agocs
d147535322 Update qopenglext.h and qopengles2ext.h
The current one is from 2012 and is based on the obsolete spec files.
Replace it with the new one generated from the XML specs.

At the same time fix the callback function signature for QOpenGLDebugLogger
since it would not build otherwise. The user parameter is const GLvoid *
according to the specification.

Task-number: QTBUG-39773
Change-Id: If2153198373eeebc587c41b2dbf6bed5bcb26761
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2014-08-14 10:23:41 +02:00
Topi Reinio
d06c060de4 qdoc: Stop outputting duplicate \brief for QML type and module pages
When generating the body of a documentation page, QDoc omits
the brief description for nodes of type DocNode. Since Qt 5.4,
a number of nodes are promoted from subnode types of DocNode
to top-level nodes -specifically,
    - QML types
    - Modules
    - QML modules
    - Groups

As a result we now see a duplicate or unintentional brief
description on pages of the above type.

This change instructs qdoc to skip generation of the brief
for also above node types, as it was on 5.3.

Task-number: QTBUG-40741
Change-Id: Id92dce27b13c68be0958225e04ed61813fdc91ee
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
2014-08-14 09:28:43 +02:00
Jędrzej Nowacki
8f8c7e8a2b Remove redundant code from QMetaProperty.
The code contained old Qt4 logic. There is no point in checking values
of QVariant as they are in sync with QMetaType.

Change-Id: I58ace52f69939488e6ea7e7bab98df38419420a8
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-14 09:23:25 +02:00
Andreas Holzammer
2635b94607 Fix compile for harfbuzz-ng for wince
CRITICAL_SECTION has different members, so adjust that

strdup is only there as _strdup so use that

There is no MemoryBarrier()

There is no environment so dont use getenv

There is no locale so dont use it

There is no errno so just fake it

Change-Id: Ia7197c4f0df50513078c906ed503aec33ee42b82
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2014-08-14 02:08:57 +02:00
Andrew Knight
8c864ac498 winrt: Add partial SSL key support
This allows for opening of public key files. It does not, however,
support opening private keys (or decrypting/encrypting them). This is
due to limitations in the native API.

Nearly all public key tests pass (the native API doesn't support the
40-bit key in the test set). The private key tests are expected to fail.

Task-number: QTBUG-40688
Change-Id: Id8f2f1ae6526540736ceb2e5371f6a5d80c4ba7b
Reviewed-by: Richard J. Moore <rich@kde.org>
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-08-13 21:09:51 +02:00
Oliver Wolff
cec893e4f0 Introduce secure transport backend for Windows Runtime
The change creates a stub implementation for WinRT, adding the needed
files and classes to build SSL support on that platform.

Task-number: QTBUG-37497
Change-Id: Idc3e8aa91c5eb8a938705f2385d1074fe6c1d83e
Reviewed-by: Richard J. Moore <rich@kde.org>
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
2014-08-13 21:09:48 +02:00
Andrew Knight
2be0bf0765 winrt: Fix deadlock in thread dispatcher access
An event dispatcher fetching the core dispatcher can deadlock when
looking up the window. Simplify this by only looking up the view, and
treating the event dispatcher as one which will never obtain the core
dispatcher. This fixes a deadlock which occurs when starting network
delegates.

Change-Id: Ic27f4ab6f168eb95f3de70d78d64f035c331a7f5
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-08-13 21:09:45 +02:00
Thiago Macieira
4848796f3e Make sure we don't cache old file sizes prior to new writes
If we write to a file, its size changes. We should drop previous size
caches.

Change-Id: Ib687c91e5fc88cab588c89023f23da9622160da9
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2014-08-13 16:36:11 +02:00
Thiago Macieira
c6718f01c2 Correct the SYNC hint for the release barrier
The MIPS32 manual I have says 0x11 is SYNC_ACQUIRE and 0x12 is
SYNC_RELEASE. The change was an unintentional mistake in commit
60b6b28c21.

Thanks to Spencer Schumann for spotting this.

Change-Id: I16885e4e86e8befa8931733d0b5a54ac9942f176
Reviewed-by: Spencer Schumann <spencer.schumann@echostar.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Lisandro Damián Nicanor Pérez Meyer <perezmeyer@gmail.com>
2014-08-13 16:36:00 +02:00
Laszlo Agocs
5621a7c501 Fix composition for windows with alpha
While we will cover the entire surface with our textured quads, the clear
is still necessary in order to make top-levels with TranslucentBackground
render correctly: We don't want to blend transparent areas with undefined
content that is in the surface's framebuffer.

Blending is problematic for alpha values. We now prevent the blended alpha
from being written out. This ensures that in examples like qquickviewcomparison,
where the backingstore image contains an alpha of 0.5 while the QQuickWidget
texture 1.0, the result is still an alpha value of 1.0 in the final image.
Writing out an alpha of 0.5 would break on systems where windows get an alpha
buffer by default.

hellogl2 can now take a --transparent parameter which makes the QOpenGLWidget
being cleared to transparent in order to verify it works in combination
with Qt::WA_TranslucentBackground.

The swapped red and blue problem is also corrected. RGBA8888 does not need
swizzling. The only format that needs this is RGB32.

Task-number: QTBUG-40716
Change-Id: I54a9fd3a91a1b59575b38cdb908835315514e40f
Reviewed-by: Jørgen Lind <jorgen.lind@digia.com>
2014-08-13 16:14:19 +02:00
Ivan Komissarov
6c3c1a4cb8 Add the QStorageInfo class
Allows to retrieve information about mounted volumes such as label,
total/available size, filesystem type and so on.
Possible use cases are:
- allows to do checks about filesystem before performing actual
  operation (such as available/maximum volume size)
- allows to retrive information about volume that can be shown in file
  dialogs
- allows to retrieve volume for specific path and check if two or more
  paths belong to the same volume or not

[ChangeLog][QtCore] Added QStorageInfo class to retrive information
about mounted volumes and drives

Change-Id: Ibf9c2e6b53ef39c5605894a4422acdbbca4030c4
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-08-13 16:09:58 +02:00
Maurice Kalinowski
091653e9e7 Implement native settings format for WinRT
WinRT stores settings inside the app bundle, not in the registry.
Some tests are not fully functional due to errors in the file
implementation (See QTBUG-40588).

QSettings::SystemScope translates to a roaming container on WinRT,
meaning that settings stored inside there should be uploaded and
shared among devices. However, this is untested so far.

The tests have been updated for those platforms which do not store
the order of keys. This has been done on some locations only so
far, but needed to be done on more places for WinRT.

Task-number: QTBUG-33498
Change-Id: Ifd0194387b09c220d31812b4b6fd0ce9a7d84d24
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
2014-08-13 09:40:56 +02:00
David Edmundson
7487592cce Create.tag entries for QML classes
This patch makes Qml Classes get written to tag files the same as C++
tags.

Task-number: QTBUG-40551
Change-Id: I4a1973eeed6f7c2fdb65686c50e6ae4d273c9d7a
Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-08-13 09:22:30 +02:00
Paul Olav Tvete
c0556d92f3 Android: don't kill the app without warning
If the back key was pressed when no window was
visible, such as during startup, the app would be
killed without notice. This change makes sure that
we always give the app a chance to intercept the
back key before killing the application.

[ChangeLog][Android] Back key no longer kills the application
when no window is visible.

Task-number: QTBUG-39688
Change-Id: If9373e8d26ff323d8c8a274fb30820ecc4ca66ab
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-08-13 09:16:53 +02:00
Thiago Macieira
4e6ebabb30 Replace the const QString global static with a QStringLiteral
It was originally created to avoid allocating memory for the QString at
every turn, but we have QStringLiteral for that today. It has also
served a very good run by catching qatomic.h implementations that had
bad cv qualifications.

Change-Id: Id6d952b8cce363015ec2611d346b4cccedecf137
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
2014-08-13 09:07:38 +02:00
Frederik Gladhorn
d2c1a6cbb4 Add accessible roles
Change-Id: Ic5465687f51c441235ec23cb88045e14644f1d2a
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-08-13 09:07:15 +02:00
Frederik Gladhorn
fc36b834a6 Remove invalid assert
The table interface may be implemented without having a QObject.

Change-Id: I59b9bef29494296149bc1023db933b7c5d762cac
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-08-13 09:07:10 +02:00
Frederik Gladhorn
fc931e5595 Accessibility: Fix boundaries for text functions in QLineEdit
Make the functions work consistently. For example asking for the line at
the cursor position when the cursor was at the end returned an empty
line before.

Task-number: QTBUG-38500
Change-Id: I60fc78c7be129a59c83efcfce6d8fdd16f2c3f65
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-08-13 09:07:04 +02:00
Sérgio Martins
10b9e1b6b4 Fix QT_NO_REGULAREXPRESSION build
Change-Id: Ibf1358733d7c5aa2c14cf46c23a24ba4da14143c
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-08-13 08:48:01 +02:00
Sérgio Martins
bf9a4ef8b4 Fix QT_NO_ANIMATION build
Change-Id: Ia589e703206d6ca675a392e634e2a445dcf4cca3
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-08-13 08:47:54 +02:00
Olivier Goffart
135a286844 Fix error reported by address sanitizer
It is not valid to dereference a null pointer, even if it's just in order
to access enum constants

Change-Id: Id404c308ae7ffd879afdd678302e3ac4e0c69001
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-08-13 00:00:03 +02:00
Olivier Goffart
7ca5af28d0 Fix error reported by address sanitizer
One can't dereference the null pointer value. Even to access a static member.

Change-Id: I5edc92d7886ccc7029d1f3c00a12de78b439f080
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-08-12 23:59:59 +02:00
Sérgio Martins
f2c7ea7178 Fix build with QT_NO_MDIAREA
Change-Id: I456fea53f641476ea63cbe170cc65811c92eb290
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-08-12 20:05:18 +02:00
Marcel Krems
9f486efcbe Show the correct cursor for QLineEdit's side buttons.
Task-number: QTBUG-40708
Change-Id: I5869f42bab3a27085b5572a4b83b16c39a67f733
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-08-12 14:56:23 +02:00
Shawn Rutledge
296142ba05 OSX MenuRole detection: remove ampersand before looking for keywords
The chosen shortcut should not affect the menu role.

Task-number: QTBUG-40181
Change-Id: I5a77d0109999b2fb8d40f8c526e0bbcfa31ad5e7
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
2014-08-12 14:40:57 +02:00
Frederik Gladhorn
ca524e5b70 Merge remote-tracking branch 'origin/5.3' into 5.4
Manually included changes from
3a347a4e70
in src/opengl/qgl.cpp.

Conflicts:
	src/opengl/qgl_qpa.cpp
	src/plugins/platforms/android/androidjnimain.cpp

Change-Id: Ic26b58ee587d4884c9d0fba45c5a94b5a45ee929
2014-08-12 13:05:02 +02:00
Laszlo Agocs
b08cc0ec6f Make the expose region local on all platforms
QExposeEvent::region() reports a region in a random coordinate system.
The behavior is undocumented and the platform plugins do different things.

xcb, offscreen and ios are correct. These set the region in local coordinates,
which is the most logical interpretation of the expose region.

windows is almost correct, except for one occurrence.

cocoa and others need changes: passing in geometry() as the exposed region is
always wrong.

The patch documents the expected behavior both for QExposeEvent and
internally in QWindowSystemInterface. The problematic plugins are fixed to
use local coordinates.

Task-number: QTBUG-40470
Change-Id: I6ded3154d14254fa71d4292d8e1b5e6cf696c81a
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-12 07:47:32 +02:00
Laszlo Agocs
611558d877 Modernize the OpenGL examples
Change them to use QOpenGLWidget and QOpenGLTexture.
Advocate also the usage of VBOs.

Hopeless examples, that rely on the fixed pipeline and will
not compile or work in ES and dynamic builds, are moved to
a "legacy" directory. The documentation pages for these are
removed. This long due change avoids the confusion newcomers
experience when trying to get started with Qt 5 and OpenGL.

hellowindow's behavior is changed to open a single window only
by default. The old default behavior, that opened three windows
on platforms that supported both MultipleWindows & ThreadedOpenGL,
can be requested by passing --multiple. --single is removed since it
is the default now. This plays much nicer with drivers that have
issues with threading.

In addition, say hello to hellogl2.

This is the old hellogl example updated to use QOpenGLWidget and
OpenGL 2. It also has a mainwindow with multiple (un)dockable widgets
containing the OpenGL widgets. This helps testing the behavior when
the top-level of the QOpenGLWidget changes and provides a very
important example of how to do proper resource management in this case.
(must use aboutToBeDestroyed() of the context, since the context goes
away and is replaced by a new one on every dock/undock)

As a bonus, the logo is now real 3D, no more orthographic nonsense.

Launch with --multisample to request 4x MSAA.

Launch with --coreprofile to request 3.2 Core. In this particular example
the shaders are present in both versions and there is a VAO so the application
is functional with core profile contexts.

Change-Id: Id780a80cb0708ef164cc172450ed74050f065596
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-12 07:47:23 +02:00
Topi Reinio
338f9c4f7c qdoc: Distinguish between QML property and attached property
A recent change in qtdeclarative (60ed6a43) added an attached
property 'Window' to Item type, with property names identical
to the ones already available in Window. This caused QDoc to
report warnings for duplicate documentation for QML properties,
because there was no distiction between a QML property and an
attached property.

This change fixes the issue by:
    - Allowing identical names for \qmlproperty and
      \qmlattachedproperty
    - Using distinct URLs/UUIDs/anchor references for them
    - Marking attached properties with '[attached]' qualifier
      in 'All Members' page.

This doesn't solve the issue of disambiguating between a
similarly named QML property and attached property when
linking from an external location. However, these can be
solved with the help of the \target command.

Task-number: QTBUG-40674
Change-Id: Icc74de237366e9897334689fe354ab83e4af0356
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2014-08-12 07:27:45 +02:00
Andrew Knight
34198cedbe winrt: Fix core dispatcher lookup
The core dispatcher lookup should be performed from the constructor
in all cases but the first (WinMain) thread, and only rechecked if the
thread changes.

Change-Id: I05f0c15b3e199994aa5d740b2092b42fb8d2f596
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-08-11 23:29:27 +02:00
Andrew Knight
57d9eb2b77 SSL backend: Fix pem header/footer utility methods
These methods assumed incoming data would have LF line endings, and
therefore broke when parsing files with CRLF line endings. This
simply removes the line feed from the header/footer strings, and switches
to QByteArrayLiteral while doing so.

Change-Id: I0c14634243c4bd7d19a6b5ef718b6ed1cc6bcdb2
Reviewed-by: Richard J. Moore <rich@kde.org>
2014-08-11 23:29:25 +02:00
Andrew Knight
259cf68e06 SSL backend: Add a decodeDer() method to the private API
This allows QSslKey to avoid converting to pem format if the backend
supports native der decoding.

Change-Id: I0822a21401ad0ca81c6eeb6c7d53c421e1e2e93a
Reviewed-by: Richard J. Moore <rich@kde.org>
2014-08-11 23:29:22 +02:00
Andrew Knight
2fe8efbefe winrt: Fix theme palette
Windows Phone didn't handle the base color enums well, and ARM was
getting incorrect colors due to different byte ordering. So, use the
Phone-specific enums where applicable and pass in the proper char sequence
for the color.

Change-Id: I7ffbc383c07d2160974560110fea221a204577ea
Reviewed-by: Jochen Seemann <seemann.jochen@gmail.com>
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-08-11 23:29:20 +02:00
Andrew Knight
3846aec83b winrt: Fix backing store blit
The calculation forgot to take the mirrored texture upload into account.

Change-Id: Ia69c9c4b9d852d9ac652e71aaa466c5387ff5bca
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-08-11 23:29:18 +02:00
Olivier Goffart
c2badc7423 Fix disconnect()ing from signals declared in a base class
Fix disconnection from pointer to member signal that belongs to the base
class, but whose type is a pointer to a member of the derived class.

Commit 9cc106d9d7 fixed connect, so apply
the same fix in disconnect

[ChangeLog][QtCore][QObject] Fixed disconnecting from pointer to member
signal that belongs in the base class but whose type is explicitly given
as a pointer to a member in the derived class

Task-number: QTBUG-40638
Change-Id: Ia546fc8f36e1ea0dd0645bdd820aea47f43677ac
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-08-11 16:49:01 +02:00
Thiago Macieira
5a882d0359 Doc: document that we have unfixed bugs with waitForXxx on Windows
We have to document because we don't know how to fix the bug and don't
know when they will be fixed. We should also disable the unit tests
related to those functions, as they probably cause CI instability.

Task-number: QTBUG-24451
Change-Id: I0e60682ec4af7570258b13735339051ba8f4a6e4
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
2014-08-11 16:44:50 +02:00
Simon Sasburg
f126f7cc27 Fix rendering alpha-blended text which needs to be clipped at the top.
Task-number: QTBUG-34148
Change-Id: I9c0694e67cc9883db318c1a1558bdf6e08088db4
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-11 14:01:47 +02:00
Laszlo Agocs
00f3f5c0a6 Fix msaa in QOpenGLWidget
Take the correct number of samples from the widget's context, not the
tlw's context.

The original implementation did the blit only after paintGL(). This is
not sufficient for applications that override paintEvent() and do QPainter
calls in there (e.g. the 2dpainting example). Therefore the approach is
changed to perform the resolving of the samples in a function that is
invoked by QWidgetPrivate every time a paint event is sent.

Change-Id: Iae0b2c30f6070ec75201339a848854e4582a9c0c
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-11 13:19:53 +02:00
Frederik Gladhorn
9ba3145f79 Add QAccessible::ActivationObserver
Makes it possible to follow changes in activation an deactivation of a11y.
Needed for WebEngine to know when to activate a11y.

Change-Id: Ia264a76974224d1baad3e88c34a4b8a9f1a3695d
Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
2014-08-11 13:16:51 +02:00
Sérgio Martins
7fcb3aad40 Fix build due to missing include when using a minimal config.
QStyle is used, so include it explicitly instead of relying on
indirect inclusions.

Build was broken when using a bunch of QT_NO_ defines, not sure
which one triggers the failure though.

Change-Id: Ib07218521648448576f1b55d2d91d1711c048f09
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-08-11 11:06:57 +02:00
Sérgio Martins
96d8c61f0d Fix build with QT_NO_DRAGANDDROP
viewportSizeHint() should be defined outside the QT_NO_DRAGANDDROP ifndef

Change-Id: I7c23c820ea58b3614eb030dc5b0f290ad891ccb1
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-08-11 11:05:50 +02:00
Gabriel de Dietrich
909d3f5c73 Font Database: Add support for private, system UI font families
We introduce QPlatformFontDatabase::isPrivateFontFamily() to allow
testing for private, system UI font families. Both QFontComboBox
and QFontDialog need to filter out those private font families
which, by definition, should be hidden from the end user.

(The textedit example had to be updated to fix the issue where the
default font would be private. In 5.4, we will be adding an equivalent,
public API in QFontDatabase, and a better solution for the textedit
example and QTexEdit in general).

In particular, on OS X and iOS, private fonts are used for the system
UI font. Those have their font family name prefixed by a dot.
QCoreTextFontDatabase knows about this, and makes sure those are
tested positive as private font families. In order to have a cleaner
layer separation, we moved the QPA theme font resolution from the
platform theme classes into QCoreTextFontDatabase for both Cocoa and
iOS QPA plugins.

In both cases, we use CoreText's CTFontCreateUIFontForLanguage(), that
nicely maps to the HITheme API we were using so far on Mac. That means
one HITheme dependency less. We also cache the font descriptors we get
for these font for each time QCTFD::populateFamilies() gets called.
(While not common, this currently happens in auto-tests, like
tst_QFontDatabase, and could happen in actual applications -- specially
when adding and removing application fonts.)

Change-Id: Ic6f0b60f9f597afee1a43596a669742dc546b97f
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2014-08-11 10:46:13 +02:00
Giuseppe D'Angelo
3924805d59 Apply upstream patch r1498 to our PCRE copy
It's actually a subset of the patch (tests, docs, other whitespace
fixes were dropped).

Fixes a stack overflow issue on pathological regexps reported upstream:
http://bugs.exim.org/show_bug.cgi?id=1515

Change-Id: Ie36536e820d79ff842d90efa6bec22b701423793
Reviewed-by: Richard J. Moore <rich@kde.org>
2014-08-10 14:18:28 +02:00
Giuseppe D'Angelo
00ca499787 Apply upstream patch r1495 to our PCRE copy
It's actually a subset of the patch (tests, docs, other whitespace
fixes were dropped).

Fixes a stack overflow issue on pathological regexps reported upstream:
http://bugs.exim.org/show_bug.cgi?id=1503

Change-Id: If080e4c1e7a86c86459bbbc631c8d8bb3cd7b99f
Reviewed-by: Richard J. Moore <rich@kde.org>
2014-08-10 14:18:26 +02:00
Jędrzej Nowacki
9d19be5994 Remove unused property from moc
Change-Id: Ia09ce83b23d1d9eb54ab5fac1fee4755913f5a33
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-09 15:38:07 +02:00
Jędrzej Nowacki
8f22f242a2 Micro-optimize QUrl::topLevelDomain
Using QStringRef saves few instructions

Change-Id: I0d67a1f6a1c1385c88a8b21cb98b9c7dbdfb66e5
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-08-09 15:37:11 +02:00
Andrew Knight
5dd7164c97 winrt: Use native file dialog
The native Windows Runtime file picker is required to support picking
of any file/folder from the system. Due to platform security restrictions,
the non-native file dialog is effectively useless when outside of the
application's installation or local storage directories.

This adds a QPA implementation for the WinRT file picker, as well as
a simple file system engine to handle files which were opened by the
picker. This necessary for platform security reasons, as it is not
possible to open files from arbitrary paths - only file handles opened by
the picker can be used, so these are kept inside this file system engine
and acted upon when a known path is observed.

The file system engine is only instantiated when needed, and may prove
useful for other areas of Qt (such as known folders/standard paths) which
must operate on a virtual file rather than an absolute path.

Task-number: QTBUG-37748
Change-Id: Ia4fd6c5065ac92101ce34adcb6c9026fbcff56df
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@digia.com>
2014-08-09 15:37:09 +02:00
Jędrzej Nowacki
4413254ff6 Micro-optimize QDir::relativeFilePath
Use QString::splitRef on platforms with case sensitive paths, to
avoid unnecessary allocations.

Change-Id: Iff331a5eb67c4cbaf1333e663e77290261c5b013
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-08-09 15:37:04 +02:00
Thiago Macieira
65ade55c8c Add QtPrivate::is_const and is_volatile
And correct the comment by listing more types that are available

Change-Id: I9cb4b664f97300357a55d81bc99dd542a29e933b
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-08-09 15:35:56 +02:00
Marc Mutz
d1ede822d8 QOpenGLVersionStatus: add constexpr
Also dropped two redundant qMakePair() calls.

Change-Id: I7266ac9a3354ef4f60bf921fc0cd5d5a33c75b93
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-08-09 09:06:29 +02:00
Marc Mutz
e41b45f1ae QPair: add constexpr liberally
On templates, adding constexpr makes a given instantiation constexpr
if it can be.

This turns qMakePair(0,0), say, into a compile-time constant.

The effects on existing code are small, but exist:

  $ size lib/*{-baseline,-paircexp} | sort -nr
  6516727  211192    2608 6730527  66b31f lib/libQt5Widgets.so.5.4.0-baseline
  6516711  211192    2608 6730511  66b30f lib/libQt5Widgets.so.5.4.0-paircexp
  5373720   44492   15976 5434188  52eb4c lib/libQt5Core.so.5.4.0-baseline
  5373504   44492   15976 5433972  52ea74 lib/libQt5Core.so.5.4.0-paircexp
  5107206  125072    6080 5238358  4fee56 lib/libQt5Gui.so.5.4.0-baseline
  5107030  125072    6080 5238182  4feda6 lib/libQt5Gui.so.5.4.0-paircexp
  1341290   30180    2600 1374070  14f776 lib/libQt5Network.so.5.4.0-baseline
  1341210   30180    2600 1373990  14f726 lib/libQt5Network.so.5.4.0-paircexp
  # no other libraries benefit

[ChangeLog][QtCore][QPair] Can now be used in C++11 constexpr contexts.

Change-Id: I3872e6aa33a7d02a168516f4dfa7119efcac8c40
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-08-09 09:06:16 +02:00
Marc Mutz
31f2b7e591 Use NAmE spelling of grey (gray)
These occurrences are only in docs or code comments.

Change-Id: Ia114466a85c01e2b978396c329153044921fb20b
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2014-08-09 09:05:57 +02:00
Marc Mutz
28bb18c0c0 QStringRef: add missing \since 5.4
{,c}{begin,end}() were added post-5.3, in 1a6f490b, but weren't marked with \since 5.4.

Add it.

Change-Id: Ide743833144f784c7d09b125e7a22f9b184ed823
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-08-09 09:05:51 +02:00
Thiago Macieira
dcf9883dff Move the special QByteArrayList methods into QList
and make QByteArrayList be a simple typedef.

As a side-effect, the constructor taking a QByteArray is no longer
available since I couldn't find a way to add it to QList<T> when T is
QByteArray. My template-foo failed me. I tried:

 - QEnableIf<is_same<T, QByteArray>::value, QByteArray>::type
   => makes QList fail to compile for any T that isn't QByteArray
 - make the constructor a template member
   => it compiles if the parameter is a QByteArray, but not a const
      char[4] like the test was
 - inheriting constructors
   => runs into ICC and Clang bugs that I could not work around

Besides, the constructor with std::initializer_list is a superior
solution anyway.

Change-Id: Ic86fbadc1104142bfd907a5c4147199bf839fb89
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-08-09 09:05:43 +02:00
Marc Mutz
2431bf1b20 QPixelFormat: don't inherit it
Instead of abusing inheritance to provide convenience constructors,
use simple inline constructor functions. The name got a lower-case
q to indicate a free function. The usual fromXYZ() static methods
were deemed not fitting in this case in the initial round of review,
since they implied some kind of conversion while these functions are
simply constructors of formsts, which contain no data.

This also solves the problem that some of these ctors could have been
called with just one argument and were therefore candidates for hidden
QPixelFormat temporary injection.

QPixelFormatRgb was renamed to qPixelFormatRgba to explain the third
argument at the call site better.

There seem to be no users of this class in qt5.git at this time.

Change-Id: Ib4fe8ceb2d30744127b116a748724a3406400eb8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-08-09 09:05:24 +02:00
Marc Mutz
184fd8aa6c QPixelFormat is better taken by-value
Being a better quint64, it can be passed in registers, so take them as value args.

Change-Id: I8eb96a2594d910b538b651fb3ca567c0c124dd3a
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@digia.com>
2014-08-09 09:04:51 +02:00
Marc Mutz
d131abde59 QPixelFormat: implement some oneliners in the class body
There's little point in duplicating the complex declaration (thanks to C++11), just define
the relational operators and the default ctor where they're declared.

Change-Id: Ie91545b2581c89edd434c911eb05705e2d16debe
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-08-09 09:04:33 +02:00
Marc Mutz
3469c262fc QPixelFormat: don't use bit fields
GCC at least is generating horrible code for them, so do the bit twiddling
ourselves. This is not premature optimization, because it might be the seed
for a QBitField class, as suggested by Andrei Alexandrescu on GN2013.

The assembler code of default and copy ctors is unchanged between the old
and new versions. Accessors such as redSize() are virtually identical (with
an and and a mov exchanging place). The interesting thing is what happend in
operator== and the set-all-fields ctor. These are the disassemblies of
functions wrapping op== and the ctor, resp.:

bool pf_comparison(QPixelFormat, QPixelFormat):
        .cfi_startproc                                   |        .cfi_startproc
        movl    %esi, %edx                               |        cmpq    %rsi, %rdi
        xorl    %eax, %eax                               |        sete    %al
        xorl    %edi, %edx                               |        ret
        andl    $15, %edx                                |        .cfi_endproc
        jne     .L53                                     |
        movl    %esi, %edx                               |
        xorl    %edi, %edx                               |
        testw   $1008, %dx                               |
        jne     .L53                                     |
        movl    %esi, %edx                               |
        pushq   %rbx                                     |
        .cfi_def_cfa_offset 16                           |
        .cfi_offset 3, -16                               |
        movl    %edi, %ebx                               |
        movzbl  %dh, %ecx                                |
        movzbl  %bh, %edx                                |
        xorl    %ecx, %edx                               |
        andl    $252, %edx                               |
        jne     .L40                                     |
        movq    %rdi, %rcx                               |
        movq    %rsi, %rdx                               |
        shrq    $16, %rcx                                |
        shrq    $16, %rdx                                |
        movl    %ecx, %ebx                               |
        xorl    %edx, %ebx                               |
        movl    %ebx, %r8d                               |
        andl    $63, %r8d                                |
        jne     .L40                                     |
        xorl    %ecx, %edx                               |
        testw   $4032, %dx                               |
        jne     .L40                                     |
        movq    %rsi, %rcx                               |
        movabsq $16911433728, %rdx                       |
        xorq    %rdi, %rcx                               |
        testq   %rdx, %rcx                               |
        jne     .L40                                     |
        movq    %rdi, %rdx                               |
        movq    %rsi, %rcx                               |
        shrq    $32, %rdx                                |
        shrq    $32, %rcx                                |
        movl    %edx, %ebx                               |
        xorl    %ecx, %ebx                               |
        movl    %ebx, %r8d                               |
        andl    $252, %r8d                               |
        jne     .L40                                     |
        movq    %rsi, %r9                                |
        movq    %rdi, %r8                                |
        shrq    $40, %r9                                 |
        shrq    $40, %r8                                 |
        xorl    %r9d, %r8d                               |
        andl    $127, %r8d                               |
        jne     .L40                                     |
        xorl    %ecx, %edx                               |
        andl    $98304, %edx                             |
        jne     .L40                                     |
        movq    %rsi, %rcx                               |
        movq    %rdi, %rdx                               |
        shrq    $48, %rcx                                |
        shrq    $48, %rdx                                |
        xorl    %ecx, %edx                               |
        andl    $126, %edx                               |
        jne     .L40                                     |
        shrq    $48, %rdi                                |
        movq    %rcx, %rax                               |
        xorl    %edi, %eax                               |
        testw   $-128, %ax                               |
        sete    %al                                      |
        .p2align 4,,10                                   |
        .p2align 3                                       |
.L40:                                                    |
        popq    %rbx                                     |
        .cfi_restore 3                                   |
        .cfi_def_cfa_offset 8                            |
.L53:                                                    |
        rep                                              |
        ret                                              |
        .cfi_endproc                                     |

That one is pretty obvious. Hint: the right one is the new version.

QPixelFormat pf_unwieldy_ctor(QPixelFormat::ColorModel, ...)
        .cfi_startproc                                   |        .cfi_startproc
        movq    %rbp, -32(%rsp)                          |        movq    %rbx, -40(%rsp)
        movq    %r12, -24(%rsp)                          |        .cfi_offset 3, -48
        andl    $15, %edi                                |        movzbl  8(%rsp), %ebx
        movq    %r13, -16(%rsp)                          |        andl    $63, %esi
        movq    %r14, -8(%rsp)                           |        movq    %rbp, -32(%rsp)
        andl    $63, %esi                                |        movq    %r12, -24(%rsp)
        movl    48(%rsp), %r11d                          |        andl    $63, %edx
        movzbl  8(%rsp), %r10d                           |        .cfi_offset 6, -40
        andl    $63, %edx                                |        .cfi_offset 12, -32
        .cfi_offset 6, -40                               |        movl    16(%rsp), %ebp
        .cfi_offset 12, -32                              |        movl    32(%rsp), %r11d
        .cfi_offset 13, -24                              |        andl    $63, %ecx
        .cfi_offset 14, -16                              |        movl    40(%rsp), %r10d
        movzbl  16(%rsp), %r14d                          |        movq    %r13, -16(%rsp)
        movzbl  24(%rsp), %r13d                          |        andl    $63, %r8d
        andl    $63, %ecx                                |        andl    $63, %ebx
        movzbl  32(%rsp), %r12d                          |        .cfi_offset 13, -24
        movzbl  40(%rsp), %ebp                           |        movl    48(%rsp), %r13d
        andl    $63, %r8d                                |        andl    $63, %r9d
        movl    %r11d, %eax                              |        movq    %rbx, %r12
        movq    %rbx, -40(%rsp)                          |        movl    24(%rsp), %ebx
        .cfi_offset 3, -48                               |        andl    $1, %ebp
        andl    $63, %r9d                                |        andl    $1, %r11d
        andl    $3, %eax                                 |        andl    $15, %r10d
        andl    $63, %r10d                               |        movq    %rdi, %rax
        xorl    %ebx, %ebx                               |        andl    $15, %eax
        andl    $1, %r14d                                |        salq    $4, %rsi
        andl    $1, %r13d                                |        salq    $10, %rdx
        andl    $1, %r12d                                |        andl    $1, %ebx
        andl    $15, %ebp                                |        salq    $16, %rcx
        cmpl    $2, %r11d                                |        salq    $22, %r8
        cmovne  %eax, %ebx                               |        salq    $28, %r9
        andl    $63, %esi                                |        salq    $34, %r12
        movq    %rdi, %rax                               |        salq    $40, %rbp
        salq    $4, %rsi                                 |        salq    $41, %rbx
        andl    $15, %eax                                |        salq    $42, %r11
        andl    $63, %edx                                |        salq    $43, %r10
        salq    $10, %rdx                                |        cmpl    $2, %r13d
        orq     %rsi, %rax                               |        movq    %r14, -8(%rsp)
        andl    $63, %ecx                                |        .cfi_offset 14, -16
        salq    $16, %rcx                                |        movzbl  56(%rsp), %r14d
        orq     %rdx, %rax                               |        je      .L45
        andl    $63, %r8d                                |        andl    $3, %r13d
        orq     %rcx, %rax                               |        salq    $47, %r13
        salq    $22, %r8                                 |.L44:
        andl    $63, %r9d                                |        orq     %rsi, %rax
        salq    $28, %r9                                 |        orq     %rdx, %rax
        orq     %r8, %rax                                |        movq    %r14, %rdx
        andl    $63, %r10d                               |        movq    -8(%rsp), %r14
        movq    %r14, %rcx                               |        orq     %rcx, %rax
        salq    $34, %r10                                |        andl    $63, %edx
        orq     %r9, %rax                                |        orq     %r8, %rax
        andl    $1, %ecx                                 |        salq    $49, %rdx
        movq    %r13, %rdx                               |        orq     %r9, %rax
        orq     %r10, %rax                               |        orq     %r12, %rax
        salq    $40, %rcx                                |        movq    -24(%rsp), %r12
        andl    $1, %edx                                 |        orq     %rbp, %rax
        movq    -16(%rsp), %r13                          |        movq    -32(%rsp), %rbp
        salq    $41, %rdx                                |        orq     %rbx, %rax
        orq     %rcx, %rax                               |        movq    -40(%rsp), %rbx
        movq    %r12, %rcx                               |        orq     %r11, %rax
        orq     %rdx, %rax                               |        orq     %r10, %rax
        andl    $1, %ecx                                 |        orq     %rdx, %rax
        movq    %rbp, %rdx                               |        orq     %r13, %rax
        salq    $42, %rcx                                |        movq    -16(%rsp), %r13
        andl    $15, %edx                                |        ret
        movq    -32(%rsp), %rbp                          |        .p2align 4,,10
        salq    $43, %rdx                                |        .p2align 3
        orq     %rcx, %rax                               |.L45:
        movq    %rbx, %rcx                               |        xorl    %r13d, %r13d
        orq     %rdx, %rax                               |        jmp     .L44
        movzbl  56(%rsp), %edx                           |        .cfi_endproc
        andl    $3, %ecx                                 |
        salq    $47, %rcx                                |
        movq    -40(%rsp), %rbx                          |
        movq    -24(%rsp), %r12                          |
        movq    -8(%rsp), %r14                           |
        andl    $63, %edx                                |
        orq     %rcx, %rax                               |
        salq    $49, %rdx                                |
        orq     %rdx, %rax                               |
        ret                                              |
        .cfi_endproc                                     |

Without bothering to understand the details, they look pretty similar, with the new
version being slightly shorter. But that may not mean anything.

Change-Id: I31e84c9109ccd0c7282351b2e2802407a9b360b4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-08-09 09:04:16 +02:00
Glen Mabey
35105f173e Long live QByteArrayList!
Initial submission of a new class QByteArrayList with the
purpose of aggregating and then joining QByteArray instances.

[ChangeLog][QtCore] Added new QByteArrayList class.

Done-with: Marc Mutz <marc.mutz@kdab.com>
Change-Id: I503af58f125d7f44fef10360177490c933e5840f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-08-09 09:01:41 +02:00
Keith Gardner
a332322de9 Long live QVersionNumber!
The class provides compare operators, stream operators, and hashing
functions. This class aims to be compatible with (but not restricted to)
the Semantic Versioning 2.0 standard (semver.org).

[ChangeLog][QtCore] Added QVersionNumber class

Done-with: Marc Mutz <marc.mutz@kdab.com>
Change-Id: I244c8ccc002909af03987a2df052734d1a8621a9
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-08-09 09:00:24 +02:00
Olivier Goffart
3750c677ee QObject: fix valgrind warning when disconnecting
QObjectPrivate::Connection::method should never be called when
the Connection was made with the function pointer syntax

This caused valgrind warning about using uninitialized value on such code:

 QObject::connect(&o, &Object::aSignal, &o, &Object::aSlot);
 o.disconnect(&o, SLOT(aSlot()));

Change-Id: Iaff9ecd3ddfe665db92726b420021493453c4cea
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2014-08-09 08:31:20 +02:00
Oliver Wolff
6f1299c0b4 SSL: split ssl files into general and "_openssl" implementation
In order to prepare the addition of WinRT and iOS (SecureTransport)
implementations of SSL the structure of some SSL files has to be
redone. Parts of certificate that probably can be reused by other
ports stayed in qsslcertificate.cpp while other parts were moved
to qsslcertificate_openssl.cpp. qsslcontext, qsslkey and qsslsocket
were suffixed by _openssl to show that these are pure openssl
implementations.

Change-Id: I7b022dec49759f882274999c0991bf95788f2a3a
Reviewed-by: Andrew Knight <andrew.knight@digia.com>
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
2014-08-09 08:28:56 +02:00
Laszlo Agocs
9aaa615626 Fix crash in QOpenGLWidget when changing the TLW
The documentation was also somewhat incomplete when it comes to
widgets that change their tlw multiple times.

Change-Id: I09dd70167804c50a5283ab3709162c93a3827e9b
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-08 17:32:23 +02:00
Gunnar Sletta
88bd28f91e Initialize member.
Change-Id: I9ed8d5a7aeb40886bafbd9eb2003e88e5d796cc9
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-08-08 13:34:13 +02:00
Takumi Asaki
8e3aacf61b OS X: Remove mnemonics in parentheses
In some language, mnemonics put after label text within parentheses.
e.g. "&Open" is translated to "開く(&O)" in Japanese.

OS X doesn't use mnemonics and '&' in label text is removed.
Mnemonics in parentheses (and spaces before them) also should be removed.

Change-Id: I88c0a1f60af7e148b3cf24a4e215ce807d62bce3
Reviewed-by: Tasuku Suzuki <stasuku@gmail.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
2014-08-08 10:44:29 +02:00
Laszlo Agocs
bb760d9514 Add support for glMapBufferRange in the wrappers and resolvers
QOpenGLBuffer::map() and related helpers are becoming useless in
OpenGL ES 3.0 and up: instead of the old GL_OES_map_buffer,
glMapBufferRange, but not glMapBuffer, is now part of the standard.
On desktop GL_ARB_map_buffer_range is present by default in OpenGL 3.0
and newer.

[ChangeLog][QtGui] Added QOpenGLBuffer::mapBufferRange().

Task-number: QTBUG-38168
Change-Id: I4e9bbe8ced9ee4d535ac32849a8c08c26d79cb49
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-08 07:29:53 +02:00
Laszlo Agocs
22e4391413 Add default format to QSurfaceFormat
Add defaultFormat() and setDefaultFormat() statics to QSurfaceFormat.
These define the default values for the requestedFormat members of
QOpenGLContext, QWindow and QOpenGLWidget (and implicitly QOpenGLWindow,
QQuickWindow, etc.)

This replaces QQuickWindow::setDefaultFormat() which can now be removed.

The main inspiration here is not the convenience (avoiding setFormat() calls
for all windows/widgets), but robustness: by setting the format once at the start
of the application, all windows and contexts, including the internal share context
used by QOpenGLWidget and QQuickWidget, will use the same format, eliminating
the possibility of failing due to trying to share between incompatible contexts.

Furthermore, since such a functionality is anyway mandatory for QQuickWindow
(due to the possibility of creating windows from QML code), extending it to
QSurfaceFormat and QOpenGLContext/QWindow is the next logical step.

Change-Id: Ie94486adc489d17fecfcebb7050fecedffd2688b
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-08 07:29:29 +02:00
Laszlo Agocs
41a7072195 Fix the docs for resizeGL in QOpenGLWindow
Some of it was blindly copied from QOpenGLWidget and it
does not apply.

Change-Id: I73f358f74d286d3757a3a77a9bfe06887d57514a
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-08 07:28:41 +02:00
Thiago Macieira
6a237a4e76 Add some missing STL typedefs and functions to QStringRef and QByteArray
These will be needed in some template code that is to come.

Change-Id: I5b93f4320313f7b15a6404de2c98f85485735fda
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
2014-08-08 00:05:03 +02:00
Thiago Macieira
e8150576cd Document missing QLatin1String methods
Most of them were added before 5.0, but it's ok to just list as 5.0.

Change-Id: I6e83a210a0165659f710d47ed595e9e89d5dbac9
Reviewed-by: Martin Smith <martin.smith@digia.com>
2014-08-07 22:39:40 +02:00
Friedemann Kleint
04ba6fbed9 Windows/QGuiApplication::topLevelAt(): Skip mouse-transparent windows of other processes.
Search again when a non-Qt window with WS_EX_TRANSPARENT set is found.

Task-number: QTBUG-40555
Change-Id: I3f53be626f52dc25429661ac8ea5e9f6bb163596
Reviewed-by: Björn Breitmeyer <bjoern.breitmeyer@kdab.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
2014-08-07 21:05:50 +02:00
Jędrzej Nowacki
2f1ab7156a Micro-optimize qdoc codeparser.
There is no need to allocate new string while a simple reference is
enough.

Change-Id: I137b58fc180fe9a7bff9d0f9e546ca04aa9f4696
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2014-08-07 15:54:03 +02:00
BogDan Vatra
8b7a2d582c Android: Say hello to gradle!
Add build.gradle script, move Android template files to another folder.
These files are specific to every project, and they should be copied to
then project android folder.

Switching from Ant to Gradle brings lots of advantages:
 - it is way faster when rebuilding (25-50% faster than ant).
 - it enables first class Android Studio integration.
 - adding Android Extras libs (e.g. Google Play services, OBB, etc.) to
   your project is now painless.

[ChangeLog][Android] Added Gradle support to build the APK.

Change-Id: I9c8cb355118c9ac1997270c8b80916eca43fce4d
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
2014-08-07 12:27:51 +02:00
Gunnar Sletta
50c418b61d Both HiQualAA and normal AA should mean antialiasing in rasterengine.
Change-Id: I1970c96e7681e4059984d837e12f044f138e6d7e
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
2014-08-07 10:08:24 +02:00
Andy Shaw
51ff044934 Check if Start/EndPage returns non-positive value when error checking
StartPage and EndPage are documented to return a non-positive value (0 or
less) when they fail, therefore it is not enough to check if !StartPage.
Checking if is 0 or less is more accurate.

Change-Id: Ia0ff43da4e4309ba0a5983e91a0ad583aad0a955
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-08-07 10:07:41 +02:00
Thiago Macieira
e26404e43f Add missing #include <qdatastream.h> or <qiodevice.h>
Lots of code depended on an indirect includes from qstringlist.h.

Change-Id: I33d0dce33d64302d6c0e49180cc1249b90ab27c5
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2014-08-07 08:41:45 +02:00
Laszlo Agocs
37023a096d Avoid repaints and swapbuffers when the platform window is already gone
On Linux at least the qopenglwindow example sometimes shows
"QOpenGLContext::swapBuffers() called with non-exposed window, behavior is undefined"
when closing the window and exiting the application. This patch avoids
this by not triggering repaints anymore when the platform window is destroyed.

Change-Id: I54bd41e5c1471f7cdfec89f8ec3be48d1438be39
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-07 09:03:59 +02:00
Laszlo Agocs
e79f008ae5 Avoid crashing in QOpenGLWidget::metrics
When creating child widgets in the derived class' constructor, the screen
cannot be retrieved via window() since it still returns null. Handle this
case properly.

Change-Id: I65bf7f9c338ce8a3ddab8ad7886cfe2f1f253c82
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-07 09:03:37 +02:00
Laszlo Agocs
1b1dd22486 Do not use GLES3 functions in a GLES2 context
Just like the recent fix for VAOs on iOS, where we might deploy a
GLES3-enabled binary on a GLES2-only system, the same issue is
potentially present for blitFramebuffer and renderbufferStorageMultisample.
Handle this properly.

Change-Id: I87268478f1de479dc2c106b46d6e9b84e866fcd5
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
2014-08-07 09:03:32 +02:00
Andrew Knight
ed7894dd77 winrt: Handle dispatcher thread change
If the calling thread changes when processing events, the dispatcher
will no longer have thread access and event processing will fail. This
can e.g. prevent new threads from being created. To remedy this, the
dispatcher object is re-fetched if the thread is changed.

Change-Id: I519cff521f9b84211db3f28a7a28b532de44a6a4
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-08-07 08:52:34 +02:00
Andrew Knight
c7abf81786 winrt: Refactor backing store
Thanks to new features in ANGLE, the backing store implementation
complexity can be greatly reduced. By using ES3 framebuffer blit,
no shader code is required, and the shader loading code and blit shader
can be removed.

Change-Id: Iab3d915e279ad6468a75ef6257794f12acd8cb65
Reviewed-by: Oliver Wolff <oliver.wolff@digia.com>
2014-08-07 08:47:41 +02:00
David Faure
1a9701fe81 QFileDialog: implement getOpenFileUrl and friends for real
i.e. make them support remote URLs.
To avoid code duplication, getOpenFileName/getSaveFileName/getExistingDirectory
are now implemented in terms of getOpenFileUrl/getSaveFileUrl/getExistingDirectoryUrl.

Change-Id: If409ac9ab72c2a65f04e2ef1dc28e7d47bbcd73c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
2014-08-06 22:26:11 +02:00
J-P Nurmi
c8321a9c10 Android: extract window style attributes
Task-number: QTBUG-39215
Change-Id: I29120f5dcc97051705bc6ebacfa5843d8953810b
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2014-08-06 22:19:10 +02:00
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