The QCoreApplication test has quite a few test cases that we would like
to exercise using the GUI event-dispatcher. Instead of duplicating the
tests for the GUI dispatcher, we inherit tst_QCoreApplication, which
also lets us add extra tests that are specific to tst_QGuiApplication.
Change-Id: Ib411457131b8d3fed871f682c1c0568577f6127d
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
QSpiAccessibleBridge uses a D-BUS connection, which in turn uses socket
notifiers and timers internally. Neither of these can be used before
a event-dispatcher is in place, so we need to defer creation of the
accessibility interface until later. We assume that clients will
only call QXcbIntegration::accessibility() when an event-dispatcher
is set up, but to be extra safe we do an assert, so that failures of
this pre-condition will trigger at the place they are caused -- not
as failures to register socket notifiers and timers in the D-BUS code.
Change-Id: I4f9d8362a3f285c3da9045d1ff6b8e7b04570488
Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
The size is queried from the window before create() is
called. Therefore Quick apps were not covering the entire screen as
they should. This is now fixed by properly returning the fullscreen
geometry from QEglFSWindow::geometry() even when create() has not yet
been called.
Pre-5.2 this was working because the QEglFSWindow constructor changed
the window state. This is not feasible anymore with the recent
compositing changes since the second, third, etc. windows are not
fullscreen.
Task-number: QTBUG-33620
Change-Id: If66d35f6f4768485d4e68c5ad825fe7a9d948a64
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
qDeleteInEventHandler is a mere wrapper for delete these days.
Change-Id: I0828edf3ca17642b5abf97aab66672490c35f177
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
There's an off-by-one error that has been carried over since at least
Qt 4.0.0. Because of that, the class is actually 4 bytes bigger than
calculated.
Change-Id: Iaefdf657fdc780aae16390fde3c01074160e4cd9
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
The QPlatformIntegration::guiThreadEventDispatcher() function acted as an
accessor to event dispatchers created in the constructor of each platform
plugin, but the logic and semantics of event-dispatcher handling in Qt
itself (QCoreApplication/QGuiApplication) still assumed both ownership
and control over the event dispatcher, such as when to create one, which
one to create, and when to delete it. This conflicted with the explicit
calls in the platform plugins to QGuiApplication::setEventDispatcher(),
as well as left a possibility that the event-dispatcher created by
the platform plugin would never be deleted, as none of the platform
plugins actually took full ownership of the dispatcher and deleted it
in its destructor.
The integration function has now been renamed back to its old name,
createEventDispatcher(), and acts as a factory function, leaving
the logic and lifetime of event dispatcher to QtCoreApplication.
The only platform left with creating the event-dispatcher in the
constructor is QNX, where other parts of the platform relies on
having an event-dispatcher before their initialization. We then
need to manually take care of the ownership transfer, so that the
event-dispatcher is still destroyed at some point.
Change-Id: I113db97d2545ebda39ebdefa865e488d2ce9368b
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
WARNING: qopenglpixeltransferoptions.h includes QSharedDataPointer
when it should include QtCore/QSharedDataPointer
Change-Id: I0a84a37d2f4e310535979ef97b81937d2b2b2313
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
If create() or makeCurrent() calls fail, the test should fail fast.
Change-Id: I025c541f94c8eee492cf0e1545bfbb8027eff2a7
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Our manual test reveals that a setting a detailed text
after it is shown does not work.
This patch fixes that minor issue.
Change-Id: I4930880def2d8361d247e943e1a848dd49ca3882
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
QCoreApplication sets up the event dispatcher in the constructor, through
createEventDispatcher(), which is overridden in QGuiApplication to take
the platform-integration into account. The problem is that the platform
integration is created before the event dispatcher, so when we create the
QXcbConnection we are not guaranteed to have an event dispatcher yet.
This is not an issue when using xcb_poll_for_queued_event() in a thread,
but for the fallback case we connect to the event-dispatcher's awake()
and aboutToBlock() signals. To ensure that we do this only when we have
an event dispatcher we post a queued method invocation, that will be
processed as one of the first events once there is an event-dispatcher.
Change-Id: I623011af447b585884b84c7559737f134aab83e8
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
Reviewed-by: Uli Schlachter <psychon@znc.in>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Do it only when requested by having QT_QPA_EVDEV_DEBUG set.
Change-Id: I0e28808ae972bf681db3c0878ee53732611d11af
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
696060134d introduced the use of
QBasicMutex and QMutexLocker (qmutex.h) but that wasn't #included. I
don't know in what way my build is different, though.
Change-Id: Ie3df3c746fdf1c4735f298c3578cd93a9a14327e
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
As of 373e44d, QFileSystemModel can be built without QFileSystemWatcher
support, making this define incorrect.
Change-Id: I1c18dc4f323f94b43f4e49646911fd06b0f01f73
Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Sometimes the signal QNetworkReply::error(QNetworkReply::NetworkError)
is not emitted for certain requests.
This happens under the following conditions:
* The hostname provided in the request is incorrect, i.e it will
result in a DNS lookup failure.
* There is a previous request, for the _same_ host, already pending.
The first request that comes for the (incorrect hostname) url, gets
enqueued via QHttpNetworkConnectionPrivate::queueRequest(). Here,
after starting a DNS lookup, we mark the network state of this
connection as - "InProgress".
Now, if a second reuest comes for the same host, we use the existing
HTTP connection object as it's present in the cache. However, when
enqueing the request (in queueRequest()), we see that the network is
NOT in "Unknown" state and return immediately without adding this new
request to the list of pending lookups (via QHostInfo::lookupHost()).
To fix this issue, we should queue incoming lookup requests, even if
the current (HTTP) connection is in the "InProgress" state, so that we
can inform the requestor of a failed lookup. Since
QHostInfo::lookupHost() handles lookups for duplicate hostnames
properly, things should be fine even if multiple requests for the same
host have been enqueued.
Task-number: QTBUG-32911
Change-Id: I6a9c8430121e9a5a2d45983b6bda70c324437992
Reviewed-by: Peter Hartmann <phartmann@blackberry.com>
QPair is documented to initialize members
Change-Id: I1dccfd265521ca3ca1a648b161c0a163c72e2f2e
Reviewed-by: Peter Hartmann <phartmann@blackberry.com>
Reviewed-by: Richard J. Moore <rich@kde.org>
At the Daylight Tme to Standard Time transition, the local time repeats
itself, i.e. 2am occurs twice. Qt's behavior when setting this using
the local time is ambiguous, as it depends on the system implementation
of mktime, which behaves differently on different platforms. Currently
this behavior remains undefined. When setting using an msecs or time_t
value however we can determine the correct instance to use and cache it
to ensure that any conversion back from local time to msecs is performed
consistantly on all platforms.
Note that caching this value will result in any calculations being wrong
should the system time zone change, or its rules change. This will be
fixed in Qt 5.3 when the system time zone change signal is implemented
and QDateTime switches to using QTimeZone instead of mktime to provide
consistnt behavior across platforms.
The QTimeZone spec does not require this fix as it already caches the
correct offset in setMSecsFromEpoch().
Change-Id: I799588db474e744a6d81e80f6a0442920569ebd3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
These members were introduced in 4.8, but left undocumented. Because we
consider undocumented API to be internal, the members are \since 5.2.
Change-Id: I52e2840a8cfaa7f59f410b3e2a06c0942ea06539
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
First of all it needed on both OSX and iOS, and secondly it's required
for our Qt APIs, now that we provide conversion functions to Foundation
types such as NSURL and NSString, so it should be part of LIBS, not
LIBS_PRIVATE.
Change-Id: Ida4977d6aa0e76b3d1b8b565672c00a8526e3381
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Warning message was repeated multiple times inside the library.
Change-Id: Idcd417dda22de189893db597acfc36c2aa99d078
Reviewed-by: Richard J. Moore <rich@kde.org>
This patch fixes them in many ways:
- use Q_UNLIKELY to mark an error case
- reduce QtNetwork library size by 40315 bytes
- fix DEFINEFUNC9 which had wrong logic, happily it was not used
anywhere
Change-Id: Ic46a569f85aa22a00ecd88158e60c52f4665ec4c
Reviewed-by: Richard J. Moore <rich@kde.org>
QVarLengthArray actually does support iterators.
It was added in Qt 4.8.
Change-Id: I9f714a09eab1d2e5dc023bd701ab7c743b078ec0
Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
With the usual pros/cons. Cleans up the publicly visible
interface and gives some headroom for further extensions.
Change-Id: I7237b1fd2a22c66574d1b7e532d99137bb56ce1d
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
bab29dd76 changed scroll event handling to update
the keyboard modifier state during scroll event streams
and brought back the bug where Qt Creator would suddenly
change the font size if you pressed the command key
while scrolling.
Use momemtumPhase to detect scroll event streams.
momemtumPahse will be NSEventPhaseNone as long as there
are fingers on the trackpad. After liftoff it will
have a different value, and at this point we freeze
the keyboard modifier state until the scroll event
stream has ended.
This approach does not interfere with normal mouse
scroll wheels since momentumPhase is PahseNone for all
such scroll events.
Change-Id: I668ade8e794a97491487c9465366a316a7d6a9c8
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
QCocoaWindow keeps track of popup windows in order
to close them when appropriate, for example on mouse
clicks outside the popup. In this case the mouse click
will be used to close the popup, and will not be
send to the QCocoaWindow.
Clear m_activePopupWindow when the popup is closed
to fix a bug where the first mouse click after
closing a popup would have no effect.
Change-Id: I7a3e850e4fbf4686540d5d89dac6d7b613ed10a4
Reviewed-by: Eike Ziller <eike.ziller@digia.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Unescaped annotation value causes for harmless values in an XML file, for instance,
'value=\"QList<uint>\"' a DBus exception, like
dbus.exceptions.IntrospectionParserException: Error parsing introspect data
Task-number: QTBUG-26668
Change-Id: Ie1eb519aec5228da0591d62c3aa5b6dec5790eb9
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
For typedef nodes that have an associated enumeration, qdoc
generates incorrect location info (written to index files)
by simply appending '-typedef' to the node name. The correct
location to link to is the associated enumeration, if one
exists.
Task-number: QTBUG-33684
Change-Id: I749171ccae9ccc10f084a40fda14e72d5f4d44cf
Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Reviewed-by: Martin Smith <martin.smith@digia.com>
Not needed anymore now that it's using the new commandline parser.
Change-Id: I1a44c8658d128e4fbb9a6fc5000025f55e5293c2
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
This is necessary for QMacNativeWidget, where there exists a QApplication, but
is never executed. This directly translates in calls to the event dispatcher's
processEvents() function, whose calls we keep track. If no calls have been made,
we always allow timer and posted events to be processed.
Change-Id: Ia0062ee8c59a2572082f520a2eb85ed44a9856a7
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
This would be the case in most if not all the real life use cases.
Change-Id: Ib7ebc6dbe471ce50f4bd1df9becba8e9806008e7
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
In particular, this is needed when a QWidget has WA_TranslucentBackground set
and nobody is painting anything behind it (except maybe some native view).
Change-Id: Ib1f0714f85fa7eeced527617ecd09bb2ed6ddfc9
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Even if there is not a new window, the notifications from the old one
are not needed.
Change-Id: I9c1858d25e49379ca4737e23beec06623e91b69c
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Task-number: QTBUG-26722
Change-Id: I579111b5d34f8e3cdc6bb016d9c0e42ec3ffb8c9
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Reviewed-by: Stephen Chu <stephen@ju-ju.com>
On Mac the QT_NO_PRINTER build was not implemented.
Task-number: QTBUG-33565
Change-Id: I118472f9400aa0a0d0e192ae39a11ea38a66f340
Reviewed-by: John Layt <jlayt@kde.org>
Mac uses the CLDR format codes which need to be translated into their
Qt equivalent. The existing code mistranslates the year code, is
outdated for a number of new codes introduced in recent versions of
CLDR, and by default accepted any codes it didn't recognize.
This change updates support to the latest version of CLDR, fixes the
treatment of years, and defaults to ignoring any new format codes
added in the future.
Note that this change cannot have auto tests written as the system
locale formats change between versions of OSX. Testing must be
done manually by changing system locale and formats.
Task-number: QTBUG-25057
Change-Id: I69dda25b4a0b38d3971995644546306876922d57
Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Check only bit 8 to decide if the mouse event is generated from
a touch or pen event.
Task-number: QTBUG-33460
Change-Id: I83b23267b5de6df5e0e6b7113ecf377dd7e86c84
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
Add the missing parentheses around the conditional
expression. EVIOCGABS and similar macros do not have guarding
parentheses in older kernel headers.
Change-Id: I5f464351e9407d90643d4e73d4afdbb2ad88b02b
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>