Commit Graph

16356 Commits (69d46a3e205e3533c8bdcf1a1f4e5ce92604759d)

Author SHA1 Message Date
Konstantin Ritt 3c1e16df75 Micro optimizations to HB-NG path
No changes in functionality.

Change-Id: I9cf90241bdb087ef16fb0b759a5976848a197f55
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-01-24 17:33:00 +01:00
Tor Arne Vestbø 29f96fab24 iOS: Limit auto-rotation to device screen (excludes external screens)
An external screen should always stay in the native orientation of the
screen, and not be affected by rotations of the device. If the user
requires the external content to follow the device rotation, this
can be done explicitly by listening to orientation changes of the
main screen, or using QSensors.

Change-Id: I3a98655d11915f0db107930e7d97a24417656bc9
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-24 13:23:55 +01:00
Tor Arne Vestbø d824c7bcc5 Track QPlatformScreen -> QScreen using QPointer
Allows the QPlatformScreen to verify that the QScreen is alive before
sending events to QPA for the given screen (which will assert if the
screen is being destroyed).

Change-Id: Ie77674fead3e0a4d4f6fedbf1f7f3c98364c7485
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-24 13:23:54 +01:00
J-P Nurmi b26dc9bc05 QPlainTextEditControl: reimplement anchorAt()
See comments in QPlainTextDocumentLayout::hitTest(). Since
QPlainTextEdit does not do hit testing on the document layout
level, allow QPlainTextEditControl to override anchorAt() so
that hit testing can be done on the widget level instead.

Change-Id: I70247eafae96897382a0c7db7d596128a03e7a6c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-01-24 12:36:41 +01:00
Giuseppe D'Angelo 7414c2c404 QOpenGLWidget/QOpenGLWindow: add a destructor which calls makeCurrent
Generally speaking, QOpenGLWindow subclasses are going to use some
various QOpenGL* wrapper object to handle their buffers, FBOs, etc.

Some of those QOpenGL* wrappers are QObjects, hence it should be safe
to have them as child objects, and expect Qt to clean them up properly;
but that doesn't happen because of how the destruction will work.

In particular, when the subclass object is deleted, there may not be
the right OpenGL context set as current. The deletion will go up to
~QObject, where the child objects will be deleted, resulting in a crash.

That will *also* happen if someone connected to the context's
aboutToBeDestroyed() signal: the context will in fact be deleted
after the child objects, since it's stored in QOpenGLWindowPrivate,
whose dtor will be run after ~QObject (!).

Now, in the general case, QOpenGLWindow subclasses should always
have a dtor in which they call makeCurrent() (also because various QOpenGL*
class are not QObjects, hence they're kept around as full members
instead of pointers-to); but at the same time we should clean up
properly the QObject children.

All of the above of course stands for QOpenGLWidget as well.

Task-number: QTBUG-44094
Change-Id: I2379041fe175416936f6d40292039f773a515b35
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-01-24 12:35:56 +01:00
Allan Sandfeld Jensen dd07b1e389 Add conversion functions for C++11 u16string and u32string
The patch adds convenience functions for working on C++11's new char
width specific unicode strings u16string and u32string.

[ChangeLog][QtCore][QString] Added methods for convenient conversion
to and from std::u16string and std::u32string.

Change-Id: I67c082e4755c592d61daaaaa70c8867ef0b23dcb
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-01-24 11:50:13 +01:00
Marc Mutz 05cda3d465 src/corelib/tools/tools.pri: add missing qtools_p.h
Change-Id: If7af29fdaefddc1e3f08148610ba2720f5927b67
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-24 11:12:38 +01:00
Marc Mutz 3527fd62c2 src/gui/painting/painting.pri: add missing qfixed_p.h
Change-Id: Iba176345ec9448c936cd89b06ea24272df94fc1f
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-24 11:11:40 +01:00
Konstantin Ritt 6a1d9134b8 Fix build on [older] MinGW
Add some macros missed in older MinGW.

Change-Id: Ia61ff270d012022c4e9ec0d4dd2ea050860f4fcd
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-01-23 20:32:32 +01:00
Tor Arne Vestbø 1b209ccd6d iOS: Associate UIScreen and show UIWindow on initial QWindow mapping
We delay showing the UIWindow until the first QWindow is created and
mapped to the screen. This allows external screens to stay in mirror
mode until a QWindow has been explicitly created on that screen. We
also remove the screen-association when the last QWindow on that
screen has been removed, which will return the external screen to
mirror mode.

Change-Id: Iccecb297281d0c4f397f69f2494debff051ade01
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-23 19:47:58 +01:00
Tor Arne Vestbø 04e4a09b85 iOS: Base [QIOSViewController shouldAutorotate] on the locked orientation
Instead of keeping a separate property for the auto-rotation. Allows us
to override shouldAutorotate later on to make the decision even more
fine grained.

Change-Id: I9a3cd6c1316f2a5485a94ef8d9b633df87f46f5f
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-23 19:47:57 +01:00
Tor Arne Vestbø 73ef1ec693 iOS: Ignore statusbar changes for windows on external screens
Change-Id: Ib7919abb2da324f6ffa058e8b215bf566ff43e40
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-23 19:47:57 +01:00
Rafael Roquetto bc4b1d7efe QNX: QProcess workaround for the stdin pipe
Due to a bug in the internal implementation of posix_spawnp on QNX, all file
descriptors with a value lower than the maximum file descriptor specified
in the file_actions structure are duplicated by default, ignoring the
FD_CLOEXEC flag. This includes all file descriptors that we are not working
with. So we add those file descriptors that have the FD_CLOEXEC flag to the
file_actions structure as close actions.

Change-Id: I316bc334addb46a4b84c199a69e9bd291ca706c5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-23 19:13:30 +01:00
Thiago Macieira 75a2c81b00 Handle posix_spawn using exit code 127 to indicate fail-to-start
Most posix_spawn implementations are done using fork(), so the only way
to report errors afer fork() is via a special exit code.

Reference: http://pubs.opengroup.org/onlinepubs/009695399/functions/posix_spawn.html
Change-Id: I3a37f81b0cb278bb31e5cb83c87e6b4c034dbc19
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-23 19:13:27 +01:00
Thiago Macieira 1814142b7a Use forkfd in QProcess
Replace the existing code in QProcess that dealt with signaling of child
processes exiting with forkfd and spawnfd. The previous code was
convoluted and hard to maintain, having shown its age in the last
year. I've been running it for a year and a half and the new
implementation is definitely an improvement.

This change replaces support for the QNX Neutrino spawn() call with the
POSIX version. We lose the ability to do setsid(), but we gain quite a
few ioctls() that were done to fill in the file descriptor mapping
structure. That's also the only OS for which we have the ability to
thread-safely chdir() before the call to spawnfd().

Another advantage is that forkfd does not require a dedicated thread
running to handle child processes exiting.

Change-Id: I5eb76821dfdb6a8ed2989d7f53b3c31e515c3174
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2015-01-23 19:13:17 +01:00
Thiago Macieira f3459a43af Add spawnfd for use where fork / forkfd can't be used
In certain environments, using fork() is not recommended due to the need
for an MMU. This commit adds support for those environments, by using
posix_spawn. Limitations of this environment are:
 - we cannot reliably detect failure to exec (e.g. non-existing executable)
 - we cannot do setsid(); we do setpgrp(0, 0) instead
 - we cannot thread-safely chdir() to the requested dir

Because of the former limitation, the QProcess unit tests that rely on
failure-to-start error conditions are either skipped or marked as
expected failures. There's a non-reliable solution that is implemented
in a another commit.

This change also makes it easier to transition the QNX builds to using
fork(), which is supported from QNX Neutrino 6.6 and onwards.

Change-Id: I5cb46abf2ef8783941525d35cc991f00d2bf2d58
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-23 19:13:12 +01:00
Thiago Macieira 9931fa9df4 Fix forkfd on OS X 10.7 and earlier
dtruss logs show that the signal handler does enter and is active, since
it does the first waitid() call, but then returns immediately:

 waitid(0x0, 0x0, 0x7FFF62D7C468)               = 0 0
 sigreturn(0x7FFF62D7C9A0, 0x1E, 0x0)           = 0 Err#-2

Since there was no error return, we conclude that si_pid was zero on
return. Source code for OS X 10.7 confirms that si_pid is set to zero
unconditionally, which is rather stupid:
 http://fxr.watson.org/fxr/source/bsd/kern/kern_exit.c?v=xnu-1699.24.8#L1330

This is fixed for OS X 10.8:
 http://fxr.watson.org/fxr/source/bsd/kern/kern_exit.c?v=xnu-2050.18.24#L1399

Without that information, we have to scan each child anyway, so
just disable the waitid() solution on OS X. This is a "hammer" solution
which will get forkfd working. We can later try and detect at runtime
whether waitid() is working.

Change-Id: Ic5d393bfd36e48a193fcffff13bb584927cdeafe
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-01-23 19:13:07 +01:00
Thiago Macieira bd1be70e0e Fix compilation of non-waittid forkfd() outside of Linux
POSIX.1 does not guarantee the presence of the si_utime and si_stime
members. So instead of trying to set those members to zero, ask the
compiler to initialize everything for us.

This was found on OS X when HAVE_WAITTID was removed.

forkfd.c:192:11: error: no member named 'si_utime' in '__siginfo'
forkfd.c:193:11: error: no member named 'si_stime' in '__siginfo'

Change-Id: Ic5d393bfd36e48a193fcffff13b90aa6ccf592ae
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-01-23 19:12:59 +01:00
Thiago Macieira c8849dd8d5 Use waitid with WNOWAIT in forkfd
The previous implementation required one syscall per child we're waiting
on to see which one exited. That means the algorithm was O(n).

This implementation uses WNOWAIT to find out which child exited and then
goes straight to that one. So it's O(1) on the number of children, but
runs 2 * number_of_children_that_exited + 1 syscalls, assuming there are
no race conditions with other threads. If there are or if a child not
started by forkfd exits, we'll still iterate over each child we're
managing to see which one exited.

It modifies the existing code so that it will do a waitid() with WNOWAIT
to check on the status of the child: if the child has exited, we'll try
to lock the entry so only one thread will do the final wait(). In the
case we read the PID, then the child exited, was reaped by another
thread, the PID got recycled and that child exited again, we'll fail to
lock the ProcessInfo entry so no harm comes. If by an absurd coincidence
this other child was started by forkfd() and its ProcessInfo is exactly
the one we are looking at, then we'll succeed in locking but that's a
benign race: we'll do what the other thread was trying to do and the
other thread will give up.

Future improvements to the algorithm are discussed in the Gerrit change.

Change-Id: Ie74836dbc388cd9b3fa375a41a8d944602a32df1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-23 19:12:53 +01:00
Thiago Macieira 39482e6e0f Add the compilation of forkfd to QtCore
This also brings in the harness to forkfd that uses QBasicAtomic
instead of the generic GCC atomics.

Change-Id: Id5488bf192db0027bc684956ade0bf6c640c9512
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-23 19:12:48 +01:00
Andy Shaw 1bb05c4daa Keep the width as it is to ensure the underline is drawn correctly
When the width of the decoration was floored then in some circumstances
(such as when latin and Hangul text was mixed) an underline of the text
would appear to be broken on HiDpi screens. Since the width is correct
then we should keep it as it is to ensure it meets up correctly.

Task-number: QTBUG-44062
Change-Id: I2cbf722a9cf9c7e15caa9aad061bf28d3bd0bb59
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-01-23 15:58:15 +01:00
Konstantin Ritt a4a45d7bed Get rid of Q_GUI_EXPORT occurrences in QPlatformSupport
This fixes GCC warning on MinGW, when built with -Wattribute (the default)

Change-Id: I8e2b56a4a8fe9db0ec821f346a523b670df80f85
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-01-23 14:22:43 +01:00
Alexander Volkov de71c8a6f8 Add QTextStream::readLine() overload
The most common use case for QTextStream::readLine() is reading
a file line by line in a loop. The existing readLine() method
allocates new memory for each line, that results in a loss of
speed. The introduced overload can use already allocated memory.

Besides it allows you to not think about filesystem specifics.
The current QFile documentation suggests a separate way to read
files from /proc filesystem. With this overload it's possible
to use the same idiom in all cases:

    QTextStream in(&file);
    QString line;
    while (in.readLine(&line)) {
        process_line(line);
    }

The idea was inspired by the blog post of Ivan Čukić:
http://ivan.fomentgroup.org/blog/2014/10/03/api-design-and-impact-on-the-performance-qt-vs-stl-example/

Change-Id: I0c62b4a52681870589bc099905e83ed69e03dd40
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-01-23 14:36:27 +01:00
Giuseppe D'Angelo 0192630f55 QNetworkAccessManager: introduce support for TLS PSK
Expose the same kind of TLS PSK client support we already have set
in place for QSslSocket.

[ChangeLog][QtNetwork][QNetworkAccessManager] It is now possible to use
TLS PSK ciphersuites when using HTTPS (or similar protocols working over
SSL).

Change-Id: I56a048e9f4f841f886758c781af2867d18538a3e
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-01-23 14:27:25 +01:00
Eskil Abrahamsen Blomfeldt c27e1f498f Android: Fix crash in QCompleter test
The call to QPlatformWindow::setVisible() will trigger flushing
of the window system events. Depending on the events, this could
lead to the window being hidden. Since platformScreen()->addWindow()
and removeWindow() was done *after* this flush, you could get the
remove for a window before it had been added, whereas the logic
in these functions were written under the assumption that there
is exactly one remove per add, and that add always precedes the
remove.

This has only been seen when running the QCompleter test so far.

This patch reorders the statements to make sure the events are flushed
after the window stack has been updated. In addition, it adds asserts
for the assumptions in the addWindow/removeWindow code to catch bugs
there earlier.

