Commit Graph

17123 Commits

Author SHA1 Message Date
Laszlo Agocs
a989e5c54f Enhance QWindow::devicePixelRatio() docs
Document that fact that for non-create()'ed windows this is the
same as QGuiApplication::devicePixelRatio() which is the highest
dpr in the system. This has consequences when running with multiple
displays so application developer's have to be aware of this.

Change-Id: Ic05a18732ff021659da04428cb49421ac3453870
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
2015-04-21 11:50:54 +00:00
Bjoern Breitmeyer
4d2b7e5f2e Remove libs that are already set by the mkspec.
Change-Id: I79c47e5a49ce048c634e4bc708b632e51133c027
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-04-21 11:38:12 +00:00
Timur Pocheptsov
bf23091e6b Cocoa integration - invalid window state
QCocoaWindow::syncWindowState incorrectly sets m_effectivelyMaximized as !m_effectivelyMaximized
after calling zoom. But zoom can trigger windowDidEndLiveResize, which also can set m_effectivelyMaximized,
so double negation results in ... the previous value. Fixed.

Change-Id: Iea974132a1854a258e27635e8779d7d8c02bfc0c
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
2015-04-21 11:21:22 +00:00
Aleix Pol
9286a8e5dd Understand file:/ url's as local
When making a QNetworkAccessManager query, don't require a network
session in case of file:/ queries, like we do when "localhost" is the
hostname or a loopback device.

Change-Id: I4faab7cf356ee53e6e13ab55b152365680af9446
Reviewed-by: Albert Astals Cid <albert.astals@canonical.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
2015-04-21 11:09:33 +00:00
Sérgio Martins
84ad129440 Fix inconsistent overrides. [-Winconsistent-missing-override]
Change-Id: I7c27632cdda13ebc8ee5d2bc18d9ba64c1f4ec70
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-04-20 08:45:50 +00:00
Nikita Baryshnikov
ad03511256 QDir: fix int overflow
This caused reverse order of session items in qt creator. Introduced
in ba287c55ef.

Change-Id: I5c37ca6a1ef4753b6449eb9e87b4def5ea858677
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2015-04-20 07:43:58 +00:00
Shawn Rutledge
280084cf96 QFileDialog: save settings to FileDialog group instead of serialized
The byte array serialization needed versioning, whereas a collection
of separate settings is more robust and accessible.

Task-number: QTBUG-36888
Change-Id: I790b1d7574707261923a7a33ccd8bcc596a69de5
Reviewed-by: David Faure <david.faure@kdab.com>
2015-04-20 07:13:13 +00:00
Harald Hvaal
8fb881900c Enable checking for whether the system palette was explicitly set
In order to obey a palette set globally on QApplication, an application
attribute for checking if it's set at all is added.

Task-number: QTBUG-39800
Change-Id: I26b965e6e18e0e1ca4df03cf343b3527df3636b2
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-04-20 06:39:31 +00:00
Martin Smith
6526a4e136 qdoc: Remove #ifdef Q_QDOC for uses of QPrivateSignal
Signals marked with QPrivateSignal had the QPrivateSignal marker
ifdefed out for qdoc. This is no longer necessary, so the #ifdefs
are removed.

Change-Id: Idb334ed311c6ed6883d7b7b5a3fcdede60c4a1f8
Task-number: QTBUG-45535
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-04-20 06:25:20 +00:00
Oliver Wolff
d0c96c65ec Rework WinRT timer handling
The former way of timer handling caused heap corruptions
as the timer callbacks tried to access the event dispatcher
after it was freed.

So instead of accessing the timers inside the callbacks
we use native events to signal their expiration and also
to cancel them.

Task-number: QTBUG-44973
Change-Id: Ib9348651c0545cc4393f0396601f9a5bb183c996
Reviewed-by: Andrew Knight <qt@panimo.net>
2015-04-20 06:14:07 +00:00
John Layt
92ea91836e QPrintDialog - Let OSX handle PDF printing
If the user selects to Save as PDF in the native print dialog, then let
OSX generate the PDF. Primarily this is to fix QTBUG-38820 where by
setting the output mode to PdfFormat we prevent the native print dialog
from being called again. This was a regression in 5.1. It also allows
for smaller, better quality PDFs with the ability to select text until
QTBUG-13826 / QTBUG-10094 fixes the font rendering. Once QTBUG-36112 is
also fixed we can consider changing back to Qt's internal PDF support.
See also QTBUG-36687 and QTBUG-26054 which are related.

