Commit Graph

20382 Commits (d804ea01f06fcde5af9a85db77ef87934b709ce7)

Author SHA1 Message Date
Anton Kudryavtsev d804ea01f0 Fix build QtService.java: replace int with Integer
... and boolean with Boolean.

Task-number: QTBUG-51897
Change-Id: I498ed0cce48e2566c6800344677111dee225d7d9
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
2016-03-21 17:30:45 +00:00
Morten Johan Sørvig 0694751c33 Cocoa: Forward masked out mouse events.
Forward mouse events hitting the a masked out window
area to the next responder by calling the superclass
event handler.

Implement "inverse mouse grabbing": Qt will not take
dragged and up events if the mouseDown was in a masked
out area.

Change-Id: Ie86281245513cad515b77a468ac63f31ae41bfe0
Task-number: QTBUG-41839
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
2016-03-21 16:26:31 +00:00
Morten Johan Sørvig 68987d5454 Cocoa: Forward rejected key events.
Forward rejected key events to the next responder
by checking the return value from QWindowSystemInterface
and calling the superclass event handler.

This is useful when Qt is running as a plugin in a
host application; the host can now react to key
events even if Qt has focus.

Qt will often not accept keyUp events, even if the
corresponding keyDown was accepted, for example in
the case of text controls. We don't want to forward
'bare' keyUps, so keep track of which keyDowns have
been seen.

Change-Id: I976448a5d305a657a0e91aeb271b158f8b598286
Task-number: QTBUG-45768
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
2016-03-21 16:26:27 +00:00
Morten Johan Sørvig 820e69d6c2 Cocoa: Unify mouse handling logic
Reduce the code duplication for the various button
type handlers. Fan in: (example)
	rightMouseDown
	handleMouseDownEvent
	handleMouseEvent

The primary mouseDown function is still separate
with some duplicated logic.

Remove the "invalid button tracking" warning. qWarnings
are for application developers in case of improper
use of API etc, not internal Qt errors.

Change-Id: Idb1a311e37446399668c2a207831fccc84716ca1
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
2016-03-21 16:26:18 +00:00
Morten Johan Sørvig 3ee01f7403 Cocoa: Move window logging to qt.qpa.cocoa.window
Remove QT_COCOCA_ENABLE_WINDOW_DEBUG. Replace/Add
logging for window state changes and drawing.

The window identifier is now the QWindow (not the
platform window) everywhere since this object provides
more debug output.

Change-Id: I4ae56626015241279ab1b44d2b81c9d462b532a0
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
2016-03-21 16:25:53 +00:00
Liang Qi f9e746959b Merge "Merge remote-tracking branch 'origin/5.6' into 5.7" into refs/staging/5.7 2016-03-21 18:40:23 +00:00
Rolland Dudemaine 686e37b1b7 Remove dynamically-loaded use of DNS lookup feature for INTEGRITY.
Static libnet is enough for DNS resolution.
This commit specializes the removal of dynamic DNS library load, but
this should probably also be done when using a static build.

Change-Id: I597bdd528649849844a0ee46d0706f22d6f595d4
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-03-21 14:40:02 +00:00
Liang Qi 6cb8121a44 Merge remote-tracking branch 'origin/5.6' into 5.7
Conflicts:
	src/widgets/styles/qgtkstyle_p.cpp
	tests/auto/corelib/io/qtextstream/test/test.pro
	tests/auto/corelib/plugin/plugin.pro

Change-Id: I512bc1b36acf3933ed2b96c00f476ee3819c1f4b
2016-03-21 09:02:57 +01:00
Gabriel de Dietrich 96740193e1 QWheelEvent: Make NoScrollPhase public
This reverts d5fde51410 and makes
that enum value the default for QWheelEvent::phase() with non
phase-aware mice.

[ChangeLog][QtGui] QWheelEvent::phase() returns NoScrollPhase with
non phase-aware mice. This is most mice and input devices except,
for now, Apple's trackpads and Magic Mouse.