Change-Id: Ic67b03afbf7acbcb78be86bffa4c26360dc5832f
Task-number: QTBUG-43836
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-01-23 14:24:24 +01:00
Konstantin Ritt e58a721c5d Don't build WinCE specific code on other platforms
Change-Id: I7ade08e57ea0c9c496e316ff0f856b8951eab61e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Björn Breitmeyer <bjoern.breitmeyer@kdab.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-01-23 14:06:13 +01:00
Konstantin Ritt 4046055caf Deprecate QFont:: rawMode()/setRawMode()
rawMode only has an effect under X11 in pre-QPA times.

Change-Id: Iaff8fed8f4ae5af5dd0399bb3ebd9d590a39a758
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-01-23 14:06:03 +01:00
Maks Naumov 8309758879 QTextCharFormat: fix word spacing setup
Properly check QFont::WordSpacingResolved when use setFont()
with QTextCharFormat::FontPropertiesSpecifiedOnly

Change-Id: I72f1641ef7587cbaf8fcf5fef2f3c44393b0ebfc
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2015-01-23 14:02:17 +01:00
Konstantin Ritt ff59d73ac6 Fix typo in the docs
QEvent::ChildRemoved appeared twice.

Change-Id: Ibd992f18d073a3ba47ab515368d2050d29e8c0e6
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-01-23 11:27:56 +01:00
Andy Shaw 906577c8b0 Enter/Return should cause an edit inside an itemview on OS X
This was available before but was protected with the wrong define for OS
X, so this is changed to the right define.

Task-number: QTBUG-23696
             QTBUG-23703
Change-Id: I669a6cf2ff7c01020693adff9f04a4b8b9404d02
Reviewed-by: David Faure <david.faure@kdab.com>
2015-01-23 10:35:14 +01:00
Friedemann Kleint 5b1da97b6b Revert "Fix font enumeration, with the same family name, on Windows."
This reverts commit 8456adf0ee.

The change introduces a massive slowdown of the application
startup caused by the inner enumeration.

Task-number: QTBUG-43774
Task-number: QTBUG-40828
Change-Id: I694938eab93ea409d97537b55e8a025bb7a0e393
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2015-01-23 09:41:16 +01:00
Shawn Rutledge e20a8c69a7 D-Bus tray icons: make endian conversion work again
Endian conversion needs to be done on aligned data, but the data is
stored unaligned in the QByteArray.  So the new qFromUnaligned()
function is needed.

Change-Id: I12f9e52cea81d06129b306709bb9d2cd004f04e1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-23 05:34:29 +01:00
Shawn Rutledge 5facb0ce90 D-Bus tray icon: when eliminating large icons, scale to medium size
22px is not always large enough: KDE5 seems to like to make icons up to
28px, and they could be even larger on high-DPI screens.

Change-Id: Ifa8e0d49b310e4b4304207596f0f32c36a5db6a7
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-01-23 05:34:17 +01:00
Shawn Rutledge e910c36a3f D-Bus tray icon: ensure that the image is square before sending
Sometimes KDE doesn't render non-square icons properly when they have
been received over the D-Bus protocol.

Change-Id: Icc6fa3d64a1598ea8f719192ae18d32f287d6a79
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-01-23 05:34:11 +01:00
Shawn Rutledge cec103897f QSystemTrayIcon uses D-Bus org.freedesktop.Notifications on Linux
If StatusNotifier is working, then QSystemTrayIcon::showMessage() will
send notifications using the org.freedesktop.Notifications protocol.
https://developer.gnome.org/notification-spec/

Task-number: QTBUG-4011
Task-number: QTBUG-31762
Change-Id: Ia1925ec3dd81b1b7b8f3b490b6364aaf8f93f395
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-01-23 05:34:00 +01:00
Tor Arne Vestbø d24cfc8b86 iOS: Decouple screen geometry calculations from UIWindow geometry
At startup or when a new UIWindow has been created but not associated
with a UIScreen yet, its geometry will be invalid, and cause the wrong
geometry for its corresponding QScreen when we use it to map geometry.

Instead we explicitly use the status bar orientation to map to the
correct geometry.

Change-Id: If37b3ab2ad5db65e20a7e3af5c3854b3e3ddff0d
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-23 03:05:17 +01:00
Tor Arne Vestbø d4fd619b10 iOS: Don't re-apply window state during QIOSWindow construction
We set the parent of the window as part of constructing it, which will
cause a layout of the QIOSDesktopManagerView's subviews, but in this
case we don't need to re-set the window state as that's taken care of
later on in the QIOSWindow constructor.

Change-Id: Ic197c9a50394908c8aa2155abdc97bc322937a85
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-23 03:05:17 +01:00
Tor Arne Vestbø ed950a8ec1 iOS: Simplify QIOSWindow::setParent()
Change-Id: I78c47c6ccdb53045f3fa412b1489e08691d3e195
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-23 03:05:16 +01:00
Tor Arne Vestbø cc0a114cd6 iOS: Only use [UIDevice orientation] for the main/device screen
Auxiliary screens are always in their primaryOrientation.

Change-Id: I078151ccbdb8a78eb095a05672f7804ab608ff24
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-23 03:05:16 +01:00
Giuseppe D'Angelo bd26defd9b QSslSocket: introduce support for TLS PSK (client side)
[ChangeLog][QtNetwork][QSslSocket] It is now possible to use TLS PSK
ciphersuites in client sockets.

Task-number: QTBUG-39077
Change-Id: I5523a2be33d46230c6f4106c322fab8a5afa37b4
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-01-23 00:35:21 +01:00
Mark Brand e267505d54 update bundled sqlite to 3.8.8.1
The "Fixed CE build of sqlite3" patch is preserved in this change,
which causes sqlite's own localtime implementation to be used for
wince. This is extended by #undef HAVE_LOCALTIME_S to override the
new assumption that localtime_s is available on wince and should be
used. Also, removed HAVE_LOCALTIME_S=0 since this must now be
undefined instead of 0.

Change-Id: I418e138ddc47d1bfbb80de0f4e4205a79c425f10
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2015-01-22 22:43:54 +01:00
Dmitry Shachnev 03dc2b2e82 QSystemTrayIcon: handle submenus correctly
This fixes a bug when submenus are shown as simple actions when
a platform system tray icon is used.

To correctly handle submenus, we need to set platform menus on
all submenus, and only then on a parent menu.

Change-Id: If2bfcc703b938dbb14ba4b9aa810039ced07e946
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Dimitrios Glentadakis <dglent@free.fr>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-01-22 21:41:16 +01:00
Laszlo Agocs 2bc038adc9 Expose context loss
On platforms like Windows (and presumably on mobile devices too)
the loss of the context (e.g. the underlying D3D device in case of
ANGLE) is an event that can happen randomly and needs sufficient
handling.

Enhance QOpenGLContext::isValid() with the purpose of indicating
context loss.

Currently only the Windows EGL backend (ANGLE) has support for it.
Other platforms may be added later.

Task-number: QTBUG-43263
Change-Id: I8177694c1ee7cebbd5d330e34757fd94c563e6d6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-01-22 14:16:50 +01:00
Tor Arne Vestbø a2b358e7f5 Only show QWindows after QScreen destruction if coming from virtual sibling
For windows that were shown on an external screen (not a virtual sibling
of the primary screen), eg. on iOS, it doesn't make sense to re-show the
window when moved back to the primary screen.

By moving the logic into the QScreen destructor, we ensure that the code
path is hit both for the old and unsupported style way of destroying
QPlatformScreen by deleting it directly, and the new and safe way
of using QPlatformIntegration::destroyScreen(), while still allowing
clients to manage the windows themselves by emitting screenRemoved()
before applying our fallback logic.

[ChangeLog][QtGui][Important Behavior Changes] QWindows will no longer
be re-shown automatically when moved from a destroyed QScreen, unless
that QScreen was a virtual sibling of the primary screen.

Change-Id: If1105bc5ef41a5392854bb97d121c998bffa3606
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-22 12:58:34 +01:00
Shawn Rutledge 38abd65377 QSystemTrayIcon uses D-Bus StatusNotifier on Linux when possible
Implementing org.kde.StatusNotifier DBus interface
http://www.freedesktop.org/wiki/Specifications/StatusNotifierItem/
as well as org.canonical.dbusmenu for the limited purpose of showing
the tray icon's context menu.  If a desktop environment (such as
KDE or Unity) has a StatusNotifierWatcher listening, then tray icon
information is sent to be displayed by the tray implementation
instead of being rendered directly in an XEmbed window.  This is
necessary because some modern tray implementations no longer provide
XEmbed "hosting".

[ChangeLog][QPA][Xcb] QSystemTrayIcon uses StatusNotifier D-Bus
protocol when the desktop environment supports it

Task-number: QTBUG-31762
Done-with: Marco Martin <mart@kde.org>
Change-Id: I3b1f744d621eefc7e9c61d1469460ebfcc77fc54
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
2015-01-22 12:50:51 +01:00
Topi Reinio 3c37066062 qdoc: Ensure .qhp file is generated for all modules
When run in single-exec mode, QDoc constructs only one instance
of HelpProjectWriter, even though it generates documentation for
multiple modules in one go.

This change adds a reset() function for the help project writer,
allowing new parameters to be passed to the existing writer
instance, thus ensuring that all .qhp files are correctly
generated.

Task-number: QTBUG-43815
Change-Id: I1d1c9f713eb5f574a6f8e56616cf5f61bb3e8ff8
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-01-22 12:48:05 +01:00
Paul Lemire 595ed595ea Add project/unproject methods in QVector3D
Equivalent of gluProject and gluUnproject.

[ChangeLog][QtCore][QVector3D] add convenience project and unproject methods
to use like gluProject and gluUnproject

Change-Id: I6e4e3e79ea6e34d1fb0c375e15185c950b699ef0
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2015-01-22 12:39:20 +01:00
Andreas Holzammer 2b5df245d6 Implement Multitouch handling for WinCE
Implemented handling of GID_DirectManipulation for WinCE.
Derive touch information out of gesture event
directmanipulation.

Task-number: QTBUG-31216
Change-Id: I74e90f32d2384fc3550b47af0b72edf0292dea8f
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-01-22 12:28:42 +01:00
David Faure 416c099205 Doc: remove wrong note in QTreeWidget::itemWidget.
The note is already in setItemWidget where it makes sense.
This looks like a copy/paste error; this method doesn't change
anything in terms of ownership, it's a getter.

Change-Id: Idc963787b81f53fb37bbe59e9bf35f47d3441b34
Reviewed-by: Jarek Kobus <jaroslaw.kobus@theqtcompany.com>
2015-01-22 12:08:51 +01:00
David Faure 2f097d4e23 Doc: fix copy/paste error in QTextCharFormat::setFont documentation
Change-Id: I2190975762c6283daa004b754da607829d263b0a
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2015-01-22 12:08:42 +01:00
Eskil Abrahamsen Blomfeldt db853fa75d Android: Fix name of header in .pro file
Gets rid of warning that the file is missing, but probably doesn't
have any other effect since the file in question does not require
moc-ing.

Change-Id: I22085a55c212b6285341d61462dfaf548787e11c
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2015-01-22 11:00:20 +01:00
Eskil Abrahamsen Blomfeldt 06602f9c96 Android: Don't force-include android-9 headers in qpa plugin
When we supported platforms < android-9, we needed to include
some headers which were introduced in android-9 to compile the
QPA plugin. This is no longer needed, and also creates problems
when you pick e.g. android-21 as your platform, since some
definitions (specifically fd_set) are different in the two sets
of headers, giving us an undefined reference to
QEventDispatcherUNIX::select().

Change-Id: Ifd28479b4bf3be0e9e62200a01fc4cf2cc855215
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2015-01-22 10:58:41 +01:00
Eskil Abrahamsen Blomfeldt 586fd04234 OS X/iOS: Fix stretched font rendering
Setting the stretch of a QFont did not work correctly on OS X or
iOS.

Two things are needed to make it work: First of all, we need to
properly set the transform when creating the CTFont.

In addition, we need to manually scale the advances, as
CTRunGetPositions() does not do this for us. On OS X 10.6, however,
there was a regression and CTRunGetPositions() would return scaled
positions, so we exclude the step to scale the advances on this
particular version.

This is an adaptation of bc25cfdd65452efa226cbd544c9ae9803eb6748a
in Qt 4.

[ChangeLog][QtGui][OS X/iOS] Fixed a bug when rendering fonts that
were set to be stretched.

Task-number: QTBUG-43801
Change-Id: I4902a9f5e29299761e3c2c5c6d6d80ee1dea1a25
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-22 09:32:44 +01:00
Volker Krause 0c4c841ce8 Fix invalid memory access when a slot deletes the sender.
Only happens with active signal spy callbacks. The Connection object can
be deleted when returning from the slot here, so accessing it for the
method index for the signal end callback will access invalid memory.

Change-Id: I44643a171863c35a94e7a5ffa096fcaac5abd509
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-01-22 08:47:19 +01:00
Eskil Abrahamsen Blomfeldt 508b1fa173 QTemporaryDir: Remove directories on failure
When creating a temporary directory but failing to set its permissions,
we need to remove the directory we created to avoid leaving 256 empty,
unused directories in the destination folder.

This happens on Android if you try creating a QTemporaryDir in the
download path on the sdcard.

Task-number: QTBUG-43352
Change-Id: Ic88fb7572f1abd65e5c7d8882b59c95f4b22ed72
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-22 08:31:54 +01:00
Andreas Holzammer 9e4ef3539a Fix finding widgets for Windows Embedded Compact
ChildWindowFromPoint does not work properly under
wince, so lets use the plain old WindowFromPoint.