Task-number: QTBUG-38820
Change-Id: I74bd885902860ac70068ab25e95765c7f0ee911c
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-04-17 05:22:36 +00:00
Thiago Macieira
6668f5becf Implement a more direct headersclean check
Test each include file directly, instead of doing a large #include. This
verifies that each header is compilable on its own. One big advantage of
doing it via a special compiler in qmake is that we skip pre-compiled
headers, which has hidden build errors in the past.

This solution is implemented by making syncqt produce a second list of
headers.  This list is the same as the list of headers in the source
code to be installed, minus the headers that declare themselves to be
unclean, via the pragma:
  #pragma qt_sync_skip_header_check

This mechanism is applied only for public libraries (skipping
QtPlatformSupport, an internal_module).

This test is enabled only for -developer-builds of Qt because it
increases the compilation time.

On QtTest: the library only links to QtCore, but it has two headers that
provide inline-only functionality by including QtGui and QtWidgets
headers (namely, qtest_gui.h and qtest_widget.h). If those two modules
aren't getting compiled due to -no-gui or -no-widgets to configure, we
need to remove the respective headers from the list of headers to be
checked. If they are being built, then we need to make QtTest's build
wait for the headers to be generated and that happens when qmake is
first run inside the src/gui and src/widgets directories.

Change-Id: I57d64bd697a92367c8464c073a42e4d142a9a15f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2015-04-17 00:54:45 +00:00
Allan Sandfeld Jensen
964ccc5853 Remove separate SSE4 unpremultiply function
Merges the SSE4 specific unpremultiply with the normal version, and
adds a SSE2 fallback. There was no reason to split the two since
compile time options will ensure the right version is inlined.

Also adds short-cut for 0 and 255 values.

Change-Id: Ie5aa262f6964219fd3062d4a498f697cf79a4595
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-04-16 19:24:06 +00:00
Gatis Paeglis
365c63e7b1 Fix regression in compose table parsing
Performance optimization from 1aab68648 revealed
that "composeValueEnd" needs adjustment for compose
sequences that result in a quotation mark, for example:

<dead_diaeresis> <space> : "\"" quotedbl # REVERSE SOLIDUS

Change-Id: I66bf83fbe62727f1ee245aae90f8d0eb53dea6d4
Task-number: QTBUG-45538
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
2015-04-16 18:57:51 +00:00
Marc Mutz
28dcb7101e QFileSystemEngine: optimize from...(qgetenv())
Use the QByteArray overload, which no longer calls strlen(),
but uses the QByteArray length.

No danger of embedded NULs, because environment variables
cannot contain NULs.

Change-Id: I33fe479adfce2624c7042608e8e0a5c5b54a85db
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-04-16 18:48:04 +00:00
Christoph Schleifenbaum
be6b27aaa1 Cocoa: Remove NSMenuItem setEnabled used in wrong way.
Whether menu items are enabled or not is not set via NSMenuItem's
enabled property but depends on the return value of CocoaMenu's
validateMenuItem.

Change-Id: I5673da18ab9eb3510b773e0ab520e5382a160844
Task-number: QTBUG-42511
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
2015-04-16 18:13:08 +00:00
Laszlo Agocs
fd2e245edf Avoid signed-unsigned warning on OS X
Change-Id: I61db35a367b1a96b13af08a5102d6b2a55c68517
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
2015-04-16 16:48:00 +00:00
Laszlo Agocs
b596acbefb Avoid warnings with clang 6
warning: 'this' pointer cannot be null in well-defined C++ code

The code tries to be smart but compilers warn about this unfortunately.

Change-Id: Ifb8deafe8834d580beef829a3079ae9222acfa8f
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
2015-04-16 16:47:56 +00:00
Laszlo Agocs
f3fad26bc9 Add matching by GL_VENDOR to QOpenGLConfig
This will be essential on Linux, especially Embedded where PCI IDs are
not that useful.