Change-Id: I929fb39889cf116e89dcd134c1b1ec6587b8f05e
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2016-03-21 04:51:39 +00:00
Thiago Macieira 2e02de1651 Fix QtDBus deadlock inside kded/kiod
Whenever a message spy was installed, we failed to actually process
looped-back messages by queueing them for processing by the spy. That
had as a consequence that the caller got an error reply. Worse, since
the message had been queued, QtDBus would attempt to deliver it later.
Since that message had isLocal==true, bad things happened inside the
manager thread.

The correct solution is not to queue the message for the filter. If the
message is local, then simply deliver directly, as we're still in the
user's thread. This used to be the behavior in Qt 5.5.

Task-number: QTBUG-51676
Change-Id: I1dc112894cde7121e8ce302ae51b438ade1ff612
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
Reviewed-by: Jan Kundrát <jkt@kde.org>
2016-03-19 17:16:52 +00:00
Stephen Kelly 6ec89bec0a Fix QFINDTESTDATA when using cmake ninja generator
The Qt CI does not have ninja, but the autotest can be used for manual
regression finding.

 cd qtbase/tests/auto/cmake
 qmake
 make check
 cd build
 cmake . -DHAVE_NINJA=ON
 ctest -R FINDTESTDATA

Change-Id: Ic3f3748f6ab04e37fa5287c59486e5cd46dcabb4
Reviewed-by: Stephen Kelly <steveire@gmail.com>
2016-03-19 13:44:21 +00:00
Friedemann Kleint a1d4e4c97e QtWidgets: Change QTLWExtra::window from QWidgetWindow to QWindow.
None of QWidgetWindow's API is used in the code.

Task-number: QTBUG-33079
Change-Id: Iecb1e174645eff687ee0d8b29417c30a2c508311
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-03-19 09:59:27 +00:00
Marc Mutz 69335920f7 Move QButtonGroup implementation from qabstractbutton.cpp to qbuttongroup.cpp
Because it's the right thing to do.

Needed to introduce qbuttongroup_p.h because QAbstractButton
likes to poke around in QButtonGroup's private parts.

Fixed includes of qabstractbutton_p.h so it compiles on it's
own.

Change-Id: Ic7725277d2419754de273b2abd4790476edd0eb4
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-03-18 22:38:06 +00:00
Marc Mutz 0e6ad27549 QtWidgets: includemocs
A very simple way to save ~3KiB in test size and 440b in
data size on GCC 5.3 Linux AMD64 release builds.

Change-Id: I6619148cc497116b9772a00e1bc30d573a2b2534
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-03-18 22:37:50 +00:00
Rolland Dudemaine 0fed37e2cf Add GHS pretty print for compiler version
Change-Id: I6376de7c33b73f5efcfc7ffc7ac6ad3a260fc3a4
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-03-18 20:55:30 +00:00
Rolland Dudemaine d58596fd61 Remove inclusion of -lm for INTEGRITY.
Math functions are linked in by default on INTEGRITY.

Change-Id: I737ae87c02b2321caca3975f69525731e839d1a7
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-03-18 20:40:59 +00:00
Rolland Dudemaine 12c18ae647 Add GHS toolchain support
Note that while GHS C/C++ is using EDG as a frontend, _BOOL is only
defined when using the C++ driver, and not when building third-party C
code like libpng and friends.

Change-Id: Ife19bd09e4c9f3efea6383c0eede9e0947265ca2
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-03-18 20:16:31 +00:00
Nikita Krupenko d1f803af60 QPlatformTheme: added EditorFont
Which is needed by Qt Labs Controls.

Task-number: QTBUG-51203
Change-Id: If5f39d59c5c88de37c9b034b784c38b976759439
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
2016-03-18 19:55:08 +00:00
David Rosca e4cea305ed xcb: Merge _NET_WM_STATE hints instead of overwriting
This makes possible to set custom _NET_WM_STATE hints before
showing the window.