Task-number: QTBUG-44022
Change-Id: I49bae6409f2d11ddc01bea01f4c2f91a02b90892
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-01-22 08:31:37 +01:00
Giuseppe D'Angelo 2ecde56f65 QSortFilterProxyModel: fix a regression
bec1854cc0 introduced a regression:
when sorting a tree model, children items would not follow the sorted
parents any more (they wouldn't be remapped correctly), resulting
in crashes.

So, the fix needs more reasoning; let's revert the fix,
but leave  the original test around for any subsequent attempt, and
introduce a new test which looks for the right behavior when
sorting trees.

This commit partially reverts bec1854cc0.

Task-number: QTBUG-43827
Change-Id: Ic83ac53aef639f870f6c36a8b4b2992f5b485b13
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Volker Krause <volker.krause@kdab.com>
(cherry-picked from qtbase/e9ad46ed412987e3e46c5a641e5f30408b97ac90)
2015-01-22 08:31:28 +01:00
Martin Smith fdbf3bec30 qdoc: Change name of node type
QmlClassNode is renamed to QmlTypeNode. This is done
in preparation for implementing qdoc support for
documenting javascript code. Next, QmlTypeNode will
be renamed to JsTypeNode, and a new QmlTypeNode will
be declared that will inherit JsTypeNode.

Change-Id: Ia5d0c367d06c26cb43f887927bbcb096afcb7301
Task-number: QTBUG-43715
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-01-22 07:45:49 +01:00
Thiago Macieira a4c837b3a1 Fix QUdpSocket's emission of readyRead()
The documentation says that QUdpSocket emits readyRead() only for one
datagram and that if you don't read it, the class will not emit again.
That should be implemented by disabling of the socket notifier once we
have the datagram already read, but was broken.

In turn, that breakage caused a live-lock of the event loop: since we
didn't disable the notifier nor read the pending datagram, the event
loop would fire every time for the same datagram.

The re-enabling of the notifier was already working.

Task-number: QTBUG-43857
Change-Id: Ic5d393bfd36e48a193fcffff13bb32ad390b5fe8
Reviewed-by: Peter Hartmann <phartmann@blackberry.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-01-22 04:44:10 +01:00
Tor Arne Vestbø be6c50a251 iOS: Make screen orientation reporting more consistent
Change-Id: Ic21efb939639711c4071161e3c742525a55d41be
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-22 00:30:09 +01:00
J-P Nurmi cec7dcc723 QTextDocumentLayout: handle QTextBlock visibility
Task-number: QTBUG-10153
Change-Id: I0420b9c59a7a437da28675349c14e84bfa4aea54
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-01-22 00:22:53 +01:00
Frederik Gladhorn 358a9ac936 Do not include accessibility.pri twice
Change-Id: Id4b312a57b098ad893ba08e7a3c7f1a0fb891eef
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-01-21 20:38:22 +01:00
Frederik Gladhorn 0eaa86dd01 Accessibility: Fix selection change notifications on Linux
The selection update is not implemented on other platforms (if needed at
all).

Task-number: QTBUG-39440
Change-Id: I8eb8c4eb1c23ba2d246bc95f1c77dc9da9e22495
Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
2015-01-21 20:38:04 +01:00
Friedemann Kleint fad17cf79c QFontDatabase: Make assert about failed delayed font population more verbose.
Task-number: QTBUG-43774
Change-Id: Ie55de75e31e1e569f4b4e336900a8f96f7c1b9c0
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-21 19:31:14 +01:00
Tor Arne Vestbø 13c491e6c8 iOS: Fall back to statusbar orientation for initial QScreen::orientation()
At startup, iOS will report UIDeviceOrientationUnknown for the device
orientation, which toQtScreenOrientation() maps to portrait. We can be
smarter than that, by falling back to the orientation of the statusbar,
which in most cases match the physical orientation of the screen at
startup, unless the Info.plist file has been modified to limit the
possible orientations. See also:

  https://gist.github.com/torarnv/40c1931205e33d2b1ed3

Change-Id: I5c78fbe5c670ed2909a51b478bd4814e2433554f
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-21 19:12:27 +01:00
Tor Arne Vestbø bdab31166c Move static part of angleBetween/transformBetween/mapBetween to QPlatformScreen
Allows the helpers to be used at QPlatformScreen construction time, before
it has been associated with a QScreen.

Change-Id: Iab8f863ef5c9339ef6e88b3d844915c03cacda74
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-21 19:11:39 +01:00
Tor Arne Vestbø b9eab8984d iOS: Use QPlatformIntegration::destroyScreen() instead of manual delete
Change-Id: I8128fa1a4b7d6d202d15c03d51f6360a74d75d8c
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-21 19:11:38 +01:00
Marc Mutz 1755038134 QFixed: fix undefined behavior
Left-shifting of negative values is undefined ([expr.shift]/2).
Use multiplication with 64 instead.

There are probably more instances in this class, but this patch
already gets rid of vast amounts of ubsan errors in
tests/auto/gui/text.

Found by UBSan.

Change-Id: I89b8bb61e4decba605fe4fb3efea68b1f1eacf1a
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-21 18:43:07 +01:00
Gunnar Sletta 6338b1421e Safeguard QScreen::refreshRate against buggy platform behavior
Change-Id: I891bd5272db76e8562f6722b633cc0fdaac5f7a2
Task-number: QTBUG-43853
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
2015-01-21 18:38:23 +01:00
Aleix Pol bdbcf6704f Make it possible to generate rcc files from stdin
There's already some code to be able to generate the rcc files from stdin,
only problem being that the input sanity check was not allowing the code
path to proceed being left unreachable.
This patch fixes it by allowing "-" as an acceptable argument and the
process proceeds as expected.

Change-Id: Icd47c7a65373ff1ea3f98d9528736f8a1b21b707
Reviewed-by: Albert Astals Cid <albert.astals@canonical.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-21 13:46:25 +01:00
Laszlo Agocs 10472dce92 Unify input device hotplugging support for embedded
On embedded the mouse cursor will now appear and reappear regardless of
how the input handling code is loaded (via a generic plugin or compiled-in
to the platform plugin).

Instead of passing around QDeviceDiscovery instances that only works
when compiling-in the code into the platform plugin, introduce a new
internal central QInputDeviceManager. The single instance of this
provides a place to store any future input device related signals and
properties.

Also introduce mouse hotplugging support to linuxfb.

[ChangeLog][QtGui] The mouse cursor on Embedded Linux is now handling
hotplugging correctly with eglfs and linuxfb regardless of how the input
handling code is loaded (via a generic plugin or built in to the platform
plugin).

Change-Id: I147c1b04a193baf216598015264f2c06e1b20f84
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
2015-01-21 12:32:04 +01:00
Peter Rustler f93c04e44a Added new private API for Android and onNewIntent
On Android the foreground activity can get intents
with onNewIntent. Those intents can not be received
in any other way. This is especially true in Android nfc.

This patch adds a way to receive those intents in Qt.
This patch heavily leans on the implementation of onActivityResult.

Change-Id: Ic4dca301f34afe9a528149c3653e545ed3265a3c
Reviewed-by: BogDan Vatra <bogdan@kde.org>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
2015-01-21 12:13:25 +01:00
Gabriel de Dietrich c87566bf9e Introduce QFontDatabase::isPrivateFamily()
Some platforms have the concept of private fonts (e.g., OS X and
iOS) which are generally used as system UI fonts. Since 909d3f5c7,
the platform font database has a similar but private API.

[ChangeLog][QtGui][Fonts] Added QFontDatabase::isPrivateFamily()

Change-Id: Ibdce9de534fadbbc3965be8a942c8012edeed209
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-21 12:05:35 +01:00
Martin Smith b45db5480d qdoc: Remove support for DITA XML
This update makes removes Qdoc's DITA XML generator.

Change-Id: Ibcfd013ace00e56a23268a2a5d850e6c9ea093d0
Task-number: QTBUG-43174
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-01-21 11:34:55 +01:00
Marc Mutz 914c5eb36a QAssociativeIterable: add find()
This is like value(), but returns an iterator instead of the value().

[ChangeLog][QtCore][QAssociativeIterable] Added find().

Change-Id: I029fc8f91cef78f718d419587a2a50ffd2bf7632
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2015-01-21 11:23:43 +01:00
Marc Mutz b9365aed6a QtCore: add some more Q_DECL_NOTHROW
QtCore now builds with no -Wnoexcept warnings
(that doesn't mean there aren't tons of functions
that should be marked noexcept, just that all
conditionally noexcept functions aren't noexcept(false)
just because of a forgotten noexcept elsewhere).

Change-Id: I10dacb6b9c9d41d3595fe2f306356d62d3d91c76
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-21 11:22:50 +01:00
Marc Mutz 9fab24f877 QSslEllipticCurve: enable NRVO in *Name() methods
Make it easier for the compiler to apply the
Named Return Value Optimization (NRVO) in the
shortName()/longName() functions by not returning
different objects in different return statements.

Change-Id: I1b6fa7e6121bc1c843378be33499728c56c97f92
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2015-01-21 11:22:41 +01:00
Marc Mutz 95e9b93a77 QSslEllipticCurve: don't call QSslSocketPrivate::ensureInitialized() in const functions
Rationale: the case of an invalid QSslEllipticCurve is already
dealt with before we'd call ensureInitialized(). But in order
to have a non-invalid QSslEllipticCurve, we must have called
one of the constructor functions first. There, we already call
ensureInitialized(), so we don't need to do it here again.

Change-Id: I96bdb5db63ec0165e6b8fac9469b5d81c6b2cdae
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2015-01-21 11:22:35 +01:00
Marc Mutz 0c281bcc65 QSslEllipticCurve: add missing noexcept
Change-Id: I94701ddb78a822adf35aea57f9e171a747745f6b
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2015-01-21 11:22:28 +01:00
Marc Mutz cfdca09e91 QSslEllipticCurve: remove unneeded includes from header
Change-Id: I66b8b85e6c02b0e53391079d5048017d5e63ac8b
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2015-01-21 11:22:19 +01:00
Simon Hausmann 112342b326 Merge "Merge remote-tracking branch 'origin/5.4' into dev" into refs/staging/dev 2015-01-21 11:14:34 +01:00
Frederik Gladhorn b6191b16d4 Merge remote-tracking branch 'origin/5.4' into dev
Conflicts:
	src/corelib/global/global.pri
	src/corelib/global/qcompilerdetection.h
	src/corelib/global/qglobal.h
	src/corelib/tools/qdatetime.cpp
	src/plugins/platforms/xcb/qxcbscreen.h
	src/plugins/platforms/xcb/qxcbwindow.h
	src/widgets/dialogs/qcolordialog.cpp
	src/widgets/dialogs/qcolordialog_p.h
	tools/configure/configureapp.cpp

Change-Id: Ie9d6e9df13e570da0a90a67745a0d05f46c532af
2015-01-21 11:10:14 +01:00
Thiago Macieira 3bbc1bf53b Implement the unaligned byteswap functions using the aligned ones
This leaves the decision on whether to do unaligned stores to the
compiler, as opposed to forcing it by ourselves.

Since we're now implementing them using two calls, this invalidates the
compiler bug that triggered the #ifdef for Sun Studio (whatever that bug
was).

Change-Id: I4e494ca860a15b9427b2a3000921bf5d92cbb5ef
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-01-21 11:08:52 +01:00
Giuseppe D'Angelo 2ec2dbed67 QSslEllipticCurve: add fromLongName
Since the conversion to a long name was already there, also support
creation from a long name.

Change-Id: Iad712db7447fb0a0a18f600b7db54da5b5b87154
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-01-21 10:41:39 +01:00
Alexander Volkov 97af289954 Doc: Improve description of QTextStream::readLine()
Don't recommend a common value for maxlen, because we don't really
know it. Soften a statement about not applying QString::trimmed()
to the result because it may contain surrounding spaces.

Change-Id: Ie90db6f033cfcc0dff0ef6796ba115028bcaaa77
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-01-21 08:41:00 +01:00
Thiago Macieira 473ad206c4 Fix QSharedPointer::create and QEnableSharedFromThis
We forgot to initialize the tracker if create() was used.

Task-number: QTBUG-43696
Change-Id: Ic5d393bfd36e48a193fcffff13b740931ff2204b
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-01-21 08:23:59 +01:00
Tobias Koenig 309c804239 Haiku: Add implementation for QStandardPaths
Change-Id: Ic64a5ab3a1ef711180b855ee99154177b7e25696
Reviewed-by: David Faure <david.faure@kdab.com>
2015-01-21 06:12:42 +01:00
Friedemann Kleint 0b62cd8da7 Windows: Fix coordinate offset when positioning the taskbar on the left.
For windows that do not have WS_EX_TOOLWINDOW set, the WINDOWPLACEMENT
API uses workspace/available aera coordinates. Introduce a helper
function to return the offset and use that.

Task-number: QTBUG-43872
Change-Id: I329c640f180524699b45b855b4583f447c4a0987
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
2015-01-20 19:59:23 +01:00
Simon Hausmann fc8adfea9f Introduce helper for QML to allow creating QWidget hierarchies
Commit 1259c5768e410361bcd8b5cf0c2057a2ebabda83 in qtdeclarative removed the
ability to create QWidgets in QML by giving them the correct parent, which
requires calling QWidget::setParent instead of QObject::setParent. This patch
introduces a hook that will allow QtQml to give widgets a proper parent.

Change-Id: I84c57ca5032582c43e405219343d55ac9cf2ffa0
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-01-20 16:15:45 +01:00
Kai Koehne 463c559962 MSVC: Silence warning about right shift by too large amount
Silence the MSVC warning that got introduced in commit 62b752b3a2c9:

warning C4333: '>>' : right shift by too large amount, data loss
qdebug.cpp(316) : see reference to function template instantiation 'void putEscapedString<uchar>(QTextStreamPrivate *,const Char *,int,bool)' being compiled
with
[
Char=uchar
]
qdebug.cpp(270) : warning C4333: '>>' : right shift by too large amount, data loss

Change-Id: If1ee20b741feae3287a8d6a11c202b4296d429fb
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-20 16:15:06 +01:00
Alex Trotsenko a373ffcda9 QIODevice: remove ineffective caching members
Most of the QIODevice functions already have a locally cached
"sequential" flag. Make the rest of them follow this strategy.
This eliminates the need to use private caching members.

Change-Id: I0edb2c9b7c5f411c5bee25c425e7b40e3c9021d3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: hjk <hjk@theqtcompany.com>
2015-01-20 10:37:59 +01:00
Arnaud Bienner bdcb3f9aab QHeaderView: fix restoring Qt4 state.
When multiple sections were grouped together, sectionItem.size was the total size of grouped sections, not the size of one section.