Change-Id: I2fa8ca07236e8aae203e21fe629d12aab092c7fd
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-04-16 16:47:43 +00:00
Laszlo Agocs
71e3ce7f0b The default wrap mode is REPEAT
As per spec, both for OpenGL and OpenGL ES. No wrap mode is
applied unless setWrapMode() is called so the default values
should be initialized to match OpenGL's default.

Correct the copy-paste mistake in the warning messages.

Change-Id: I094cc511dc7de4a214da61faadb1fc362270b2d4
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
2015-04-16 16:46:35 +00:00
Allan Sandfeld Jensen
b7d7527720 Map X11 AudioPause button
Add a missing mapping for the X11 media key AudioPause.

Change-Id: I2888854a021192942c7e8d47d581d834e1f39736
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Gatis Paeglis <gatis.paeglis@digia.com>
2015-04-16 16:06:37 +00:00
Laszlo Agocs
700eb7a2a5 windows: Add a version test to the Intel HD blacklist
The original rule was way too broad: it disabled desktop GL many
HD 4400 machines that have no problems with it at all.

While the rule with the version check is somewhat dubious, it is the
only thing we can do.

Task-number: QTBUG-45505
Task-number: QTBUG-43263
Change-Id: I217a96a2a9c7cc2d000a8f06493d0857626f2aaa
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
2015-04-16 13:14:28 +00:00
Michal Klocek
cbb918753c Fix crash when qt compiled with dbus support and no dbus interface.
Add check if interface exists before calling it.

Change-Id: I86762fd9b82131d12aac0281c86eca549752fdbd
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
2015-04-16 13:01:45 +00:00
Timur Pocheptsov
c52c8e5e1e Fix compilation error (OS X 10.8, warnings as errors)
Failed to compile on my OS X 10.8 (unused variable warning treated as error)

Change-Id: I7ee881d4b905539361a10e93cff76b44ec08afbf
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
2015-04-16 12:14:13 +00:00
Eike Ziller
5e8e04a29f OS X: Do not re-create tracking areas over and over again
NSTrackingInVisibleRect already makes sure that the tracking area
updates itself, so we only need to add our tracking area if it is
missing.

For some reason this also fixes that Qt mouse tracking was broken after
showing e.g. an embedded native WebView.

Task-number: QTBUG-21944
Change-Id: I8013517f474f18e44b1ddd411defe1b6e60f05bf
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@theqtcompany.com>
2015-04-16 11:40:26 +00:00
Marc Mutz
1ae657344c QScopedValueRollback: add two strategic qMove()s
Use moves instead of copies when the rhs is no longer needed
afterwards.

Change-Id: If053bfce03b886099688452ada74f6a6f36db5c2
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-04-16 09:46:23 +00:00
Marc Mutz
fb144aabbf QScopedValueRollback: use ctor-init-list
Avoids calls to the default ctor for member 'oldValue'.

Change-Id: Ieb9570b74e4a46b28c04625fac3ce267074c4a76
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-04-16 09:46:15 +00:00
Marc Mutz
d3dfb8d8f1 QSignalBlocker: mark all functions as noexcept
Consequently, mark also QObject::isSignalsBlocked() and
QObject::blockSignals() as noexcept.

Change-Id: Iaf44674bbf54eeb2bb5f267eb7caa916eccbf7fb
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2015-04-16 09:46:09 +00:00
Marc Mutz
198190b76b QList: make QListSpecialMethods dtors protected
QList publicly inherits from QListSpecialMethods. Thus, any specialisation
of QListSpecialMethods should make their destructor protected, to avoid
deletion through a pointer to QListSpecialMethods invoking UB.

Change-Id: I7e317606f84826cc0faf1bfc05dee97da6eaf2eb
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-04-16 09:46:00 +00:00
Martin Smith
aea74dcaee qdoc: Properly document "private" signals
When a signal declaration is marked with QSignalPrivate,
This note is included in its documentation: "Note: This
is a private signal. It must not be emitted by the user."

For Notifier signals, [see note] is appended to the signature line,
and the Note is printed below the list.

Change-Id: Ie792894ace56cda47fd9a45af9c732f408ac45f6
Task-number: QTBUG-45535
Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
2015-04-16 09:36:39 +00:00
Allan Sandfeld Jensen
528279febe Optimize non-native bilinear transforms
Reading directly from an array instead of calling a function pointer
is much faster.