Change-Id: I86ad3863f7a8b3bb610a31b9af4b02c9d38eb111
Task-number: QTBUG-26978
Reviewed-by: Ilya Kotov
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
Reviewed-by: Uli Schlachter <psychon@znc.in>
2016-03-18 15:32:36 +00:00
Tor Arne Vestbø 8ed76a6e4f iOS: Use composeAndFlush() to flush all backing store updates
QPlatformBackingStore::composeAndFlush() handles an empty texture list
just fine, and results in the same blitting of the backing store image
as we're doing today using the OpenGL paint engine, except the compose
and flush code path is a lot more optimized.

Among other things it clears the render buffer as the first step (as
recommended by Apple on iOS), doesn't re-create the backing store
texture each pass just because the image has changed, and respects
the flushed region for both the texture upload (using glTexSubImage2D)
and when blitting the texture.

The result is a 10x increase in frames per second when blitting full
screen updates.

Change-Id: I163fab473751f8201758a5684b18d80bb90d42fb
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
2016-03-18 15:09:39 +00:00
Alex Trotsenko bec47545dc QAbstractSocket: do not fail writing on read buffer overflow
canReadNotification() could return 'false' if either the socket has
been closed, or the read buffer has reached the maximum size. Because of
this duality, waitForBytesWritten() should not fail as a result of a
canReadNotification() call.

Change-Id: I9a15fa174a3b982a7ce404913caa38fc19f64622
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Reviewed-by: Markus Goetz (Woboq GmbH) <markus@woboq.com>
2016-03-18 13:05:42 +00:00
Frederik Gladhorn 458bf6b858 Merge "Merge remote-tracking branch 'origin/5.6.0' into 5.6" into refs/staging/5.6 2016-03-18 11:38:12 +00:00
Marc Mutz 55878865db QToolBarExtension: remove unused member 'orientation'
The orientation is implicitly stored by which icon is used.

Found by Clang:
  qtoolbarextension_p.h:57:21: error: private field 'orientation' is not used [-Werror,-Wunused-private-field]

Change-Id: I82f8b8009b48d41fd2beb95d6107e505f9d4e835
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-03-18 10:10:49 +00:00
Marc Mutz 5655f34131 QWindows(XP)Style: fix build with Clang after includemocs run
Clang doesn't like the unused member variable:

  qwindowsstyle_p.h💯11: error: private field 'reserved' is not used [-Werror,-Wunused-private-field]

Remove. It's private API.

Triggered by Clang seeing all methods of the classes in
one TU by the following includemocs commit.

Change-Id: I84e92d63af573c090ef89c1d8ee19af30f90b171
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-03-18 09:15:52 +00:00
Paul Lemire d930c8b5fc Make QOpenGLTexture a Q_GADGET
Allows to register the enums as Q_ENUM which in turn will allow Qt3D and
future other modules to access these enums from QML if QOpenGLTexture is
registered as an uncreatable type

Task-number: QTBUG-51491
Change-Id: I037a4585cd44c7429b63f06b704f0386df842777
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
2016-03-18 07:49:35 +00:00
Gabriel de Dietrich 7c7ece9442 QMacStyle: Ensure proper focus ring clipping
By rendering the focus ring directly on the backing NSView, we
would ignore the painter's clipping information. It would also
require creating a custom CGContext and attached NSGraphicsContext
every time.

The first step is to render the focus ring on a pixmap and then
use the painter to render that pixamp. This ensures the clipping
is done properly. The second step is to cache said pixmap and
render it as a nine-patch image.

Change-Id: I1df1baf7dc490023319f025a16306d4f04e5264c
Task-number: QTBUG-50645
Reviewed-by: Morten Johan Sørvig <morten.sorvig@theqtcompany.com>
2016-03-17 16:57:31 +00:00
Gabriel de Dietrich c6bf48dcbf QTypeInfoQuery: Add public inheritance specifiers
Their absence offends PySide's shiboken.

