summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/corelib/doc/snippets/code/src_corelib_tools_qdatetime.cpp16
-rw-r--r--src/corelib/global/qcompilerdetection.h7
-rw-r--r--src/corelib/kernel/qeventdispatcher_blackberry.cpp31
-rw-r--r--src/corelib/kernel/qmetaobject.cpp2
-rw-r--r--src/corelib/kernel/qmetatype.cpp1
-rw-r--r--src/corelib/tools/qdatetime.cpp12
-rw-r--r--src/corelib/tools/qlocale_win.cpp3
-rw-r--r--src/corelib/tools/qsharedpointer_impl.h2
-rw-r--r--src/gui/accessible/qaccessible.cpp14
-rw-r--r--src/gui/accessible/qaccessible.h3
-rw-r--r--src/gui/kernel/qguiapplication.cpp7
-rw-r--r--src/gui/kernel/qwindow.cpp18
-rw-r--r--src/gui/kernel/qwindowsysteminterface_p.h5
-rw-r--r--src/gui/opengl/qtriangulator.cpp39
-rw-r--r--src/gui/text/qtextengine.cpp4
-rw-r--r--src/network/ssl/qsslcertificate.cpp3
-rw-r--r--src/platformsupport/linuxaccessibility/application.cpp4
-rw-r--r--src/platformsupport/linuxaccessibility/application_p.h4
-rw-r--r--src/platformsupport/linuxaccessibility/atspiadaptor.cpp4
-rw-r--r--src/platformsupport/linuxaccessibility/atspiadaptor_p.h4
-rw-r--r--src/platformsupport/linuxaccessibility/bridge.cpp4
-rw-r--r--src/platformsupport/linuxaccessibility/bridge_p.h4
-rw-r--r--src/platformsupport/linuxaccessibility/cache.cpp4
-rw-r--r--src/platformsupport/linuxaccessibility/cache_p.h4
-rw-r--r--src/platformsupport/linuxaccessibility/constant_mappings.cpp4
-rw-r--r--src/platformsupport/linuxaccessibility/constant_mappings_p.h3
-rw-r--r--src/platformsupport/linuxaccessibility/dbusconnection.cpp4
-rw-r--r--src/platformsupport/linuxaccessibility/dbusconnection_p.h4
-rw-r--r--src/platformsupport/linuxaccessibility/struct_marshallers.cpp4
-rw-r--r--src/plugins/platforms/cocoa/qcocoaintegration.h4
-rw-r--r--src/plugins/platforms/cocoa/qcocoaintegration.mm19
-rw-r--r--src/plugins/platforms/qnx/qqnxrasterbackingstore.cpp25
-rw-r--r--src/plugins/platforms/qnx/qqnxrasterbackingstore.h4
-rw-r--r--src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.cpp6
-rw-r--r--src/plugins/platforms/windows/qwindowsbackingstore.cpp13
-rw-r--r--src/plugins/platforms/windows/qwindowsintegration.cpp4
-rw-r--r--src/plugins/platforms/xcb/qxcbcursor.cpp2
-rw-r--r--src/plugins/platforms/xcb/qxcbnativeinterface.cpp1
-rw-r--r--src/testlib/doc/snippets/code/doc_src_qsignalspy.cpp6
-rw-r--r--src/testlib/qsignalspy.qdoc2
-rw-r--r--src/widgets/kernel/qapplication.cpp46
-rw-r--r--src/widgets/styles/qgtkstyle_p.cpp11
-rw-r--r--src/widgets/widgets/qtabbar.cpp8
43 files changed, 197 insertions, 172 deletions
diff --git a/src/corelib/doc/snippets/code/src_corelib_tools_qdatetime.cpp b/src/corelib/doc/snippets/code/src_corelib_tools_qdatetime.cpp
index a2b128800e..d57c1314a8 100644
--- a/src/corelib/doc/snippets/code/src_corelib_tools_qdatetime.cpp
+++ b/src/corelib/doc/snippets/code/src_corelib_tools_qdatetime.cpp
@@ -143,6 +143,8 @@ QDateTime dateTime = QDateTime::fromString("130", "Mm"); // invalid
//! [14]
QDateTime dateTime = QDateTime::fromString("1.30.1", "M.d.s");
// dateTime is January 30 in 1900 at 00:00:01.
+dateTime = QDateTime::fromString("12", "yy");
+// dateTime is January 1 in 1912 at 00:00:00.
//! [14]
//! [15]
@@ -191,4 +193,16 @@ UTC.setTimeSpec(Qt::UTC);
qDebug() << "UTC time is:" << UTC;
qDebug() << "There are" << local.secsTo(UTC) << "seconds difference between the datetimes.";
-//! [19] \ No newline at end of file
+//! [19]
+
+//! [20]
+QString string = "Monday, 23 April 12 22:51:41";
+QString format = "dddd, d MMMM yy hh:mm:ss";
+QDateTime invalid = QDateTime::fromString(string, format);
+//! [20]
+
+//! [21]
+QString string = "Tuesday, 23 April 12 22:51:41";
+QString format = "dddd, d MMMM yy hh:mm:ss";
+QDateTime valid = QDateTime::fromString(string, format);
+//! [21]
diff --git a/src/corelib/global/qcompilerdetection.h b/src/corelib/global/qcompilerdetection.h
index 7fae3d9dbc..0ba0d9be63 100644
--- a/src/corelib/global/qcompilerdetection.h
+++ b/src/corelib/global/qcompilerdetection.h
@@ -693,7 +693,7 @@
#endif /* Q_CC_MSVC */
#ifdef __cplusplus
-# if defined(Q_OS_BLACKBERRY) || defined(Q_OS_QNX)
+# if defined(Q_OS_QNX)
# include <utility>
# if defined(_YVALS) || defined(_LIBCPP_VER)
// QNX: libcpp (Dinkumware-based) doesn't have the <initializer_list>
@@ -702,9 +702,12 @@
# ifdef Q_COMPILER_INITIALIZER_LISTS
# undef Q_COMPILER_INITIALIZER_LISTS
# endif
+# ifdef Q_COMPILER_RVALUE_REFS
+# undef Q_COMPILER_RVALUE_REFS
+# endif
# endif
# endif
-#endif // Q_OS_BLACKBERRY || Q_OS_QNX
+#endif // Q_OS_QNX
/*
* C++11 keywords and expressions
diff --git a/src/corelib/kernel/qeventdispatcher_blackberry.cpp b/src/corelib/kernel/qeventdispatcher_blackberry.cpp
index 69b4a8b172..3e958ee277 100644
--- a/src/corelib/kernel/qeventdispatcher_blackberry.cpp
+++ b/src/corelib/kernel/qeventdispatcher_blackberry.cpp
@@ -271,6 +271,11 @@ void QEventDispatcherBlackberry::unregisterSocketNotifier(QSocketNotifier *notif
}
}
+static inline int timevalToMillisecs(const timeval &tv)
+{
+ return (tv.tv_sec * 1000) + (tv.tv_usec / 1000);
+}
+
int QEventDispatcherBlackberry::select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
timeval *timeout)
{
@@ -279,9 +284,6 @@ int QEventDispatcherBlackberry::select(int nfds, fd_set *readfds, fd_set *writef
BpsChannelScopeSwitcher channelSwitcher(d->bps_channel);
- // Make a note of the start time
- timeval startTime = qt_gettime();
-
// prepare file sets for bps callback
d->ioData->count = 0;
d->ioData->readfds = readfds;
@@ -298,15 +300,15 @@ int QEventDispatcherBlackberry::select(int nfds, fd_set *readfds, fd_set *writef
if (exceptfds)
FD_ZERO(exceptfds);
+ bps_event_t *event = 0;
+ unsigned int eventCount = 0;
+
// Convert timeout to milliseconds
int timeoutTotal = -1;
if (timeout)
- timeoutTotal = (timeout->tv_sec * 1000) + (timeout->tv_usec / 1000);
-
+ timeoutTotal = timevalToMillisecs(*timeout);
int timeoutLeft = timeoutTotal;
-
- bps_event_t *event = 0;
- unsigned int eventCount = 0;
+ timeval startTime = qt_gettime();
// This loop exists such that we can drain the bps event queue of all native events
// more efficiently than if we were to return control to Qt after each event. This
@@ -331,11 +333,20 @@ int QEventDispatcherBlackberry::select(int nfds, fd_set *readfds, fd_set *writef
// Clock source is monotonic, so we can recalculate how much timeout is left
if (timeoutTotal != -1) {
timeval t2 = qt_gettime();
- timeoutLeft = timeoutTotal - ((t2.tv_sec * 1000 + t2.tv_usec / 1000)
- - (startTime.tv_sec * 1000 + startTime.tv_usec / 1000));
+ timeoutLeft = timeoutTotal
+ - (timevalToMillisecs(t2) - timevalToMillisecs(startTime));
if (timeoutLeft < 0)
timeoutLeft = 0;
}
+
+ timeval tnext;
+ if (d->timerList.timerWait(tnext)) {
+ int timeoutNext = timevalToMillisecs(tnext);
+ if (timeoutNext < timeoutLeft || timeoutTotal == -1) {
+ timeoutTotal = timeoutLeft = timeoutNext;
+ startTime = qt_gettime();
+ }
+ }
}
// Wait for event or file to be ready
diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp
index 3616d0e825..b9bd74c2bd 100644
--- a/src/corelib/kernel/qmetaobject.cpp
+++ b/src/corelib/kernel/qmetaobject.cpp
@@ -472,7 +472,7 @@ int QMetaObject::constructorCount() const
/*!
Returns the number of methods in this class, including the number of
- properties provided by each base class. These include signals and slots
+ methods provided by each base class. These include signals and slots
as well as normal member functions.
Use code like the following to obtain a QStringList containing the methods
diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp
index 6194f20912..0d737ac1a3 100644
--- a/src/corelib/kernel/qmetatype.cpp
+++ b/src/corelib/kernel/qmetatype.cpp
@@ -240,6 +240,7 @@ struct DefinedTypesFilter {
\omitvalue PointerToQObject
\omitvalue WeakPointerToQObject
\omitvalue TrackingPointerToQObject
+ \omitvalue WasDeclaredAsMetaType
*/
/*!
diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp
index f84644b37d..f4770b528c 100644
--- a/src/corelib/tools/qdatetime.cpp
+++ b/src/corelib/tools/qdatetime.cpp
@@ -3533,6 +3533,18 @@ QDateTime QDateTime::fromString(const QString& s, Qt::DateFormat f)
This could have meant 1 January 00:30.00 but the M will grab
two digits.
+ Incorrectly specified fields of the \a string will cause an invalid
+ QDateTime to be returned. For example, consider the following code,
+ where the two digit year 12 is read as 1912 (see the table below for all
+ field defaults); the resulting datetime is invalid because 23 April 1912
+ was a Tuesday, not a Monday:
+
+ \snippet code/src_corelib_tools_qdatetime.cpp 20
+
+ The correct code is:
+
+ \snippet code/src_corelib_tools_qdatetime.cpp 21
+
For any field that is not represented in the format, the following
defaults are used:
diff --git a/src/corelib/tools/qlocale_win.cpp b/src/corelib/tools/qlocale_win.cpp
index ec9db24b57..a61f9b39fe 100644
--- a/src/corelib/tools/qlocale_win.cpp
+++ b/src/corelib/tools/qlocale_win.cpp
@@ -113,8 +113,6 @@ struct QSystemLocalePrivate
void update();
private:
- QByteArray langEnvVar;
-
enum SubstitutionType {
SUnknown,
SContext,
@@ -142,7 +140,6 @@ Q_GLOBAL_STATIC(QSystemLocalePrivate, systemLocalePrivate)
QSystemLocalePrivate::QSystemLocalePrivate()
: substitutionType(SUnknown)
{
- langEnvVar = qgetenv("LANG");
lcid = GetUserDefaultLCID();
}
diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h
index 6393cc3970..2c8e03a5dd 100644
--- a/src/corelib/tools/qsharedpointer_impl.h
+++ b/src/corelib/tools/qsharedpointer_impl.h
@@ -813,6 +813,8 @@ template <class X, class T>
Q_INLINE_TEMPLATE QSharedPointer<X> qSharedPointerDynamicCast(const QSharedPointer<T> &src)
{
register X *ptr = dynamic_cast<X *>(src.data()); // if you get an error in this line, the cast is invalid
+ if (!ptr)
+ return QSharedPointer<X>();
return QtSharedPointer::copyAndSetPointer(ptr, src);
}
template <class X, class T>
diff --git a/src/gui/accessible/qaccessible.cpp b/src/gui/accessible/qaccessible.cpp
index a32f771bd0..28a3afbbf0 100644
--- a/src/gui/accessible/qaccessible.cpp
+++ b/src/gui/accessible/qaccessible.cpp
@@ -56,8 +56,6 @@
QT_BEGIN_NAMESPACE
-#ifndef QT_NO_ACCESSIBILITY
-
/*!
\class QAccessible
\brief The QAccessible class provides enums and static functions
@@ -442,19 +440,23 @@ QAccessible::RootObjectHandler QAccessible::rootObjectHandler = 0;
static bool accessibility_active = false;
static bool cleanupAdded = false;
+#ifndef QT_NO_ACCESSIBILITY
static QPlatformAccessibility *platformAccessibility()
{
QPlatformIntegration *pfIntegration = QGuiApplicationPrivate::platformIntegration();
return pfIntegration ? pfIntegration->accessibility() : 0;
}
+#endif
/*!
\internal
*/
void QAccessible::cleanup()
{
+#ifndef QT_NO_ACCESSIBILITY
if (QPlatformAccessibility *pfAccessibility = platformAccessibility())
pfAccessibility->cleanup();
+#endif
}
static void qAccessibleCleanup()
@@ -615,8 +617,10 @@ QAccessibleInterface *QAccessible::queryAccessibleInterface(QObject *object)
mo = mo->superClass();
}
+#ifndef QT_NO_ACCESSIBILITY
if (object == qApp)
return new QAccessibleApplication;
+#endif
return 0;
}
@@ -656,8 +660,10 @@ void QAccessible::setRootObject(QObject *object)
return;
}
+#ifndef QT_NO_ACCESSIBILITY
if (QPlatformAccessibility *pfAccessibility = platformAccessibility())
pfAccessibility->setRootObject(object);
+#endif
}
/*!
@@ -689,8 +695,10 @@ void QAccessible::updateAccessibility(QAccessibleEvent *event)
if (!isActive())
return;
+#ifndef QT_NO_ACCESSIBILITY
if (QPlatformAccessibility *pfAccessibility = platformAccessibility())
pfAccessibility->notifyAccessibilityUpdate(event);
+#endif
}
#if QT_DEPRECATED_SINCE(5, 0)
@@ -1544,7 +1552,5 @@ QDebug operator<<(QDebug d, const QAccessibleEvent &ev)
#endif
-#endif // QT_NO_ACCESSIBILITY
-
QT_END_NAMESPACE
diff --git a/src/gui/accessible/qaccessible.h b/src/gui/accessible/qaccessible.h
index 5bcf9e7d0d..5f61634ba2 100644
--- a/src/gui/accessible/qaccessible.h
+++ b/src/gui/accessible/qaccessible.h
@@ -57,7 +57,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-#ifndef QT_NO_ACCESSIBILITY
class QAccessibleInterface;
class QAccessibleEvent;
@@ -677,8 +676,6 @@ inline void QAccessible::updateAccessibility(QObject *object, int child, Event r
}
#endif
-#endif // QT_NO_ACCESSIBILITY
-
QT_END_NAMESPACE
QT_END_HEADER
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index 72e95c996c..190d52776a 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -1392,7 +1392,7 @@ void QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::Mo
// Ignore mouse events that don't change the current state.
return;
}
- buttons = e->buttons;
+ mouse_buttons = buttons = e->buttons;
if (button & e->buttons) {
ulong doubleClickInterval = static_cast<ulong>(qApp->styleHints()->mouseDoubleClickInterval());
doubleClick = e->timestamp - mousePressTime < doubleClickInterval && button == mousePressButton;
@@ -1688,7 +1688,10 @@ void QGuiApplicationPrivate::processTabletEvent(QWindowSystemInterfacePrivate::T
type = e->down ? QEvent::TabletPress : QEvent::TabletRelease;
tabletState = e->down;
}
+
QWindow *window = e->window.data();
+ modifier_buttons = e->modifiers;
+
bool localValid = true;
// If window is null, pick one based on the global position and make sure all
// subsequent events up to the release are delivered to that same window.
@@ -1719,7 +1722,7 @@ void QGuiApplicationPrivate::processTabletEvent(QWindowSystemInterfacePrivate::T
QTabletEvent ev(type, local, e->global,
e->device, e->pointerType, e->pressure, e->xTilt, e->yTilt,
e->tangentialPressure, e->rotation, e->z,
- e->mods, e->uid);
+ e->modifiers, e->uid);
ev.setTimestamp(e->timestamp);
QGuiApplication::sendSpontaneousEvent(window, &ev);
#else
diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp
index b6d592e050..22ad748fb5 100644
--- a/src/gui/kernel/qwindow.cpp
+++ b/src/gui/kernel/qwindow.cpp
@@ -1105,16 +1105,16 @@ void QWindow::setGeometry(const QRect &rect)
d->platformWindow->setGeometry(rect);
} else {
d->geometry = rect;
- }
- if (rect.x() != oldRect.x())
- emit xChanged(rect.x());
- if (rect.y() != oldRect.y())
- emit yChanged(rect.y());
- if (rect.width() != oldRect.width())
- emit widthChanged(rect.width());
- if (rect.height() != oldRect.height())
- emit heightChanged(rect.height());
+ if (rect.x() != oldRect.x())
+ emit xChanged(rect.x());
+ if (rect.y() != oldRect.y())
+ emit yChanged(rect.y());
+ if (rect.width() != oldRect.width())
+ emit widthChanged(rect.width());
+ if (rect.height() != oldRect.height())
+ emit heightChanged(rect.height());
+ }
}
/*!
diff --git a/src/gui/kernel/qwindowsysteminterface_p.h b/src/gui/kernel/qwindowsysteminterface_p.h
index e8d2a85dd9..dfdf7e9e93 100644
--- a/src/gui/kernel/qwindowsysteminterface_p.h
+++ b/src/gui/kernel/qwindowsysteminterface_p.h
@@ -302,10 +302,10 @@ public:
TabletEvent(QWindow *w, ulong time, bool down, const QPointF &local, const QPointF &global,
int device, int pointerType, qreal pressure, int xTilt, int yTilt, qreal tpressure,
qreal rotation, int z, qint64 uid, Qt::KeyboardModifiers mods)
- : InputEvent(w, time, Tablet, Qt::NoModifier),
+ : InputEvent(w, time, Tablet, mods),
down(down), local(local), global(global), device(device), pointerType(pointerType),
pressure(pressure), xTilt(xTilt), yTilt(yTilt), tangentialPressure(tpressure),
- rotation(rotation), z(z), uid(uid), mods(mods) { }
+ rotation(rotation), z(z), uid(uid) { }
bool down;
QPointF local;
QPointF global;
@@ -318,7 +318,6 @@ public:
qreal rotation;
int z;
qint64 uid;
- Qt::KeyboardModifiers mods;
};
class TabletEnterProximityEvent : public InputEvent {
diff --git a/src/gui/opengl/qtriangulator.cpp b/src/gui/opengl/qtriangulator.cpp
index b506ffdc6a..d31c260f3d 100644
--- a/src/gui/opengl/qtriangulator.cpp
+++ b/src/gui/opengl/qtriangulator.cpp
@@ -220,23 +220,6 @@ static inline bool qPointIsLeftOfLine(const QPodPoint &p, const QPodPoint &v1, c
return QT_PREPEND_NAMESPACE(qPointDistanceFromLine)(p, v1, v2) < 0;
}
-// Return:
-// -1 if u < v
-// 0 if u == v
-// 1 if u > v
-static int comparePoints(const QPodPoint &u, const QPodPoint &v)
-{
- if (u.y < v.y)
- return -1;
- if (u.y > v.y)
- return 1;
- if (u.x < v.x)
- return -1;
- if (u.x > v.x)
- return 1;
- return 0;
-}
-
//============================================================================//
// QIntersectionPoint //
//============================================================================//
@@ -632,16 +615,6 @@ public:
bool pointingUp, originallyPointingUp;
};
- friend class CompareEdges;
- class CompareEdges
- {
- public:
- inline CompareEdges(ComplexToSimple *parent) : m_parent(parent) { }
- bool operator () (int i, int j) const;
- private:
- ComplexToSimple *m_parent;
- };
-
struct Intersection
{
bool operator < (const Intersection &other) const {return other.intersectionPoint < intersectionPoint;}
@@ -1654,18 +1627,6 @@ void QTriangulator<T>::ComplexToSimple::removeUnusedPoints() {
}
template <typename T>
-bool QTriangulator<T>::ComplexToSimple::CompareEdges::operator () (int i, int j) const
-{
- int cmp = comparePoints(m_parent->m_parent->m_vertices.at(m_parent->m_edges.at(i).from),
- m_parent->m_parent->m_vertices.at(m_parent->m_edges.at(j).from));
- if (cmp == 0) {
- cmp = comparePoints(m_parent->m_parent->m_vertices.at(m_parent->m_edges.at(i).to),
- m_parent->m_parent->m_vertices.at(m_parent->m_edges.at(j).to));
- }
- return cmp > 0;
-}
-
-template <typename T>
inline bool QTriangulator<T>::ComplexToSimple::Event::operator < (const Event &other) const
{
if (point == other.point)
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp
index 6a749cfe84..bf83b8f862 100644
--- a/src/gui/text/qtextengine.cpp
+++ b/src/gui/text/qtextengine.cpp
@@ -1853,7 +1853,7 @@ void QTextEngine::justify(const QScriptLine &line)
itemize();
if (!forceJustification) {
- int end = line.from + (int)line.length;
+ int end = line.from + (int)line.length + line.trailingSpaces;
if (end == layoutData->string.length())
return; // no justification at end of paragraph
if (end && layoutData->items[findItem(end-1)].analysis.flags == QScriptAnalysis::LineOrParagraphSeparator)
@@ -1908,6 +1908,8 @@ void QTextEngine::justify(const QScriptLine &line)
int gs = log_clusters[start];
int ge = (end == length(firstItem+i) ? si.num_glyphs : log_clusters[end]);
+ Q_ASSERT(ge <= si.num_glyphs);
+
const QGlyphLayout g = shapedGlyphs(&si);
for (int i = gs; i < ge; ++i) {
diff --git a/src/network/ssl/qsslcertificate.cpp b/src/network/ssl/qsslcertificate.cpp
index 6d3a77b45f..fbe60e99bf 100644
--- a/src/network/ssl/qsslcertificate.cpp
+++ b/src/network/ssl/qsslcertificate.cpp
@@ -1205,6 +1205,9 @@ static const char *certificate_blacklist[] = {
"4c:0e:63:6a", "Digisign Server ID - (Enrich)", // (Malaysian) Digicert Sdn. Bhd. cross-signed by Entrust
"72:03:21:05:c5:0c:08:57:3d:8e:a5:30:4e:fe:e8:b0", "UTN-USERFirst-Hardware", // comodogate test certificate
"41", "MD5 Collisions Inc. (http://www.phreedom.org/md5)", // http://www.phreedom.org/research/rogue-ca/
+
+ "08:27", "*.EGO.GOV.TR", // Turktrust mis-issued intermediate certificate
+ "08:64", "e-islem.kktcmerkezbankasi.org", // Turktrust mis-issued intermediate certificate
0
};
diff --git a/src/platformsupport/linuxaccessibility/application.cpp b/src/platformsupport/linuxaccessibility/application.cpp
index 22059de864..c2049e536a 100644
--- a/src/platformsupport/linuxaccessibility/application.cpp
+++ b/src/platformsupport/linuxaccessibility/application.cpp
@@ -52,8 +52,6 @@
QT_BEGIN_NAMESPACE
-#ifndef QT_NO_ACCESSIBILITY
-
/*!
\class QSpiApplicationAdaptor
\internal
@@ -219,6 +217,4 @@ void QSpiApplicationAdaptor::notifyKeyboardListenerError(const QDBusError& error
}
}
-#endif // QT_NO_ACCESSIBILITY
-
QT_END_NAMESPACE
diff --git a/src/platformsupport/linuxaccessibility/application_p.h b/src/platformsupport/linuxaccessibility/application_p.h
index 4a60bbfe84..14b8a71b42 100644
--- a/src/platformsupport/linuxaccessibility/application_p.h
+++ b/src/platformsupport/linuxaccessibility/application_p.h
@@ -49,8 +49,6 @@
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-#ifndef QT_NO_ACCESSIBILITY
-
/*
* Used for the root object.
*
@@ -82,8 +80,6 @@ private:
QDBusConnection dbusConnection;
};
-#endif // QT_NO_ACCESSIBILITY
-
QT_END_NAMESPACE
QT_END_HEADER
diff --git a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp
index 534cf4b73a..342b796fbe 100644
--- a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp
+++ b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp
@@ -65,8 +65,6 @@
QT_BEGIN_NAMESPACE
-#ifndef QT_NO_ACCESSIBILITY
-
static bool isDebugging = false;
#define qAtspiDebug if (!::isDebugging); else qDebug
@@ -2359,6 +2357,4 @@ bool AtSpiAdaptor::tableInterface(const QAIPointer &interface, const QString &fu
return true;
}
-#endif // QT_NO_ACCESSIBILITY
-
QT_END_NAMESPACE
diff --git a/src/platformsupport/linuxaccessibility/atspiadaptor_p.h b/src/platformsupport/linuxaccessibility/atspiadaptor_p.h
index e6f95195fe..5b5eb60228 100644
--- a/src/platformsupport/linuxaccessibility/atspiadaptor_p.h
+++ b/src/platformsupport/linuxaccessibility/atspiadaptor_p.h
@@ -56,8 +56,6 @@
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-#ifndef QT_NO_ACCESSIBILITY
-
class QAccessibleInterface;
class QSpiAccessibleInterface;
class QSpiApplicationAdaptor;
@@ -218,8 +216,6 @@ private:
uint sendWindow_unshade : 1;
};
-#endif // QT_NO_ACCESSIBILITY
-
QT_END_NAMESPACE
QT_END_HEADER
diff --git a/src/platformsupport/linuxaccessibility/bridge.cpp b/src/platformsupport/linuxaccessibility/bridge.cpp
index bf2486fc57..f22dc4e191 100644
--- a/src/platformsupport/linuxaccessibility/bridge.cpp
+++ b/src/platformsupport/linuxaccessibility/bridge.cpp
@@ -56,8 +56,6 @@
QT_BEGIN_NAMESPACE
-#ifndef QT_NO_ACCESSIBILITY
-
/*!
\class QSpiAccessibleBridge
\internal
@@ -184,6 +182,4 @@ void QSpiAccessibleBridge::initializeConstantMappings()
qSpiRoleMapping.insert(map[i].role, RoleNames(map[i].spiRole, QLatin1String(map[i].name), tr(map[i].name)));
}
-#endif // QT_NO_ACCESSIBILITY
-
QT_END_NAMESPACE
diff --git a/src/platformsupport/linuxaccessibility/bridge_p.h b/src/platformsupport/linuxaccessibility/bridge_p.h
index 3865e06489..f7c243cfbb 100644
--- a/src/platformsupport/linuxaccessibility/bridge_p.h
+++ b/src/platformsupport/linuxaccessibility/bridge_p.h
@@ -51,8 +51,6 @@ class DeviceEventControllerAdaptor;
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-#ifndef QT_NO_ACCESSIBILITY
-
class DBusConnection;
class QSpiDBusCache;
class AtSpiAdaptor;
@@ -81,8 +79,6 @@ private:
bool initialized;
};
-#endif // QT_NO_ACCESSIBILITY
-
QT_END_NAMESPACE
QT_END_HEADER
diff --git a/src/platformsupport/linuxaccessibility/cache.cpp b/src/platformsupport/linuxaccessibility/cache.cpp
index 9201fc1d8b..81a54a1ce5 100644
--- a/src/platformsupport/linuxaccessibility/cache.cpp
+++ b/src/platformsupport/linuxaccessibility/cache.cpp
@@ -49,8 +49,6 @@
QT_BEGIN_NAMESPACE
-#ifndef QT_NO_ACCESSIBILITY
-
/*!
\class QSpiDBusCache
\internal
@@ -91,6 +89,4 @@ QSpiAccessibleCacheArray QSpiDBusCache::GetItems()
return cacheArray;
}
-#endif // QT_NO_ACCESSIBILITY
-
QT_END_NAMESPACE
diff --git a/src/platformsupport/linuxaccessibility/cache_p.h b/src/platformsupport/linuxaccessibility/cache_p.h
index 4b606eadb1..898f06f0d6 100644
--- a/src/platformsupport/linuxaccessibility/cache_p.h
+++ b/src/platformsupport/linuxaccessibility/cache_p.h
@@ -49,8 +49,6 @@
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-#ifndef QT_NO_ACCESSIBILITY
-
class QSpiDBusCache : public QObject
{
Q_OBJECT
@@ -68,8 +66,6 @@ public Q_SLOTS:
QSpiAccessibleCacheArray GetItems();
};
-#endif // QT_NO_ACCESSIBILITY
-
QT_END_NAMESPACE
QT_END_HEADER
diff --git a/src/platformsupport/linuxaccessibility/constant_mappings.cpp b/src/platformsupport/linuxaccessibility/constant_mappings.cpp
index 5138b9a163..1840868aa2 100644
--- a/src/platformsupport/linuxaccessibility/constant_mappings.cpp
+++ b/src/platformsupport/linuxaccessibility/constant_mappings.cpp
@@ -55,8 +55,6 @@
QT_BEGIN_NAMESPACE
-#ifndef QT_NO_ACCESSIBILITY
-
QHash <QAccessible::Role, RoleNames> qSpiRoleMapping;
quint64 spiStatesFromQState(QAccessible::State state)
@@ -156,6 +154,4 @@ AtspiRelationType qAccessibleRelationToAtSpiRelation(QAccessible::Relation relat
return ATSPI_RELATION_NULL;
}
-#endif // QT_NO_ACCESSIBILITY
-
QT_END_NAMESPACE
diff --git a/src/platformsupport/linuxaccessibility/constant_mappings_p.h b/src/platformsupport/linuxaccessibility/constant_mappings_p.h
index 870a3a4b2a..837a68516d 100644
--- a/src/platformsupport/linuxaccessibility/constant_mappings_p.h
+++ b/src/platformsupport/linuxaccessibility/constant_mappings_p.h
@@ -53,7 +53,6 @@
#include <QtGui/QAccessible>
#include <atspi/atspi-constants.h>
-#ifndef QT_NO_ACCESSIBILITY
// interface names from at-spi2-core/atspi/atspi-misc-private.h
#define ATSPI_DBUS_NAME_REGISTRY "org.a11y.atspi.Registry"
@@ -136,6 +135,4 @@ AtspiRelationType qAccessibleRelationToAtSpiRelation(QAccessible::Relation relat
QT_END_NAMESPACE
QT_END_HEADER
-#endif // QT_NO_ACCESSIBILITY
-
#endif /* Q_SPI_CONSTANT_MAPPINGS_H */
diff --git a/src/platformsupport/linuxaccessibility/dbusconnection.cpp b/src/platformsupport/linuxaccessibility/dbusconnection.cpp
index a38570a465..a99e8f0a5e 100644
--- a/src/platformsupport/linuxaccessibility/dbusconnection.cpp
+++ b/src/platformsupport/linuxaccessibility/dbusconnection.cpp
@@ -48,8 +48,6 @@
QT_BEGIN_NAMESPACE
-#ifndef QT_NO_ACCESSIBILITY
-
/*!
\class DBusConnection
\internal
@@ -106,6 +104,4 @@ QDBusConnection DBusConnection::connection() const
return dbusConnection;
}
-#endif // QT_NO_ACCESSIBILITY
-
QT_END_NAMESPACE
diff --git a/src/platformsupport/linuxaccessibility/dbusconnection_p.h b/src/platformsupport/linuxaccessibility/dbusconnection_p.h
index da090da9cf..674cf28c34 100644
--- a/src/platformsupport/linuxaccessibility/dbusconnection_p.h
+++ b/src/platformsupport/linuxaccessibility/dbusconnection_p.h
@@ -49,8 +49,6 @@
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-#ifndef QT_NO_ACCESSIBILITY
-
class DBusConnection
{
public:
@@ -64,8 +62,6 @@ private:
QDBusConnection dbusConnection;
};
-#endif // QT_NO_ACCESSIBILITY
-
QT_END_NAMESPACE
QT_END_HEADER
diff --git a/src/platformsupport/linuxaccessibility/struct_marshallers.cpp b/src/platformsupport/linuxaccessibility/struct_marshallers.cpp
index 027993c4bd..713e26f25a 100644
--- a/src/platformsupport/linuxaccessibility/struct_marshallers.cpp
+++ b/src/platformsupport/linuxaccessibility/struct_marshallers.cpp
@@ -50,8 +50,6 @@
QT_BEGIN_NAMESPACE
-#ifndef QT_NO_ACCESSIBILITY
-
QSpiObjectReference::QSpiObjectReference()
: path(QDBusObjectPath(ATSPI_DBUS_PATH_NULL))
{}
@@ -236,6 +234,4 @@ void qSpiInitializeStructTypes()
qDBusRegisterMetaType<QSpiRelationArray>();
}
-#endif // QT_NO_ACCESSIBILITY
-
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/cocoa/qcocoaintegration.h b/src/plugins/platforms/cocoa/qcocoaintegration.h
index e455a3552e..69801a69f1 100644
--- a/src/plugins/platforms/cocoa/qcocoaintegration.h
+++ b/src/plugins/platforms/cocoa/qcocoaintegration.h
@@ -80,11 +80,11 @@ public:
// ----------------------------------------------------
// Additional methods
void setVirtualSiblings(QList<QPlatformScreen *> siblings) { m_siblings = siblings; }
- NSScreen *osScreen() const { return m_screen; }
+ NSScreen *osScreen() const;
void updateGeometry();
public:
- NSScreen *m_screen;
+ int m_screenIndex;
QRect m_geometry;
QRect m_availableGeometry;
QDpi m_logicalDpi;
diff --git a/src/plugins/platforms/cocoa/qcocoaintegration.mm b/src/plugins/platforms/cocoa/qcocoaintegration.mm
index e096096e99..f4da7cc58a 100644
--- a/src/plugins/platforms/cocoa/qcocoaintegration.mm
+++ b/src/plugins/platforms/cocoa/qcocoaintegration.mm
@@ -70,9 +70,8 @@ static void initResources()
QT_BEGIN_NAMESPACE
QCocoaScreen::QCocoaScreen(int screenIndex) :
- QPlatformScreen(), m_refreshRate(60.0)
+ QPlatformScreen(), m_screenIndex(screenIndex), m_refreshRate(60.0)
{
- m_screen = [[NSScreen screens] objectAtIndex:screenIndex];
updateGeometry();
m_cursor = new QCocoaCursor;
}
@@ -82,19 +81,25 @@ QCocoaScreen::~QCocoaScreen()
delete m_cursor;
}
+NSScreen *QCocoaScreen::osScreen() const
+{
+ return [[NSScreen screens] objectAtIndex:m_screenIndex];
+}
+
void QCocoaScreen::updateGeometry()
{
- NSRect frameRect = [m_screen frame];
+ NSScreen *nsScreen = osScreen();
+ NSRect frameRect = [nsScreen frame];
m_geometry = QRect(frameRect.origin.x, frameRect.origin.y, frameRect.size.width, frameRect.size.height);
- NSRect visibleRect = [m_screen visibleFrame];
+ NSRect visibleRect = [nsScreen visibleFrame];
m_availableGeometry = QRect(visibleRect.origin.x,
frameRect.size.height - (visibleRect.origin.y + visibleRect.size.height), // invert y
visibleRect.size.width, visibleRect.size.height);
m_format = QImage::Format_RGB32;
- m_depth = NSBitsPerPixelFromDepth([m_screen depth]);
+ m_depth = NSBitsPerPixelFromDepth([nsScreen depth]);
- NSDictionary *devDesc = [m_screen deviceDescription];
+ NSDictionary *devDesc = [nsScreen deviceDescription];
CGDirectDisplayID dpy = [[devDesc objectForKey:@"NSScreenNumber"] unsignedIntValue];
CGSize size = CGDisplayScreenSize(dpy);
m_physicalSize = QSizeF(size.width, size.height);
@@ -119,7 +124,7 @@ qreal QCocoaScreen::devicePixelRatio() const
{
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_7) {
- return qreal([m_screen backingScaleFactor]);
+ return qreal([osScreen() backingScaleFactor]);
} else
#endif
{
diff --git a/src/plugins/platforms/qnx/qqnxrasterbackingstore.cpp b/src/plugins/platforms/qnx/qqnxrasterbackingstore.cpp
index 11babe3aaa..47a72f173b 100644
--- a/src/plugins/platforms/qnx/qqnxrasterbackingstore.cpp
+++ b/src/plugins/platforms/qnx/qqnxrasterbackingstore.cpp
@@ -60,8 +60,7 @@ QQnxRasterBackingStore::QQnxRasterBackingStore(QWindow *window)
{
qRasterBackingStoreDebug() << Q_FUNC_INFO << "w =" << window;
- // save platform window associated with widget
- m_platformWindow = static_cast<QQnxWindow*>(window->handle());
+ m_window = window;
}
QQnxRasterBackingStore::~QQnxRasterBackingStore()
@@ -71,8 +70,9 @@ QQnxRasterBackingStore::~QQnxRasterBackingStore()
QPaintDevice *QQnxRasterBackingStore::paintDevice()
{
- if (m_platformWindow->hasBuffers())
- return m_platformWindow->renderBuffer().image();
+ QQnxWindow *platformWindow = this->platformWindow();
+ if (platformWindow->hasBuffers())
+ return platformWindow->renderBuffer().image();
return 0;
}
@@ -85,7 +85,8 @@ void QQnxRasterBackingStore::flush(QWindow *window, const QRegion &region, const
if (window)
targetWindow = static_cast<QQnxWindow *>(window->handle());
- if (!targetWindow || targetWindow == m_platformWindow) {
+ QQnxWindow *platformWindow = this->platformWindow();
+ if (!targetWindow || targetWindow == platformWindow) {
// visit all pending scroll operations
for (int i = m_scrollOpList.size() - 1; i >= 0; i--) {
@@ -93,14 +94,14 @@ void QQnxRasterBackingStore::flush(QWindow *window, const QRegion &region, const
// do the scroll operation
ScrollOp &op = m_scrollOpList[i];
QRegion srcArea = op.totalArea.intersected( op.totalArea.translated(-op.dx, -op.dy) );
- m_platformWindow->scroll(srcArea, op.dx, op.dy);
+ platformWindow->scroll(srcArea, op.dx, op.dy);
}
// clear all pending scroll operations
m_scrollOpList.clear();
// update the display with newly rendered content
- m_platformWindow->post(region);
+ platformWindow->post(region);
} else if (targetWindow) {
// The contents of the backing store should be flushed to a different window than the
@@ -119,7 +120,7 @@ void QQnxRasterBackingStore::flush(QWindow *window, const QRegion &region, const
Q_ASSERT(!m_hasUnflushedPaintOperations);
targetWindow->adjustBufferSize();
- targetWindow->blitFrom(m_platformWindow, offset, region);
+ targetWindow->blitFrom(platformWindow, offset, region);
targetWindow->post(region);
} else {
@@ -177,7 +178,7 @@ void QQnxRasterBackingStore::beginPaint(const QRegion &region)
qRasterBackingStoreDebug() << Q_FUNC_INFO << "w =" << window();
m_hasUnflushedPaintOperations = true;
- m_platformWindow->adjustBufferSize();
+ platformWindow()->adjustBufferSize();
}
void QQnxRasterBackingStore::endPaint(const QRegion &region)
@@ -186,4 +187,10 @@ void QQnxRasterBackingStore::endPaint(const QRegion &region)
qRasterBackingStoreDebug() << Q_FUNC_INFO << "w =" << window();
}
+QQnxWindow *QQnxRasterBackingStore::platformWindow() const
+{
+ Q_ASSERT(m_window->handle());
+ return static_cast<QQnxWindow*>(m_window->handle());
+}
+
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/qnx/qqnxrasterbackingstore.h b/src/plugins/platforms/qnx/qqnxrasterbackingstore.h
index 8abd81f217..a344ff209d 100644
--- a/src/plugins/platforms/qnx/qqnxrasterbackingstore.h
+++ b/src/plugins/platforms/qnx/qqnxrasterbackingstore.h
@@ -72,7 +72,9 @@ private:
int dy;
};
- QQnxWindow *m_platformWindow;
+ QQnxWindow *platformWindow() const;
+
+ QWindow *m_window;
QList<ScrollOp> m_scrollOpList;
bool m_hasUnflushedPaintOperations;
};
diff --git a/src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.cpp b/src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.cpp
index f1bdc77303..5902f05663 100644
--- a/src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.cpp
+++ b/src/plugins/platforms/windows/accessible/qwindowsmsaaaccessible.cpp
@@ -767,9 +767,11 @@ HRESULT STDMETHODCALLTYPE QWindowsMsaaAccessible::get_accChild(VARIANT varChildI
// actually ask for the same object. As a consequence, we need to clone ourselves:
if (QAccessibleInterface *par = accessible->parent()) {
const int indexOf = par->indexOfChild(accessible);
- QAccessibleInterface *clone = par->child(indexOf);
+ if (indexOf == -1)
+ qWarning() << "inconsistent hierarchy, parent:" << par << "child:" << accessible;
+ else
+ acc = par->child(indexOf);
delete par;
- acc = clone;
}
}
}
diff --git a/src/plugins/platforms/windows/qwindowsbackingstore.cpp b/src/plugins/platforms/windows/qwindowsbackingstore.cpp
index 04fe558541..b7937b4d84 100644
--- a/src/plugins/platforms/windows/qwindowsbackingstore.cpp
+++ b/src/plugins/platforms/windows/qwindowsbackingstore.cpp
@@ -100,10 +100,15 @@ void QWindowsBackingStore::flush(QWindow *window, const QRegion &region,
POINT ptDst = {r.x(), r.y()};
POINT ptSrc = {0, 0};
BLENDFUNCTION blend = {AC_SRC_OVER, 0, (BYTE)(255.0 * rw->opacity()), AC_SRC_ALPHA};
- RECT dirty = {dirtyRect.x(), dirtyRect.y(),
- dirtyRect.x() + dirtyRect.width(), dirtyRect.y() + dirtyRect.height()};
- UPDATELAYEREDWINDOWINFO info = {sizeof(info), NULL, &ptDst, &size, m_image->hdc(), &ptSrc, 0, &blend, ULW_ALPHA, &dirty};
- QWindowsContext::user32dll.updateLayeredWindowIndirect(rw->handle(), &info);
+
+ if (QWindowsContext::user32dll.updateLayeredWindowIndirect) {
+ RECT dirty = {dirtyRect.x(), dirtyRect.y(),
+ dirtyRect.x() + dirtyRect.width(), dirtyRect.y() + dirtyRect.height()};
+ UPDATELAYEREDWINDOWINFO info = {sizeof(info), NULL, &ptDst, &size, m_image->hdc(), &ptSrc, 0, &blend, ULW_ALPHA, &dirty};
+ QWindowsContext::user32dll.updateLayeredWindowIndirect(rw->handle(), &info);
+ } else {
+ QWindowsContext::user32dll.updateLayeredWindow(rw->handle(), NULL, &ptDst, &size, m_image->hdc(), &ptSrc, 0, &blend, ULW_ALPHA);
+ }
} else {
#endif
const HDC dc = rw->getDC();
diff --git a/src/plugins/platforms/windows/qwindowsintegration.cpp b/src/plugins/platforms/windows/qwindowsintegration.cpp
index f6011ae082..f5ad442e68 100644
--- a/src/plugins/platforms/windows/qwindowsintegration.cpp
+++ b/src/plugins/platforms/windows/qwindowsintegration.cpp
@@ -419,9 +419,9 @@ inline bool isQMLApplication()
{
// check if the QtQuick library is loaded
#ifdef _DEBUG
- HMODULE handle = GetModuleHandle(L"QtQuick" QT_LIBINFIX L"d5.dll");
+ HMODULE handle = GetModuleHandle(L"Qt5Quick" QT_LIBINFIX L"d.dll");
#else
- HMODULE handle = GetModuleHandle(L"QtQuick" QT_LIBINFIX L"5.dll");
+ HMODULE handle = GetModuleHandle(L"Qt5Quick" QT_LIBINFIX L".dll");
#endif
return (handle != NULL);
}
diff --git a/src/plugins/platforms/xcb/qxcbcursor.cpp b/src/plugins/platforms/xcb/qxcbcursor.cpp
index e1dfe3d6c0..e2843d04dc 100644
--- a/src/plugins/platforms/xcb/qxcbcursor.cpp
+++ b/src/plugins/platforms/xcb/qxcbcursor.cpp
@@ -545,7 +545,7 @@ QPoint QXcbCursor::pos() const
void QXcbCursor::setPos(const QPoint &pos)
{
- xcb_window_t root;
+ xcb_window_t root = 0;
queryPointer(connection(), &root, 0);
xcb_warp_pointer(xcb_connection(), XCB_NONE, root, 0, 0, 0, 0, pos.x(), pos.y());
xcb_flush(xcb_connection());
diff --git a/src/plugins/platforms/xcb/qxcbnativeinterface.cpp b/src/plugins/platforms/xcb/qxcbnativeinterface.cpp
index 9c360df900..9a24390bac 100644
--- a/src/plugins/platforms/xcb/qxcbnativeinterface.cpp
+++ b/src/plugins/platforms/xcb/qxcbnativeinterface.cpp
@@ -250,6 +250,7 @@ void * QXcbNativeInterface::eglContextForContext(QOpenGLContext *context)
QEGLPlatformContext *eglPlatformContext = static_cast<QEGLPlatformContext *>(context->handle());
return eglPlatformContext->eglContext();
#else
+ Q_UNUSED(context);
return 0;
#endif
}
diff --git a/src/testlib/doc/snippets/code/doc_src_qsignalspy.cpp b/src/testlib/doc/snippets/code/doc_src_qsignalspy.cpp
index 6741ae7942..694f206212 100644
--- a/src/testlib/doc/snippets/code/doc_src_qsignalspy.cpp
+++ b/src/testlib/doc/snippets/code/doc_src_qsignalspy.cpp
@@ -65,14 +65,14 @@ QVERIFY(arguments.at(2).type() == QVariant::double);
//! [2]
-qRegisterMetaType<QModelIndex>("QModelIndex");
-QSignalSpy spy(&model, SIGNAL(whatever(QModelIndex)));
+qRegisterMetaType<SomeStruct>();
+QSignalSpy spy(&model, SIGNAL(whatever(SomeStruct)));
//! [2]
//! [3]
// get the first argument from the first received signal:
-QModelIndex result = qvariant_cast<QModelIndex>(spy.at(0).at(0));
+SomeStruct result = qvariant_cast<SomeStruct>(spy.at(0).at(0));
//! [3]
diff --git a/src/testlib/qsignalspy.qdoc b/src/testlib/qsignalspy.qdoc
index d36716bf2e..3d7b17a145 100644
--- a/src/testlib/qsignalspy.qdoc
+++ b/src/testlib/qsignalspy.qdoc
@@ -54,7 +54,7 @@
\snippet code/doc_src_qsignalspy.cpp 2
- To retrieve the \c QModelIndex, you can use qvariant_cast:
+ To retrieve the instance, you can use qvariant_cast:
\snippet code/doc_src_qsignalspy.cpp 3
*/
diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp
index 9d3c5f8616..ed6262ce93 100644
--- a/src/widgets/kernel/qapplication.cpp
+++ b/src/widgets/kernel/qapplication.cpp
@@ -2709,16 +2709,48 @@ bool QApplication::notify(QObject *receiver, QEvent *e)
if (receiver->isWindowType())
QGuiApplicationPrivate::sendQWindowEventToQPlatformWindow(static_cast<QWindow *>(receiver), e);
- // capture the current mouse/keyboard state
if(e->spontaneous()) {
- if (e->type() == QEvent::MouseButtonPress
- || e->type() == QEvent::MouseButtonRelease) {
+ // Capture the current mouse and keyboard states. Doing so here is
+ // required in order to support QTestLib synthesized events. Real mouse
+ // and keyboard state updates from the platform plugin are managed by
+ // QGuiApplicationPrivate::process(Mouse|Wheel|Key|Touch|Tablet)Event();
+ switch (e->type()) {
+ case QEvent::MouseButtonPress:
+ {
QMouseEvent *me = static_cast<QMouseEvent*>(e);
- if(me->type() == QEvent::MouseButtonPress)
- QApplicationPrivate::mouse_buttons |= me->button();
- else
- QApplicationPrivate::mouse_buttons &= ~me->button();
+ QApplicationPrivate::modifier_buttons = me->modifiers();
+ QApplicationPrivate::mouse_buttons |= me->button();
+ break;
+ }
+ case QEvent::MouseButtonRelease:
+ {
+ QMouseEvent *me = static_cast<QMouseEvent*>(e);
+ QApplicationPrivate::modifier_buttons = me->modifiers();
+ QApplicationPrivate::mouse_buttons &= ~me->button();
+ break;
+ }
+ case QEvent::KeyPress:
+ case QEvent::KeyRelease:
+ case QEvent::MouseMove:
+#ifndef QT_NO_WHEELEVENT
+ case QEvent::Wheel:
+#endif
+ case QEvent::TouchBegin:
+ case QEvent::TouchUpdate:
+ case QEvent::TouchEnd:
+#ifndef QT_NO_TABLETEVENT
+ case QEvent::TabletMove:
+ case QEvent::TabletPress:
+ case QEvent::TabletRelease:
+#endif
+ {
+ QInputEvent *ie = static_cast<QInputEvent*>(e);
+ QApplicationPrivate::modifier_buttons = ie->modifiers();
+ break;
}
+ default:
+ break;
+ }
}
#ifndef QT_NO_GESTURES
diff --git a/src/widgets/styles/qgtkstyle_p.cpp b/src/widgets/styles/qgtkstyle_p.cpp
index ba41482ec5..782ef8d483 100644
--- a/src/widgets/styles/qgtkstyle_p.cpp
+++ b/src/widgets/styles/qgtkstyle_p.cpp
@@ -75,6 +75,7 @@
#include <QtWidgets/QToolBar>
#include <QtWidgets/QToolButton>
+#ifndef Q_OS_MAC
// X11 Includes:
// the following is necessary to work around breakage in many versions
@@ -90,6 +91,7 @@
#undef XRegisterIMInstantiateCallback
#undef XUnregisterIMInstantiateCallback
#undef XSetIMValues
+#endif
QT_BEGIN_NAMESPACE
@@ -210,7 +212,9 @@ Ptr_gconf_client_get_bool QGtkStylePrivate::gconf_client_get_bool = 0;
Ptr_gnome_icon_lookup_sync QGtkStylePrivate::gnome_icon_lookup_sync = 0;
Ptr_gnome_vfs_init QGtkStylePrivate::gnome_vfs_init = 0;
+#ifndef Q_OS_MAC
typedef int (*x11ErrorHandler)(Display*, XErrorEvent*);
+#endif
QT_END_NAMESPACE
@@ -540,10 +544,14 @@ void QGtkStylePrivate::initGtkWidgets() const
}
if (QGtkStylePrivate::gtk_init) {
+#ifndef Q_OS_MAC
// Gtk will set the Qt error handler so we have to reset it afterwards
x11ErrorHandler qt_x_errhandler = XSetErrorHandler(0);
+#endif
QGtkStylePrivate::gtk_init (NULL, NULL);
+#ifndef Q_OS_MAC
XSetErrorHandler(qt_x_errhandler);
+#endif
// make a window
GtkWidget* gtkWindow = QGtkStylePrivate::gtk_window_new(GTK_WINDOW_POPUP);
@@ -967,13 +975,14 @@ void QGtkStylePrivate::setupGtkFileChooser(GtkWidget* gtkFileChooser, QWidget *p
QWidget *modalFor = parent ? parent->window() : qApp->activeWindow();
if (modalFor) {
QGtkStylePrivate::gtk_widget_realize(gtkFileChooser); // Creates X window
+#ifndef Q_OS_MAC
XSetTransientForHint(QGtkStylePrivate::gdk_x11_drawable_get_xdisplay(gtkFileChooser->window),
QGtkStylePrivate::gdk_x11_drawable_get_xid(gtkFileChooser->window),
modalFor->winId());
#ifdef Q_WS_X11
QGtkStylePrivate::gdk_x11_window_set_user_time (gtkFileChooser->window, QX11Info::appUserTime());
#endif
-
+#endif
}
QFileInfo fileinfo(dir);
diff --git a/src/widgets/widgets/qtabbar.cpp b/src/widgets/widgets/qtabbar.cpp
index 8cd86dd3f1..84a1668b3c 100644
--- a/src/widgets/widgets/qtabbar.cpp
+++ b/src/widgets/widgets/qtabbar.cpp
@@ -1182,9 +1182,11 @@ void QTabBar::setCurrentIndex(int index)
d->layoutTab(index);
#ifndef QT_NO_ACCESSIBILITY
if (QAccessible::isActive()) {
- QAccessibleEvent focusEvent(this, QAccessible::Focus);
- focusEvent.setChild(index);
- QAccessible::updateAccessibility(&focusEvent);
+ if (hasFocus()) {
+ QAccessibleEvent focusEvent(this, QAccessible::Focus);
+ focusEvent.setChild(index);
+ QAccessible::updateAccessibility(&focusEvent);
+ }
QAccessibleEvent selectionEvent(this, QAccessible::Selection);
selectionEvent.setChild(index);
QAccessible::updateAccessibility(&selectionEvent);