Change-Id: I833b33448bad064d6f38d2f9ff44138d90206822
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-04-16 09:32:31 +00:00
Paul Olav Tvete
d4bc56cb42 Fix screen detection on configureNotify
If we got two rapid screen changes in a row, we would disregard
the second change. This happens because QPlatformScreen::screen()
is updated asynchronously, so if we got a screen change A --> B
immediately followed by B --> A, before the first screen change
event had been processed, we would compare with the old value
and conclude nothing had changed. This can happen on creation: if
the initial geometry of the window is outside all physical screens,
the window manager will immediately move it.

The solution is to compare the new screen to the locally cached
value.

Change-Id: I5440dc035cac4fba4f29ac563e36dfe3e2f82aea
Task-number: QTBUG-45076
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-04-16 09:32:19 +00:00
Kai Koehne
090002618f Fix compilation of xcb-qt without system xcb headers
Make sure the plugins are actually using the 3rdparty headers we ship,
not the system ones.

Change-Id: I5c857abee8e62c207843f9d29c369620be0d7da8
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2015-04-16 09:26:26 +00:00
Andy Shaw
4f81719983 Pass on the auto repeat information for key events
Task-number: QTBUG-45340
Change-Id: Iecc55987fa784e4bf14317d9d4a085a8f0b58451
Reviewed-by: Christian Stromme <christian.stromme@theqtcompany.com>
2015-04-15 21:04:45 +00:00
Liang Qi
f98d125b29 Merge "Merge remote-tracking branch 'origin/5.4' into 5.5" into refs/staging/5.5 2015-04-15 15:53:16 +00:00
Topi Reinio
c09ff1dbcb qdoc: Don't end sentences with a full stop in requisite tables
This is a minor visual change that stops QDoc from ending the
sentences with a full stop in the tables for class/QML type
requisites (Inherits, Inherited by, etc).

This ensures a uniform look for the table, as some of the
fields were already omitting the full stop.

Change-Id: I37b39ed0a5e273b40b24f24602042194d069ed00
Reviewed-by: Martin Smith <martin.smith@digia.com>
2015-04-15 13:14:17 +00:00
Marko Kangas
336648aa1b Fix windows printing "invalid metric command" warning.
Added missing PdmDevicePixelRatio return value to printEngine::metric.

Change-Id: I40198208ff7c95aa30b0492c410b450a1ae16a30
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2015-04-15 11:57:59 +00:00
Jørgen Lind
d605883b5e Make it possible to use the -visual argument
for xcb applications to use a specific visual id when creating windows.

Also make it possible to retrieve the visual id of a specific window
with QXcbWindowFunctions::visualId(QWindow *window).

UINT_MAX is used as an invalid visualId.

Change-Id: If62ada119ce8f9174cc211f53bbf1ce1bb7d021a
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
2015-04-15 11:54:34 +00:00
Allan Sandfeld Jensen
7432c7c08a Cleanup and optimization of qimage smoothscale
Cleaning up smoothscale code. Upscaling is improved using existing
optimized interpolation methods, and downscale is given SSE4.1
optimized versions.

Change-Id: I7cdc256c26850948aef7dae26fda1622be6b8179
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
2015-04-15 11:25:41 +00:00
Konstantin Ritt
ba5af03a5a [QTextCursor] Better use of the cached whiteSpace attribute
In compare to QTextEngine::atSpace(), this also handles the less-common
"white spaces" and the exceptional control codes.

Change-Id: I52878932926b7f9fe36c9dd01007963b9691fbf0
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
2015-04-15 11:07:44 +00:00
Konstantin Ritt
c586f958b3 Fix trivial copy-paste typo in QTextBlock::previous() docu
Change-Id: Ia5d260af00aecf40400653e41248b5dd5f074b74
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
2015-04-15 11:07:01 +00:00
Kai Koehne
2748661ddd Work around MSVC warnings about unused variables in moc output
Change 8836a4d5f0 already added Q_UNUSED in one place,
but that was not enough.