Task-number: QTBUG-40462
Change-Id: I401a1583dd30880ccf5b4c105a237d6563f212e8
Reviewed-by: Thorbjørn Lund Martsum <tmartsum@gmail.com>
2015-01-20 10:30:54 +01:00
Konstantin Ritt 64c6bfd1f4 Fix crash with multi threaded QFont/QTextEngine usage
Since we don't configure HB-NG via its configure script, we have to
define all optional switchers we do care about by our own.
Some of these switchers were missing in harfbuzz-ng.pro, causing
HB-NG to be built with no threading support.

Task-number: QTBUG-43850
Change-Id: I0944a68fe0bfae3306a3e6085e25704f0d0d0efc
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-01-20 05:47:32 +01:00
David Faure 027d2fc846 Doc: add missing since 5.4 for new sessionProtocol() methods.
They were added in 233a2f37bf, which is in
5.4, but the \since information was missing.

Change-Id: I346a049cad75647fdcd7b64df80dc169bb4ec70a
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-01-19 20:50:48 +01:00
Laszlo Agocs 91d6aafad4 Windows: avoid generating exposes on plain moves
The fake expose generation for shrunk windows is causing
side effects with desktop GL: it will generate expose events
even when only moving the window. This is bad. So change the
condition to look for shrinking and do nothing if the size is
same as before.

This is reported to cause perf issues with e.g. QOpenGLWindow
or similar where an expose does an immediate repaint (potentially
with block swap).

Task-number: QTBUG-32121
Change-Id: I4687ea8210cee6691d608450c48b1dbef52d6df3
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-01-19 17:48:05 +01:00
Laszlo Agocs 6a081125a5 Make -static -opengl dynamic builds succeed
Right now it breaks in qwindowseglcontext due to its ifdefs for
static ANGLE-only builds. The checks for QT_STATIC should be
extended with QT_OPENGL_DYNAMIC so that it continues to resolve
functions dynamically in -opengl dynamic builds even when combined
with -static.

Task-number: QTBUG-43993
Change-Id: Iac6d0353ef16a32a22ab1db0a833fbb0165f328c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-01-19 17:48:01 +01:00
Laszlo Agocs 23996a9e40 Windows: make TranslucentBackground functional always
QOpenGLWidget and QQuickWidget was not functional when
WA_TranslucentBackground was set. This is due to the
static "isGL" type of checks that are not suitable since 5.3
due to RasterGLSurface windows which may or may not be
OpenGL windows, depending on their content.

To handle this, we have to do some check on every makeCurrent
and perform the necessary calls (most importantly
SetLayeredWindowAttributes).

Task-number: QTBUG-43854
Change-Id: If19c79482ec4f0a8b795ee710d52ed7e08b52563
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-01-19 17:47:56 +01:00
Marc Mutz 447ef9766a src/testlib/testlib.pro: add missing qbenchmarksmetric.h
Change-Id: I9b879bb22f3e3f74e55234730d9cf79221812a36
Reviewed-by: Jason McDonald <macadder1@gmail.com>
2015-01-19 16:08:10 +01:00
Andy Nichols d7068cbe1b Make threaded rendering possible with LinuxFB
It was previously not possible to render to a QBackingStore
with the linuxfb platform plugin because of both the use of
a QTimer created on the main thread and there was no lock
on the backing store surface (which would lead to copy content
to screen that being rendered in another thread).

Change-Id: I0ea3600316ce29eb89f6595997847afe7086116f
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-01-19 15:55:00 +01:00
Eskil Abrahamsen Blomfeldt 2603873e75 Make harfbuzz-old fallback available at run-time
The old harfbuzz code path is included as a fail safe for any
possible use case where the Harfbuzz-NG regresses, but because the
variable was checked statically, it was not actually possible to
build a releasable executable which employed the work-around.

Instead we use the regular global static pattern where the variable
is queried the first time it's needed.

Task-number: QTBUG-43850
Change-Id: I9ade76bf0825bbfefebdbdc4e6ee5571f1a3deec
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-01-19 13:50:32 +01:00
Friedemann Kleint a8f37e4775 Windows: Delay creation of the static OpenGL context.
Delay initialization/GL detection until a surface is requested.
Remove member variable from window and access static context
from QWindowsIntegration only.

Task-number: QTBUG-43832
Change-Id: I4b9a324b58af4399df5c314bfb2b952455b1e080
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-01-19 13:18:02 +01:00
Giuseppe D'Angelo 5ee8ed27e0 rcc: fix build failure on Windows XP / MinGW 4.9
The code makes usage of _fileno without including the appropriate
header, which is stdio.h according to Microsoft:

http://msdn.microsoft.com/en-us/library/zs6wbdhx%28v=vs.120%29.aspx

Task-number: QTBUG-43900
Change-Id: Ic9d407c66243d64823353a1c7e79cf0825c735db
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2015-01-19 13:17:56 +01:00
Eskil Abrahamsen Blomfeldt 2a86bf8ce0 Android: Fix canonical form of nonexistent paths
On some Android devices, the realpath() implementation will return
the full path even if the path does not exist. This breaks the
expectation of the canonical path, which should be empty for
nonexistent paths. A few autotests failed due to this.
To work around it, we query existence before getting the
canonical path.

[ChangeLog][Android] Fixed canonical path for nonexistent paths on
some devices.

Change-Id: I5c1dabb8b8394694bc74d2a91912800aaff6b9e3
Task-number: QTBUG-43705
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-19 12:21:19 +01:00
Maks Naumov 4c6ab8f9e2 QToolBox: remove redundant QAbstractButton::text() from paintEvent()
Change-Id: I95773096ca1b915468c086ba61eba2e3e551a7e3
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-01-19 11:38:34 +01:00
Kai Koehne ca6fb5436d MSVC: Disable warning C4996 for freetype
Change-Id: I22be0faca29989142cd2fa0eaed6846fc40d3f4b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-01-19 11:24:35 +01:00
Oswald Buddenhagen 553a3661c1 Bump version
Change-Id: I250fa893cdf831d03f9217b5dc0a5aa2f9a6a6b5
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-19 10:54:37 +01:00
Ulf Hermann 0310cef332 FusionStyle: Don't try to draw null pixmaps
We have the same check for null already for PE_IndicatorHeaderArrow
which actually uses the same pixmap. If the file is not found the
pixmap will be null and the code dividing by its width or height will
thrown an arithmetic exception.

Task-number: QTBUG-43067
Change-Id: I13a5ee9f21f4189b7bbcfd57a6f5b52113de834d
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
2015-01-19 10:53:10 +01:00
Daniel Teske c243dd5643 QIncrementalSleepTimer: Use QElapsedTimer instead of QTime
Since the former is monotonic and we need a monotonic timer here.

Change-Id: I34325da4fe0317e12f64629a6eef6a80990c3e1a
Reviewed-by: Daniel Teske <daniel.teske@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-19 10:50:08 +01:00
Sze Howe Koh c49641a117 Doc: Fix typos
Change-Id: I29d5576902a5d1ea25558e980081952d9157f7f0
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-01-19 10:48:03 +01:00
Sze Howe Koh 0f5b970894 Doc: Remove references to QOpenGLContext::destroy()
This function is private.

Task-number: QTBUG-35907
Change-Id: I370c0bfd8fda11c68ee76ee42967f117a81b381c
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2015-01-19 10:48:00 +01:00
Pierre Rossi 890ae41d06 Fix a crash in QPlainTextEdit::documentChanged
The layout for an invalid block is very likely to be null, it
shouldn't be accessed without checking the block's validity first.
We can make the check a bit more conservative and simply check that
the block isn't empty.

Change-Id: Ic1459a6168b1b8ce36e9c6d019dc28653676efbe
Task-number: QTBUG-43562
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2015-01-19 10:47:28 +01:00
Andy Shaw 7c9497ad6a Respect the hotspot passed in for the cursor
When the hotspot is set to be QPoint(0,0) then QPoint will see this as
being a null QPoint. However, it is a valid position as far as the hot
spot for the cursor is concerned, so we default to QPoint(-1,-1) instead
and check for that.

Task-number: QTBUG-43787
Change-Id: Ibf6253033016c4b556b8a2a79c89819a4d5825cb
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-01-19 10:44:54 +01:00
Andy Shaw 730d07df83 Account for pixmap's device pixel ratio when calculating the label size
When determining the size of the QPushButton's label then the device
pixel ratio of the pixmap used to represent the icon needs to be taken
into consideration so it is rendered correctly.

Change-Id: If32760b120d7a749a51e2c30592d621c0e63dace
Reviewed-by: Pierre Rossi <pierre.rossi@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-01-19 10:44:48 +01:00
Andy Shaw 17cce24648 Only call ShowWindow() once when going from FullScreen to Maximized
Since going from FullScreen to Maximized is taken care of inside the
FullScreen block then we don't want to call ShowWindow() again in the
Maximized block. Therefore the Maximized block is moved so it is only
invoked if it is not coming or going to fullscreen.

As the minimized case is not accounted for in FullScreen that is left as
is in its own if block.

Task-number: QTBUG-43849
Change-Id: I3141347e072c50b2a4475098d7b8ee0b207578a7
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-01-19 10:44:42 +01:00
Marc Mutz b69c2e86de QFreeList: fix undefined behavior
Signed integer overflow is undefined behavior ([expr]/4),
but unsigned arithmetic doesn't overflow, so isn't
([basic.fundamental]/4, footnote there).

So, use unsigned arithmetic for the loop-around serial
number generation in incrementserial(). While we're at
it, also use it for the masking operation in the same
function.

Found by UBSan.

Change-Id: I500fae9d80fd3f6e39d06e79a53d271b82ea8df8
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-01-19 10:43:45 +01:00
Marc Mutz 62a96dbb53 QTextFormat: fix undefined behavior
Left-shifting of negative values is undefined ([expr.shift]/2).

Since hashValue is a uint already, rectify by casting it->key to
uint prior to shifting.

Found by UBSan.

Change-Id: I94a5311f5a4492f514f595b8fb79726df1e7d0de
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-01-19 10:41:57 +01:00
Marc Mutz 390ea21873 QByteArrayMatcher: fix undefined shift
The REHASH macro is used in qFindByteArray() with a char argument.
Applying the shift operator promotes (a) to int. The check in
REHASH, however, checks for the shift being permissible for
_unsigned_ ints.

Since hashHaystack is a uint, too, rectify by casting (a) to
uint prior to shifting.

Found by UBSan:

  src/corelib/tools/qbytearraymatcher.cpp:314:72: runtime error: left shift of 34 by 30 places cannot be represented in type 'int'

Change-Id: Id09c037d570ca70b49f87ad22bed31bbb7dcc7fb
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-01-19 10:41:22 +01:00
Marc Mutz b18e6396bd QBenchmarkResult: fix uninitialized value
This manifested itself in a UBSan report about loading a non-enumerated
value from an enumeration variable:

   src/testlib/qbenchmark_p.h:95:7: runtime error: load of value 11091, which is not a valid value for type 'QBenchmarkMetric'

(or similar).

The chosen value is simply QTest::QBenchmarkMetric(0).

Change-Id: I8492a871a71d89fa6f7902d38f9eecee4b060646
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-01-19 10:41:09 +01:00
David Faure 7fc8c560e2 Fix QPrinter::setPaperSize regression when using QPrinter::DevicePixel
The QPageSize-based refactoring led to casting DevicePixel to a QPageSize::Unit
value of 6 (out of bounds). And then the switch in qt_nameForCustomSize
would leave the string empty, leading to "QString::arg: Argument missing: , 672"
warnings.

Change-Id: I85e97174cc8ead9beccaaa3ded6edfad80f8e360
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2015-01-19 10:39:55 +01:00
Rainer Keller 20480070a6 Autotest: Selftests fail in UTC timezone
Selftests for testlib fail when executed in UTC timezone because local and
UTC are the same, but expected to be different. A custom timezone is used
instead.
Debug output of qCompare does only handle local and non-local timezones, using
new Qt5 features allows to show the correct timezone in format string.

Change-Id: I753884a12370952b7b62a90d62896db4f2d3d1b4
Reviewed-by: Jason McDonald <macadder1@gmail.com>
2015-01-19 10:21:26 +01:00
Liang Qi cd389e4584 Fix possible divide by zero in QMacStyle
[ChangeLog][Widgets][QMacStyle] Fixed a possible divide by zero crash.

Task-number: QTBUG-43398
Change-Id: I8b5c6fd87d07eb42ad43e8c2405b7cad19372b86
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
2015-01-19 08:21:01 +01:00
Morten Johan Sørvig 49fd3511f5 Fix memory leak in Qurl::toCFURL()
Release the temp CFString.

Change-Id: I8a5b8f18a42a4a9b2c6671f0f5b32a3f0b14238d
Task-number: QTBUG-43710
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-19 08:20:24 +01:00
Michael Marley 128cab4635 Set pendingClose to false on init in QSslSocket
Fixes an issue where under certain circumstances, QSslSocket could get
stuck in a state where it would disconnect immediately after starting
encryption.  Since it doesn't make any sense for the socket to be
initialized to a state where any connection attempt will fail, the
pendingClose value should be set to false.

Thanks to Martin Sandsmark for his help debugging this issue.

Task-number: QTBUG-43793
Change-Id: I7deebacbac588c21439a8e594db4222095cf3f22
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-01-19 08:16:24 +01:00
Gatis Paeglis 3c21c4581d Fix drag and drop regression
Fix regression introduced by e4becdc3d3

Add QPlatformDrag::ownsDragObject() function, QDragManager can use the
return value of this function to decide if it should take care of deleting
QDrag object or platform plugin will take care of deleting QDrag.

XCB platform plugins uses async dnd data delivery mechanism. It allows
user to drop something and then continue working with the assurance that
the target will get the data regardless of how slow the network connections
are, which means that a source window should preserve QDrag data until
dnd has finished.

