Commit Graph

18561 Commits

Author SHA1 Message Date
Thiago Macieira
ad080fa311 Fix compilation with ICC on Windows
Unlike MSVC, ICC *does* support constexpr, but on Windows it will not
define __GNUC__, so we ended up in the multi-line alternative. That is
not permitted in C++11, only in C++14.

qalgorithms.h(659): error: statement may not appear in a constexpr function

Change-Id: I7de033f80b0e4431b7f1ffff13fc96245ee9a846
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-08-25 01:08:42 +00:00
Jocelyn Turcotte
1977855f31 Avoid recreating QVariantLists when extracted from a QVariant
Wrapping a QVariantList in a QVariant to pass it to QML would
trigger a deep copy each time QML would try to access elements
in the list (specifically in QQmlListAccessor::at).

This reverts a part of 8c4deff51c
by specifying the associative array conversions explicitly without
including the current type in the list of types to convert through
an iteration.

Task-number: QTBUG-41403
Change-Id: If9fddfe6d36f789ac4aa61a7c32677cd1dd077d8
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-08-24 21:03:24 +00:00
Allan Sandfeld Jensen
2f43ac9dcd Fix double initialization of QRgba64 with C++14
Use constructors with C++11/C++14 where it is allowed to avoid hack
that caused double initialization and thereby performance regression
with C++14.

Change-Id: I7ae86df8aa34000b2c186e22bd9917303354b794
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-08-24 08:36:50 +00:00
Shawn Rutledge
bc8d325926 xcb: set QTabletEvent's timestamp from the window system event
The intention is for it not to include any delays that Qt's event
processing has introduced.  And we are already doing it this way
for touch and scroll events.

Task-number: QTBUG-39459
Change-Id: Ie01cc2f8c6290ab66ef1b9180471afaa3da2e9da
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-08-24 07:28:44 +00:00
Shawn Rutledge
bd2ebbdb9a QInputEvent: document that timestamp() is in milliseconds
Task-number: QTBUG-39459
Change-Id: Ie76f3c2f6fe81746d3ea646f0c2f0d47ec3ef252
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-08-24 07:28:40 +00:00
Shawn Rutledge
5c9e94fb9b Windows: set QTabletEvent's timestamp from the window system event
Task-number: QTBUG-39459
Change-Id: I8439846482a52b358bcdc4d8a5f6f4b9bbe55fa5
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-08-24 07:28:34 +00:00
Kai Koehne
cb6ab05648 QLoggingRegistry: Look up logging configuration in Qt data path
Distributions like Fedora would like to disable logging globally, without
having to patch Qt. Fedora right now therefore adds a
/etc/xdg/qtlogging.ini file, which unfortunately though also messes with
Qt versions compiled by the user.

This patch lets QLoggingRegistry look up logging configurations also
in QLibraryInfo::DataPath, which would allow to tweak the values per
Qt installation.

See also https://bugzilla.redhat.com/show_bug.cgi?id=1227295

Change-Id: I0fca304a47f45739d0c08a9e4e715673bf10aa80
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
2015-08-24 07:17:29 +00:00
Andrew Knight
5c95c2077c winphone: Fix keyboard show/hide calls
These need to occur on the XAML thread.

Change-Id: Id42a37df95b09e6d3c0a1b6e593bbf8cbfe5a129
Reviewed-by: Samuel Nevala <samuel.nevala@intopalo.com>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
2015-08-24 07:02:58 +00:00
Thiago Macieira
b626a5859a Remove vestiges of Qt's own sockaddr_in6 and sockaddr_storage
We weren't using qt_sockaddr_storage, so it's not a problem. But since
we're not using it anyway, we don't really need it. The storage is only
needed if we needed to get a bigger socket address and that only happens
with Unix sockets (paths).

sockaddr_in6, however, was just wrong. Some systems derived from BSD,
like OS X, have a sXX_len field containing the length of the socket
address structure and our qt_sockaddr_in6 was missing sin6_len. As a
result, setting sin6_family was just plain wrong on little-endian
systems. Like all modern systems running BSDs and OS X...

Change-Id: I7de033f80b0e4431b7f1ffff13f900f004c55443
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-08-22 22:26:50 +00:00
Thiago Macieira
452924c6ff QNativeSocketEngine Unix: do the same as for Windows
Change-Id: Iee8cbc07c4434ce9b560ffff13ca9d9858cf7111
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-08-22 22:26:47 +00:00
Thiago Macieira
2c64e05d49 QNativeSocketEngine Windows: bring bind() in line with Unix
The IPv4+IPv6 dual stack code that has been in Qt since 5.0 has been
giving test failures for tst_qudpsocket: some binds that shouldn't
succeed do succeed. Instead, copy the core code from the Unix version so
the two OSes will behave the same way.

The one difference in behavior between Windows and Unix is that on Unix
you can bind an IPv4 address to a multicast IP and on Windows you can't.
So I left the "correction" that was in the original code, but I'm unsure
if it is the right thing to do. Are people expecting to join the
multicast group this way?

Change-Id: Iee8cbc07c4434ce9b560ffff13caa1c3d5a7e8fd
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-08-22 22:26:43 +00:00
Thiago Macieira
f35b8c004e QNativeSocketEngine Windows: simplify the conversion to struct sockaddr
We have qt_sockaddr, which has enough storage for our needs and is a
union of all the types. We don't need them to be separate like that.

Change-Id: Iee8cbc07c4434ce9b560ffff13ca9cb960ccf1d7
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-08-22 22:26:40 +00:00
Thiago Macieira
28dfc33c3a QNativeSocketEngine: add code to send extra IP header data
Change-Id: Iee8cbc07c4434ce9b560ffff13ca48c053bd88ed
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-08-22 22:26:37 +00:00
Thiago Macieira
abe269bb72 QNativeSocketEngine: add code to receive IP header data
Change-Id: Iee8cbc07c4434ce9b560ffff13ca466263abcb1b
Reviewed-by: Richard J. Moore <rich@kde.org>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
2015-08-22 22:26:33 +00:00
Thiago Macieira
ef05ad0ac5 QNativeSocketEngine: use sendmsg/recvmsg instead of sendto/recvfrom
We'll need to use these functions instead of the ones we're currently
using in order to access the ancillary data.

Note that on Windows the two functions aren't globals, but must be
obtained via ioctl, which means they can fail. If they do, we fall back
to using WSARecvFrom/WSASendTo

Change-Id: Iee8cbc07c4434ce9b560ffff13ca4284acd24132
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-08-22 22:26:30 +00:00
Thiago Macieira
89efa7333d QAbstractSocketEngine: introduce QIpPacketHeader for datagrams
This commit changes the readDatagram() and writeDatagram() virtual
functions to take a QIpPacketHeader as meta data, instead of a
QHostAddress/quint16 pair. As previously, the header is an "out"
parameter for readDatagram() and an "in" parameter for writeDatagram().

The header pointer in readDatagram() is allowed to be null if the
PacketHeaderOptions indicates WantNone. Otherwise, it must not be null.
The extra options parameter is introduced because we may not always want
all the metadata upon reception. For sending, we know what to include or
not based on what's set in the incoming header parameter.

QIpPacketHeader splits sender and destination because we'll be able to
return both on datagram reception.

Change-Id: Iee8cbc07c4434ce9b560ffff13ca4213255008c7
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-08-22 22:26:23 +00:00
Friedemann Kleint
53251e23cf Set QAction::NoRole on dock widget view actions.
Prevent the actions from being shuffled around in OS X
menus since the default is QAction::TextHeuristicRole.

Task-number: QTBUG-47739
Change-Id: Ib68bb7c51eb9278a99d277473f9d4cfcf740431c
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
2015-08-22 22:26:19 +00:00
Thiago Macieira
3997321199 Remove Q_DECLARE_TYPEINFO that causes a build error
ICC doesn't like it
qdbusintrospection_p.h(162): error: explicit specialization of class "QTypeInfo<QDBusIntrospection::Argument>" must precede its first use

It's used by the QVector in the same class

Change-Id: I7de033f80b0e4431b7f1ffff13f958971617b657
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-08-22 22:26:16 +00:00
Thiago Macieira
39c2b8c5c1 Add support for same-file intrinsics with Clang 3.7
It supports the same feature that GCC does

Change-Id: Ib306f8f647014b399b87ffff13f1f3159898741b
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-08-22 00:10:39 +00:00
Laszlo Agocs
b409b1a0e4 libinput: Fix key mapping
Prevent generating 2 character long 'text' strings with some garbage as
second char.

This matches how xcb works.

Change-Id: I88a248a89c80b0e100c1c4871cfab4f2c287535e
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2015-08-21 21:02:56 +00:00
Markus Goetz
bc32c0ebc0 QNAM: Fix reply deadlocks on server closing connection
The _q_readyRead can also be called from readMoreLater() because we implemented
it so that bandwidth limited reading can be implemented.
This can lead to a race condition if the socket is closing at the specific moment
and then deadlock the channel: It will stay unusable with a zombie request.
The fix in QHttpProtocolaHandler checks if there is actually bytes available to read
from the socket and only then continue.

The fix in the HTTP channel needs to be done to properly finish the reply in
cases of a server replying with HTTP/1.0 or "Connection: close".
The delayed incovation of _q_receiveReply will properly finish up the reply.

Change-Id: I19ce2ae595f91d56386cc7406ccacc9935672b6b
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-08-20 12:02:32 +00:00
Andy Shaw
d99c9bcf2c Fix regression in reading certain compressed bmp images
For BITFIELDS compressed images, the image data may be preceded by
bitmask fields. The file positioning code that should make sure those
were read correctly was erroneously included in the block of code that
was moved in 6f1b82fccd.

Task-number: QTBUG-45559
Task-number: QTBUG-40890
Done-with: Eirik Aavitsland
Change-Id: Id2b3ce078f67ac6ebf75ab0cc463dc719af83393
Reviewed-by: aavit <eirik.aavitsland@theqtcompany.com>
2015-08-20 11:25:19 +00:00
Jorgen Lind
025d6a778c Fix unnecessary enter leave events
Task-number: QTBUG-45565
Change-Id: I92c1dc0a14440259349eeae40372221dbc3c548f
Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
2015-08-20 10:37:20 +00:00
Samuel Nevala
b349289fa0 winrt: Hide status bar on windows phone.
Task-Id: QTBUG-47789
Change-Id: I9ca5f336ba9ee7524d4a4bbff3bbf4fbbb56fd54
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
2015-08-20 05:41:26 +00:00
Thiago Macieira
cc5e84c878 Avoid overflow in QTime::addSecs with too big a number of seconds
QDateTime::addSecs needs to do something similar, but not identical
because it needs the number of days too. And then there are daylight
savings transitions...

Task-number: QTBUG-47717
Change-Id: I7de033f80b0e4431b7f1ffff13f976f4f5e5a059
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
2015-08-19 22:13:40 +00:00
Thiago Macieira
5bf5fe964b Fix Clang warning about copy elision
Found by Clang 3.7:

qcommandlineoption.cpp:287:12: error: moving a local object in a return statement prevents copy elision [-Werror,-Wpessimizing-move]

Change-Id: I7de033f80b0e4431b7f1ffff13f97fb480001d36
Reviewed-by: David Faure <david.faure@kdab.com>
2015-08-19 22:13:23 +00:00
Shawn Rutledge
cc6a06632b xcb: send QTabletEvent before QMouseEvent
It was a regression: drawing applications which can handle both mouse
and tablet events should not need to wait to see whether a mouse event
will be followed by a corresponding tablet event.  The tablet event is
preferred because it has all the tablet parameters (pressure etc.)
Also, show the timestamp of each mouse event in the log message,
which helps to verify the correspondence.

Task-number: QTBUG-47702
Change-Id: I9e832c19de935ec1243138eb4c1484284f61cbfc
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-08-19 14:14:21 +00:00
Topi Reinio
e525d1f44d Doc: Remove invalid uses of \relates command
A function cannot be both a member and a non-member of the same class.

Change-Id: I07d1e04c09fea2ba1171b3692e716660044cd37a
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-08-19 12:06:05 +00:00
Topi Reinio
2473f4fac3 qdoc: Check and warn if \relates is used incorrectly
There are instances in the documentation where a member function
tries to set itself also a related non-member of its parent. This
should be treated as invalid behavior, as it likely causes also
problems during deletion of the node tree.

QDoc now checks for and warns about these instances.

Change-Id: I951e0de6be4d48618c60b8a0382e2c70700cc402
Task-number: QTBUG-47751
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-08-19 12:06:00 +00:00
Topi Reinio
d558100aa7 qdoc: Improve resolving related non-members and their overload numbers
There were several problems related to resolving related non-member
(RNM) functions for classes. This commit does the following changes:

  - Overload numbers for RNMs are now calculated at the time the
    \relates command is processed, instead of a separate step.
  - If a \relates refers to an entity outside the module boundary,
    write the argument passed to it as-is into the index file.
  - Delay the destruction of QDocIndexFiles singleton, to resolve
    the RNMs read from the index files prior to generating docs.
  - Remove the redundant call to normalizeOverloads() for single-
    exec mode as unnecessary.

These changes ensure that all RNMs are listed in the documentation
for the node that they belong to.

A remaining issue is that if a function relates to a class outside
the module boundary, that function documentation will be empty
because the doc content is not stored into the index file (for
obvious reasons). Single-exec mode does not have this problem.

Change-Id: I33f038120728932cd9fd70da28d9090023068bd6
Task-number: QTBUG-47589
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-08-19 11:30:23 +00:00
Friedemann Kleint
53762b102b Exclude ANGLE from translations.
Fix lupdate warning:
qtbase/src/3rdparty/angle/src/libANGLE/HandleAllocator.cpp:20: Ignoring definition of undeclared qualified class