Change-Id: I137d17e280276f7ffadba6d16b7c230a6880cf05
Reviewed-by: Louai Al-Khanji <louai.al-khanji@theqtcompany.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.com>
2016-03-17 16:54:53 +00:00
Joerg Bornemann 0307c008bf Make QWindowsPipeWriter thread-free.
Re-work QWindowsPipeWriter to not use a thread anymore but the
WriteFileEx API, similar to QWindowsPipeReader. This saves us a lot of
thread synchronization code and enables us to directly write data
without yet another buffering layer.
  Also, this fixes the dreaded deadlocks in the QWindowsPipeWriter
destructor that could occur when the reading end was closed before
the write was finished.

Task-number: QTBUG-23378
Task-number: QTBUG-38185
Change-Id: If0ae96dcd756f716ddf6fa38016080095bf3bd4e
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-03-17 16:52:02 +00:00
Joerg Bornemann 5c89e2eeee Rework QWindowsPipeReader
The use of QWinOverlappedIoNotifier in QWindowsPipeReader restricts us
in the following ways:
  - The handle that gets assigned to QWinOverlappedIoNotifier is forever
    tied to an I/O completion port.
  - Other notification mechanisms like I/O completion routines of
    WriteFileEx do not work with such a handle.
  - No other QWinOverlappedIoNotifier can be registered for this handle.

To achieve the ultimate goal of making QWindowsPipeWriter thread-free
(to fix QTBUG-23378 and QTBUG-38185) we remove the usage of
QWinOverlappedIoNotifier from QWindowsPipeReader and use the
ReadFileEx API instead.
This has the additional advantage of removing the need for any thread
synchronization, as the I/O completion routine runs in the thread that
ReadFileEx was called on, leading to simpler and faster code.

Change-Id: I05c983e1f1e49d7dd27e3b77a47f87cae9c3f4c6
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-03-17 16:52:00 +00:00
Friedemann Kleint 74c202f913 QtTest: Add formatting for QColor.
When a QCOMPARE of values of type QColor fails, their
name will now be printed.

Task-number: QTBUG-51124
Change-Id: I76565daa338f038ea4f452e47705e638d94eaeee
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@theqtcompany.com>
2016-03-17 15:35:05 +00:00
Frederik Gladhorn 6380cc710e Merge remote-tracking branch 'origin/5.6.0' into 5.6
Change-Id: Iac8ff05cd76cbacf859138a73e8e2ed0a979c75a
2016-03-17 16:02:45 +01:00
BogDan Vatra 461ebedb98 Android: Fix compilation with NDK r11
Task-number: QTBUG-51859
Change-Id: Id8bbcc9f0503ab2742e8da7f3b5de03fd46714b2
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2016-03-17 13:29:32 +00:00
Alexandru Croitor 35dce99b56 Fix QAbstractItemView dragged item pixmaps to be HighDPI aware.
When an item is rendered into a QPixmap sent to the QDrag
implementation, make sure it's size is scaled with the current window's
devicePixelRatio, so it does not appear blurry on high-dpi screens.

Change-Id: Idf38c0993e8529aff7107ff1ac412de9cf10f311
Task-number: QTBUG-46068
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2016-03-17 10:38:20 +00:00
Gabriel de Dietrich d19c9cfd29 QMenu: Add showTearOffMenu()
The API is incomplete since we can't show a tear-off menu
programatically. This could be useful when restoring the
application state on launch.

Change-Id: Ice1911b44a5b973680f67b0150efacf3d023c2c5
Task-number: QTBUG-47974
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2016-03-17 10:06:51 +00:00
Friedemann Kleint aa3008dfa1 Introduce separate mapping of QStandardPaths's CLSIDs for Windows CE.
CSIDL_APPDATA should be used instead of CSIDL_LOCAL_APPDATA
on Windows CE. Amends 910f719bd1 .

Task-number: QTBUG-50570
Change-Id: I0cc310ef5fe3fbaefae9c84dd9db8cf48ff48499
Reviewed-by: Tobias Koenig <tobias.koenig@kdab.com>
Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com>
2016-03-17 09:13:05 +00:00
Rolland Dudemaine b5af1bd8cf Make pcre sljit build with GHS toolchain.
This commit should also be pushed to pcre main repo, but is necessary
to build Qt.