Change-Id: I1fbad7380cddec98b756698993dd397409833150
Task-number: QTBUG-43436
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-01-19 08:15:54 +01:00
Laszlo Agocs 5bb2e84a76 Fall back to ANGLE on OpenGL 1.x
Apparently on some cards, that only provide OpenGL 1.4,
the check for OpenGL 2 specific functions is not sufficient
(presumably some old extensions provide the functions and so
the test passes, even though it really shouldn't)

To avoid crashing the apps later on, we should check the
context version and activate the fall back to ANGLE if it's
below 2.0.

Task-number: QTBUG-43870
Change-Id: Id0e3d8ad1f632334ba03bbb1a4802413f28436dc
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-01-19 08:10:28 +01:00
Tor Arne Vestbø b2883a6acc Add QDebug support for NSObject and a few selected CoreFoundation types
Lets us print out the interface name in addition to the address when
doing:

  qDebug() << myNSObject;

Unfortunately, CFTypeRef is just a typedef to void*, so we can't add a
generic overload for CFTypeRef. For now, we provide operators for
commonly used Core Foundation and Core Graphics types. Additional
types may be added using Q_DECLARE_QDEBUG_OPERATOR_FOR_CF_TYPE.

Change-Id: I27b12ef9e62cb1be348b9771cb31657692903f6c
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-18 19:59:27 +01:00
Marc Mutz b8e46fce5c Add qHash() overload for QSet
...using qHashRangeCommutative(). Also add a test.

[ChangeLog][QtCore][QSet] Can now be used as the key in QSet, QHash.

Change-Id: Ie7c81d257a3b324fc03d394fa7c9fcf0c6fb062a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-18 19:36:06 +01:00
Alex Trotsenko 70e3935c38 QTcpServerPrivate: move class definition to the separate header
This allows further QTcpServer inheritance in library. Also,
add protected c'tor for this purpose.

Change-Id: I1a5c0cdedd64bcd41b028e09d7752248506296c7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-18 10:19:04 +01:00
André Klitzing 962ea5690c Add elliptic curve support to QSsl
Add possibility to get length and other information of EC based
certificates. Also it is possible to parse those public/private
keys from PEM and DER encoded files.

Based on patch by Remco Bloemen

[ChangeLog][QtNetwork][SSL/TLS support] It is now possible to
parse elliptic curve certificates.

Change-Id: I4b11f726296aecda89c3cbd195d7c817ae6fc47b
Task-number: QTBUG-18972
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-18 10:18:43 +01:00
Giuseppe D'Angelo e4d15b41e8 QOpenGLTexture: introduce texture comparison support
Shadow sampling is an old OpenGL feature (hello, OpenGL 1.3!), which
was missing from QOpenGLTexture. This commit adds the relevant support.

Change-Id: I9f6b552d806a356d24ee08121af6bc9ce684f2b5
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2015-01-17 14:26:43 +01:00
Gunnar Sletta ebdd4a0ba7 Introducing QPlatformHardwareCompositor.
Can be used by applications to send hardware buffers directly to the
hardware compositor, if available. The primary usecase right now
will be from QtWayland to 2D composition of surface by bypassing
the OpenGL composition.

Change-Id: Ibdcdcc744c34869d3abbc11aad448a755f87161f
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-01-17 12:11:15 +01:00
Martin Smith 1bbcad9e5e qdoc: Fixed broken links for abstract QML types
When a QML base type is abstract, the documentation for its properties
is supposed to appear on the reference page for each QML type that
inherits the abstract type. And then links to those properties from
within the property documentation must refer to the documentation for
that property on the reference page for the particular inheriting QML
type. These links were dead, but this fix corrects the problem.

Change-Id: Icaf01d67edf44567099f5a6a59fd6348de8df380
Task-number: QTBUG-43200
Reviewed-by: Nico Vertriest <nico.vertriest@digia.com>
Reviewed-by: Tero Kojo <tero.kojo@digia.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-01-17 11:04:40 +01:00
Jørgen Lind 37956e6605 Introducing QPlatformGraphicsBuffer
Change-Id: Idcf8f75bd151a877c7097b79df998c1ffd56871c
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-01-17 08:03:34 +01:00
James Turner 517fb90268 Fix bugs generating PDF on Cocoa
Provide real implementations of:
	properties(), faceId() and getUnscaledGlyph

Task-number: QTBUG-10094
Change-Id: I5899f247742406de53c68c5cd04fee6fb9b6b7d2
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2015-01-17 06:32:40 +01:00
Giuseppe D'Angelo e9ad46ed41 QSortFilterProxyModel: fix a regression
bec1854cc0 introduced a regression:
when sorting a tree model, children items would not follow the sorted
parents any more (they wouldn't be remapped correctly), resulting
in crashes.

So, the fix needs more reasoning; let's revert the fix,
but leave  the original test around for any subsequent attempt, and
introduce a new test which looks for the right behavior when
sorting trees.

This commit partially reverts bec1854cc0.

Task-number: QTBUG-43827
Change-Id: Ic83ac53aef639f870f6c36a8b4b2992f5b485b13
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Volker Krause <volker.krause@kdab.com>
2015-01-17 06:32:37 +01:00
Allan Sandfeld Jensen fb22d54aa1 Improve performance of path clipping in rasterizer
This patch short cuts a common loop in the gray rasterizer where it
would iterate over cells it considers invalid.

This greatly speeds up clipping paths on large paint devices, but
probably has little benefit for the FreeType origin of our rasterizer.

Task-number: QTBUG-40559
Change-Id: I30845de0b82e53b619853c6c91903793b4267615
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-01-17 06:32:29 +01:00
Giuseppe D'Angelo 0d65bf4f9f QOpenGLTexture: better document the depth/stencil features
For some reason these docs were missing, add them.

Change-Id: If17cf429925ee849a0817e0294a7db7f6dace79b
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2015-01-17 06:32:27 +01:00
Sérgio Martins e884ecf6d1 QColorDialog: Fix build with QT_SMALL_COLORDIALOG
nonTouchUI wasn't defined anywhere, this Q_WS_S60 codepath was partially
removed during the Qt4->Qt5 port, but some cruft remained.

It's not worth saving, because:

- QML is now the way to go for touch UI code
- It's ugly, didn't build, won't be missed

and more importantly:

The current layouting code is already very difficult to read, since we have
"normal" mode, QT_SMALL_COLORDIALOG normal and QT_SMALL_COLORDIALOG touch.
(and WINCE ifdefs in the mix)

This will make the ifdef hell a bit better.

Change-Id: I6daa07cbc8da94ccfe1d0c8d3e870c0678c541fc
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-01-17 06:32:22 +01:00
David Faure 3c6f333634 QProgressDialog: don't require setValue(0) to be called.
1) everyone forgets to do so (proof: tst_qnetworkaccessmanager_and_qprogressdialog.cpp
forgot too, which led to a valgrind warning, the elapsed timer was never started)

2) setValue(0) makes no sense if the progress dialog goes from 50 to 60,
or any other non-zero minimum value.

Fixed by starting the timer in the constructor (most code doesn't reuse
progress dialogs, so this fixes the most common case), and by also starting
the timer when calling setValue(minimum()) for well-behaved dialogs.
setValue(0) special case kept for compatibility.

Task-number: QTBUG-17427
Task-number: QTBUG-25316

[ChangeLog][Important Behavior Changes][QProgressDialog] The timer for estimating
the duration of the progress dialog is now started in the constructor and in
setValue(minimum()), as well as when calling setValue(0), as previously documented.

Done-with: Marc Mutz <marc.mutz@kdab.com>
Change-Id: Ia8f7fc677438749191b99074fc334eab652ea36f
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-01-17 06:32:21 +01:00
Marc Mutz 3d8a10b960 QHash: only fetch qt_qhash_seed when detaching from a null QHash
The old code fetched QHashData::seed from qt_qhash_seed on every detach.

That is both unnecessary and wrong.

It is uneccessary, because if the detached-from QHashData isn't shared_null,
the seed has already been populated from qt_qhash_seed. It thus suffices to
fetch the seed from qt_qhash_seed only when we detach from shared_null.

It is wrong, because if qt_qhash_seed was changed between the detach from
shared_null and a following detach, d->seed is now different from this->seed,
but detach_helper simply clones the buckets 1:1 from this to d, leaving d
in a corrupt state.

By doing this change, we make QHash robust against on-the-fly changes
to qt_qhash_seed (e.g. for testing, or added security). It also opens up the
option to have API for changing the seed of a given QHash instance after it
has been created (detach, set new seed, rehash).

Change-Id: Ib251fc9a6204b42036e97a2fc66f644b379ab841
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-17 06:31:54 +01:00
Thiago Macieira 9d46189a64 Remove Q_C_CALLBACKS
This is useless. The C++ language does require callbacks passed to C
functions to also be extern "C". That's what this macro was doing.

But #ifdef'ing for the macro only made the code uglier. Just let the
extern "C" be there for all compilers.

PS: C++ classes can't be extern "C"...

Change-Id: Ic5d393bfd36e48a193fcffff13b9c9b3923443dd
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-01-17 06:31:20 +01:00
Thiago Macieira ec9bc843d8 Fix compilation with Apple Clang 425
This version was based on Clang mainline between releases 3.1 and 3.2,
which means it has part of 3.2 features but not all. One of the missing
features is __builtin_bswap16.

Change-Id: Ic5d393bfd36e48a193fcffff13b95664c7f664de
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-01-17 05:03:33 +01:00
Thiago Macieira be5b04fd37 Move enabling of C++11 Unicode Strings with ICC from 12.1 to 14.0
The support in 12.1 and 13.x appears to be incomplete. Move it to the
official supported version

https://software.intel.com/en-us/articles/c0x-features-supported-by-intel-c-compiler

Note: this commit will cause a conflict in 5.5 against
99357e32a0

Task-number: QTBUG-43864
Change-Id: Ic5d393bfd36e48a193fcffff13b9a07106e96795
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-01-17 05:03:29 +01:00
Oswald Buddenhagen 3f17d0349b Merge 5.4 into 5.4.1
Change-Id: I78d848c0bb396584a205a8066d253f2bcac8da56
2015-01-16 21:02:26 +01:00
André Klitzing 6839aead04 Fix compile error if openssl is built with no-ssl3-method
Since openssl 1.0.1k with enabled option no-ssl3-method we need to
check for OPENSSL_NO_SSL3_METHOD to use following functions:

- SSLv3_method
- SSLv3_server_method
- SSLv3_client_method

Change-Id: Iee83a6f4bacbf5660baa6bdb89eb02ceb9f11614
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-16 16:19:24 +01:00
Morten Johan Sørvig b2cff0b4bf Fix stylesheet crash.
Style sheets that refer to the progress bar (like
"QProgressDialog[maximum='0']{}") may dereference a
null-pointer during the styleHint() call in QProgressDialogPrivate::init()
since the progress bar has not been created yet.

Move the creation of the progress bar closer to the
top of init(), before the styleHint() call.

Change-Id: I31c3c1c346430fc9fe86b0977403dea0c0dc5e90
Task-number: QTBUG-43830
Reviewed-by: Andras Becsi <andras.becsi@theqtcompany.com>
2015-01-16 14:27:26 +01:00
Morten Johan Sørvig 5239ba95e8 Add missing AppDataLocation case
This amends commit f3bc9f5c.

Change-Id: I69b1a5080e7ac92b8a39746d814da77b17c271c2
Task-number: QTBUG-43868
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-01-16 13:50:28 +01:00
Marcel Krems 593e3f2fbb Update printer metrics after resolution change.
[ChangeLog][QtPrintSupport] Fixed QPrinter::{width,height} return values
when the resolution is changed in the print dialog.

Task-number: QTBUG-43124
Change-Id: Ib805907affed4b1ffb48e6b1ff89f7a79ab3e329
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2015-01-16 13:34:37 +01:00
Eric Lemanissier c28718b88b Correction on bound values in case of repeated QSqlQuery::execBatch
Until now, QSqlQuery::execBatch did not call resetBindCount, which lead
the next call to QSqlQuery::addBindValue to start at non zero index.
This is problematic in case of a prepared query which is called several
times.

Task-number: QTBUG-43874
Change-Id: I1a0f46e39b74d9538009967fd98a269e05aac6f2
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2015-01-16 13:14:26 +01:00
Mark Brand 2f010390ad update bundled sqlite to 3.8.7.4
The "Fixed CE build of sqlite3" patch is preserved in this change.

Change-Id: I5461571e5e0b60678727c96a9faee93f9624588c
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
2015-01-16 12:14:15 +01:00
Giuseppe D'Angelo 8cbf402123 QComboBox: simplify code
Remove an useless check and hoist a costly call out of a loop.

Change-Id: Ibd1750026af44462a4f0223a9b2f422ebcc7c0e3
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
2015-01-16 12:08:58 +01:00
Nico Vertriest 576cf413bb Doc: verb "to layout" changed to "to lay out"
Task-number: QTBUG-43657
Change-Id: I574186253ee423cc380ec3c6f274f1caa2a6aa2a
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-01-16 10:29:46 +01:00
Nico Vertriest 871560d45c Doc: define target voor function qsnprintf()
Task-number: QTBUG-43537
Change-Id: I76c511891a1a07eca77da399d23097e76047f824
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-01-16 10:29:22 +01:00
Nico Vertriest 24238e6a31 Doc: link issues in corelib
Task-number: QTBUG-43115
Change-Id: Ia80802e698f16730698e9a90102f549fb35f9305
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-01-16 10:29:12 +01:00
Paul Olav Tvete a8a00f646b Turn off font hinting when we do high DPI scaling
Font hinting depends on the specific pixel size, and ends up very
wrong when the painter is scaled.

Change-Id: I2007ec7e7ad8d52358d76e88e030ea4df7e91455
Task-number: QTBUG-43809
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-01-16 09:52:44 +01:00
Paul Olav Tvete c1d08afd31 Fix constantly growing window bug with devicePixelRatio
Rectangles need to be mapped differently depending on what they are
used for. Expose events need to cover the entire geometry, so they must
be rounded up, potentially increasing the size. If we use the same
conversion for window geometries, it is possible to end up with a
feedback loop if the window reacts to the new size.