Change-Id: Ica6b560ce7f80319f4fc9d550f91d6baf61a8241
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
2015-08-19 11:19:09 +00:00
Thiago Macieira
dd92002416 QHostAddress: Improve code generation
Mostly related to IPv6, because Q_IPV6ADDR is an array of char, so the
compilers were generating byte access to each value. Instead, force
access as 32- and 64-bit in most places that make sense (64-bit access
decays to 32-bit on 32-bit machines). In one isLoopback(), this is now a
128-bit access for best improvement.

Some smaller improvements relating to SpecialAddress by combining the
three IPv4 special addresses.

Change-Id: I7de033f80b0e4431b7f1ffff13f932b1cd7b5d21
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-08-19 06:13:33 +00:00
Simon Hausmann
b479d5befb Disable the testlib watchdog if a debugger is present
Currently this is only implemented on Linux and Windows. But it's an
improvement nevertheless when debugging Qt unit tests :)

Change-Id: Iea307dad0e12c24f305c16f0a1805e7c246ee372
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2015-08-19 05:03:26 +00:00
Friedemann Kleint
e50629cc0d qthread_win.cpp: Fix compiler warnings by MSVC2015 (64bit).
thread\qthread_win.cpp(121): warning C4312: 'reinterpret_cast': conversion from 'DWORD' to 'Qt::HANDLE' of greater size
thread\qthread_win.cpp(343): warning C4312: 'reinterpret_cast': conversion from 'DWORD' to 'Qt::HANDLE' of greater size
thread\qthread_win.cpp(416): warning C4312: 'reinterpret_cast': conversion from 'DWORD' to 'Qt::HANDLE' of greater size

Change-Id: I5e60e4bb91a32491562748755d34a2c5a1e264b4
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-08-18 20:03:35 +00:00
Julien Brianceau
6a57a260fc Doc: remove type() reference from QApplication and QGuiApplication
QApplication::type() is gone since Qt 5.0.

Task-number: QTBUG-28093
Change-Id: I8700c69a42271e8b99f3e86a5014c8abf7711f53
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-08-18 14:59:39 +00:00
Giuseppe D'Angelo
ee15bef3ea QRegularExpression: fix matching over QStringRefs
Playing with the offset argument of pcre_exec is not equivalent to
adjusting the pointer to the subject string. In particular, PCRE
can go behind the offset to check for lookbehinds or "transition"
metacharacters (\b, \B, etc.).

This made the code that deals with QStringRefs not matching in behavior
with the corresponding code dealing with QStrings. For instance,

   QString subject("Miss");
   QRegularExpression re("(?<=M)iss");
   re.match(subject.mid(1));           // doesn't match
   re.match(subject.midRef(1));        // matches!!!

Instead, actually adjust the pointer to the subject string so that
the behavior is identical. A broken test that relied on the
equivalence is also removed.

Change-Id: If96333241ef59621d7f5a6a170ebd0a186844874
Reviewed-by: Volker Krause <volker.krause@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-08-18 14:18:48 +00:00
Friedemann Kleint
4dccb2ca67 Handle action events in QLineEditIconButton.
Ensure QAction::setVisible() is
handled and reposition if visibility changes.

Task-number: QTBUG-39660
Change-Id: I14f0659aedc8dc89ddef3159d3a500b40b1563ff
Reviewed-by: David Faure <david.faure@kdab.com>
2015-08-18 12:47:17 +00:00
Laszlo Agocs
ba84e346b8 egl: Do not do any further ops when context creation fails
Change-Id: I54bf4a720e8d414d310ecdb88f08a9705023aef9
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
2015-08-18 12:32:39 +00:00
Joni Poikelin
fae725d451 Fix potential SIGFPEs in QRasterizer::rasterizeLine()
Task-number: QTBUG-46985
Change-Id: If9897a6d4014dbcbc1f6cac1c6dd5dc648694b96
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-08-18 09:31:14 +00:00
Laszlo Agocs
df80753134 linuxfb: Use libinput by default when available
Can be overridden by setting QT_QPA_FB_NO_LIBINPUT.

On systems where libinput is present it is usually a better choice
to rely on it instead of evdev*.

Change-Id: I8532c923bacd605434cfca1c7e314cb95d41b372
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
2015-08-18 08:07:31 +00:00
Laszlo Agocs
95aad72e84 eglfs: Use libinput by default when available
Can be overridden by setting QT_QPA_EGLFS_NO_LIBINPUT.

On systems where libinput is present it is usually a better choice
to rely on it instead of evdev*.

Change-Id: I78857ff91c837f58fdc7d1e119260bd6819fbf4e
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
2015-08-18 08:07:27 +00:00
Laszlo Agocs
1fe890317a libinput: Rename logging category to prevent clashes
Anything linking to platformsupport may use the same name so use
something less generic.

Change-Id: I657dd5dfcad9cf22585fcb17eda62deaf26ea6c4
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
2015-08-18 08:07:21 +00:00
Alexander Volkov
be18d6fb01 Fix shortcuts with keypad keys
The way of searching a shortcut match for a key without the keypad
modifier introduced in 547a1bea49 is
not correct. QKeyEvent::setModifiers() doesn't change native scan code
so we get the incorrect QKeyEvent object which is eventually passed to
the implementation of QPlatformIntegration::possibleKeys().
And then QPlatformIntegration::possibleKeys() returns the same result
as for the original QKeyEvent object.

So to fix it we have to remove Qt::KeypadModifier from keys after
calling the implementation of QPlatformIntegration::possibleKeys(),
as it was before 547a1bea49.

Task-number: QTBUG-33093
Task-number: QTBUG-44577
Change-Id: I5b33c9b6cf2c06b133166a31eba9aff9181c9483
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-08-18 06:27:30 +00:00
Oswald Buddenhagen
5a039bf53e Merge dev into 5.6
Change-Id: I061f2513ef58f696e75b11928d89aaaf059659a3
2015-08-17 19:55:41 +02:00
Laszlo Agocs
08150122aa Do not add GLSL line statements for old drivers
Older VMware virtual machines do not like the #line statements. These
were introduced in 5.5.0, meaning that when upgrading from 5.4 in such
a VM, shader compilation via QOpenGLShaderProgram stops working. This
should be avoided.

Task-number: QTBUG-47598
Change-Id: I8cccd76119350e7ce40da96d24a7a6e9eb399052
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2015-08-17 13:17:51 +00:00
Alexander Volkov
0636ec4ff5 Open menu on the third click on QMenuBar on X11
We don't replay mouse events after closing popups on X11.
This leads to the bug when the menu doesn't show after
clicking three times on the menu bar. It can be fixed by
reverting 78d7192338, but
then we need an alternative fix for QTBUG-32807 on Windows.
So don't replay mouse events for the menu bar on all
platforms.

Change-Id: I3db8e24a6de6f35b0a17dffac6a131f1cad42e6d
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-08-17 09:03:22 +00:00
Joerg Bornemann
507625d984 fix assertion in QProcess/Win
Do not call bytesAvailableInChannel if the source pipe end is
invalid. This is the case when redirecting channels on Windows.
The assertions in bytesAvailableInChannel were triggered whenever
an output process or output file was set and waitForBytesWritten
was called.

Task-number: QTBUG-45548
Change-Id: I225dfea2c5e27e122f75008a3a06d425554e00fe
Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-08-17 08:25:19 +00:00
Thiago Macieira
dbcf5730ac QHostAddress hashing: use qHashBits
Instead of constructing a temporary QByteArray, which could conceivably
fail, to hash those bits.

Change-Id: I7de033f80b0e4431b7f1ffff13fa376302d9720f
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-08-16 18:12:54 +00:00
Thiago Macieira
3ae90ed371 QNetworkInterface: remove fallback code for Windows pre-XP and CE pre-4
All versions we support have support for the WinXP-style functions we
need, so we don't need the Win2k fallback.

Change-Id: I7de033f80b0e4431b7f1ffff13f99175a507a2ed
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-08-16 18:12:51 +00:00
Thiago Macieira
4fbc63f03b Fix thread-safety of qnetworkinterface_win.cpp:resolveLibs
Change-Id: Ia4b5103c9c590c24de9a43c5c7097b0c7b83e679
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-08-16 18:12:47 +00:00
Thiago Macieira
c72311440b QNetworkInterface: make the name lookup search numbers in string forms
That's how QHostAddress::scopeId() stores them, so we ought to look them
up the same way.

Change-Id: I7de033f80b0e4431b7f1ffff13f98cf87d45ebc6
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-08-16 18:12:44 +00:00
Thiago Macieira
8fa44b382f QNetworkInterface: Merge the two sections of code that do SIOCGIFxxx
The separation was accidental due to refactoring. It does not need to
exist.

Change-Id: I7de033f80b0e4431b7f1ffff13f988adc47d57d5
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-08-16 18:12:42 +00:00
Thiago Macieira
1bf9cb44e2 QNetworkInterface: prefer SIOCGIFINDEX over if_nametoindex
On Linux (on a bad system without getifaddrs), the ioctl for
SIOCGIFINDEX should be faster than if_nametoindex. The ioctl on the
already open socket will require one syscall, while if_nametoindex will
require at least one more (to open the socket), probably more.

Change-Id: I7de033f80b0e4431b7f1ffff13f9888bf2044105
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-08-16 18:12:39 +00:00
Martin Smith
89302b8b88 doc: Add a few missing const keywords in \fn commands
This adds "const" to a few \fn commands for new operators
in QHash and QMap.

Change-Id: I93cf7aaf88fcb4db17de5810b555b978e8119e20
Task-number: QTBUG-47669
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-08-16 14:48:13 +00:00
Martin Smith
330da82cc2 qdoc: Instantiator::objectAt now appear in docs
There was a bug in bool CppCodeParser::splitQmlMethodArg(),
which has now been fixed. The bug occurred when there was a
"::" in the return type.

Change-Id: Id31ed0d4a03d84e76fb69403441a3491ec884ddc
Task-number: QTBUG-47438
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
2015-08-16 14:48:06 +00:00
Martin Smith
8c5ce68fcf qdoc: Allow formal parameters in link targets
This update allows qdoc to handle \l commands for linking
to functions, where the formal parameters are included in
the link target.

For example, \l {QWidget::find(QString name)} will only match
a member function of QWidget that has a single parameter of type
QString. The parameter name is not used in the search.

Change-Id: I8a31c9a7ed632f12a0e6d8a33cbb5cd361098317
Task-number: QTBUG-47286
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-08-16 14:47:58 +00:00
Alex Trotsenko
6dde874c32 QProcess: discard unwanted output from the child process
Drop process output to nullDevice(), if an application does not request
forwarding, redirecting or reading from the device channel. This
prevents from accumulation of unnecessary data which can not be read.

Change-Id: Ia311a8c658a46cf580ffa9484c5369f3fc5f98a7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-08-16 14:22:32 +00:00
David Faure
4ccf5c6f4a QMimeDatabase: adapt to changes in shared-mime-info 1.3
The generated xml file is now lowercase.
This was changed in shared-mime-info 3805d0bcf2.
It led to runtime warnings "No file found for ...", which helped notice the bug.

Change-Id: I31f0fc7f0fe8a098c3f79c0bcbeeb1909d2cc05a
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-08-16 13:33:21 +00:00
Olivier Goffart
f029468b8d Add QMainWindow::resizeDocks
This API allows to programatically resize QDockWidgets

Task-number: QTBUG-32001
Change-Id: I58072a391f8e7f325a26745b5bedd3fe49508e91
Reviewed-by: Jocelyn Turcotte (Woboq GmbH) <jturcotte@woboq.com>
2015-08-16 08:23:32 +00:00
Thiago Macieira
1ff66a7962 QProcess: Ensure that the stdin buffer is cleared on start()
The buffer may have been left dirty if we were unable to write all the
data to the child process in the previous run. So ensure we clear it
before starting a new one. We already did that for stdout and stderr,
for some reason.

Task-number: QTBUG-44517
Change-Id: I1a800c709d3543699131ffff13c419da3bbffacf
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-08-15 21:59:26 +00:00
Thiago Macieira
3bfba054cb Add QHostAddress::isMulticast
This complements QHostAddress::isLoopback. The only missing check now is
for the "Any" address types, though operator== is quite fast nowadays.

Change-Id: Iee8cbc07c4434ce9b560ffff13cc2691e15014b6
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-08-15 04:35:42 +00:00
Thiago Macieira
060b7ffe5b QtTest: Add QHostAddress support for QCOMPARE failures
Change-Id: Iee8cbc07c4434ce9b560ffff13cc6dad04a5a554
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-08-15 04:35:34 +00:00
Thiago Macieira
45e59556ed Fix warning of unused variable
Only happens on systems without getifaddrs, which we aren't usually
testing.

Change-Id: I7de033f80b0e4431b7f1ffff13f9889f5cfdea5b
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-08-15 04:35:23 +00:00
Sérgio Martins
385202c27c OSX FreeType: Add support for sub pixel font rendering.
Task-number: QTBUG-42839
Change-Id: Iea4552d766936a55fd177e4287591d2715202d9c
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
2015-08-14 23:34:26 +00:00
Andreas Hartmetz
ea3e2ca6ea OSX FreeType: respect hinting preference
Task-number: QTBUG-42839
Change-Id: I2bccd7bda74ccbbb752181f1caea7ecf4672c01c
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
2015-08-14 23:34:22 +00:00
Thiago Macieira
c21113f9ee QHostAddress: don't inline the parse() function
It's called everywhere due to QT_ENSURE_PARSED and it's big. There's no
need to duplicate it everywhere.

Change-Id: I7de033f80b0e4431b7f1ffff13fa383f29114712
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-08-14 20:17:43 +00:00
Andreas Hartmetz
b71b36fa22 Move setter for QFont::HintingPreference to QFontEngineFT.
Preparation for also using it from QCoreTextFontDatabase.

Change-Id: I9cbef59c21f343a88a5cb3fdbee1ed4791d7a36e
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
2015-08-14 19:07:11 +00:00
Samuel Gaist
40a4105fae Fix QChar char constructors documentation
Reverts the wrongly added \internal and adds a warning for users that
the constructors will not be available if QT_NO_CAST_FROM_ASCII is
defined