Change-Id: I647e784feca09c13260f938823c2bcf5adec2a00
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-03-17 07:58:25 +00:00
Rolland Dudemaine 44724563aa Disable some features for INTEGRITY
Specifically, this is a single-process build.

Change-Id: I1b2cc33641df0ef73f1f26f388c1af3d954ce6e8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
2016-03-17 07:58:06 +00:00
Gabriel de Dietrich 09acf326db QCocoaMenu: Decouple NSMenuItem from NSMenu
While Cocoa requires an NSMenu to be coupled to an NSMenuItem
(just as Qt requires a QMenu to be coupled to a QAction), making
that a hard coupling comes with some limitations. This is because
Cocoa won't allow the NSMenu object to be simultaneously coupled
to more than one NSMenuItem and, similarly, an NSMenuItem can
only be added to a single parent NSMenu. Therefore, it becomes
difficult to share one QMenu between two different QMenuBars in
different windows, or to use a QMenu as context menu while being
accessible from the menu bar.

Previous solutions to circumvent those limitations were less than
ideal (see 119882714f for the
QMenuBar shared QMenu issue). Other workarounds that relied on
that hard coupling, like 996054f5e6,
also added gratuitous complexity.

In this patch, we break that hard NSMenuItem-NSMenu coupling, and
we replace it with a temporary, looser coupling. As a consequence,

   * QCocoaMenu only contains and manages a NSMenu instance,
     removing the previously used NSMenuItem. It gets a temporarily
     attached NSMenuItem instead.
   * QCocoaMenuItem gains a safe pointer to its QCocoaMenu property
     removing the necessity containingMenuItem() in QCocoaMenu.
   * QCocoaMenuBar manages its own NSMenuItems.

With this setup, we bind the NSMenu to its parent NSMenuItem at the
last moment. In QCocoaMenuBar, when we call updateMenuBarImmediately().
In QCocoaMenu, we use the delegate's -[QCocoaMenuDelegate menu:
updateItem:atIndex:shouldCancel:] method which is called when Cocoa
is about to display the NSMenu.

Note: There's still one use case we don't support, which is sharing
a toplevel QMenuBar menu. This is because Cocoa's menu bar requires
each of its menu items to have a submenu assigned, and therefore we
can't rely on that last moment assignment.

Task-number: QTBUG-34160
Task-number: QTBUG-31342
Task-number: QTBUG-41587
Change-Id: I92bdb444c680789c78e43fe0b585dc6661770281
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
2016-03-16 18:26:33 +00:00
Friedemann Kleint abe3217bac Reimplement QShapedPixmapWindow using QRasterWindow.
The current implementation makes the window too big when
a QPixmap with a DPR != 1 is set. Circumvent the problem
by using a QRasterWindow.

Task-number: QTBUG-46068
Task-number: QTBUG-50938
Change-Id: I0fca91f571937250c740f1400bd60286330fb595
Reviewed-by: Błażej Szczygieł <spaz16@wp.pl>
Reviewed-by: Alexander Volkov <a.volkov@rusbitech.ru>
Reviewed-by: Shawn Rutledge <shawn.rutledge@theqtcompany.com>
2016-03-16 17:17:02 +00:00
Jochen Seemann b8e8c6ad5c winrt: enable cross-platform high DPI scaling
Task-number: QTBUG-46615
Change-Id: I7f75bc7da35b9330753130338a06feb49533061c
Reviewed-by: Andrew Knight <andrew.knight@intopalo.com>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
2016-03-16 14:41:58 +00:00
Eirik Aavitsland 714cb4020e Update bundled libpng to version 1.6.20
Merged in the upstream version. The remaining diff to clean 1.6.20 is
archived in the qtpatches.diff file.