Task-number: QTBUG-43743
Change-Id: I7881cc77bf2148fed2ae743c4226617a61197434
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-01-16 09:52:38 +01:00
Friedemann Kleint 988f1b2e57 Windows: Use DND effect chosen in DragEnter/Move for Drop.
The value of pdwEffect passed to IOleDropTarget::Drop() is always
the one with which the drag was initiated.

Task-number: QTBUG-43466
Change-Id: I045fef634b55d4f113b393aa0ad4aa15d37db372
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-01-16 08:16:36 +01:00
Laszlo Agocs 5856f6e305 Fix regression with frameless dialogs on Windows
Task-number: QTBUG-41162
Change-Id: I6d4e6d0e8a262fead30d642d632f6b4021cc20ab
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-01-16 08:14:28 +01:00
Frederik Gladhorn ccb5978c6d Fix namespacing of QNSViewMouseMoveHelper
Task-number: QTBUG-43061
Change-Id: Ied8cdf49c34ef155b0f0bbc7e547b7c01bcd1d11
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
2015-01-16 06:47:26 +01:00
Friedemann Kleint 241d32bfe3 Fix inlining order of functions in qpathclipper_p.h.
When compiling tst_qpathclipper with MinGW:

In file included from QtGui/private/qpathclipper_p.h:1:0,
                 from tst_qpathclipper.cpp:33:
src/gui/painting/qpathclipper_p.h:469:29: warning: 'static QPathEdge::Traversal QWingedEdge::flip(QPathEdge::Traversal)' redeclared without dllimport attribute after being referenced with dll linkage
inline QPathEdge::Traversal QWingedEdge::flip(QPathEdge::Traversal traversal)
                             ^
qpathclipper_p.h:474:29: warning: 'static QPathEdge::Direction QWingedEdge::flip(QPathEdge::Direction)' redeclared without dllimport attribute after being referenced with dll linkage
inline QPathEdge::Direction QWingedEdge::flip(QPathEdge::Direction direction)

Change-Id: I38feb07d693768285c1d405b3fc92a58c3309547
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-01-16 06:31:46 +01:00
Marc Mutz ba7653fb74 qtest_widgets.h: add support for pretty-printing QSizePolicy
... in QCOMPAREs.

The implementation is hidden in a nested Internal namespace that retrieves
the strings without strdup()ing. That makes it easier to compose these
functions as there is no need to delete character arrays when using them.

The public interface (which qstrdup()s) is implemented on top of these.

[ChangeLog][QtTest] QCOMPARE now pretty-prints QSizePolicy{,::Policy,::ControlType{,s}}.

Change-Id: Ib03d969847e5a12474c71a7921366b400025f680
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-16 03:12:59 +01:00
Marc Mutz 49057a1eab QVariant: attempt to work around an ICE on linux-arm-gnueabi-g++ (Ubuntu 11.10) with constexpr QSizePolicy
This is the error:

  src/corelib/kernel/qvariant_p.h: In constructor ‘QVariantPrivateSharedEx<T>::QVariantPrivateSharedEx() [with T = QSizePolicy]’:
  src/corelib/kernel/qvariant_p.h:107:61: internal compiler error: in gimplify_init_ctor_eval, at gimplify.c:3560

There are two things fishy in this file:

1. Use of the unnamed namespace in a file that gets included
   in different libraries. While not technically undefined
   behavior, it may become so when used in the implementation,
   which it is.
2. Missing explicit initialization of a member of
   QVariantPrivateSharedEx. This is just a wild guess, because
   the ICE happens in that line. That class itself is quite
   smelly, because the address of an object is taken before
   the lifetime of the object begins. A fix would be to store
   the object in a wrapper class from which QVPSEx inherits
   _first_, but then a cast from QVPSEx to QVariant::PrivateShared
   would require pointer adjustments, and I didn't look through
   all the code to determine whether that would be an issue.
   Having been bitten by this sometime ago:
    https://marcmutz.wordpress.com/private-practice/private-practice-taming-templates/#edit-20111128
   I opted to do these easy changes first to see whether they
   already fix the ICE.

Change-Id: Ic15fd928b3dff2318c425c915b2dab5e54254d71
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-16 03:12:54 +01:00
Thiago Macieira 47f99cacc4 Don't call static members with object
This makes it clear that we're not modifying d.

Change-Id: Ic5d393bfd36e48a193fcffff13b968c6d08e69f6
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-01-16 03:12:28 +01:00
Thiago Macieira 514af281e3 Add QTimeZone::{systemTimeZone,utc}
[ChangeLog][QtCore][QTimeZone] Added methods systemTimeZone() and utc()
that return QTimeZone objects for the system time zone and for UTC,
respectively.

Change-Id: Ic5d393bfd36e48a193fcffff13b96821bb8514b9
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-01-16 03:12:13 +01:00
Thiago Macieira 3d051d41a3 Fix forkfd build when O_CLOEXEC isn't defined.
O_CLOEXEC was introduced with the 2008 revision of POSIX.1 and it's the
only way of doing child processes safely with fork(2) in multithreaded
applications.

But we need to support pre-2008 systems, so we can't use that constant.
So let's just choose two arbitrary values for both of our constants --
we need to change both because we need to be sure that FFD_CLOEXEC won't
be the same as FFD_NONBLOCK.

Linux will probably implement them to the O_ constants, like epoll,
signalfd and inotify have done.

Change-Id: I20a5aa6e6264e7a219e19759eeb8747e01df05ff
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2015-01-16 03:12:09 +01:00
Holger Hans Peter Freyther 98008efcf8 Fix assignment within a Q_ASSERT
This was introduced in 3b844c16e0
and doesn't seem to be right.

Change-Id: I1c6a9445996650566d44f223651dd0c855619a88
Fixes: Coverity CID 21589
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-16 03:11:52 +01:00
Thiago Macieira bbded12df3 Update QFileSelector to use QSysInfo better
This reduces a bit of string duplication by relying on the constants
defined in qglobal.cpp and detection via uname(2), in addition to adding
the Linux distribution name as a selector.

Change-Id: I64a46a0fc552c399db787125b1b32aae5c50056f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
2015-01-16 03:11:51 +01:00
Friedemann Kleint 9b35c2cc27 Windows: Fix crash when focus window does not have a native window.
Check and warn in that case.

Change-Id: Ic513334b5aa48e1c7e44685c30da3e9be52c3c52
Task-number: QTBUG-43833
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-01-15 23:25:56 +01:00
Friedemann Kleint 97a82f62c4 Windows: Add infrastructure to be able to a GL renderer based on GPU.
Introduce flags for the renderer type and move code to
qwindowsopengltester. Introduce
QWindowsOpenGLTester::supportedGlesRenderers() where type-dependent
checking can be added.

Change-Id: I4bbffaf861cb0fdbea0919e081e3626fb5a872de
Task-number: QTBUG-43263
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-01-15 23:25:48 +01:00
Friedemann Kleint 0fa092cbae Windows: Add GPU detection.
Compile qwindowsopengltester on all platforms and add struct
GpuDescription with detection method based on IDirect3D9 (dynamically
loaded).

Expose as a QVariantMap-property to QWindowsNativeInterface to be
able to access it from qtdiag.

Task-number: QTBUG-43263
Change-Id: I3c6cd0bbbe36465e0e05f7064ecfc943d6ea4101
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-01-15 23:25:44 +01:00
Laszlo Agocs f342bf2533 eglfs: Split kms integration into multiple files
Now that it's a plugin, the restrictions for the compiled-in hooks
do not apply. Make it maintainable and prepare for future development
by splitting up properly.

The actual functions are not touched at all in this patch.

Change-Id: I4c666817afe15b31a63c1f9fc01413e9a2376a3b
Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
2015-01-15 15:34:24 +01:00
Laszlo Agocs 43807479bc eglfs: Fix hardware cursor with kms
We have to set a default arrow cursor on startup because non-widget
apps will not request one. This is how we behave with non-kms backends
too.

Change-Id: I11b7bf96e46f570bc49f3e8701616b13c480fda6
Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
2015-01-15 15:34:20 +01:00
Laszlo Agocs 99d81c5f18 Do not build kms platform plugin by default
This plugin is deprecated and replaced by eglfs.

Change-Id: Ib559ed411b145b2cb992cc475772894ecd936c07
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
2015-01-15 15:34:16 +01:00
Laszlo Agocs 31f87f39b6 Avoid warning about QString from char in xcb
Change-Id: I013f0caa8aba7fef07c7dbe90ed01dfb85347223
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-01-15 15:34:12 +01:00
Kai Koehne ecd74bcc94 Bump copyright year to 2015
Bump copyright year in tool output and user visible strings to 2015.

Change-Id: I9b29907fe3f555e78005cb296a49d92f601fb7ec
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-01-15 09:24:51 +01:00
Thiago Macieira c3590c7677 Update doc saying QDateTime::setTime with invalid time sets to midnight
QDateTimePrivate::setDateTime has a comment saying this is intentional,
so document it.

Task-number: QTBUG-43704
Change-Id: Ic5d393bfd36e48a193fcffff13b965409eaf7be9
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-01-15 08:37:10 +01:00
Richard Moe Gustavsen 13ecde3b7a iOS: guard text responder from clearing selection
When programatically setting a text selection on iOS, we
call [UITextInputDelegate selectionWillChange] to report
the change. If auto correction is enabled, UIKit will then
reset the current tracking, and for some reason tell us to
clear the selection. This is contradictory to us
saying the the selection is about to change, and will
cause an unwanted recursion back to Qt.

Since there seems to be no way to stop UIKit from doing
this, this patch will instead add a guard that refuses
to change the selection recursively while processing
a selection change from Qt.

Task-number: QTBUG-43716
Change-Id: Id487a57cdda55d7e2d09c3efc14c7f03f566f15a
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-15 08:24:26 +01:00
Tobias Koenig ab1b1afb83 Haiku: Make network module compile on Haiku
Add the missing definition for IFF_RUNNING like
documented on http://ports.haiku-files.org/wiki/CommonProblems

Change-Id: Iea3fa224dc8e7e1e36674026efbb28289d2efa2a
Reviewed-by: Augustin Cavalier <waddlesplash@gmail.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-01-14 05:36:56 +01:00
J-P Nurmi ce84a1bde3 Reduce excessive painting caused by transient scrollbars
The step logic in scrollByDelta() made scrollbar position to go
temporarily outside its min/max boundaries, and then setValue()
corrected it immediately back within its bounds. The false change
notifications caused by this position vs. value ping pong caused
plenty of unnecessary updates.

Task-number: QTBUG-30316
Change-Id: I32dd5bdb7b0c578dfc5dfa1deecceb19bb98a2b3
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
2015-01-14 00:46:43 +01:00
Giuseppe D'Angelo 940530ab67 QComboBox: make setModel reset the root model index
When changing models it makes no sense to keep the old root model index,
pointing into a possibly deleted model. Reset it to the root
of the new model is the best line of action.

[ChangeLog][QtWidgets][QComboBox] QComboBox will now reset its root
model index when a new model is set on it.

Task-number: QTBUG-43350
Change-Id: I113d558ce19fcaed31f13abfbedc7a24302e28d7
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
2015-01-13 22:52:05 +01:00
Olivier Goffart 14583137ae Introduce Q_ENUM and Q_FLAG macros
In replacement for Q_ENUMS and Q_FLAGS.

Q_ENUM(Foo) has to be put after the declaration of Foo in an object.
It will tell moc to include the enum in the meta object (just like
Q_ENUMS) and will allow templated code to get the metaobject for
that enum.

Will be used by QDebug and QMetaType

Change-Id: Iefaf8ae07dc0359828102bf384809346629b3e23
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2015-01-13 17:52:14 +01:00
Shawn Rutledge 74443d7bbb Add QWheelEvent::source
This is analogous to 0a92295ca8
which added QMouseEvent::source.

For now, we say that a wheel event is synthetic when it comes from
a trackpad or other device that provides scrolling by some means
other than an actual wheel.

Change-Id: I0452ca2080b551b18b9c2f6e42db925d14ae339e
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2015-01-13 13:14:57 +01:00
J-P Nurmi 9d5b1fd151 Make QStyleHints usable in QML
Change-Id: Ia8f143d12c754b4af4a29bb9542cd050b5ae2ab0
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2015-01-13 13:05:48 +01:00
Andy Maloney 75f2a0b4ef Extend selections in QGraphicsView when selection extension key down
If the user has some objects selected and holds down the "extend selection"
key (Control on Windows, Command on Mac OS X), clicking and dragging a
rubber band selection deselects the current selection.  This is
counter-intuitive and confusing for users.

This commit fixes the behavior so users can extend selections using the
rubber band when the proper key is held down.

Task-number: QTBUG-6523
Change-Id: Ieda4aaa50adb351c0405f5cb8aae23332eec58a9
Reviewed-by: Andreas Aardal Hanssen <andreas@hanssen.name>
2015-01-13 13:04:40 +01:00
Kai Koehne 2fe8c06cf1 ANGLE: Disable MSVC warning 4996 for debug builds
Disable compiler warning 4996 about the use of C++ standard
library functions like std::copy:

'std::copy': Function call with parameters that may be unsafe -
this call relies on the caller to check that the passed values are
correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See
documentation on how to use Visual C++ 'Checked Iterators'

Commit 0a76b6bc already silenced the warning in the
general MSVC mkspecs, the flags set there are however overwritten
for ANGLE.

Change-Id: I8f9a84d19171057715a8f9be1e8338e02a6c5ba0
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-01-13 12:59:24 +01:00
Jędrzej Nowacki 9e53325cfc Avoid double cache lookup in QHostInfoCache
Change-Id: If5ef2d2f117fe8c1abdf361f1122e32075e14385
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-13 12:47:24 +01:00
Alex Blasche 0d4485fd78 Support QMetaType::equals()
This avoids having to define operator< for types where operator== is
required but operator< doesn't make any sense (e.g. QGeoCoordinate).