Task-number: QTBUG-39862
Change-Id: I038eea3f4eef0b914b470309a2f515741eec35a9
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
2015-08-13 21:04:27 +00:00
Morten Johan Sørvig
7a0222fba3 Call sendWindowSystemEvents() on deferred flush
Calling it directly is less confusing than calling
it indirectly via the "else" branch in
flushWindowSystemEvents.

Change-Id: I085deff09162137606922a5af7ead23e21497b11
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-08-13 18:34:05 +00:00
Morten Johan Sørvig
65cbf263a3 Propagate keyboard event accept status
Set the accepted bit on the QWindowsystemInterface
keyboard event after processing the key event.

Change-Id: I2d8c9382f14840e464153870dff909000e64ddcd
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-08-13 18:33:39 +00:00
Morten Johan Sørvig
e5d54c8af7 Propagate event accepted state to platform plugins
Add en "eventAccepted" field to WindowSystemEvent,
where the event subclasses can record the event
acceptance status. Make handleWindowSystemEvent()
return the accepted status.

This works for synchronous event processing only. If
the event is placed on the QPA event queue then there
is no way to return the accepted state immediately.
In the latter case handleWindowSystemEvent() always
returns "true".

Change-Id: I081aecc54f43588d42d3aaeec7f8458f06937601
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-08-13 18:33:03 +00:00
Morten Johan Sørvig
a50db99d15 Add QPlatformWindow::windowFrameGeometry()
Convenience accessor for use by the Wayland
platform plugin.

Change-Id: I420209138cfc285f8396913548b9e158a35ee9c1
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
2015-08-13 18:28:51 +00:00
Morten Johan Sørvig
8f747efcc1 Make QT_SCALE_FACTOR work on Wayland
Propagate the line stride when creating the high-dpi
backing store image.

Change-Id: I15f41965d8eaf1d01ddac0a1a012b71148f757e3
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
2015-08-13 18:28:28 +00:00
Morten Johan Sørvig
ce651b961d Remove Q_DEAD_CODE_FROM_QT4_MAC sections
The native OS X color dialog wrapper is now implemented
in qcocoadialoghelper.mm in the Cocoa platform plugin.

Change-Id: Idc4088df93960dd68507d11a9895277e34a18b96
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
2015-08-13 18:27:28 +00:00
Ulf Hermann
c65b8381bb Use QScopedPointer for library paths
This way we can remove some life cycle management code.

Change-Id: I8e0c9db0a8c5f0941bbd834380d3e3b3a9d2f306
Reviewed-by: Adam Majer <adamm@zombino.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-08-13 17:09:43 +00:00
Alex Trotsenko
6fca88607b QAbstractSocket::canReadLine(): remove code duplication
Contents of the QIODevice's buffer is handled in the base
implementation.

Change-Id: I5a3d68e4e8dcb16d7f5ad695ac43127b8047a061
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-08-13 17:08:28 +00:00
Milian Wolff
194403a348 Remove temporary string allocations when reading prepared statement.
Instead, we use the binary MySQL encoding and copy the data directly
into the QVariant of the desired type. This gets rid of the temporary
string allocations and greatly improves the performance of the added
benchmark. On my machine, the results are:

Before:
     0.562 msecs per iteration (total: 563, iterations: 1000)
     1,922,479.330 instructions per iteration (total: 1,922,479,330, iterations: 1000)

After:
     0.381 msecs per iteration (total: 381, iterations: 1000)
     774,132.957 instructions per iteration (total: 774,132,958, iterations: 1000)

Note that the same could be applied to floating point data types in
the future. Additionally, special support for MYSQL_TIME structure
coult be added to get rid of the string conversions there.

To ensure everything keeps working, a new auto test is added as well
that verifies the select statements and insertions of integral data
into a MySql table works as intended.

[ChangeLog][QtSql] Improve performance when reading integer values
from MySQL databases via prepared statements.

Change-Id: I21dd9277661971ded934546f09535014b63f8eb8
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-08-13 16:53:45 +00:00
Thiago Macieira
1183fb3ea9 Doc: Remove the section about IPv6 site-local addresses
Site-local addresses were deprecated in RFC 3879 (September 2004) and
RFC 4193 (October 2005) replaced them with Unique Local Address. ULAs
are part of the global range but supposedly unique to an organization.

Change-Id: I7de033f80b0e4431b7f1ffff13f98d2124c5cffc
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-08-13 16:35:23 +00:00
Thiago Macieira
6d8c7a61f5 Fix -Wcast-qual warnings
qwidget.cpp:12864:70: error: cast from type ‘const QWidget*’ to type ‘void*’ casts away qualifiers [-Werror=cast-qual]

Change-Id: I7de033f80b0e4431b7f1ffff13f956cb26108af7
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-08-13 16:35:14 +00:00
Thiago Macieira
01d0b1d6e3 Merge the multiple implementations of getting the local hostname
This commit moves the functionality from QtNetwork's QHostInfo to
QtCore. Note that due to Windows ws2_32.dll's quirky behavior of
requiring WSAStartup before calling gethostname, this change required
moving the initialization to QtCore too.

On Linux systems, gethostname() gets the name from uname(), so we bypass
the middle man and save one memcpy.

Change-Id: I27eaacb532114dd188c4ffff13d32655a6301346
Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-08-13 16:34:51 +00:00
Andrew Knight
807ec8ea48 winrt: Refactor platform plugin for XAML support
By using XAML as the platform compositor, many benefits are possible:
 - Better input context handling for tablets
 - Better multiple window support (including non-fullscreen windows)
 - Support for transparent windows and window opacity
 - Integration with native platform controls
 - Simpler orientation handling on Windows Phone with built-in transitions

This patch applies only the minimal parts to make XAML mode work just as
the raw D3D mode. It does this by:
 - Moving all OpenGL parts into QWinRTEGLContext. This will allow us to
   have non-OpenGL windows later (e.g. Direct2D raster surfaces).
 - Moving more window-specific parts into QWinRTWindow. Each window creates
   a SwapChainPanel which can then be used for ANGLE (or Direct2D) content.
 - Moving non screen-specific parts into QWinRTIntegration.
 - Having QWinRTScreen create the base XAML element Canvas.
 - Running certain calls on the UI thread where necessary.

The following code parts were removed:
 - The UIAutomationCore code in QWinRTInputContext, as this is incompatible
   with XAML automation.
 - The D3D Trim and device blacklist, as these have been fixed in ANGLE.
 - Core dispatcher processing in QEventDispatcherWinRT. Now there is only
   one native event dispatcher; it is always running and never needs to be
   pumped.

Future commits should address:
 - Maintaining the window stack list and visibility using the XAML Canvas.
 - Allowing for windows (e.g. popups) to be sized and positioned instead
   of fullscreen.
 - Using the XAML automation API to improve the platform input context.

[ChangeLog][QPA][winrt] Windows Store apps are now composited inside a
XAML container, allowing for tighter integration with the native UI layer.

Change-Id: I285c6dea657c5dab2fda2b1bd8e8e5dd15882c72
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
2015-08-13 16:12:37 +00:00
Andrew Knight
ebc2b963aa winrtmain: Start in XAML mode
This allows the platform plugin to start using XAML interfaces in the
windowing system.

Change-Id: Ifcd29b8b8d83b138af69786dfc6a1adec21be37e
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
2015-08-13 16:12:18 +00:00
Andrew Knight
130083a7fc ANGLE: Use pixel sizes in the XAML swap chain
This is necessary for Qt applications, as they render to GL in physical
pixels. This is consistent with the CoreWindow swap chain behavior.

This includes a partial revert of "ANGLE: Improve Windows Phone Support"
as the modifications to SwapChain11 are incompatible with the XAML swap
chain.

This change only affects Windows Runtime targets.

Change-Id: I401ae81028a9dfdb9da37f51c60844467c476f76
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
2015-08-13 16:12:10 +00:00
Andrew Knight
cea03fa3e3 ANGLE: check for out of date swap chain even when size is empty
This allows the XAML swap chain to work properly, as otherwise it never
got a resize after it was passed into ANGLE with an empty size. This is
fixed by upstream commit 3799c3014a9e4ba4a3853c014a7127254ec19d50, so no
patch is necessary for Qt's local copy.

Change-Id: I43b030fa74f6b30c2aa42a36db2031a84eedf60b
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
2015-08-13 16:12:02 +00:00
David Faure
6c09b9e553 QStandardPaths: on Windows, add APPDIR and APPDIR/data for GenericDataLocation
This allows multiple applications installed into the same directory,
to share data files without polluting a more global directory
like C:/ProgramData.

Change-Id: Id5f4f9bc9d2ccb7ec677babcc08c1c5a641178f6
Reviewed-by: Samuel Gaist <samuel.gaist@edeltech.ch>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-08-13 15:23:01 +00:00
Andrew Knight
68c915f3df ANGLE: call flex/bison by their standard names
qt5.git now contains the winflexbison tools as flex/bison.

Task-number: QTBUG-46852
Change-Id: I8b86cd4211ae8fb120f955be1f423f94b10b318e
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
2015-08-13 10:24:53 +00:00
David Faure
109cdeda30 qprintdialog_unix.cpp: fix out-of-bounds when cwd is empty.
This happens when the cwd got deleted meanwhile; this warning is printed out:
QFileSystemEngine::currentPath: getcwd() failed
and currentPath() is empty. Not a problem in itself, but qprintdialog
should not assume it's not empty, then.

Change-Id: I5c89992b36ca58b6325ced399cff33aca9efb7ec
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-08-13 08:54:47 +00:00
Olivier Goffart
314c83c0c2 Do not use Q_GLOBAL_STATIC in the implementation of QMutex
Since Q_GLOBAL_STATIC might use QMutex and cause a stack overflow.

Task-number: QTBUG-47554
Change-Id: I4853c5e9b9168d4a417200e2a45a1bf9cb103a30
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Pierre Rossi <pierre.rossi@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-08-13 07:03:23 +00:00
Michael Klein
e3d7cf7c96 Cocoa: fix integer multiplication overflow in qt_gettime()
Task-number: QTBUG-24031
Change-Id: Iae00b10b6a7423508669ef173a80a03b3dd388c6
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-08-13 01:16:17 +00:00
Milian Wolff
af3152adee QMimeProvider: Do not crash when globPatterns is empty.
Change-Id: I351a533a1f03ac2e7bdec876b657a80fac60b2ed
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
2015-08-12 13:20:20 +00:00
Oswald Buddenhagen
a47cd2cc82 Merge "Merge remote-tracking branch 'origin/5.4' into 5.5" into refs/staging/5.5 2015-08-12 09:53:52 +00:00
David Faure
34130b9caf QMimeDatabase: use QElapsedTimer instead of QDateTime::currentDateTime()
This reduces the number of syscalls greatly, by avoiding the timezone
conversion every time.

Change-Id: I39a54def4b45f25c6e037ced6943b05ddc749c9d
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
2015-08-12 09:03:09 +00:00
Thiago Macieira
2366ca059e Fix warning about unused local variables
qopenglengineshadermanager.cpp(430): warning #177: variable "none" was declared but never referenced
qopenglengineshadermanager.cpp(431): warning #177: variable "br" was declared but never referenced

Change-Id: I7de033f80b0e4431b7f1ffff13f958e4a4cca16e
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-08-12 03:55:21 +00:00
Thiago Macieira
0ec809e027 forkfd: Add support for FreeBSD's pdfork(2) system call
pdfork(2) has semantics very close to what we want in forkfd, but not
quite. Differences:
 - we still get SIGCHLD and need to do a wait4
 - no support for atomic FD_CLOEXEC and O_NONBLOCK

On the SIGCHLD case: this commit is an improvement over the generic Unix
case, since we no longer need to install a SIGCHLD handler and do not
need to keep the arrays for matching PIDs and file descriptors. That
matching is done entirely inside the kernel.