Change-Id: I56f557bfe04ac1aa0e2c090826bbb144ae93cbb7
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
2016-03-16 14:32:49 +00:00
Mitch Curtis 10a4151e83 Fix link to sched_setscheduler in QThread documentation
Change-Id: I38412a119d2a91685b3fd2e4a459d33a60b154b0
Reviewed-by: Topi Reiniö <topi.reinio@theqtcompany.com>
2016-03-16 11:57:05 +00:00
Allan Sandfeld Jensen f8f3f0fbd4 Correct qt_defaultDpi X/Y with just a QCoreApplication
Makes the 96DPI attribute check avoid undefined behavior by using
QCoreApplication::instance() directly, instead of calling through
qApp, which performs an invalid cast to QGuiApplication.

Change-Id: Ib86e7d2461b462a2d623f1364414f7d4d2293f22
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
2016-03-16 10:37:39 +00:00
Maurice Kalinowski e7cd32274e WinRT: Fix QTimeZone transitions by switching backend
Previously WinRT was using the UTC backend which fails on all platforms
for some QDateTime autotests related to timezone items. Hence switch to
the Windows implementation for WinRT as well.

However, the windows backend does query the registry heavily, which is
not supported on WinRT. Instead use the API version provided by the SDK.

Long-term we might want to switch to this version on desktop windows as
well, as direct registry access would not be required and we could
harmonize the codepaths for both platforms.

Change-Id: I620b614e9994aa77b531e5c34c9be1da7e272a30
Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
2016-03-16 10:30:26 +00:00
Oliver Wolff 7e72a5e11e winrt: process all triggered timers in processEvents
If only one timer is processed in there it is possible that a reoccuring
timer which has a very low timeout blocks all the other timers from
being triggered. This high frequency timer might be the only one to
be triggered in every processEvents call.

Task-number: QTBUG-51888
Change-Id: I8a0026d1e8519171ab60d1b47c494a15d30328b3
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
2016-03-16 10:26:16 +00:00
Joerg Bornemann 5393ba970b Remove handle duplication code from QWindowsPipeWriter
There is no apparent reason why the handle should be duplicated.

Change-Id: I8ff2cde2f050934ed0dd9ab2d39a1b1efa327a17
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
2016-03-15 20:15:11 +00:00
Shawn Rutledge 6c53f2528c xcb: Initialize all xcb_client_message_event_t members before use
Change-Id: I01e4b69b138fd19fc7e67751d93adebc1326b2f9
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
2016-03-15 19:58:40 +00:00
Sean Harmer ad9726d99c Dedupe QMetaObject::cast
By implementing in terms of QMetaObject::inherits().

Change-Id: I39a039539b05a20bc1713bd450d8a998c78433aa
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
2016-03-15 16:36:25 +00:00
Sean Harmer aa21ac1043 Add a function to QMetaObject to check for inheritance
This is analogous to QObject::inherits() but only requires the
metaobjects rather than pointers to a QObject instances. This is needed
for type checking on the backend of Qt 3D where we do not have access
to QObject pointers.

Change-Id: I14d26c4cbb5cc3fbecb57725f2c14ee0ffda4a11
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Reviewed-by: Milian Wolff <milian.wolff@kdab.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-03-15 16:36:22 +00:00
Marc Mutz e4c6d73f92 QRect: fix UB (int overflow) in center()
QRect::center() should be defined for any
  QRect(x1,y1,x2,x2), INT_MIN <= x1, x2, y1, y2 <= INT_MAX
because the average of two signed integers is always
representable as a signed integer.

But not when it's calculated as (x1+x2)/2, since that
expression overflows when x1 > INT_MAX - x2.

Instead of playing games with Hacker's Delight-style
expressions, or use Google's patented algorithm, which
requires two divisions, take advantage of the fact that
int is not intmax_t and perform the calculation in the
qint64 domain. The cast back to int is always well-
defined since, as mentioned, the result is always
representable in an int.

Fix a test-case that expected a nonsensical result due
to overflow.

[ChangeLog][QtCore][QRect] Fixed integer overflow in
center(). This fixes the result for some corner-cases
like a 1x1 rectangle at (INT_MIN, INT_MIN), for which
the previous implementation could return anything
(due to invoking undefined behavior), but commonly
returned (0, 0).

Change-Id: I1a885ca6dff770327dd31655c3eb473fcfeb8878
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
2016-03-15 11:23:46 +00:00