Change-Id: I81f6a9d8fc0009a4514c974b5e02b446c50d1e31
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2015-01-13 12:18:47 +01:00
Rafael Roquetto 8fdd1bb8cb QNX: Enable QSharedMemory and QSystemSemaphore support.
Commit 96995db4af implements the necessary bits for this to work
under QNX.

Change-Id: Ie9e2f421f4f27fcaf40697dd363e9ed047754f0d
Reviewed-by: Tobias Koenig <tobias.koenig@kdab.com>
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
2015-01-13 11:54:12 +01:00
Gabriel de Dietrich e18f4bca28 moc: Don't link to inexistent parent staticMetaObject
Contrarily to Q_OBJECTs, Q_GADGETs are not guaranteed to
descend from a Q_GADGET. Here, we ensure that if the first
superclass is a Q_GADGET, then the derived class will be
treated as one. This allows gaps in the Q_GADGET hierarchy
while preventing from trying to link to the inexistent
staticMetaObject if there's no such ancestor.

Change-Id: If10fb952e23655102a425bb18fe8babaf447a47f
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
2015-01-13 11:25:53 +01:00
Friedemann Kleint ea9a366d3f Swallow wheel events while a popup widget is open.
Wheel events should not cause a popup widget parented on a scrollable
widget to be closed or moved to correctly reflect the system behavior
on OS X and Windows.

Task-number: QTBUG-42731
Task-number: QTBUG-40656
Change-Id: I4ef75aa8331390309c251316ac76db2cf9ec51f7
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2015-01-12 21:09:26 +01:00
Gabriel de Dietrich be5cfa960b QMacPasteboardMimeFileUri: Use file paths instead of file references
Change-Id: I732d94bc6add2814c8ebd2c7fe80592024dd1b9a
Task-number: QTBUG-40449
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
2015-01-12 13:49:54 +01:00
Nico Vertriest 34ce66cd89 Doc: link issue D-Bus Viewer
Moved doc D-Bus Viewer from qdbusviewer.cpp to qtdbus-index.qdoc
Doc moved from qttools to qtbase
Task-number: QTBUG-43537
Change-Id: I718781a8f5029f64fea0f2be241b4d584cc8bfce
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-01-12 13:44:24 +01:00
Martin Smith df6d2290e6 qdoc: qdoc's 'square bracket' parameters were evaluated too early
qdoc's link command (\l) allows an optional first argument enclosed in
square brackets. This argument is used for narrowing and focusing the
search for the link target. The argument should not be evaluated until
the generate phase, but it was being evaluated in the prepare
phase. This was also a problem when running qdoc in the single-exec
mode. This update prevents qdoc from evaluating the argument until it
is used in the generate phase.

Change-Id: I82785e97077053fb5f5c11f0592155675334aaeb
Task-number: QTBUG-42880
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-01-12 13:12:05 +01:00
Paul Olav Tvete 3f0b8a9f19 Multi-screen DPI support for X11
Calculate the logical DPI independently per screen, but
only when auto dpr is enabled.

Using a constant DPI value for all screens, based on the combined
geometry is arguably incorrect, but changing this now will
cause pixel-size fonts to behave visibly different from point-size
fonts when moving the window to a different screen.

However, with QT_DEVICE_PIXEL_RATIO=auto, the pixel size fonts are
already changing when the devicePixelRatio changes. Without this change,
the point-size fonts will *not* adapt, which is a clear bug.

Task-number: QTBUG-43713
Change-Id: I3e71618f9d55b7828ccd70b69a7b7ce656c69d65
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-01-12 09:50:36 +01:00
Paul Olav Tvete 075ae987c4 X11 devicePixelRatio screen mapping fix
Fix screen detection and window geometry when screens have
different displayPixelRatios.

We must use the native coordinate system to figure out which
screen a window belongs to. Also, when a window moves to a
screen with a different devicePixelRatio, we must recalculate
the Qt geometry.

Task-number: QTBUG-43713
Change-Id: I93063e37354ff88f3c8a13320b76dfb272e43a9c
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-01-12 09:48:11 +01:00
Marco Martin 9da1a12864 Add D-Bus types marshalling for Linux tray icon support
Add marshalling for icon pixmaps to be used in DBus tray icon support
according to the specification
http://www.freedesktop.org/wiki/Specifications/StatusNotifierItem/Icons/

Task-number: QTBUG-31762
Change-Id: I16e66c272eef413a7c94345c273e5fd3a8c0f771
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Albert Astals Cid <albert.astals@canonical.com>
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-01-12 08:49:16 +01:00
Tomasz Olszak 3ba1b989a6 xcb: build fix when XCB_USE_XLIB is not defined.
When XCB_USE_XLIB was not defined QXcbXSettings still used XIproto.h.
This change removes XIProto.h dependency and leaves QXcbXSettings
uninitialized when XCB_USE_XLIB is not defined.
QXcbXSettings::initialize() is already used in other parts of code e.g.
qxcbcursor.cpp.

Change-Id: I48eb82e39c5c091b41e8ec19e742a21d41de2610
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-01-11 16:31:09 +01:00
Orgad Shaneh a3617296f4 QFileSystemEntry: Replace manual seek in string with lastIndexOf()
Change-Id: Icf45795a962baa7102c02293cb7ce1781b8f2f56
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-11 05:08:53 +01:00
Thiago Macieira 79eef021cb Remove Q_STATIC_GLOBALxxx_OPERATOR macros
These macros existed for working around an RVCT compiler bug, but since
we stopped trying to work around it, the macros are no longer necessary.

Change-Id: I76cc88d863b41f74f60cd9975dcc1959778c2740
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2015-01-11 03:41:54 +01:00
Thiago Macieira 62b752b3a2 Do the same for qDebug of QByteArray and QLatin1String
QLatin1String are actually Unicode, so print them with \uXXXX sequences.
QByteArray are binary (arbitrary), so print as hex. Since hex escape
sequences in C are not limited in length (\x00000F is a valid hex
sequence), we need to insert "" if the next character is a valid hex
digit.

[ChangeLog][QtCore][QDebug] Similarly, printing of QByteArrays whenever
"noquote" is not active now prints the arrays in a format consumable in
C++, with all non-printable characters printed in hex escape sequences.

Change-Id: Ibd0c1a97cbac98610c65c1091bfbcf5581c835db
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-01-11 03:40:43 +01:00
Thiago Macieira 2c01d402e1 QDebug: pretty-print QStrings and QStringRefs
[ChangeLog][QtCore][QDebug] Printing of QStrings and QStringRefs
whenever "noquote" is not active now prints the strings in a format that
can be copied back to C++ code. All characters that aren't printable in
US-ASCII are escaped (this includes printable Unicode characters outside
of US-ASCII). Pretty-printing will not respect QTextFormat padding or
field widths.

Change-Id: I169a8a0508e24693f5652f0129defe7f709e5d08
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-11 03:40:38 +01:00
Thiago Macieira fb16664893 Fix memory leaks with QDBusServer
Two serious mistakes:
 - we need to call dbus_server_free_data_slot as many times as we call
   dbus_server_allocate_data_slot
 - we need to delete the d pointer...

The changes to the unit tests are simply to cause the used peer
connections to be removed so they don't show up in valgrind.

Change-Id: I9fd1ada5503db9ba481806c09116874ee81f450d
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
2015-01-11 03:39:40 +01:00
Thiago Macieira 2924279c23 Don't unnecessariy set localAddress in QNativeSocketEngine's nativeBind
The outer QNativeSocketEngine::bind() function will call
fetchConnectionParameters() as soon as nativeBind() returns, so don't
bother copying localAddress.

Change-Id: Ice13e507ccb9c575a7d3bdf0b41394f35230b746
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-01-11 03:32:57 +01:00
Gunnar Sletta aa8e8e2e41 Support threaded OpenGL on linux again.
Broken since 8758f532ae.

Change-Id: Ifadf37252cc7c1ca68b0a82320b12833f97bf302
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-01-10 21:54:25 +01:00
BogDan Vatra a0737f65a6 Fixes for surface creation/destruction
- After reset a surface we must call makeCurrent before we are usign
swapBuffers.

 - No need to set the surface in QPA when surfaceCreated are called in
QtSurface.java, some time the OpenGL surface is not fully initialized at
this stage. Is better to wait for surfaceChanged which is always fired
at least once.

 - DO NOT reset m_surfaceId to 1 when there is no surface. The problem
is that if we have one surface and when we distory it we don't (need to)
wait for its surfaceChanged/surfaceDestroyed notifications, and if we
create another one quicly it will have the same id (1).

Task-number: QTBUG-39712
Change-Id: I2aa31e5b59d81ef3b03624d4636a4381eea6d543
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-01-10 16:43:01 +01:00
Tobias Koenig c2b86ade9e Haiku: Make corelib compile on Haiku
Change-Id: I66bc492390eedd723ab7866d3c7a38539d708727
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-01-10 15:26:00 +01:00
Kai Pastor 82413cd35f Android: Don't assume native window decoration in QDockWidget
Android does not decorate a floating QDockWidget, leaving the user with
no option to close or move such a widget. This changes activates Qt's
own drawing of window decorations for this case (similar to Win CE).

[ChangeLog][Android][QtWidgets] Enable QDockWidget window decorations.

Change-Id: Id46a994a8be9b8f3e7b530af118315cd36b5fb0e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-01-10 15:18:39 +01:00
Friedemann Kleint 936b671332 QWindowsVistaStyle: Draw PE_PanelItemViewItem for non-item view widgets.
Task-number: QTBUG-43157
Change-Id: I2a5f721cadc0dfffbb81902ef1d06ba34a729300
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
2015-01-10 15:08:13 +01:00
Laszlo Agocs 8dcfb43d8f Resolve GLES3 functions from the shared lib
Unfortunately the few functions that are part of the OpenGL ES 3.0
standard and are used by QtGui have to have special handling after all.
Just directly calling the functions causes issues when building on a
GLES3 capable system and deploying somewhere where only GLES2 is available.

Using eglGetProcAddress and such is not an option because the ES spec does
not guarantee that standard functions are resolvable via that mechanism.

Task-number: QTBUG-43318
Change-Id: I72f985d75ca669835839016573cbb8e4a3fb41db
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-01-10 10:55:47 +01:00
Marc Mutz 6c8c72a9ef QHash: clean up class definition
...by removing redundant '<Key, T>' and 'inline'.

Change-Id: I9d81950c6384927633de07de511712f7274a1283
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-10 08:43:23 +01:00
Marc Mutz 390b16aea8 QtCore: mark some operations nothrow
This shotgun-surgery approach is motivated by trying to get a
clean(er) build for -Wnoexcept on GCC, so it is expected that
for any class touched here, there will be more operations that
can be marked nothrow. But they don't show up in conditional
noexcept clauses, yet, so they are deferred to some later
commit.

Change-Id: I0eb10d75a26c361fb22cf785399e83b434bdf233
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-10 08:43:15 +01:00
Marc Mutz 2c2801860d QPen: mark copy/move/swap as nothrow
Change-Id: Ib13d60256d96253934e0627d4c3015248e002e3f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-10 08:43:09 +01:00
Marc Mutz 676cb678cc Remove qSwap specialization from Q_DECLARE_SHARED
The way swapping is supposed to work is:

1. Each type supplies a swap() function or function template in its
   namespace. Any good STL implementation will find it there through
   ADL. As will the primary qSwap() template.
2. Each use of swap() in Qt, in particular in template code, should
   use qSwap() instead of std::swap() or the using+swap-trick, because
   qSwap() automatically enables ADL. It also has a sophisticated
   conditional noexcept specification that can be used in the
   custom swap() functions' own noexcept clause.

This change also allows us to convert implicitly-shared classes'
member-swap functions to noexcept one at a time, because the
specialization will no longer be in conflict with the primary
template regarding exception specifications. The primary's
specification could, of course, be reused here, but it's complex
and if the machinery around it is changed later on, it will not
affect Q_DECLARE_SHARED classes.

Change-Id: I3389a655a9fd8de370f363c8fcef60269a9f506c
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-10 08:43:02 +01:00
Marc Mutz a627c8628f QUnicodeTables: mark all functions as nothrow
Yes, this is necessary. The noexcept operator looks for noexcept tagging,
not at the contents of the function to determine whether to return true.

The more conditionally-noexcept functions are used, the more important it
becomes that low-level functions are correctly marked noexcept. In that, it
is like constexpr.

Change-Id: I4bca178444d1fd7caf3a92f996b1536eebdb5014
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-10 08:42:55 +01:00
Marc Mutz 35915e90f6 QModelIndex: plaster API with Q_DECL_NOTHROW
This is mostly straight-forward, but some things are worth noting:

1. Yes, this is necessary. The noexcept operator looks for noexcept tagging,
   not at the contents of the function to determine whether to return true.
   The more conditionally-noexcept functions are used, the more important it
   becomes that low-level classes are correctly marked noexcept. In that, it
   is like constexpr.
2. The functions that actually call into the model (data(), flags(), sibling(),
   ...) can throw (bad_alloc, if nothing else).
   Consequently, they're not marked nothrow. They're the only ones.

Change-Id: Id0413212b0f1c049a339480ee449a53c3ca9fea0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-10 08:42:47 +01:00
Alex Trotsenko 076148c7dd QRingBuffer: retrieve pointer to data more carefully
An empty ring buffer always has a pre-cached byte array in its
container. In this case size() indicates that no data is
available, but readPointer() tries to resolve this byte array.
To avoid an illegal pointer as a result, return Q_NULLPTR instead.

Change-Id: Icc5f08f071a8f02a14c112b6e1adbe5373bd9466
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-09 21:40:37 +01:00
Thiago Macieira 05d39ec9c0 Optimize QHostAddress::operator== for SpecialAddress
There's no need to allocate memory for the special address.

Change-Id: I5f3760565807731ab595e91fc934c21d10df212a
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-01-09 18:16:13 +01:00
Thiago Macieira b25cfdce46 Fix compilation with MSVC 2010
2013 and 2015 compile this fine. I didn't test 2012. I wouldn't have
fixed if the objective weren't to enable QtDBus by default on all
architectures: since it is, we can't have Qt fail to compile from
sources on MSVC 2010.