However, since SIGCHLD is still sent to the process, an uncooperative
SIGCHLD handler can still "steal" our response. At least Glib is
documented not to reap children it wasn't explicitly asked to watch for
(source code matches), but other libraries are known to do waitpid(-1)
(e.g., EFL's Ecore). At least now the behavior is consistent: we will
never install a handler, so the behavior won't depend on the order in
which the handlers are installed.

Change-Id: Iee8cbc07c4434ce9b560ffff13cb4c63306e43ef
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-08-11 16:37:58 +00:00
Milian Wolff
6129be8a4b Prefer QT_PLUGIN_PATH over compiled-in paths.
Currently, when one compiles a Qt plugin that is also installed
system wide to a local path added to QT_PLUGIN_PATH, you have no
way to ever load it as the global plugin will always be preferred.
This is due to the order in which the QCoreApplications::libraryPaths
are constructed, which always appended the QT_PLUGIN_PATH contents
to the end.

Now, the QT_PLUGIN_PATH contents are put first, such that the plugins
in there are preferred and loaded.

[ChangeLog][QtCore][QPluginLoader] Fixed the search order of Qt plugins
so that paths specified by the QT_PLUGIN_PATH environment variable
are searched before built-in paths.

Change-Id: Iad8ca2cd34e7a622c191a416c01c1c5cc1812fc9
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-08-11 14:33:20 +00:00
Kai Uwe Broulik
fc410c1398 Android: Add support for EnterKey
QAndroidInputContext now sends along the EnterKey type provided by the
EnterKey input method query enabling the QtActivityDelegate to set the
imeOptions for the TextView accordingly.

Change-Id: Ic96077ab4b11cf6dec52283ecf66b2cabe7af665
Reviewed-by: BogDan Vatra <bogdan@kde.org>
2015-08-11 13:14:26 +00:00
Erik Verbruggen
d44ca1ed0b Remove type punning from QRgba64.
In C++, type punning with a union is not allowed. It will result in
compiler defined behavior at best, and undefined behavior at worst.
Specifically, if QRgba64 is passed to a function by value, the different
members of a struct might be passed in separate registers. This means
that any write to the quint64 might not blank out the values of the
struct whenever the compiler looses track with TBAA.

Change-Id: I991b5492fe4bb13a14bb670fef5bf13dacbe6c0a
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
2015-08-11 11:01:27 +00:00
Erik Verbruggen
670cb2edbc Move Q_ALWAYS_INLINE next to Q_NEVER_INLINE in qglobal.h.
Change-Id: I7e3b7ecca6b5f142fa6cb5db2e9521ed3212afe8
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2015-08-11 11:00:31 +00:00
Richard Moe Gustavsen
afaeecd4e8 iOS: ensure that we restore text selection with correct cursor and anchor pos
Qt keeps track of the selection direction since a selection anchor can be placed
both to the left or to the right of the cursor. On iOS, the selection should
instead always be specified from left to right (using a position together with a
positive length). So when restoring the selection after performing the
calculation of the text rect, we need to ensure that we follow this format.

Change-Id: Id8bea6c35e2781e1431ee963f601b6e9ef05dbf5
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-08-11 10:13:38 +00:00
Richard Moe Gustavsen
0cf00efced iOS: support cut/copy/paste shortcuts when using Bluetooth keyboard
Change-Id: Iaa602771227f64c3a477a27656362a361f78e8dd
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-08-11 10:13:32 +00:00
Alex Trotsenko
70da0b71fb QNetworkReplyImpl: remove unused declarations
Change-Id: I844864d53d4644d57f3ca5f20b4a3f30a95fead3
Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
2015-08-11 09:40:47 +00:00
Mathias Hasselmann
bf013c9e74 OSX: Add initial FreeType support
This permits text rendering consistent with other FreeType enabled platforms,
like Windows and Linux.

Task-number: QTBUG-42839
Change-Id: I8c99bcaa3fb07c16e935a0c3705af467bc3da584
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
2015-08-11 09:40:30 +00:00
Allan Sandfeld Jensen
5551295028 Fix repremultiply from RGB64 to RGB30
Just like from RGB32 to RGB30 we must also repremultiply when converting
from RGB64 because the alpha channel loses more precision than the other
color channels.

Since this is not approximated accurately in the simple blending
functions and the functions are no longer needed now the main render
engine supports higher accuracy, the simple blending routines for RGB30
have been removed.

Change-Id: I2b7b8eb015e330a487848fc4370ad3a1e966be91
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-08-11 09:33:06 +00:00
Richard Moe Gustavsen
7f0f6380b1 QComboBox: make editable comboboxes usable with input methods
QComboBox uses a QLineEdit for text editing. But while editing, the
combobox is the widget having focus, not the line edit. Instead the
combobox forwards all the IM events to the line edit internally. This
causes a problem since the line edit will not be able to update the
platforms IM state in QWidget::updateMicroFocus() since it doesn't
have focus. The result will be that the platforms IM state will
get out of sync with the QLineEdit.

This patch will add the missing connections that lets QComboBox
update the platforms IM state when the inner QLineEdit signals
that its needed.

Change-Id: Ic3e0fdbf155d4dbeab31e2cd859f6e425ae87375
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-08-11 07:46:12 +00:00
Richard Moe Gustavsen
22e752bada QLineEdit: update IM status after selection change
As it stood, we only told the platform about a selection change if
the cursor also changed position. But if you have a selection, and
press key left, the selection will be cleared without moving the
cursor. And for those cases, we didn't report the selection change
back to the platform. The result was that the IM status in the platform
plugin got out of sync with the widget.

This patch will add the missing connection that updates the platform
whenever the selection changes.

Change-Id: Iab0848f27207b63ed4fb47f0d4f24a6d02e87db1
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-08-11 07:46:08 +00:00
Andy Shaw
d2f0f46c45 When the focus changes make sure that the IME finishes correctly
When clicking onto another widget while in the middle of composing should
cause it to be seen as an acceptance of the composed text so far instead
of just cancelling it outright.

This was validated against the Japanese, Korean and Chinese IMEs on
Windows 7.

Task-number: QTBUG-42344
Change-Id: I03be0cd099840f51a9550929f33e2afbbf31e85a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-08-10 12:30:48 +00:00
Allan Sandfeld Jensen
bec8c726bf Fix out-of-buffer read on image upscale
Avoid reading from the next pixel when the sample is fully based on the
current pixel. This is particular important for the last pixel in an
image when the next pixel might be outside the image buffer.

Change-Id: I3607f9c6c332d11ff944ca35d216d417368f9fd5
Task-number: QTBUG-47228
Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-08-10 10:22:36 +00:00
Thiago Macieira
dc3dd4f634 Set the socketType and socketProtocol early
The type is known (usually) right after createNewSocket, so let's just
set it. They may get overwritten later (in fetchConnectionParameters),
but this allows early use of setOption when we need to know the socket
type.

Change-Id: Iee8cbc07c4434ce9b560ffff13ca09fccb8e1662
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-08-10 03:41:46 +00:00
Thiago Macieira
3bf4c222e5 Make Qt::Initialization a C++11 class enum
And declare Qt::Uninitialized to be the same value because we're not
interested in the scoping rules of C++11 class enums. We're only
interested in avoiding the cast from Qt::Uninitialized to an integer.
That is to avoid the mistaken:

    QVector<Custom> vector(5, Qt::Uninitialized);

which is actually implicitly:

    QVector<Custom> vector(5, Custom(Qt::Uninitialized));

and likely not what the developer wanted.

Change-Id: I27eaacb532114dd188c4ffff13d374eb698bfbab
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-08-10 03:41:43 +00:00
Thiago Macieira
d9d9420d8d Add a dedicated QListData::realloc_grow for growing QList
This hides the call to ::grow to now two places in the source code, so
it will be easier to fix the inefficient call to qAllocMore.

Change-Id: I5d1e6f7607404caa96e4ffff13e80a3e4cb0ee93
Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com>
2015-08-10 03:41:41 +00:00
Thiago Macieira
dafa3618d2 Add QTypeInfo::isRelocatable
It's the same as movable (i.e., the opposite of QTypeInfo::isStatic),
except that it won't trigger the QList change in memory layout.

For Qt 6, we should merge the two.

Change-Id: Ib306f8f647014b399b87ffff13f1ece29e4b6e5c
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-08-10 03:41:37 +00:00
Thiago Macieira
2faa5f9d09 Silence warning about unused parameter
Happened on an iOS build

io/qlockfile_unix.cpp:217:51: error: unused parameter 'pid' [-Werror,-
Wunused-parameter]

Change-Id: Id3d5c7bf4d4c45069621ffff13f7f7a30728c071
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
2015-08-10 03:41:33 +00:00
Simon Hausmann
d82e1d145d Reduce memory usage of dynamic properties
The dynamic property variants are stored as QList<QVariant>, which unfortunately
results in QList to behave as array-list because of the size of QVariant. By storing
the variants in a vector directly we can eliminate the array-list element pointers.

Change-Id: I8736e1cf48b9fc97df3007df4a439b793933f346
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-08-10 03:41:28 +00:00
Allan Sandfeld Jensen
01c15a9438 Always return grayscale indexed8 from QImage::alphaChannel()
We shouldn't short-cut alpha8 formats in alphaChannel, the method is
used under the assumption that the returned alpha map has encoded the
alphas as an indexed grayscale image. The method is also documented
as not returning alpha8.

Task-number: QTBUG-47138
Change-Id: I1cf16957d12e65d44f2b586d9f127fcb33c549b6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-08-09 09:13:30 +00:00
Timur Pocheptsov
5bfac9d653 Merge "Merge remote-tracking branch 'origin/5.5' into dev" into refs/staging/dev 2015-08-09 07:06:52 +00:00
Paul Olav Tvete
f08e1ecdc8 Add Mir client platform plugin
Contributed by Canonical, Ltd.

Change-Id: I77752a1fd56641342be6c84e01b013d3df36ad73
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
2015-08-09 06:27:26 +00:00
Tasuku Suzuki
26b4ec448c Support logging direct to syslog, if enabled.
[ChangeLog][QtCore][Logging] Systems with syslog may now pass -syslog to
configure to send logging output to syslog.

Change-Id: I80d58ee6e70d8deb2409fc666e7e7f2d7f52b8e1
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2015-08-09 04:16:38 +00:00
Laszlo Agocs
89cb92f838 Document AA_* that must be set before app construction
After seeing multiple apps falling into the trap of setting
AA_ShareOpenGLContexts after constructing the q(gui)app, it
is time to add some more docs regarding this.

Task-number: QTBUG-47637
Change-Id: I01b5be0980d038efc56fd649d4a1fee26c33aef8
Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2015-08-08 22:52:43 +00:00
Laszlo Agocs
9b27f27d17 windows: Fix the OpenGL blacklist
Change-Id: I860feffee46de14cb92435e4199e6bae6afae249
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2015-08-08 22:52:37 +00:00
Laszlo Agocs
87666d391c Make compressed textures work with mutable storage
1. glTexImage*D does not accept compressed formats.

2. Replacing it with glCompressedTexImage*D is not an option as per GLES 2.0 spec
since passing null data is not allowed.

3. glCompressedTexSubImage*D must always be preceded by a glCompressedTexImage*d
(or glTexStorage*D) call.

4. Therefore the only way is to do nothing in allocateStorage() and switch to
glCompressedTexImage*D in setCompressedData() whenever mutable storage is in use.

This makes ETC1 textures working on the Beaglebone (and presumably others).

Change-Id: I21a040f6ed4aecaa494b6e5a6c6cd75b7389c15c
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2015-08-08 22:52:31 +00:00
Tor Arne Vestbø
e92c2e119b Improve readability of QTextLine's handling of (negative) right bearing
- Helper functions in LineBreakHelper have been renamed from
    adjustFoo to calculateFoo, to signal that they do work, and
    are not adjusting something relative to something else.

  - The use of QFixed(1) and >= 0 has been replaced with an explicit
    constant for the case of the bearing not being calculated yet.

  - A helper function negativeRightBearing() has been added that
    returns the absolute value of any negative right bearing, making
    the width computations simpler.

  - Comments have been added and rewritten to make the logic clearer.

Change-Id: I1d3a0214cfa8b4fed4551f3444b43a37d55bd69b
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-08-07 15:46:18 +00:00
Andy Shaw
4d572362e8 Fix link to QQ article
Change-Id: I04d373778b243fdeb281c98e292359996639c95e
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-08-07 08:00:27 +00:00
Samuel Gaist
63cd55b172 QTreeView: add size hint handling information to uniformRowHeights
Task-number: QTBUG-10802
Change-Id: I6aa60d8fd7678f02003a229e191a5ab4f93c4b9d
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
2015-08-06 20:50:02 +00:00
Samuel Gaist
141f03a814 Doc: mark private QChar constructors as internal
Task-number: QTBUG-39862
Change-Id: Ie0d533e3897200589248c803069c41661b15997e
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-08-06 20:49:53 +00:00
Samuel Gaist
64b53ddf56 Doc: add clarification about signals not being buffered when blocked
Task-number: QTBUG-15238
Change-Id: Id762007415245f104ffe5cdfd100889f9a73ae95
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-08-06 20:49:44 +00:00
Samuel Gaist
6e0a6be105 Doc: Fix wrong reference QApplication::setStandardPalette
Task-number: QTBUG-46078
Change-Id: Ifb1c650467a0fc30a0d11ad58708a64e5f9fabd5
Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-08-06 20:49:41 +00:00
Samuel Gaist
925822eca5 QProcessEnvironment documentation typo fix
Task-number: QTBUG-45985
Change-Id: I42de961ca6d57847c135abd8395494d0e416ab05
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
2015-08-06 20:49:37 +00:00
Samuel Gaist
24dc597386 Add reference to QRegularExpression
Currently there's no mention of QRegularExpression in QRegExp's
documentation. This makes it hard to find QRegularExpression for user
used to QRegExp. This patch adds that missing reference.

Task-number: QTBUG-46816
Change-Id: If3a981d5759fbed3eecd07e046882e6da378cc4e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com>
2015-08-06 20:49:33 +00:00
Lorn Potter
51cf05c1bd Add env variable to control bearer backend polling timers.
Scanning and updating networks can cause transmission jitters
when scanning every 10 seconds.
setting QT_BEARER_POLL_TIMEOUT, in milliseconds will set
polling timer for those bearer backends that require
polling, such as generic and windows.

Task-number: QTBUG-46015
Change-Id: I0338cd34ad78488ebef250a0114d17ce190434e8
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
2015-08-06 19:36:59 +00:00
Morten Johan Sørvig
79ae2b3963 QMacStyle: Disable progress bar animations
Disable progress bar animations on 10.10 Yosemite
and higher - the native style does not animate them
any more. Keep the indeterminate progress bar animation.

Change-Id: If15fa0321e184101ef19b1050eb5e9d8f27480d8
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
2015-08-06 19:30:41 +00:00
Simon Hausmann
f18dc91da5 Fix crash when mixing widgets with QtQuick 1 and Qt Quick 2
Apply the fix from commit 313a74cc4a also to
the QWidget and the QGraphicsObject destructor.

Task-number: QTCREATORBUG-10273
Change-Id: I47983b49cc4d9b75a2e1ee838e13403bc4b95a59
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-08-06 16:58:22 +00:00
Paul Olav Tvete
62a56adfa6 Compile-time option for disabling high-DPI scaling
Even if QHighDpiScaling::isActive() returns false, there
is a small overhead from calling functions and multiplying
with 1.0. This change adds a QT_NO_HIGHDPISCALING #ifdef
that replaces all conversion functions with empty inline
functions.

Task-number: QTBUG-46615
Change-Id: Idf85e1700e3adf7f7174c6fa3f5e1d006d74c826
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-08-06 11:45:28 +00:00
Morten Johan Sørvig
6c4bd85c1f OS X adaptations to the high-DPI API
Use QPlatformWindow::windowGeometry() and friends
instead of the QWindow API, which now returns
(possibly scaled) values in device-independent pixels.

Rename QCocoaWindow::windowGeometry() -> nativeWindowGeometry()

Change-Id: I70279145079c3df793059d16fed9aafba2d49a6d
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
2015-08-06 11:06:26 +00:00
Tim Blechmann
11de131053 platforms: cocoa - fix QCocoaWindow::bottomLeftClippedByNSWindowOffset
bottomLeftClippedByNSWindowOffset did not take multiple clippings into
account. with this patch, we compute the offset via NSView-visibleRect.

Change-Id: If4ec02eb983e30f7cc5a6a1cb73e8f5c28fe1551
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-08-06 10:48:44 +00:00
Timur Pocheptsov
462e537e03 Fix a memory leak
We create dirtyOnScreenWidgets even if QT_NO_OPENGL is defined,
but dtor deletes this object  only if no QT_NO_OPENGL is defined.
Also, copy ctor/assignment operator must be disabled for such a class.

Task-number: QTBUG-47499
Change-Id: I9f8b5721ff6324fa7b28b715af68d0a5496c5eb5
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-08-06 10:30:57 +00:00
Antonin Stefanutti
e9eeb68a65 Add support for drawing a hyperlink in QPdfEngine
Adds the drawHyperlink method so that clients can draw a hyperlink
pointing to the specified URL at the specified rectangle. That new
method is to be used by GraphicContext::setURLForRect implementations
that want to render anchors as clickable links in PDF documents.

Task-number: QTBUG-44563
Change-Id: I7b0c602da37ee157d18115c531ab1b11fe304c13
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2015-08-06 09:40:02 +00:00
Frederik Gladhorn
77da617dc8 Merge remote-tracking branch 'origin/5.5' into dev
Conflicts:
	doc/global/qt-cpp-defines.qdocconf
	src/3rdparty/forkfd/forkfd.c
	src/corelib/codecs/qtextcodec.cpp
	src/corelib/kernel/qmetatype.cpp
	src/corelib/tools/qset.qdoc
	src/gui/accessible/qaccessible.cpp
	src/gui/image/qpixmapcache.cpp
	src/opengl/qgl.cpp
	src/tools/qdoc/generator.cpp
	src/widgets/kernel/qwidget.cpp
	tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp

Change-Id: I4fbe1fa756a54c6843aa75f4ef70a1069ba7b085
2015-08-06 10:54:01 +02:00
Thiago Macieira
40cbf1927b Don't add qmutex_xxx.cpp to SOURCES, as qmutex.cpp #include's them
Normally qmake catches the #include and drops the source from SOURCES.
But the parser has bugs, so help it by never adding the files.

The false: SOURCES += is left so that the sources can be found by Qt
Creator.

Task-number: QTBUG-46582
Change-Id: I049a653beeb5454c9539ffff13e667877350346b
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
2015-08-06 07:35:13 +00:00
Thiago Macieira
fd57ec5c5f QDBusError: Disable function that isn't used in bootstrapped builds
Change-Id: Id3d5c7bf4d4c45069621ffff13f7b73144537d81
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-08-06 07:34:20 +00:00
Laszlo Agocs
4e6e71aa8d Add ETC1 to QOpenGLTexture formats
On mobile and embedded ETC1 (via GL_OES_compressed_ETC1_RGB8_texture) is
still the most common (and sometimes the only) option for compressed textures,
at least until GLES3 (with ETC2) becomes widely available.

Note that we treat this format as unsized to prevent going on the immutable storage
path as there is no word on glTexStorage and friends in the extension so that may
just fail as well.

Change-Id: Icbc3c6f62f314d63c4df289ef456f047c5e84cf3
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2015-08-06 07:30:57 +00:00
Laszlo Agocs
4d39da8734 eglfs: save state in the cursor
Running an example like hellogles3 with eglfs and the mouse cursor visible
breaks due to the cursor implementation not being aware of vertex array
objects. The cursor drawing code uses client side pointers and having a
VAO bound breaks this. Instead, the VAO should be reset to 0.

In addition, the same applies to all touched state: naive applications
doing custom OpenGL rendering expect the state to be unchanged between
frames and this is not unreasonable. So introduce saving and restoring
for all touched state, with the exception of Quick where there is no
need to waste time with this.

Change-Id: Ib79039e80993ab5fc8368357fc1147ee7863d055
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
2015-08-06 07:30:50 +00:00
Topi Reinio
5677176d76 qdoc: Don't use QStringLiteral in string comparisons
Using QStringLiteral to compare strings performs poorly
compared to QLatin1String.

These cases were previously fixed by commit 1a5c0b26, but
some were reintroduced with new commits to QDoc.

Change-Id: I272376052e876d88817606deb0a6dda92867dcbf
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2015-08-06 07:03:35 +00:00
Thiago Macieira
01f3530650 Don't check if Pentium's CPUID leaf 1 exists
It does. When CPUID was introduced in late 486, it already supported
leaf 1. That means all Pentium-class systems (including Intel's new
Quark systems) have CPUID and they have at least leaf 1.

Change-Id: Ib306f8f647014b399b87ffff13f1d5d2530d9ddd
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-08-06 04:53:44 +00:00
Thiago Macieira
f549916d18 Doc: update QDebug documentation to talk about the escaping
Task-number: QTBUG-47316
Change-Id: Ib306f8f647014b399b87ffff13f303badb2a7a63
Reviewed-by: Martin Smith <martin.smith@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2015-08-06 04:53:41 +00:00
Thiago Macieira
644ac04af0 Change how QDebug escapes QStrings in the output
[ChangeLog][Important Behavior Changes] QDebug output for QStrings
changed compared to Qt 5.5.0 to more closely match the output of
previous Qt versions. Like Qt 5.5.0, QDebug will escape non-printable
characters, the backslash and quote characters, but will no longer
escape the printable characters.

Task-number: QTBUG-47316
Change-Id: I52dd43c12685407bb9a6ffff13f62ef68cbc80c5
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2015-08-06 04:53:38 +00:00
Thiago Macieira
007ad9e859 FreeBSD has pipe2, so enable it in forkfd.c
Change-Id: Ib056b47dde3341ef9a52ffff13efd1a15748e44d
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2015-08-06 04:53:35 +00:00
Thiago Macieira
84e1bb4951 Fix warnings about unused variables
Found by ICC
qglengineshadermanager.cpp(427): warning #177: variable "none" was declared but never referenced

Change-Id: Id3d5c7bf4d4c45069621ffff13f758ffaf1744d7
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
2015-08-06 04:53:33 +00:00
Andrew Knight
c17134e2db winphone: Remove old code
The platform message dialogs are always used on WP.

Change-Id: If55e1ea804981201fded796adaaf11eb17bc5050
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
2015-08-05 19:54:08 +00:00
Andrew Knight
18c4a08623 winphone: Remove old non-DirectWrite code
Since 8.1, DirectWrite is always used on WinRT platforms.

Change-Id: I742e4a48be6c478a62c16a32cf89852b850aff9d
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
2015-08-05 19:54:03 +00:00
Laszlo Agocs
4a552d95f6 Avoid multisampled contexts in QOpenGLWidget
as it is not needed at all. Multisampled FBOs do not need multisampled
configs.

What's more, this fixes crashing Mesa with Intel and EGL, where creating
a pbuffer for a config with multisampling simply crashes. (and due to
other issues we disable surfaceless QOffscreenSurface for Intel so
the pbuffer cannot be avoided)

Task-number: QTBUG-47509
Change-Id: I3ae3fae8513a6dc64ca4ab11c61d4777c6c09cec
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
2015-08-05 18:18:56 +00:00
Frederik Gladhorn
4067bbc24c Fix shortcut handling with modifiers
Since d7ca800a87 the shortcut events were
only sent once. The one sent by QGuiApplication did not create a
QKeyEvent with the full native modifier state - basically the extended
key event expected everywhere.
That means that shortcuts on some keyboard layouts - like ctrl-shift-7 on
the German keyboard (resulting in ctrl+/) - would not work when the
shortcut override was tested from QGuiApplication, but then the same shortcut was
sent from QApplication with the full information, so it worked the
second time. Shortcuts of this type in Qt Quick were broken before.

Task-number: QTBUG-47062
Change-Id: I8390b9a96d0d998a2a538ac65503702e0d299cc7
Reviewed-by: Andy Shaw <andy.shaw@theqtcompany.com>
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
2015-08-05 16:15:05 +00:00
Frederik Gladhorn
25981d9b7f QLoggingRegistry: allow Rules section to be lower case
In http://blog.qt.io/blog/2014/03/11/qt-weekly-1-categorized-logging/
the Rules section is given as:
[rules]
...

While in reality only Rules was accepted. Ignore casing instead.

Change-Id: Ibf0da6b6df857988d508ba9ec354cbce0b2c56d6
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2015-08-05 16:14:42 +00:00
Timur Pocheptsov
72680ce7e2 Fix for build with -qreal float
Resolve ambiguity with function calls (due to double->float conversion),
use qreal where needed intead of explicit 'double'.

Change-Id: I28f1fb4a2b424b1399fb082a36ba9cff666f7c62
Task-number: QTBUG-47433
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-08-04 15:37:43 +00:00
Topi Reinio
1e39c712bd qdoc: Do not merge QML module nodes with different major versions
As we may have multiple versions of a QML module present in the
doc build, the logic QDoc uses for merging collection nodes from
different trees needs to be revised a bit.

After this change, the collection nodes for identically-named
QML and JS modules are merged only if the major version number
matches. This prevents the situation where QML types for both
versions are listed in QML module pages.

Change-Id: I76b056a2073744347b160b25ed5bb043279f2b8a
Task-number: QTBUG-47536
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-08-04 14:15:39 +00:00
Laszlo Agocs
abbf82bdfc Make EGL context init work when msaa is requested but there's no surfaceless
To query back certain things, like the actual OpenGL version from the created context,
the eglconvenience code makes the new context current either without a surface
(in case EGL_KHR_surfaceless_context is supported) or with a pbuffer (or other
platform specific equivalent). There is no problem with the former. The latter
can however fail when samples are requested for the context and there are no
matching pbuffer configs. The result is a pbuffer without multisampling,
which could lead to a BAD_MATCH.

This is visible on GLES 2.0 devices like the Beaglebone. The solution is to fall
back to creating a new, temporary context with a config matching the pbuffer's
whenever the makeCurrent attempt fails.

Change-Id: Icd9f3383f2cad36dd5b60dead655328b7b9af658
Reviewed-by: Andy Nichols <andy.nichols@theqtcompany.com>
2015-08-04 13:13:54 +00:00
Kai Koehne
1767c94e9e Doc: Fix qdoc warnings about missing \inmodule
Change-Id: Id04ac0d4825ad3e8489c0db186425e049e2c6108
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-08-04 13:06:56 +00:00
Joerg Bornemann
d337fbe13c Doc: fix \sa for QT_NO_PROCESS_COMBINED_ARGUMENT_START
Change-Id: I4d2c1b1bc5773c23d3dfd8522268a422c3e513e6
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-08-04 12:21:41 +00:00
Laszlo Agocs
771235285c Allow sharing contexts in QOpenGLTexture::destroy()
Checking for the exact same context is too strict. The texture is valid
in sharing contexts too.

Task-number: QTBUG-47521
Change-Id: Ifdf329ef5361b48abcb7c69e08acd7e35d624a08
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2015-08-04 10:28:07 +00:00
Friedemann Kleint
44520dfff6 QtGui/QtOpenGL: Fix compiler warnings by MSVC2015 (64bit).
opengl\qtriangulatingstroker.cpp(130): warning C4305: '=': truncation from 'double' to 'float'
opengl\qtriangulatingstroker.cpp(546): warning C4305: '=': truncation from 'double' to 'float'
opengl\qopenglshaderprogram.cpp(1779): warning C4312: 'reinterpret_cast': conversion from 'int' to 'const void *' of greater size
qglshaderprogram.cpp(1709): warning C4312: 'reinterpret_cast': conversion from 'int' to 'const void *' of greater size

Change-Id: If1de629aada308d18c3641b504d74d3294b1e8bf
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-08-03 20:15:30 +00:00
Christian Strømme
a416647e38 Android: Manually detach the thread after calling quitApp.
On Android 5.0 ART will complain when we don't detach the thread before
the application is about to quit (non-fatal). This is because we
re-attach to call quitApp and then leave it attached.

Change-Id: I4571ef5f38d92afcaf91cb920ebe121a7be7835a
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-08-03 14:55:26 +00:00
Alex Merry
8fdd1e3867 QLoggingCategory: fix default severity in Q_LOGGING_CATEGORY macro
[ChangeLog][QtCore][QLoggingCategory] Fixed behavior of default
severity passed to constructor or Q_LOGGING_CATEGORY with regards to
QtInfoMsg, which was previously treated as being more severe than
QtFatalMsg.

This is because the code was using the numeric value of QtMsgType as a
proxy for severity (via the <= operator), but the value of QtInfoMsg is
greater than QtFatalMsg. Instead, the severity ordering must be dealt
with explicitly.

Change-Id: I5f178afc735221b00cb67c2cea4fa964bd9079ce
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2015-08-03 14:40:19 +00:00
Oswald Buddenhagen
5ba3309703 fix build with no built-in image handlers
the handlers' .pri files added $$PWD to INCLUDEPATH to make the files
self-contained when used externally, but this polluted the include path
of the gui module itself, thus hiding incorrect use of QPA includes.

Task-number: QTBUG-47400
Change-Id: I576469a71e8ded0b409d62687999c0fa884613f9
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-08-03 14:13:58 +00:00
Joerg Bornemann
fd10b40da2 do not warn about "untested" Windows versions
Remove the qWarning that was printed when running a Qt application on
desktop Windows versions that Qt doesn't know about.
This warning isn't helpful, it's only visible for command line
applications and it can only be turned off by rebuilding the application
with a newer Qt version.
Removing the warning is also consistent with all other platforms - even
non-Desktop Windows.

Change-Id: If1cac92ce99974335319d0b9a74f1006069abd7a
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
2015-08-03 13:51:16 +00:00
Topi Reinio
7b77ef6b0a qdoc: Make \target and \keyword commands link as expected
When resolving targets added for each node, QDoc didn't run the
check recursively; this meant that \target and \keyword commands
did not link when used in documentation nodes that are not direct
children of the root node. There include e.g. documentation for
functions and QML properties/methods.

This commit fixes that issue, and also modifies the behavior of
\keyword slightly: Using a \keyword no longer generates a HTML
anchor reference. Instead, linking to a keyword links directly
to the parent item which defines the \keyword. This produces
cleaner HTML by omitting unnecessary anchors.

Change-Id: I87659642770a5372409ecb09cb576fbad295155e
Task-number: QTBUG-47286
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-08-03 12:37:57 +00:00
Kai Koehne
563df05723 QSslSocket: Update error string in setSocketDescriptor()
Change-Id: I03cd3886c0e2dbb07ef8d37e75df36308ee5fea5
Reviewed-by: Alex Trotsenko <alex1973tr@gmail.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-08-03 07:13:36 +00:00
Kai Koehne
561ccd7ca3 Disable #pragma diagnostic [push|pop] for gcc 4.5
Fix warnings like

qalgorithms.h:40:16: warning: expected [error|warning|ignored] after `#pragma GCC diagnostic`

As the comment below also indicates, #pragma GCC diagnostic [push|pop]
is only supported from gcc 4.6 upwards. See also the GCC 4.6
changelog: https://gcc.gnu.org/gcc-4.6/changes.html

[ChangeLog][Compiler specific Changes] GCC: Fixed a regression introduced Qt 5.5.0
that generated lots of compiler warnings in Qt public headers when using
the (deprecated) version 4.5 of GCC.

Change-Id: I425388b61cd5fbf464a0f7dd46ce403d35c532a4
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-08-03 07:12:41 +00:00
Laszlo Agocs
007c60e193 Do not access screens before initialize()
Change-Id: I1d6eaa5a1525ae060f8a9f37ae4295bee2f4bb38
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
2015-08-02 08:21:18 +00:00
Gabriel de Dietrich
69cca470fe Cocoa QPA plugin: Unlock full Q_DECL_OVERRIDE karma
Change-Id: I0f631c3b120d052ad552809d0aab9493e5b41a70
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
2015-08-01 21:34:12 +00:00
Gabriel de Dietrich
0193d6d5bb Cocoa Integration: Support non-native input context plugins
This is useful, for example, when we want to test the virtual
keyboard on OS X. It uses the usual QT_IM_MODULE code path
provided by QPlatformInputContextFactory if that environment
variable is set. If not, it defaults to QCocoaInputContext.

Change-Id: Ib917d7bd2f4e86eacbc50dd7592cc288a9a702de
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-08-01 21:34:07 +00:00
Friedemann Kleint
b4f266c4e4 qwindowstheme.cpp: Fix compiler warnings by MSVC2015 (64bit).
qwindowstheme.cpp(635): warning C4312: 'reinterpret_cast': conversion from 'int' to 'FakePointer<int> *' of greater size

Change-Id: Ia2b7c14a5f31bd29243302e76105ad97563951b2
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
2015-08-01 19:08:48 +00:00
Olivier Goffart
0e2d8ba792 QMainWindow: allow dropping QDockWidget to floating docks
In the QMainWindow::GroupedDragging mode, we can have floating
tabs of QDockWidget's, but it was not possible to drop onto
already floating QDockWidgets to tab them.

Task-number: QTBUG-47211
Change-Id: Ic666f6f8816d91a3eed844a6da1eb8698c8c7a0c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
2015-08-01 06:48:17 +00:00
Thiago Macieira
3ae2387f37 QTemporaryDir: fail early if the error isn't EEXIST
Before, stat -c on Linux (enabling this code path):

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 0.00    0.000000           0       256       256 mkdir

After:
 0.00    0.000000           0         1         1 mkdir

“To err is human, to persist in error is diabolical” - Georges
Canguilhem

“The definition of insanity is repeating the same mistakes over and over
again and expecting different results.” - Albert Einstein, Mark Twain or
Benjamin Franklin (all mis-attributed)

Change-Id: Ib306f8f647014b399b87ffff13f0a3c155053e6a
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: David Faure <david.faure@kdab.com>
2015-08-01 01:36:58 +00:00
Konstantin Ritt
c57c89b3c1 Don't expose qt_setQtEnableTestFont(bool) by default
Build it only in -developer-build mode for tests that might depend
on exact-matching font behavior.
Return earlier to avoid doing any useless job.

Change-Id: I966ee5689f03403e45f4c957b63e3113f0467803
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-07-31 09:50:17 +00:00
Konstantin Ritt
073f4f9bb2 [QBasicFontDatabase] Minor code clean-up
We do not use supportedWritingSystems anymore -> simply remove.

Change-Id: I8c8b4b0614bf396c943d810c396d18e2d0201eff
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-07-31 09:53:20 +00:00
Konstantin Ritt
839af2268e Micro optimization to Basic/Android FDB::populateFontDatabase()
Re-use QDir to check if dir exists
(QDir::exists() also returns false if path specifies a file),
and use somewhat faster QDir::entryInfoList() to iterate the font files.

Change-Id: Iea3a6e5548928a01db71037425adf170cb722151
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-07-31 09:52:49 +00:00
Konstantin Ritt
5e3e34731b Default implementation for QPlatformFontDatabase::fallbacksForFamily()
...mainly for platforms that do not provide a native/unified way
to obtain system-defined font fallbacks list
(ie !CoreText && !FontConfig).

Change-Id: I23c5589d79ddecb6311ccc52ec8b29977f06d408
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-07-31 09:51:35 +00:00
Konstantin Ritt
735cd0ccf3 [QFontDatabase] Defer the fallback families list initialization
Use the same trick the WebKit related path has used for years:
if there is no explicit list that takes a precedence over the
default one (i.e. QFont("Arial,SimHei")), then defer the fallback
families list initialization until it gets requested.

Change-Id: If5a74294bdebb24865c619bc0d7328b3e706de76
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-07-31 09:49:21 +00:00
Jeremy Lainé
76ce564674 ssl: add support for EC keys to non-OpenSSL backends
Adds basic support for QSslKey reading / writing Elliptic Curve keys on
backends other than OpenSSL (i.e. WinRT / SecureTransport for now).

Change-Id: I67012dbe6b844a3ed5b22b63e0cdbacf0497a74a
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-07-31 09:08:47 +00:00
Kimmo Leppälä
7b6be75796 Add Intel Q965/Q963 and G33/31 to the Windows OpenGL blacklist
Task-number: QTBUG-47522
Change-Id: I3b276e7a07c0b70eaafd244ab1203432df7a22c1
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-07-31 07:49:51 +00:00
Thiago Macieira
0aedca2f97 Revert "Fix performance of recursive read-write locks"
This reverts commit 666486b3ef, which
removed the QHash that protected against reader recursion
deadlocks. Without this hash, a reader will block on
d->readerWait.wait() until the writer finishes its task. However, the
writer never starts because there's a reader that hasn't released the
lock. That's a deadlock.

Change-Id: I792373bb361db35eb9e5504229c099008821a665
Task-number: QTBUG-47530
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-07-31 07:38:17 +00:00
Topi Reinio
590d305f99 qdoc: Fix incorrect keyword details written to .qhp for QML properties
QDoc tried to refer to an non-existing node (a parent of a parent) of a
QML property when writing the unique ID of a QML property keyword.

Change-Id: I90ab92b6ac95cfa688ca79a2c4d6c72f0e30d018
Task-number: QTCREATORBUG-3708
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-07-31 07:28:50 +00:00
Topi Reinio
7a1045b647 qdoc: Fix string used in compatibility members page
Add a missing space in the comment generated at the top of the
compatibility members page.

Change-Id: I21e010f9fca41346bb50c4b400325b18ff672738
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-07-31 07:28:43 +00:00
Topi Reinio
f80143a69a Doc: Add a \target for license information within QImage documentation
This allows us to link to it from the Qt licensing information page.
Also, replace the \legalese command with \badcode in order to
keep the license text formatting intact.

Task-number: QTBUG-46478
Change-Id: I1b5100ca0373a533bd56852ab2a8f18e72404334
Reviewed-by: Sami Makkonen <sami.makkonen@digia.com>
Reviewed-by: Pierre Rossi <pierre.rossi@theqtcompany.com>
2015-07-31 07:28:37 +00:00
Topi Reinio
8f3e7e3b47 qdoc: Add images used in examples into .qhp
Images used as resources in examples were missing from the generated
.qch files.

Change-Id: I7cdfc65b646a418e3de0b22d9a075e9a413aca29
Task-number: QTBUG-46635
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-07-31 07:28:25 +00:00
Thiago Macieira
cc7fcecd7a Add QStorageInfo::blockSize
[ChangeLog][QtCore][QStorageInfo] Added QStorageInfo::blockSize(), which
returns the optimal block size for data transfer to and from the
storage.

Change-Id: Ib306f8f647014b399b87ffff13f4eba6000452d4
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
Reviewed-by: Tobias Koenig <tobias.koenig@kdab.com>
2015-07-30 21:12:21 +00:00
André Klitzing
0d3c8feeeb Fix SNI for TlsV1_0OrLater, TlsV1_1OrLater and TlsV1_2OrLater
Since SslV3, SslV2 and UnknownProtocol do not support it we can
invert the IF clause here.

Change-Id: I42e942337d01f3a8c97885b268bffa568e40d335
Task-number: QTBUG-47528
Reviewed-by: Mikkel Krautz <mikkel@krautz.dk>
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-07-30 19:50:59 +00:00
Paul Olav Tvete
0f7bc885aa Turn off font hinting when active highdpi scaling
Font hinting is done in the Qt coordinate system, and ends up
looking very wrong if the painter is scaled. Now that high-DPI
scaling is cross platform, we can move the responsibility for
turning off hinting out of the platform plugin.

Note that we cannot change our minds later, since Qt does not have
a reference to all objects that perform text layout. Therefore, we
turn off hinting if and only if there is at least one screen with
scaling enabled at application startup. If this is not good enough
for you, you should disable scaling and support resolution independence
manually.

Task-number: QTBUG-46615
Change-Id: I15fa09aa1e952cf3abeb2d8c26f13ad1f1cbf9bf
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-07-30 16:43:38 +00:00
Thiago Macieira
661854bb89 Add a quick optimization for QVersionNumber's constructors
If the data fits inline, let's store it using the dummy member. GCC,
Clang and ICC optimize the code on all architectures I tested to one
single store.

Previously, the function for "return QVersionNumber(5,4,0);" was:
 x86-64:
        movb    $7, (%rdi)
        movb    $5, 1(%rdi)
        movb    $4, 2(%rdi)
        movb    $0, 3(%rdi)
 x86:
        movb    $7, (%eax)
        movb    $5, 1(%eax)
        movb    $4, 2(%eax)
        movb    $0, 3(%eax)
 ia64:
        addl r17 = 7, r0
        adds r16 = 1, in0
        adds r15 = 2, in0
        adds r14 = 3, in0
        st1 [in0] = r17
        addl r17 = 5, r0
        ;;
        st1 [r16] = r17
        addl r16 = 4, r0
        ;;
        st1 [r15] = r16
        st1 [r14] = r0
 armv7a:
        mov     r1, #7
        mov     r2, #5
        strb    r1, [r0]
        mov     r1, #4
        strb    r2, [r0, #1]
        mov     r2, #0
        strb    r1, [r0, #2]
        strb    r2, [r0, #3]
 mips32:
        li      $3,7                    # 0x7
        sb      $3,3($4)
        li      $3,5                    # 0x5
        sb      $3,0($4)
        li      $3,4                    # 0x4
        sb      $3,1($4)
        sb      $0,2($4)
 mips64:
        li      $3,7                    # 0x7
        sb      $3,7($4)
        li      $3,5                    # 0x5
        sb      $3,0($4)
        li      $3,4                    # 0x4
        sb      $3,1($4)
        sb      $0,2($4)
 ppc32:
        li 10,7
        stb 10,3(3)
        li 10,5
        stb 10,0(3)
        li 10,4
        stb 10,1(3)
        li 10,0
        stb 10,2(3)
 ppc64:
        li 10,7
        stb 10,7(3)
        li 10,5
        stb 10,0(3)
        li 10,4
        stb 10,1(3)
        li 10,0
        stb 10,2(3)

Now it is:
 x86-64:
        movq    $263431, (%rdi)
 x86:
        movl    $263431, (%eax)
 ia64:
        addl r14 = 263431, r0
        ;;
        st8 [in0] = r14
 armv7a:
        movw    r3, #1287
        movt    r3, 4
        str     r3, [r0]
 mips32:
        li      $3,84148224                     # 0x5040000
        addiu   $3,$3,7
        sw      $3,0($4)
 mips64:
        li      $3,321                  # 0x141
        dsll    $3,$3,50
        daddiu  $3,$3,7
        sd      $3,0($4)
 ppc64:
        lis 9,0x504
        sldi 9,9,32
        ori 9,9,7
        std 9,0(3)
 ppc32:
        lis 9,0x504
        ori 9,9,7
        stw 9,0(3)

All assembly listings from GCC 4.8.1, but the Clang and ICC outputs are
identical or at least very similar (I tested Clang for ARM, MIPS and
PowerPC). Both MIPS and PowerPC were compiled in big-endian mode and this
listing shows that the 64-bit implementation is correct.

Additionally, the output is also the same for GCC when using brace
initialization (that is, return QVersionNumber{5,4,0}). Clang and ICC
couldn't optimize that.

Change-Id: I9a4a4c9fc83f1182401f63fd2da829c935a8c9da
Reviewed-by: Keith Gardner <kreios4004@gmail.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-07-30 16:15:47 +00:00
Paul Olav Tvete
3c12482df0 Fix highdpi drag-n-drop for X11
Task-number: QTBUG-46615
Change-Id: Iad548e62a580d6fbd15b7a826116a53ce23b4b8b
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2015-07-30 12:45:16 +00:00
Paul Olav Tvete
ec462b245f X11 changes for highdpi
Adapt the xcb plugin to work with the new cross-platform
high-DPI scaling.

Fixes for drag and drop is done in a separate change.

Task-number: QTBUG-46615
Change-Id: I29002721169750b9de59edb0f3e9134adabc4855
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2015-07-30 12:45:07 +00:00
Friedemann Kleint
fd6821740f Highdpi changes for Windows
Adapt the Windows plugin to work with the new cross-platform
high-DPI scaling.

Task-number: QTBUG-38993
Task-number: QTBUG-46615
Change-Id: I108d319255925a290b75611e95ef006d4aaf7ace
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2015-07-30 12:44:58 +00:00
Morten Johan Sørvig
a705b4ec1f Introduce cross platform high-dpi scaling
Add a coordinate scaling layer to QtGui, which supports 'devicePixelRatio'
type high-dpi on all platforms, in production and also for
development and testing purposes.

High-DPI scaling is opt-in, by setting environment variables:
    QT_SCALE_FACTOR - sets a global scale factor
    QT_AUTO_SCREEN_SCALE_FACTOR - sets per-screen scale factors,
        where the scale factors are provided by the platform plugin.

This QtGui scaling can be used instead of or in addition to scaling
done by the window system. This distinction is not visible to
applications [when they use Qt API], which will see a change in
the value returned by the devicePixelRatio() accessors as usual.

Introduce a new (private to Qt) coordinate system: native pixels.
The coordinate system stack now looks like:
    device-independent pixels (app, upper parts of Qt)
    native pixels (lower parts of Qt Gui, platform plugins)
    device pixels (backing stores and OpenGL)

Add private QHighDpi namespace with scaling functions that convert
between device-independent pixels and native pixels:
    T toNativePixels(T, QWindow *);
    T fromNativePixels(T, QWindow *);

Add scaling calls the QWindow (and friends) cross-platform implementation,
around the calls to QPlatformWindow functions. QPlatformWindow now uses
native coordinates - platform code remains largely unchanged since native
coordinates are window system coordinates.

QWindow now uses (possibly) scaled coordinates. This means that
platform plugins no longer can rely on QWindow::geometry() and
related functions. QPlatformWindow::windowGeometry() and other
convenience functions have been added for use when the platform
plugin needs to convert scaled geometry to native geometry.

Add Qt::AA_NoHighDpiScaling, which can be use to disable any
scaling in QtGui, effectively ignoring the environment variables.
(Note that this does not disable any scaling done by the window
system.)

Contributions from Friedemann and Paul.

Task-number: QTBUG-46615
Change-Id: I673bbd69c130e73b13cce83be11bfb28f580bf60
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2015-07-30 12:44:41 +00:00
Martin Koller
0617834e0c xcb: Make it compile on systems with xinput2 < 2.2
Change-Id: I7e98d3540cd7717ac8af8d1993618d18320f811a
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2015-07-30 07:50:07 +00:00
BogDan Vatra
d800047dc5 QLineEdit should inherit the input methods from QComboBox.
Task-number: QTBUG-39088
Change-Id: I4dfe9a052c20a4cb0a9d6b0d3337cb5095a3694f
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-07-30 07:06:27 +00:00
BogDan Vatra
17caa94190 Android: Start the application when we know the screen geometry.
Until now we'se set the screenGemetry to 0,0 until the layout is
created, but some controls needs it before that.

Task-number: QTBUG-44271
Change-Id: I7d00e2a142572e27fc77e46566bb2cdb37f58035
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-07-30 07:06:18 +00:00
Leena Miettinen
332d41d025 Doc: QFileDialog::ShowDirsOnly not supported on Windows
The native Windows file dialog does not support displaying
files in the directory chooser.

Task-number: QTBUG-46982
Change-Id: Ib58f3d888df564d42044b81ad8e67b8aeae5f3c6
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-07-30 06:15:30 +00:00
Joerg Bornemann
edb5f22b0a consistently handle empty program string in QProcess::start overloads
All overloads of QProcess::start will now check whether the program
string is empty and in that case
  - set error to FailedToStart,
  - set errorString to "No program defined",
  - emit error.

Until now only one of the three overloads behaved like this.

As a side effect, start(QString(), QStringList()) will not crash on
Windows anymore.

Task-number: QTBUG-47404
Change-Id: I2f93657204fe3643b1d74a74817843c05fc4a96b
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
2015-07-30 05:33:28 +00:00
Morten Johan Sørvig
dcd2debe62 Enable non-integer device pixel ratio
Work around QPaintDevice::metric's int return type
by adding a new metric that returns a scaled devicePixelRatio.
Choose a scale factor that gives us more than enough
range.

The QPaintDevice::devicePixelRatio() convenience accessor
is public API and can unfortunately not be changed
to return a qreal. Add devicePixelRatioF() which
returns the (unscaled) devicePixelRatio.

Change all call sites of QPaintDevice::devicePixelRatio()
to use QPainDevice::devicePixelRatioF().

Task-number: QTBUG-46615
Change-Id: I97ec4000fe379b7ff5e1624a871ae2512790aad9
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2015-07-30 04:04:01 +00:00
Pier Luigi Fiorini
e948f97814 eglfs_kms: Implement DPMS mode
Implement the new QPlatformScreen API for power state.

[ChangeLog][QPA][eglfs][kms] Allow to set DPMS mode and get the current
value for each screen.

Change-Id: I5abfb53c3e2f6579a2d6ff19d780b67f424903bf
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-07-29 09:09:25 +00:00
Pier Luigi Fiorini
d71f3e0882 Add power state to QPlatformScreen
Allows platform plugins to set the power state for each screen.

Change-Id: I4164ca63cbae9fa2ab186dc84c8f704c33fd7c69
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-07-29 08:23:32 +00:00
Thiago Macieira
2d981e7e9f Refactor QVersionNumber so it stores values in-class
The common case of QVersionNumber is that there are few segments and
each segment is a small integers. So instead of allocating a
QVector<int>, just store those numbers in the class itself if
possible. Think of this as a "Small String Optimization" for
QVersionNumber.

QVector<int> costs 16 + 4*N bytes, plus malloc overhead. After this
change, QVersionNumber(5,4,0) will have an overhead of zero.

The memory layout is explained in the header. I've coded it so big
endian also works, but I have not tested it at all.

Aside from the special functions for QVersionNumber and operator>>, all
the rest of the algorithm could have been left unchanged. I only updated
segments(), normalized(), compare(), commonPrefix() and fromString() to
take advantage of the smaller implementation in a more efficient way.

Note: QVersionNumber's constructors often leave half of the object or
more uninitialized. That's not a problem.

Change-Id: I4a2a0ce09fce2580f02d678e2f80b1dba74bac9d
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-07-29 08:46:19 +00:00
Sérgio Martins
d7e23c1011 Replace ifdefs with QDir::listSeparator()
Change-Id: I98fab8e0d83b2e7851ba8c0a4adfc02af1271a92
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-07-29 08:01:01 +00:00
Laszlo Agocs
06b86f68e8 Support MRT in QOpenGLFramebufferObject
Introduce overloads in the API to allow specifying multiple color
attachment sizes and formats. When these are in use and MRT is supported,
a texture or renderbuffer is created for each of GL_COLOR_ATTACHMENT0, 1, 2, ...

[ChangeLog] Added support for multiple render targets in QOpenGLFramebufferObject

Task-number: QTBUG-39235
Change-Id: Ie7cfd81d1b796a9166b80dff7513aafe0120d53d
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-07-29 07:54:13 +00:00
Paul Olav Tvete
c173a50719 Remove QT_DEVICE_PIXEL_RATIO support from xcb
It will be reintroduced as a cross-platform feature.

Task-number: QTBUG-46615
Change-Id: Ia6d03275018b2a25ebed438fe51f15e491f1c3ff
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-07-29 07:43:15 +00:00
Topi Reinio
c5461ec751 Doc: Increase accuracy of QString documentation discussing size()
There are multiple QString and QStringRef functions that document
behavior "if n is greater than size(), ...", but a comprehensive,
correct statement is "if n is greater than or equal to size(), ...".

Change-Id: I5d2112e08013edaf6f2f6d7e8a6740ea26a076e2
Task-number: QTBUG-47479
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-07-29 07:43:58 +00:00
Topi Reinio
d337a8d306 Doc: Fix various issues in QDoc Manual
- Fix QDoc warnings for broken links
    - Use \badcode for code snippets that are not C++ or QML code
    - Remove/update obsolete information

Change-Id: Ie5ce6ec588709059fc7ba7b47e0cc8ad5385c42f
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-07-29 07:43:43 +00:00
Topi Reinio
3714c9b3fe qdoc: Allow using group name as a QHP subproject selector
QDoc already recognized "group" as a document type selector, but provided no
way of defining which group the members should be selected from.

This commit adds that feature, by allowing 'group:groupname' as a selector.
All members (from the local tree) of the specified group are added to the
subproject.

Introduce up-to-date selector names for QML types and documentation pages,
but keep the old legacy names for compatibility.

Add documentation for the selectors.

Change-Id: Ic3f60a028d15f5f8e0035d28fbc503630af8f1d1
Task-number: QTBUG-32985
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-07-29 07:43:38 +00:00
Friedemann Kleint
71545f8df8 Revert "Add devicePixelRatio support to the Windows QPA plugin."
This change reverts c47b04696a .

Task-number: QTBUG-38993
Task-number: QTBUG-46615
Change-Id: I180dcac3a65a33498b90a71bbcad5e45a12af77c
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
2015-07-29 07:43:05 +00:00
Thiago Macieira
93cb984174 forkfd: introduce system_forkfd to do system calls that do forkfd
This is just to make the code cleaner. The static variable will control
whether we've detected that the system call exists -- if it does, we are
expected to always use it.

Change-Id: Iee8cbc07c4434ce9b560ffff13cb4adc049413c1
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2015-07-28 23:55:11 +00:00
Samuel Gaist
454690c6a6 Fix typo in filterAcceptsColumn docs: row is used in place of column
Change-Id: Ic0ec62e4d5c4a4b1d71f14c5d3133657341d4fe3
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-07-28 21:16:10 +00:00
Thiago Macieira
3a63bb0ea7 Let the linker find xcb_poll_for_queued_event for us
It's more efficient than we are. This also enables the code to work in
the unlikely case of an ELF platform without RTLD_DEFAULT.

Change-Id: Ib306f8f647014b399b87ffff13f12f8aeeb2589a
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
2015-07-28 21:12:35 +00:00
Thiago Macieira
0d7af31e83 Make the function pointer to xcb_poll_for_queued_event not a member
In the normal case, this change is a no-op. In case RTLD_DEFAULT isn't
defined, this makes the job of the optimizer easier to detect that the
static variable is never modified and that it can do a lot of dead code
elimination.

This also enables the optimization in the next commit.

Change-Id: Ib306f8f647014b399b87ffff13f12f40a359233b
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
2015-07-28 21:12:31 +00:00
Andrew Knight
2bcb2ce8c9 xcb: Fix build with QT_NO_CURSOR
Change-Id: I2391c2921274b7a178fbdde1d0f59f7fbaa3048e
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-07-28 20:46:27 +00:00
Thiago Macieira
5cc734e0a3 forkfd: Fix build with uClibc <= 0.9.33
That version of uClibc has neither pipe2 nor eventfd.

There were two problems with our detection. First, it checked for glibc
incorrectly, so the comparison was always true as
	__GLIBC__ << 16 = 0x20000

Second, we needed to check for uClibc's version.

Task-number: QTBUG-47337
Change-Id: Ib306f8f647014b399b87ffff13f3023b7f8d6d4a
Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com>
2015-07-28 20:16:08 +00:00
Sérgio Martins
4bced6e7a6 Introduce QHash key iterators
So we can have interoperability with algorithms.
Motivated by inefficient code like qDeleteAll(hash.keys())

[ChangeLog][QtCore][QHash] Added key iterators, accessible through
keyBegin() and keyEnd().

Change-Id: I1f9db8a7a4294e1556cbb50b8fe5ebdcf0dc29a2
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-07-28 19:11:17 +00:00
Sérgio Martins
07f27fcf6d Introduce QMap key iterators
So we can have interoperability with algorithms.
Motivated by inefficient code like qDeleteAll(map.keys())

[ChangeLog][QtCore][QMap] Added key iterators, accessible through
keyBegin() and keyEnd().

Change-Id: Ieee2f9ad031e9d1e845a71447746699bbe95b96c
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-07-28 19:11:12 +00:00
Shawn Rutledge
7e89c7b855 xcb: fix tablet proximity again
Patch 53d289ec4c caused it not to select
property change events, which are needed separately for each tablet
device.  It's not enough to select them on the master device.

Change-Id: Ibb6c7990d2edd865019eacfa7eed4bf818f7557e
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-07-28 12:03:20 +00:00
Laszlo Agocs
56a4a34eb3 Fix the internal compositing flag for QOpenGL/QuickWidget
Compositing stays active for the window even when all such widgets get destroyed.

Task-number: QTBUG-46937
Change-Id: Ib4acc90689151fd7de234806c4b5c0c472c13a5c
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-07-28 10:05:56 +00:00
Jeremy Lainé
cb05a4e8be ssl: fix native parsing of certificates with DSA keys
Fixes a typo which breaks the parsing of certificates with DSA public keys
when using a non-OpenSSL backend (WinRT, SecureTransport).

Change-Id: I250ba9948d5bd7739e281d7cd1b95cfbcb10e402
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
2015-07-28 05:26:00 +00:00
Friedemann Kleint
4ef3d985dd Windows: Split code paths for touch/native gesture events.
Fix up 2b5df245d6 which routed
WM_GESTURE through QWindowsMouseHandler::translateTouchEvent()
causing asserts on missing touch devices.

Task-number: QTBUG-47184
Change-Id: Ie843ebb343e34487bcac9c9dbea88de641d51e28
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-07-27 18:03:29 +00:00
Friedemann Kleint
17c236ad05 Clear qt_tablet_target only when all buttons are released.
Task-number: QTBUG-46694
Change-Id: Ie95a452dfffd6685dd2a32068872dc18f727c288
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2015-07-27 18:03:21 +00:00
Martin Smith
02c906acc3 doc: Corrected docs for QList and QVector
The docs for QList advised users to choose QList
over QVector for efficiency reasons. The advise
should be to use QVector over QList for efficiency
reasons. This update corrects that misunderstanding.

Change-Id: Ie04c99ab7fe6aef4bd1d39175c9564455b0122de
Task-number: QTBUG-47196
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-07-27 17:09:54 +00:00
Richard Moe Gustavsen
5f276d7a5f iOS: add missing Q_DECL_OVERRIDE
Add missing Q_DECL_OVERRIDE to silence clang.

Change-Id: I57261a39f0dcf4e0ffd8d9c079a95f2d3347d34a
Reviewed-by: Jake Petroules <jake.petroules@petroules.com>
2015-07-27 09:36:01 +00:00
Richard Moe Gustavsen
404430dca5 iOS: use UIKeyboardTypeNumbersAndPunctuation for Qt::ImhPreferNumbers
Using Qt::ImhPreferNumbers means that we should use a keyboard that
has focus on typing numbers. But it's important that we don't restrict
typing to numbers only, it also needs to support normal text input.
And this seems to be exactly what UIKeyboardTypeNumbersAndPunctuation
does.

Task-number: QTBUG-47365
Change-Id: I5bb88cedcbe0e89ea884dc9c14d3ffd9fb368060
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
2015-07-27 09:35:52 +00:00
Olivier Goffart
4c3c6bab30 QTimer: Force a compilation error with pmf without object
None of this should compile (foo is non-static):

  QTimer::singleShot(0, &TestObject::foo);
  QTimer::singleShot(0, SLOT(foo()));

Task-number: QTBUG-47426
Change-Id: I54b7d14124459e450c6a0a93a3033f21b57605d9
Reviewed-by: Dario Freddi <dario.freddi@ispirata.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-27 06:05:35 +00:00
Olivier Goffart
f01f1943e4 Fix compilation error while instantiating operator<< explicitly
Task-number: QTBUG-47375
Change-Id: Ibd260de88c174c1aa3833a56b153b8b74d337338
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-07-26 19:14:47 +00:00
Takao Fujiwara
a1bfa39651 Use ibus ProcessKeyEvent asynchronously.
ibus-hangul sends "CommitText" dbus asynchronous API during
"ProcessKeyEvent" dbus API is called. If "ProcessKeyEvent" is
synchronous, "ProcessKeyEvent" finishes before "CommitText"
finishes and the order of Hangul characters and space is not correct.

Task-number: QTBUG-40541
Change-Id: Ia526bc11833853082205ef1c3d64cf7943e2274f
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2015-07-25 20:44:53 +00:00
Laszlo Agocs
150aa19042 ios: Do not drop the user-provided default QSurfaceFormat
Task-number: QTBUG-47195
Change-Id: I40bc7be816f5e23a63a2fe6d32842143b52f9d58
Reviewed-by: jian liang <jianliang79@gmail.com>
Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@theqtcompany.com>
2015-07-25 18:16:30 +00:00
Venugopal Shivashankar
831c557cc5 qdoc: Improve customization of generated html file names
Introduce 'outputsuffixes' QDoc configuration variable, which
allows defining a module name suffix inserted into the
generated html file names. The suffix can currently be applied
to QML and JS documentation.

This is useful in cases where we have multiple versions
of a module as part of the documentation build, and
writing to a common output directory would otherwise result
in file name clashes.

Change-Id: I1437874fad09f041e506b93b62b6a4a8cae49ec9
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-07-24 10:36:24 +00:00
Topi Reinio
7a85be3371 qdoc: Improve searching of collection nodes
QDocDatabase provided a way to search for a collection node in
the primary tree only. This was insufficient for use cases where
we want to list groups, C++ classes or QML types in other modules
using the \generatelist or \annotatedlist commands.

This commit does the following changes:
    - Add a function to find a collection node across all
      trees, use it for generating output for the list commands
      and generating C++ class/QML/JS type requisite tables.
    - Modify the code for \generatelist command to accept
      'qmltypesbymodule' and 'jstypesbymodule' as parameters.
    - Modify constness of some functions to enable above
      changes.

Change-Id: I3dbdadfd224754db4bdc1602a5ffab9d46c51f00
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-07-24 10:36:03 +00:00
Lars Knoll
906ad92fbf Some further optimizations in the qdoc code
Replace a lot of c strings with QLatin1String to avoid
utf conversions. Make one constant data structure static to
avoid it being recreated the whole time, and optimize our
tag replacement code.

Change-Id: I6513f3c70781a1bac658cbb3164c45d4cab36f57
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-07-24 08:51:33 +00:00
Lars Knoll
57bd6e67f7 use Xml stream reader to read qdoc index files
We get rid of the last usage of QDom and the old
xml parser in our build tools, and it makes parsing
of index files a lot faster.

Change-Id: Iccf01a4a73cc74a77806470fb4c4625f5331a7be
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-07-24 08:51:28 +00:00
Lars Knoll
1945441986 Don't generate invalid XML
An attribute is not allowed twice in XML. So change the
associated-property attribute, so that it contains a list
of associated properties is required instead of listing them
a couple of times.

Change-Id: Ibfb21c1a1de5ed39cda2eb29ac318bdbbf0eab4e
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-07-24 08:51:25 +00:00
Lars Knoll
dbf4c6290f Optimize CppCodeMarker::addMarkUp further
This avoids a couple of more string/memory
allocations, giving another 5% speed gain
for qdoc --prepare.

Change-Id: I455f615bb4388d883dca5a8cd31bf50629db23e0
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-07-24 08:51:12 +00:00
Erik Verbruggen
5fd9fe02ff QStateMachine: add defaultTransition in QHistoryState
The history state had the limitation that it was hard (or impossible) to
use when more than one default state had to be entered. For example,
using it in a parallel state was impossible without ending up in an
infinite loop.

This patch changes the QHistoryState to only have an initial transition,
and the state selection algorithm is changed accordingly. It also brings
QStateMachine closer to the SCXML standard.

The existing defaultState is implemented on top of the
defaultTransition: when used, a new transition, with the default state as
its target, is set as the defaultTransition.

Task-number: QTBUG-46703
Change-Id: Ifbb44e4f0f26b72e365af4c94753e4483f9850e7
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-07-23 13:29:46 +00:00
Kai Koehne
f8be9b8321 Doc: Don't advertise QLocale::system() in QTranslator::load documentation
Usually you want to use just QLocale(), and not QLocale::system(). They
are both the same except when the user called QLocale::setDefault()
beforehand.

Change-Id: I2d9b13ac3ffec0005b1d9bf661eccdea276d34b1
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-07-23 10:50:32 +00:00
Friedemann Kleint
3627d8b171 Windows/QClipboard: Fix crash in debug output of QMimeData.
Rewrite QDebug operator<<(QDebug d, const QMimeData &mimeData)
to take a pointer and handle 0 values. Change the formatting to the style
commonly used in Qt. Make it static as it is not used anywhere else.

Task-number: QTBUG-47393
Change-Id: I78174e10b75769bf4acd33a894acc0a51e525c39
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
2015-07-23 09:42:05 +00:00
Paul Olav Tvete
a09b41bc9f Fix action shortcuts for QToolButton
Reverting change 4db5d3ccd1, since it
introduced two separate regressions:
1. QToolButton would prefer text() over iconText()
2. Actions with a mnemonic would create a shortcut when added to
   a tool button.

There is a fundamental problem here, which is impossible to solve
correctly: A menu item with the text "Short&cut" will create a mnemonic,
i.e. it will be triggered by pressing 'c' when the menu is open. However,
a button with the text "Short&cut" will create a shortcut that is triggered
by Alt+C as long as the window has focus. Also, iconText() is used for tool
tips, so it should not contain shortcut related '&'s.

This patch attempts to find a sensible compromise:
1. If the text is set through QAction::setText(), QToolButton will not
   create a shortcut, and will not display an underline.
2. Using QAction::setIconText("Short&cut") will create the shortcut.
3. Tooltips will not show any extra '&'s when generated from
   text(), but when using setIconText() directly, any '&' characters used
   to create shortcuts will also be visible in the tooltip.

Task-number: QTBUG-23396
Task-number: QTBUG-47306
Change-Id: Ieea2fc569807c862ca462349bf91922a4029700f
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
2015-07-23 09:40:54 +00:00
Marc Mutz
5329d739ee Fix qHash(QFontEngine::FaceId)
There were two problems:

1. qHash() hashed FaceId::uuid, but op== didn't use it for
   determining equality. Thus, x == y => qHash(x) == qHash(y)
   might be broken if fileName and uuid have an orthogonal
   component, if you excuse my vector analogy.

2. To hash fileName and uuid, it concatenated the two,
   causing a temporary QByteArray to be created just for
   hashing its contents. That prevented marking qHash()
   as nothrow.

Fix by using new QtPrivate::QHashCombine and adding
uuid to the list of fields compared in op==.

Change-Id: I49f2379d514d6d3669929e737562cf6de823127e
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-07-23 08:48:25 +00:00
Venugopal Shivashankar
bfe4bca498 Doc: Amended the \inmodule statement for QSessionManager
The sources for QSessionManager live under Qt Gui so it doesn't make
sense to include the class under the Qt Widgets doc module.

Task-number: QTBUG-47274
Change-Id: I18b58c2a274bff323c7364cebbb0429a5a3a97d6
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-07-23 08:44:38 +00:00
Milian Wolff
f6d5c21e3e moc: Make toExpand const, we do not modify it.
Change-Id: I7036ea7ee9e533670ebed425e6c4a8bb0063f751
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-07-23 08:23:23 +00:00
Laszlo Agocs
4535c7911d Expose GLES 3.0 and 3.1 functions
Using the approach we already do for some GLES 3.0 functions we can provide a cross-platform,
cross-GL-GLES wrapper for ES 3.0 and 3.1 functions too.

Applications only have to take extra care about the version requests (context version
and version directives in shader code), the rest of their code can stay the same across
desktop/mobile/embedded, even when ES 3 functions are used.

The new functions are placed to a new subclass which is placed between QOpenGLFunctions
and the internal QOpenGLExtensions. This is necessary because, unlike with QOpenGLFunctions,
there is no guarantee that these functions are always available in all configurations.

When running on desktop OpenGL, we resolve as usual. If the OpenGL version contains the
function in question, either in core or as an extension, it will all just work. This is
handy because it does not rely on 4.x extensions like GL_ARB_ESx_compatibility, and so
ES 3.0 functions will be functional on OpenGL 3.x systems too by just setting a 3.x version
number in the QSurfaceFormat.

We will no longer qFatal on broken systems where the driver returns a 3.0 or 3.1 context without
the corresponding functions present. Instead, we show a warning and gracefully fall back to
resolving as usual, via eglGetProcAddress or similar. For functions that are available in ES2 as
an extension this may just work fine.

Added also an example that runs identically both with OpenGL and OpenGL ES 3 and utilizes some
ES 3.0 features like instanced drawing.

[ChangeLog] Added QOpenGLExtraFunctions providing OpenGL ES 3.0 and 3.1 function wrappers in
a cross-platform manner.

Task-number: QTBUG-46161
Change-Id: I9f929eb61946c35c415b178c4d6ab2c1c958684e
Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
2015-07-23 07:59:07 +00:00
Erik Verbruggen
0cd34a0c39 StateMachine: remove initial state for parallel states.
A parallel state cannot have an initial state, as all children of the
parallel state will be entered. Setting such an initial state on a
QState marked as ParallelStates would already produce a warning and
ignore the initial state. Now any initial state that has been set before
changing the child-mode to ParallelStates will also produce a warning
and remove the previously set initial state.

Change-Id: Ie5fcd44b03516744f785f2d1880bf806918c44d4
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-07-23 07:44:35 +00:00
Lars Knoll
67638d08b4 Optimize CppCodeMarker::addMarkUp()
This cuts away another 15% of the running time of
qdoc -prepare.

Change-Id: I81bc32fa191b73fad5d7bd27ff22ac845f83a9ce
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-07-23 07:43:20 +00:00
Lars Knoll
6508365c04 Skip loading of index files if we are running with --prepare
This makes generation of the index files 3 times as fast.

Change-Id: I89af86e54d932fa19330f36a33af6ed9ea81461d
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-07-23 07:43:17 +00:00
Erik Verbruggen
795476c41a QStateMachine: remove left-over method.
This method was probably there in older versions of the specification,
but it is no longer used now. The only caller was in
QStateMachinePrivate::setError, which has been changed to use the newer
methods.

Change-Id: Ic4961990d8d2c902676e63193d3f30ef427e6f0c
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2015-07-23 07:36:38 +00:00
Joerg Bornemann
50f064f788 fix -no-opengl build
Change-Id: Id3570cf10d86908ddff35be65103d16b353dad04
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-07-23 07:10:03 +00:00
Marc Mutz
d348d40473 QColor: make nothrow move-assignable and -constructible
The move special members were inhibited by the presence of
user-defined copy ctor and assignment operator, which we
cannot remove since the class is exported.

Change-Id: I54fe6c28351fe69ca4b75066adb76ea07c959dfe
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-07-22 21:14:05 +00:00
Sérgio Martins
b549758c61 qvariant: Pass a couple of large types by const-ref in Qt6
sizeof is approx 100 bytes

Change-Id: Ibd5fb50674effee832ce4529d737c060c570ffa3
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-07-22 21:13:30 +00:00
Sérgio Martins
e3d0ea7680 qjsonarray: Remove a copy-ctor in Qt6
Makes the class trivially-copyable

Change-Id: I5b8ebadf351b65344f7ee30f0e7211738fdf54e4
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-07-22 21:13:24 +00:00