Change-Id: Ib98ba3fe47c0903cc01c56fd3eb8461c8938c75e
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-04-15 10:10:46 +00:00
Filipe Azevedo
939f21be53 QNSView: Implement custom cursors for drag and drop.
The change has been made so it support possible future change
for QTBUG-26724

Task-number: QTBUG-40346
Change-Id: Ia52835f1a882289a2a22a0b755c943a12b8d3aa3
Reviewed-by: Christoph Schleifenbaum <christoph.schleifenbaum@kdab.com>
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
2015-04-15 10:01:15 +00:00
Liang Qi
605617b5dc Merge remote-tracking branch 'origin/5.4' into 5.5
Change-Id: I004854a25ebbf12b1fda88900162fe7878716c58
2015-04-15 09:09:24 +02:00
Thiago Macieira
d370878aa0 Fix undefined behavior: accessing an object after destruction
QDBusConnectionPrivate keeps a pointer to a QDBusConnectionInterface,
which in turn holds a reference back to that QDBusConnectionPrivate.
During the interface object's destruction, the QDBusAbstractInterface's
destructor checks if the interface is still valid. That access is
undefined behavior, but has so far been benign in all our uses since
the memory had not yet been freed (just destroyed) and the reference
count went from 0 to -1.

To be on the safe side, we destroy now the QDBusConnectionInterface
object while the Private is still valid. It will bring the reference
count down from 0 to a negative number, but won't cause any other
effects.

Change-Id: I9a75ad8521ae4e5cbbe5ffff13d1b80057e13809
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
2015-04-15 00:21:57 +00:00
Thiago Macieira
2bcbe227bd Fix crashes on shutdown when the D-Bus spy list has been destroyed
The QDBusConnection spy hook is most often created after the
QDBusConnectionManager global, which means it will get destroyed before.
That means we'll almost surely going to get a null pointer dereference
if we handle the socket close to shutdown.

Change-Id: I27eaacb532114dd188c4ffff13d4c9dc865b8c02
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
2015-04-15 00:07:05 +00:00
Robert Griebl
91dfab223a Add support for unregistering of custom meta types.
This patch addresses a specific Qml problem, where the meta types list
will grow indefinitely when unloading and reloading Qml components over
and over (in an failed effort to save memory).

The implementation is not specific to Qml though, but will cater to all
use-cases where registered types may not live until the application's
termination.

Change-Id: Ic0224dcd19aeb559715ef088b22a30509be2456b
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
2015-04-14 23:29:04 +00:00
Laszlo Agocs
472216da2d Defer Q(OpenGL|Raster)Window updates when non-exposed
This is similar to how widgets work. On platforms like OS X this
becomes essential since in non-exposed state SwapBuffers does not block
so continuing to update continuously leads to undesirable effects.

Task-number: QTBUG-45524
Change-Id: I80f4c00b218561b9e62c3cad1e66f61f4debd4af
Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
2015-04-14 15:50:43 +00:00
Simon Hausmann
666486b3ef Fix performance of recursive read-write locks
The implementation used an expensive QHash to keep track of reading threads,
for seemingly no good reason.

Change-Id: Iffa5b18d80f56b8ff22d39aa6bc3d52c2e3ed0ef
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2015-04-14 15:27:06 +00:00
Paul Olav Tvete
4e1b09fa8f Keep screen geometries from overlapping
The simple mapping of dividing each position by the
devicePixelRatio does not work when screens have different
DPR. If the low-DPR screen above or to the left of the high-DPR
screen, the geometries will overlap in the Qt coordinate system.

This change introduces a new mapping where the origin of each screen
does not move. This mapping is not perfect: it will have gaps between
contiguous screens. However, it will keep non-overlapping screens
non-overlapping in the Qt coordinate system.

Since there is no longer a simple linear coordinate transform, we
have to add screen-dependent mapping functions, and distinguish between
local and non-local coordinates. A side benefit is that the code is
now easier to read, since we remove most manual coordinate transformation.

We also have to cache the screen of each window: since we send resize events
before screen change events, we cannot rely on QPlatformWindow::screen()
(which is set from the screen change event).

Task-number: QTBUG-45076
Change-Id: Ie95a0b71ae274e02903caa102a98af2050a44129
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
2015-04-14 15:12:30 +00:00