qdbus_symbols.cpp(92) : fatal error C1001: An internal error has
occurred in the compiler

Change-Id: I42b930bc37c4e478a66725d83c8a73836fbf567c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
2015-01-09 18:15:50 +01:00
Oswald Buddenhagen 44f8f2084b de-duplicate and comment EffectivePaths presence detection
Change-Id: Ibf9731c216df84c9e17ebd699d8349cc716ff3cc
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-09 16:57:36 +01:00
Oswald Buddenhagen 26547c0275 remove nonsensical conditional
we are in an #else of #ifndef QT_BOOTSTRAPPED here already.

Change-Id: I02c4ff2959490110c21ad1016c664b7ddcfea7c0
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-09 16:57:33 +01:00
Sérgio Martins 6e217f0678 QColorDialog: Don't loose focus while color picking
On Windows mouse grabbing doesn't work across processes, which
means we're interacting with other windows when picking colors.

Workaround that by having a transparent 1x1 window below the cursor
at all times so we catch the mouse click. Clicking before the window is below
the cursor won't happen because our timer interval is 30ms, so it's quite fast.

It's hacky but it's what we can do for a feature which was very broken on Windows.

Task-number: QTBUG-43663
Change-Id: I295378e033ddc6d9c2230335f0953a727c21e1dd
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-01-09 16:54:54 +01:00
Allan Sandfeld Jensen 8f095d67a0 Fix glyph runs painted badly with perspective transform
A mismatch between requiresPretransformedGlyphPositions and
shouldDrawCachedGlyphs in QRasterPaintEngine will cause the text
position to be transformed twice when using drawGlyphRun on a QPainter
with a perspective transform. Since this case falls back to drawing
text as paths there is no reason to require any special treatment.

Change-Id: Ib1c14aee4cc6774dd8feadc5748f0b0ee59633b9
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-01-09 15:51:41 +01:00
Laszlo Agocs f496c7186c eglfs: Update screen destruction to follow the new approach
Call destroyScreen(), like other platform plugins do since
9b4fbe85d2.

Change-Id: Idbddb026d7a964f15c00acfacf70064405dc3f16
Reviewed-by: Giulio Camuffo <giulio.camuffo@jollamobile.com>
2015-01-09 14:29:30 +01:00
Kai Koehne 8836a4d5f0 moc: Work around 'unused variable' MSVC warning
MSVC prints warnings if all slots are actually static methods:

moc_xxx.cpp:71: warning: C4189: '_t' : local variable is initialized but not referenced

This can be easily avoided by using Q_UNUSED.

Change-Id: Ice134a8a8d3e6aef1df1e7a89e9a2867281580fd
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
2015-01-09 13:27:58 +01:00
Kai Koehne 979e0512ac Get rid of QT_NO_QWARNING_MACRO
Just use QT_NO_QDEBUG_MACRO, like we do already for qInfo.

Change-Id: I4b2ef68427fbe6f253fe02a3ab161fa25186e834
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-09 13:14:11 +01:00
Kai Koehne ef6279fd51 Add QtInfoMsg
Add an 'info' message type that can be used for messages that are neither
warnings (QtWarningMsg), nor for debugging only (QtDebugMsg). This is
useful mainly for applications that do not have to adhere to the
'do not print anything by default' paradigm that we have for
the Qt libraries itself.

[ChangeLog][QtCore][Logging] QtInfoMsg got added as a new QtMsgType.
  Use the new qInfo(), qCInfo() macros to log to it.

Change-Id: I810995d63de46c41a9a99a34d37c0d417fa87a05
Reviewed-by: Jason McDonald <macadder1@gmail.com>
2015-01-09 13:14:05 +01:00
David Faure 4c980aedc1 QStandardPaths: add AppConfigLocation.
ConfigLocation was erroneously inconsistent, by adding the org name
and app name on Windows (unintentionally) and not on Unix (while having
subdirs in ~/.config is actually common practice for some XDG desktops)

Therefore this adds AppConfigLocation, which always has the org name
and app name (while GenericConfigLocation never does).

[ChangeLog][QtCore][QStandardPaths] Added QStandardPaths::AppConfigLocation,
for application-specific configuration directory. ConfigLocation was inconsistent.

Task-number: QTBUG-38872
Task-number: QTBUG-38845
Change-Id: I80fb98f296436261f3996c9df87571c29b06ab35
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-09 12:15:59 +01:00
Marc Mutz 3b9629e8bd QStateMachine: replace a QHash key involving a QPointer
Using QPointers (or any type that makes a QPointer part of its identity) as a key
in any associative container is wrong. They get externally set to nullptr,
violating the associative container's class invariants, which could lead to
data corruption, even though bucket-based hash implementations are less susceptible
than binary trees.

To fix, write a new class that acts much like the old QPair<QPointer<>,QByteArray>,
but uses the QPointer only as a guard, not as part of its identity. To preseve
identity, also saves the naked pointer originally passed and uses that for op==
and qHash().

Change-Id: I4fa5a6bf86bad8fe7f5abe53d7c7f3ad3754d8d6
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-09 12:06:23 +01:00
Marc Mutz 65eb573926 QStateMachine: fix some misleading code
The old code creates a RestorableId from the passed (QObject*, QByteArray)
and used it for lookup in a hash table (ok) and as a container for the
(QObject*, QByteArray), satisfying later references to those parameters
from the RestorableId instance instead of using the parameters directly.

Now, RestorableId holds the QObject* in a QPointer, so the code might have
wanted to detect the object being destroyed as part of the operation, BUT:
a) the operation is a read-only one, and b) the code didn't check for
nullness before dereferencing the QObject*.

Fix by moving the creation of the RestorableId into the scope it's used
and otherwise using the parameters directly.

Change-Id: Iaf12f722fe6841ee1a55037fe33a6115aa699aca
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-09 12:06:15 +01:00
Marc Mutz 3ecc44d5d2 Docs: e.g. -> for example in qhash.cpp
Change-Id: Ifee0117ddadfaa774fdd575467b03ca5b0baf433
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-01-09 12:05:51 +01:00
Marc Mutz 315ca08e36 QVersionNumber: use qHashRange()
Change-Id: Ia7cfb8030cded33f4246206392b46d1013067ef3
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Keith Gardner <kreios4004@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-09 12:05:45 +01:00
Marc Mutz 08373fb02d Add qHashRange and qHashRangeCommutative
qHashRange() takes an (input iterator) range and hashes each element, combining
the hash values using the hash combiner from Boost/N1837 with the magic number
0x9e3779b9, as described here:
http://stackoverflow.com/questions/4948780/magic-number-in-boosthash-combine

qHashRangeCommutative() does the same but with a cummutative combiner (unsigned
addition) to create hash values that are order-independent, e.g. for hashed
containers. The obvious combiner, XOR, is a bad one because it eliminates
duplicate elements. Signed addition cannot be used, since signed overflow
leads to undefined behavior.

[ChangeLog][QtCore] Added qHashRange() and qHashRangeCommutative() functions to aid
implementing qHash() overloads for custom types.

Change-Id: I3c2bbc9ce4bd0455262a70e0cf248486525e534f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-09 12:05:35 +01:00
Thiago Macieira 62b67092ea Don't specialize std::swap, just overload it in the global namespace
This is the modern, correct way of providing a swap
operation. See http://stackoverflow.com/a/8439357/134841 for more
information. By changing this, we also fix Qt building with ICC
and libc++.

This patch also adds a noexcept() rule to match what the C++11 standard
requires.

Change-Id: I18f22fe7c92cf253e94168e1312346b4c183f536
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-01-09 12:05:26 +01:00
Marc Mutz 3fc9f97d61 QMutex/QReadWriteLock: mark bootstrap implementations nothrow
This is primarily to get a cleaner build of src/tools
under -Wnoexcept.

Change-Id: I0dea21e70aad56b25675fc59fac0327b55ee83e3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-09 12:05:11 +01:00
Tor Arne Vestbø 56a82e87e6 iOS: Prevent recursion when updating/syncing QIOSViewController properties
Change-Id: I22f1eaa892cba23c498ae210a9a483e468268581
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-09 11:22:59 +01:00
Tor Arne Vestbø 95cb745e00 iOS: Fix QWindow::reportContentOrientationChange on iOS6+
On iOS 6 and above, [UIViewController supportedInterfaceOrientations]
needs to return 0 for [UIApplication setStatusBarOrientation] to work.

This means once you report a content orientation other than the primary
orientation, you'll disable auto-rotation. Reporting the orientation as
Qt::PrimaryOrientation restores the auto-rotation behavior.

Change-Id: I1b8c765c507728fdbc5b828e0b4215324014e221
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-09 11:22:59 +01:00
Allan Sandfeld Jensen 7bd3d4591a Fix authenticated POST/PUT http requests with buffering disabled
If reset is disabled then POST and PUT requests can not be authenticated
as the upload device can not be reset. There shouldn't be any reason
that shouldn't be allowed if the QIODevice given supports resetting.

The disableReset feature of QNonContiguousByteDevice is removed as it
is not used anywhere else, and is redundant when reset can indicate
success or failure.

Task-number: QTBUG-43628
Change-Id: If941a98fd3f797872351c10bdca6aa6745dbefea
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
2015-01-09 11:16:54 +01:00
Tobias Koenig de61130bd4 Seal shared memory on POSIX IPC
Change-Id: I5dc3807af904ad77db82d49b38b4c8e66d2d4de6
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-09 10:59:11 +01:00
Tobias Koenig ddc884c841 Use O_CLOEXEC flag POSIX shared memory handle
Change-Id: Ie554c5963112b88c058082085dbc9eed42a41861
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-09 10:59:00 +01:00
Tobias Koenig 96995db4af Add POSIX IPC support to QSystemSemaphore and QSharedMemory
This patch is a forward-port from 4.8 branch
(d869e1ad4b0007757e97046609de2097cd9e9c5d).

Change-Id: I6ae36a5417d1176fbecf775668f6033b1cb22a94
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-09 10:58:52 +01:00
Gabriel de Dietrich 3d17b73377 QFileSystemWatcher: Use FSEvents FSW on OS X
This removes one of the last references to 10.6.

Change-Id: Ie23d9aba698714460e7478a421e85d4ad50d4ec9
Task-number: QTBUG-43505
Reviewed-by: Liang Qi <liang.qi@theqtcompany.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
2015-01-09 10:46:56 +01:00
Andy Maloney 163af2cf53 Add OptimizedWrite & ProgressiveScanWrite options to QImageIOHandler and use for JPEG writing
Exposes two options from libjpeg: the optimize option and progressive scan option.
These are both lossless operations, so they do not change the image's quality.
Using these switches can result in smaller jpeg files.

Task-number: QTBUG-20075
Change-Id: I8d0bd6a712b8a365265b7bd517e136b0755b90cb
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Reviewed-by: aavit <eirik.aavitsland@theqtcompany.com>
2015-01-09 10:36:08 +01:00
Gunnar Sletta fc5e6b37a1 Support threaded OpenGL on XCB/EGL.
Broken since 8758f532ae.

Change-Id: I04cb9a36088ab6753c9519a911d065617f88fe08
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-01-09 10:36:06 +01:00
Laszlo Agocs 532be5959f Avoid exposing dependencies from libinput support
Do not include other headers from the main qlibinputhandler_p.h that
serves as the external interface to the generic plugin for example.
This way the clients do not need to care about xkbcommon headers and
such.

Task-number: QTBUG-43498
Change-Id: I56335cb19200fee830bdf4b1d203904f741f7489
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-01-09 10:14:07 +01:00
Sérgio Martins 5c5f43e95b docs: Explain the limitations of QWidget::grabMouse() on Windows
Because carbon is dead, I merged both OSX and Windows in the same note.
Change-Id: I5d43c5fce30e187f63a1e3e5af688c344eb80d28
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-01-08 21:25:12 +01:00
Tor Arne Vestbø d62cd6508a iOS: Move implementation details of QIOSViewController to class extension
Change-Id: I602d8f1c9f20d3bfed4db3405460021146b546d8
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-01-08 21:08:30 +01:00
Paul Olav Tvete e6699afbee Fix physical DPI and size for rotated screens on X11
Rotated screens would use the unrotated physical geometry, causing the
calculated physical DPI to be completely wrong.

In RandR, the output does not rotate, so the physical size is always for the
unrotated display. The transformation is done on the crtc.
http://www.x.org/releases/X11R7.6/doc/randrproto/randrproto.txt

Task-number: QTBUG-43688
Change-Id: Ifde192fcc99a37d0bfd6d57b4cdeac124a054ca3
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Uli Schlachter <psychon@znc.in>
2015-01-08 10:53:04 +01:00
Ashish Kulkarni da6a706eb3 fix error when cross-compiling with --system-zlib
This is broken since 1f461ac45b, where
Z_PREFIX was defined to namespace the bundled zlib symbols. The
bundled zlib is used by bootstrap.pro when cross-compiling which uses
the namespaced symbols. This breaks linking of rcc when --system-zlib
is used, as it will try to link to compress2 instead of z_compress2.

To fix this, the aliases are pulled in via zconf.h and the bundled
zlib is prepended to the INCLUDEPATH (i.e. before the system zlib).

Change-Id: Iec76cbdead40f888e2ac6a887ec8f3b7bc7db501
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-01-08 09:31:49 +01:00
Lorn Potter 72bc032ca8 Refactor networkmanager QtBearer backend to use QDBusAbstractInterface.
Using QDBusInterface causes introspection, which may not be permitted
by some platforms.

Change-Id: I953d27b9c0fc7c21d52fefeb8c7760a7235aed9d
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
2015-01-08 06:42:44 +01:00
Friedemann Kleint b495a27d4e Introduce Windows version 10.
Detect OS kernel version 10.0 as Windows 10.

Task-number: QTBUG-43413
Change-Id: I39307cf8cc2e7cc209d6a88b8576db87086fa20e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-01-08 06:28:04 +01:00