From 5ea41a2efa67c2ca1fe13a00992a8b7cb29a00cf Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Mon, 3 Dec 2012 21:15:02 +0100 Subject: properly syncqt-ize harfbuzz headers we were already installing them into QtCore/private, so turn them into proper private headers to start with. this cleans up our project files. Change-Id: I0795f79e03b60b5854de9e4dc339e9b5a5e6fd87 Reviewed-by: Lars Knoll Reviewed-by: Joerg Bornemann --- src/platformsupport/fontdatabases/fontdatabases.pri | 1 - 1 file changed, 1 deletion(-) (limited to 'src/platformsupport') diff --git a/src/platformsupport/fontdatabases/fontdatabases.pri b/src/platformsupport/fontdatabases/fontdatabases.pri index 0fc4e71a3f..003017473b 100644 --- a/src/platformsupport/fontdatabases/fontdatabases.pri +++ b/src/platformsupport/fontdatabases/fontdatabases.pri @@ -1,5 +1,4 @@ DEFINES += QT_COMPILES_IN_HARFBUZZ -INCLUDEPATH += $$QT_SOURCE_TREE/src/3rdparty/harfbuzz/src !win32|contains(QT_CONFIG, freetype):!mac { include($$PWD/basic/basic.pri) -- cgit v1.2.3 From 0c5e2328284e97a293e1153c6ad1bcd2706e044a Mon Sep 17 00:00:00 2001 From: Volker Krause Date: Wed, 5 Dec 2012 11:42:58 +0100 Subject: Compile with QT_NO_CURSOR. Mostly straightforward, the a11y changes might look a bit drastic, but the base class QAccessibleTextWidget was already disabled in this case, so we have to obviously take out its sub-classes as well. Change-Id: I682ace20d6938688ddb1da23c3463f3c025fab8e Reviewed-by: Marc Mutz Reviewed-by: Tasuku Suzuki Reviewed-by: Frederik Gladhorn Reviewed-by: Lars Knoll Reviewed-by: Nicolas Arnaud-Cormos --- src/platformsupport/dnd/qsimpledrag.cpp | 2 ++ src/platformsupport/fbconvenience/qfbcursor.cpp | 2 ++ src/platformsupport/fbconvenience/qfbcursor_p.h | 2 ++ 3 files changed, 6 insertions(+) (limited to 'src/platformsupport') diff --git a/src/platformsupport/dnd/qsimpledrag.cpp b/src/platformsupport/dnd/qsimpledrag.cpp index 18e6b97e3c..efaede4c5f 100644 --- a/src/platformsupport/dnd/qsimpledrag.cpp +++ b/src/platformsupport/dnd/qsimpledrag.cpp @@ -237,6 +237,7 @@ void QBasicDrag::exitDndEventLoop() void QBasicDrag::updateCursor(Qt::DropAction action) { +#ifndef QT_NO_CURSOR Qt::CursorShape cursorShape = Qt::ForbiddenCursor; if (canDrop()) { switch (action) { @@ -267,6 +268,7 @@ void QBasicDrag::updateCursor(Qt::DropAction action) } } } +#endif updateAction(action); } diff --git a/src/platformsupport/fbconvenience/qfbcursor.cpp b/src/platformsupport/fbconvenience/qfbcursor.cpp index f3b8ecbf50..bc44055721 100644 --- a/src/platformsupport/fbconvenience/qfbcursor.cpp +++ b/src/platformsupport/fbconvenience/qfbcursor.cpp @@ -116,6 +116,7 @@ void QFbCursor::setCursor(const uchar *data, const uchar *mask, int width, int h mGraphic->set(data, mask, width, height, hotX, hotY); } +#ifndef QT_NO_CURSOR void QFbCursor::changeCursor(QCursor * widgetCursor, QWindow *window) { Q_UNUSED(window); @@ -134,6 +135,7 @@ void QFbCursor::changeCursor(QCursor * widgetCursor, QWindow *window) if (mOnScreen || mScreen->geometry().intersects(mCurrentRect.translated(mScreenOffset))) setDirty(); } +#endif QT_END_NAMESPACE diff --git a/src/platformsupport/fbconvenience/qfbcursor_p.h b/src/platformsupport/fbconvenience/qfbcursor_p.h index 9468e647aa..a56e352533 100644 --- a/src/platformsupport/fbconvenience/qfbcursor_p.h +++ b/src/platformsupport/fbconvenience/qfbcursor_p.h @@ -59,7 +59,9 @@ public: // input methods virtual void pointerEvent(const QMouseEvent &event); +#ifndef QT_NO_CURSOR virtual void changeCursor(QCursor *widgetCursor, QWindow *window); +#endif virtual void setDirty() { mDirty = true; /* screen->setDirty(QRect()); */ } virtual bool isDirty() const { return mDirty; } -- cgit v1.2.3 From 22c234a34e8af6a26b374ef810630ba9e82c696a Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Sat, 3 Nov 2012 19:21:12 +0100 Subject: Accessible: Improve value interface MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The stepSize property was missing in Qt 4 and is a sensible addition to the value interface. Change-Id: I7571800d50ee7e4194c09c4db40300809a1ce45a Reviewed-by: Jan Arve Sæther Reviewed-by: Frederik Gladhorn --- .../linuxaccessibility/atspiadaptor.cpp | 52 +++++++++------------- 1 file changed, 21 insertions(+), 31 deletions(-) (limited to 'src/platformsupport') diff --git a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp index 6926f546a2..1eda1dfab9 100644 --- a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp +++ b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp @@ -1049,7 +1049,7 @@ void AtSpiAdaptor::notify(QAccessibleEvent *event) break; } case QAccessible::ValueChanged: { - if (sendObject || sendObject_value_changed) { + if (sendObject || sendObject_value_changed || sendObject_property_change_accessible_value) { QAIPointer iface = QAIPointer(event->accessibleInterface()); Q_ASSERT(iface->valueInterface()); QString path = pathForInterface(iface); @@ -2093,44 +2093,34 @@ bool AtSpiAdaptor::editableTextInterface(const QAIPointer &interface, const QStr // Value interface bool AtSpiAdaptor::valueInterface(const QAIPointer &interface, const QString &function, const QDBusMessage &message, const QDBusConnection &connection) { - if (0) { - } else if (function == QLatin1String("SetCurrentValue")) { + if (function == QLatin1String("SetCurrentValue")) { QDBusVariant v = message.arguments().at(2).value(); double value = v.variant().toDouble(); //Temporary fix //See https://bugzilla.gnome.org/show_bug.cgi?id=652596 interface->valueInterface()->setCurrentValue(value); connection.send(message.createReply()); // FIXME is the reply needed? - } else if (function == QLatin1String("GetCurrentValue")) { - bool success; - double val = interface->valueInterface()->currentValue().toDouble(&success); - if (!success) { - qAtspiDebug ("AtSpiAdaptor::valueInterface: Could not convert current value to double."); - } - connection.send(message.createReply( - QVariant::fromValue(QDBusVariant(QVariant::fromValue(val))))); - } else if (function == QLatin1String("GetMaximumValue")) { - bool success; - double val = interface->valueInterface()->maximumValue().toDouble(&success); - if (!success) { - qAtspiDebug ("AtSpiAdaptor::valueInterface: Could not convert current value to double."); - } - connection.send(message.createReply( - QVariant::fromValue(QDBusVariant(QVariant::fromValue(val))))); - } else if (function == QLatin1String("GetMinimumIncrement")) { - connection.send(message.createReply( - QVariant::fromValue(QDBusVariant(QVariant::fromValue(0.0))))); - } else if (function == QLatin1String("GetMinimumValue")) { - bool success; - double val = interface->valueInterface()->minimumValue().toDouble(&success); - if (!success) { - qAtspiDebug ("AtSpiAdaptor::valueInterface: Could not convert current value to double."); + } else { + QVariant value; + if (function == QLatin1String("GetCurrentValue")) + value = interface->valueInterface()->currentValue(); + else if (function == QLatin1String("GetMaximumValue")) + value = interface->valueInterface()->maximumValue(); + else if (function == QLatin1String("GetMinimumIncrement")) + value = interface->valueInterface()->minimumStepSize(); + else if (function == QLatin1String("GetMinimumValue")) + value = interface->valueInterface()->minimumValue(); + else { + qAtspiDebug() << "WARNING: AtSpiAdaptor::valueInterface does not implement " << function << message.path(); + return false; } + if (!value.canConvert(QVariant::Double)) + qAtspiDebug() << "AtSpiAdaptor::valueInterface: Could not convert to double: " << function; + + // explicitly convert to dbus-variant containing one double since atspi expects that + // everything else might fail to convert back on the other end connection.send(message.createReply( - QVariant::fromValue(QDBusVariant(QVariant::fromValue(val))))); - } else { - qAtspiDebug() << "WARNING: AtSpiAdaptor::valueInterface does not implement " << function << message.path(); - return false; + QVariant::fromValue(QDBusVariant(QVariant::fromValue(value.toDouble()))))); } return true; } -- cgit v1.2.3 From d466a171d46a6b6b171fd89589d5ed1e2a6f2bd9 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Wed, 12 Dec 2012 16:57:08 +0100 Subject: Fix warning - unused variable (d-pointer) Change-Id: I6bc47f12e60bfbda60e3f242d3b680d5684903ea Reviewed-by: Oliver Wolff --- src/platformsupport/eventdispatchers/qeventdispatcher_glib.cpp | 2 -- 1 file changed, 2 deletions(-) (limited to 'src/platformsupport') diff --git a/src/platformsupport/eventdispatchers/qeventdispatcher_glib.cpp b/src/platformsupport/eventdispatchers/qeventdispatcher_glib.cpp index b8f4475d9e..3154e65ec8 100644 --- a/src/platformsupport/eventdispatchers/qeventdispatcher_glib.cpp +++ b/src/platformsupport/eventdispatchers/qeventdispatcher_glib.cpp @@ -119,8 +119,6 @@ QPAEventDispatcherGlib::~QPAEventDispatcherGlib() bool QPAEventDispatcherGlib::processEvents(QEventLoop::ProcessEventsFlags flags) { - Q_D(QPAEventDispatcherGlib); - m_flags = flags; return QEventDispatcherGlib::processEvents(m_flags); } -- cgit v1.2.3 From fa7661d8b25fa338649a301010e1b5a2b63da731 Mon Sep 17 00:00:00 2001 From: Jiang Jiang Date: Wed, 11 Jul 2012 14:39:54 +0200 Subject: Fix styleName support in QPA font database Font styleName support was disconnected since Qt switched to QPA fontdatabase. Now add the code from Qt 4.8 back to enable this in QPA. Change-Id: Iab2cbfd5468f87542183348c2123ca4b2c270692 Reviewed-by: Eskil Abrahamsen Blomfeldt --- .../fontdatabases/basic/qbasicfontdatabase.cpp | 2 +- .../fontdatabases/fontconfig/qfontconfigdatabase.cpp | 14 +++++++++----- .../fontdatabases/mac/qcoretextfontdatabase.mm | 3 ++- 3 files changed, 12 insertions(+), 7 deletions(-) (limited to 'src/platformsupport') diff --git a/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp b/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp index dd6f04f74d..996ea85249 100644 --- a/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp +++ b/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp @@ -452,7 +452,7 @@ QStringList QBasicFontDatabase::addTTFile(const QByteArray &fontData, const QByt QFont::Stretch stretch = QFont::Unstretched; - registerFont(family,QString(),weight,style,stretch,true,true,0,fixedPitch,writingSystems,fontFile); + registerFont(family,QString::fromLatin1(face->style_name),QString(),weight,style,stretch,true,true,0,fixedPitch,writingSystems,fontFile); families.append(family); diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp index cf6ff11acd..d23588d22d 100644 --- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp +++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp @@ -318,6 +318,7 @@ void QFontconfigDatabase::populateFontDatabase() FcChar8 *file_value; int indexValue; FcChar8 *foundry_value; + FcChar8 *style_value; FcBool scalable; FcBool antialias; @@ -325,7 +326,7 @@ void QFontconfigDatabase::populateFontDatabase() FcObjectSet *os = FcObjectSetCreate(); FcPattern *pattern = FcPatternCreate(); const char *properties [] = { - FC_FAMILY, FC_WEIGHT, FC_SLANT, + FC_FAMILY, FC_STYLE, FC_WEIGHT, FC_SLANT, FC_SPACING, FC_FILE, FC_INDEX, FC_LANG, FC_CHARSET, FC_FOUNDRY, FC_SCALABLE, FC_PIXEL_SIZE, FC_WEIGHT, FC_WIDTH, @@ -371,6 +372,8 @@ void QFontconfigDatabase::populateFontDatabase() scalable = FcTrue; if (FcPatternGetString(fonts->fonts[i], FC_FOUNDRY, 0, &foundry_value) != FcResultMatch) foundry_value = 0; + if (FcPatternGetString(fonts->fonts[i], FC_STYLE, 0, &style_value) != FcResultMatch) + style_value = 0; if(FcPatternGetBool(fonts->fonts[i],FC_ANTIALIAS,0,&antialias) != FcResultMatch) antialias = true; @@ -438,7 +441,8 @@ void QFontconfigDatabase::populateFontDatabase() bool fixedPitch = spacing_value >= FC_MONO; QFont::Stretch stretch = QFont::Unstretched; - QPlatformFontDatabase::registerFont(familyName,QLatin1String((const char *)foundry_value),weight,style,stretch,antialias,scalable,pixel_size,fixedPitch,writingSystems,fontFile); + QString styleName = style_value ? QString::fromUtf8((const char *) style_value) : QString(); + QPlatformFontDatabase::registerFont(familyName,styleName,QLatin1String((const char *)foundry_value),weight,style,stretch,antialias,scalable,pixel_size,fixedPitch,writingSystems,fontFile); // qDebug() << familyName << (const char *)foundry_value << weight << style << &writingSystems << scalable << true << pixel_size; } @@ -462,9 +466,9 @@ void QFontconfigDatabase::populateFontDatabase() while (f->qtname) { QString familyQtName = QString::fromLatin1(f->qtname); - registerFont(familyQtName,QString(),QFont::Normal,QFont::StyleNormal,QFont::Unstretched,true,true,0,f->fixed,ws,0); - registerFont(familyQtName,QString(),QFont::Normal,QFont::StyleItalic,QFont::Unstretched,true,true,0,f->fixed,ws,0); - registerFont(familyQtName,QString(),QFont::Normal,QFont::StyleOblique,QFont::Unstretched,true,true,0,f->fixed,ws,0); + registerFont(familyQtName,QString(),QString(),QFont::Normal,QFont::StyleNormal,QFont::Unstretched,true,true,0,f->fixed,ws,0); + registerFont(familyQtName,QString(),QString(),QFont::Normal,QFont::StyleItalic,QFont::Unstretched,true,true,0,f->fixed,ws,0); + registerFont(familyQtName,QString(),QString(),QFont::Normal,QFont::StyleOblique,QFont::Unstretched,true,true,0,f->fixed,ws,0); ++f; } diff --git a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm index 99a316bef3..4ea38cb74e 100644 --- a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm +++ b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm @@ -227,6 +227,7 @@ void QCoreTextFontDatabase::populateFontDatabase() for (int i = 0; i < numFonts; ++i) { CTFontDescriptorRef font = (CTFontDescriptorRef) CFArrayGetValueAtIndex(fonts, i); QCFString familyName = (CFStringRef) CTFontDescriptorCopyLocalizedAttribute(font, kCTFontFamilyNameAttribute, NULL); + QCFString styleName = (CFStringRef)CTFontDescriptorCopyLocalizedAttribute(font, kCTFontStyleNameAttribute, NULL); QCFType styles = (CFDictionaryRef) CTFontDescriptorCopyAttribute(font, kCTFontTraitsAttribute); QFont::Weight weight = QFont::Normal; QFont::Style style = QFont::StyleNormal; @@ -285,7 +286,7 @@ void QCoreTextFontDatabase::populateFontDatabase() } CFRetain(font); - QPlatformFontDatabase::registerFont(familyName, foundryName, weight, style, stretch, + QPlatformFontDatabase::registerFont(familyName, styleName, foundryName, weight, style, stretch, true /* antialiased */, true /* scalable */, pixelSize, fixedPitch, writingSystems, (void *) font); CFStringRef psName = (CFStringRef) CTFontDescriptorCopyAttribute(font, kCTFontNameAttribute); -- cgit v1.2.3 From 5f348c4120fc2f5660f9279e054ac3dba8e3e0f4 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Thu, 13 Dec 2012 20:30:48 +0100 Subject: Add missing bit in initialization. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I1de8dcd8714f1700ac03d7c1e8536f10a031cef9 Reviewed-by: Jan Arve Sæther --- src/platformsupport/linuxaccessibility/atspiadaptor.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/platformsupport') diff --git a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp index 1eda1dfab9..eb0177bfb7 100644 --- a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp +++ b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp @@ -99,6 +99,7 @@ AtSpiAdaptor::AtSpiAdaptor(DBusConnection *connection, QObject *parent) , sendObject_row_inserted(0) , sendObject_row_reordered(0) , sendObject_selection_changed(0) + , sendObject_state_changed(0) , sendObject_text_attributes_changed(0) , sendObject_text_bounds_changed(0) , sendObject_text_caret_moved(0) -- cgit v1.2.3 From 568b278b75496861881bdf6834ea9b0e99d97537 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Mill=C3=A1n=20Soto?= Date: Fri, 26 Oct 2012 15:23:58 +0200 Subject: Implemented AtSpiAdaptor::notifyStateChange MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adding a new private method to simplify notifying that the state has changed as it is something that is frequently done in AtSpiAdaptor::notify Change-Id: Idf21715b5d20212adb301ae9bca05f1edfc19946 Reviewed-by: Jan Arve Sæther Reviewed-by: Frederik Gladhorn --- .../linuxaccessibility/atspiadaptor.cpp | 28 ++++++++++------------ .../linuxaccessibility/atspiadaptor_p.h | 2 ++ 2 files changed, 15 insertions(+), 15 deletions(-) (limited to 'src/platformsupport') diff --git a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp index eb0177bfb7..506416af53 100644 --- a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp +++ b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp @@ -904,6 +904,14 @@ QAIPointer AtSpiAdaptor::interfaceFromPath(const QString& dbusPath) const return QAIPointer(); } +void AtSpiAdaptor::notifyStateChange(const QAIPointer &interface, const QString &state, int value) +{ + QString path = pathForInterface(interface); + QVariantList stateArgs = packDBusSignalArguments(state, value, 0, variantForPath(path)); + sendDBusSignal(path, QLatin1String(ATSPI_DBUS_INTERFACE_EVENT_OBJECT), + QLatin1String("StateChanged"), stateArgs); +} + /*! This function gets called when Qt notifies about accessibility updates. @@ -920,19 +928,13 @@ void AtSpiAdaptor::notify(QAccessibleEvent *event) break; case QAccessible::ObjectShow: { if (sendObject || sendObject_state_changed) { - QString path = pathForInterface(QAIPointer(event->accessibleInterface())); - QVariantList stateArgs = packDBusSignalArguments(QLatin1String("showing"), 1, 0, variantForPath(path)); - sendDBusSignal(path, QLatin1String(ATSPI_DBUS_INTERFACE_EVENT_OBJECT), - QLatin1String("StateChanged"), stateArgs); + notifyStateChange(QAIPointer(event->accessibleInterface()), QLatin1String("showing"), 1); } break; } case QAccessible::ObjectHide: { if (sendObject || sendObject_state_changed) { - QString path = pathForInterface(QAIPointer(event->accessibleInterface())); - QVariantList stateArgs = packDBusSignalArguments(QLatin1String("showing"), 0, 0, variantForPath(path)); - sendDBusSignal(path, QLatin1String(ATSPI_DBUS_INTERFACE_EVENT_OBJECT), - QLatin1String("StateChanged"), stateArgs); + notifyStateChange(QAIPointer(event->accessibleInterface()), QLatin1String("showing"), 0); } break; } @@ -1076,10 +1078,7 @@ void AtSpiAdaptor::notify(QAccessibleEvent *event) if (stateChange.checked) { QAIPointer iface = QAIPointer(event->accessibleInterface()); int checked = iface->state().checked; - QString path = pathForInterface(iface); - QVariantList args = packDBusSignalArguments(QLatin1String("checked"), checked, 0, variantForPath(path)); - sendDBusSignal(path, QLatin1String(ATSPI_DBUS_INTERFACE_EVENT_OBJECT), - QLatin1String("StateChanged"), args); + notifyStateChange(iface, QLatin1String("checked"), checked); } else if (stateChange.active) { QAIPointer iface = QAIPointer(event->accessibleInterface()); if (!(iface->role() == QAccessible::Window && (sendWindow || sendWindow_activate))) @@ -1093,9 +1092,8 @@ void AtSpiAdaptor::notify(QAccessibleEvent *event) QString path = pathForInterface(iface); sendDBusSignal(path, QLatin1String(ATSPI_DBUS_INTERFACE_EVENT_WINDOW), status, args); - QVariantList stateArgs = packDBusSignalArguments(QLatin1String("active"), iface->state().active ? 1 : 0, 0, variantForPath(path)); - sendDBusSignal(path, QLatin1String(ATSPI_DBUS_INTERFACE_EVENT_OBJECT), - QLatin1String("StateChanged"), stateArgs); + int isActive = iface->state().active; + notifyStateChange(iface, QLatin1String("active"), isActive); } } break; diff --git a/src/platformsupport/linuxaccessibility/atspiadaptor_p.h b/src/platformsupport/linuxaccessibility/atspiadaptor_p.h index 4a8ff23bef..5b5eb60228 100644 --- a/src/platformsupport/linuxaccessibility/atspiadaptor_p.h +++ b/src/platformsupport/linuxaccessibility/atspiadaptor_p.h @@ -111,6 +111,8 @@ private: QString pathForInterface(const QAIPointer &interface, bool inDestructor = false) const; QString pathForObject(QObject *object) const; + void notifyStateChange(const QAIPointer& interface, const QString& state, int value); + // accessible helper functions AtspiRole getRole(const QAIPointer &interface) const; QSpiRelationArray relationSet(const QAIPointer &interface, const QDBusConnection &connection) const; -- cgit v1.2.3 From 44cc60515a37587922edd5fdd9f9225ae73de8ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Mill=C3=A1n=20Soto?= Date: Fri, 26 Oct 2012 16:56:00 +0200 Subject: Handle disabled state change MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Modified AtSpiAdaptor::notify to handle enabling and disabling widgets. Change-Id: I9a23f74d891aaf123d7fc094bdf63e384e1d65fe Reviewed-by: Frederik Gladhorn Reviewed-by: Jan Arve Sæther --- src/platformsupport/linuxaccessibility/atspiadaptor.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/platformsupport') diff --git a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp index 506416af53..66541e6a61 100644 --- a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp +++ b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp @@ -1094,6 +1094,13 @@ void AtSpiAdaptor::notify(QAccessibleEvent *event) int isActive = iface->state().active; notifyStateChange(iface, QLatin1String("active"), isActive); + } else if (stateChange.disabled) { + QAIPointer iface = QAIPointer(event->accessibleInterface()); + QAccessible::State state = iface->state(); + bool enabled = !state.disabled; + + notifyStateChange(iface, QLatin1String("enabled"), enabled); + notifyStateChange(iface, QLatin1String("sensitive"), enabled); } } break; -- cgit v1.2.3 From 10e4b0c110a21a7c3234c109b8911ca9d83aec1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Mill=C3=A1n=20Soto?= Date: Tue, 27 Nov 2012 16:49:03 +0100 Subject: Do not inform that a widget is not visible when it's disabled. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I561c8ef4c25dde8eb24260a46d284ca10cbf074d Reviewed-by: Frederik Gladhorn Reviewed-by: Jan Arve Sæther --- src/platformsupport/linuxaccessibility/constant_mappings.cpp | 2 -- 1 file changed, 2 deletions(-) (limited to 'src/platformsupport') diff --git a/src/platformsupport/linuxaccessibility/constant_mappings.cpp b/src/platformsupport/linuxaccessibility/constant_mappings.cpp index a15355f9d3..1840868aa2 100644 --- a/src/platformsupport/linuxaccessibility/constant_mappings.cpp +++ b/src/platformsupport/linuxaccessibility/constant_mappings.cpp @@ -69,8 +69,6 @@ quint64 spiStatesFromQState(QAccessible::State state) if (state.disabled) { unsetSpiStateBit(&spiState, ATSPI_STATE_ENABLED); - unsetSpiStateBit(&spiState, ATSPI_STATE_SHOWING); - unsetSpiStateBit(&spiState, ATSPI_STATE_VISIBLE); unsetSpiStateBit(&spiState, ATSPI_STATE_SENSITIVE); } -- cgit v1.2.3 From 51cf4215dc0777d0ed57e973c8343549f217bf54 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Tue, 11 Dec 2012 20:31:00 +0100 Subject: Accessibility Linux: Prevent access to invalid interfaces MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Especially with the newer QML accessibility we can end up with events for objects that cannot instantiate a QAccessibleInterface. Let's not crash in that case. Change-Id: Ie5d38315f32d30540eb4adcb74a7b3bfa667f03f Reviewed-by: Marc Mutz Reviewed-by: Morten Johan Sørvig --- .../linuxaccessibility/atspiadaptor.cpp | 25 +++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) (limited to 'src/platformsupport') diff --git a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp index 66541e6a61..0db8e31537 100644 --- a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp +++ b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp @@ -971,7 +971,10 @@ void AtSpiAdaptor::notify(QAccessibleEvent *event) case QAccessible::TextUpdated: { if (sendObject || sendObject_text_changed) { QAIPointer iface = QAIPointer(event->accessibleInterface()); - Q_ASSERT(iface->textInterface()); + if (!iface || !iface->textInterface()) { + qAtspiDebug() << "Received text event for invalid interface."; + return; + } QString path = pathForInterface(iface); int changePosition = 0; @@ -1026,8 +1029,8 @@ void AtSpiAdaptor::notify(QAccessibleEvent *event) case QAccessible::TextCaretMoved: { if (sendObject || sendObject_text_caret_moved) { QAIPointer iface = QAIPointer(event->accessibleInterface()); - if (!iface->textInterface()) { - qWarning() << "Sending TextCaretMoved from object that does not implement text interface: " << iface << iface->object(); + if (!iface || !iface->textInterface()) { + qWarning() << "Sending TextCaretMoved from object that does not implement text interface: " << iface; return; } @@ -1054,7 +1057,11 @@ void AtSpiAdaptor::notify(QAccessibleEvent *event) case QAccessible::ValueChanged: { if (sendObject || sendObject_value_changed || sendObject_property_change_accessible_value) { QAIPointer iface = QAIPointer(event->accessibleInterface()); - Q_ASSERT(iface->valueInterface()); + if (!iface || !iface->valueInterface()) { + qWarning() << "ValueChanged event from invalid accessible: " << iface; + return; + } + QString path = pathForInterface(iface); QVariantList args = packDBusSignalArguments(QLatin1String("accessible-value"), 0, 0, variantForPath(path)); sendDBusSignal(path, QLatin1String(ATSPI_DBUS_INTERFACE_EVENT_OBJECT), @@ -1064,6 +1071,10 @@ void AtSpiAdaptor::notify(QAccessibleEvent *event) } case QAccessible::Selection: { QAIPointer iface = QAIPointer(event->accessibleInterface()); + if (!iface) { + qWarning() << "Selection event from invalid accessible."; + return; + } QString path = pathForInterface(iface); int selected = iface->state().selected ? 1 : 0; QVariantList stateArgs = packDBusSignalArguments(QLatin1String("selected"), selected, 0, variantForPath(path)); @@ -1077,11 +1088,15 @@ void AtSpiAdaptor::notify(QAccessibleEvent *event) QAccessible::State stateChange = static_cast(event)->changedStates(); if (stateChange.checked) { QAIPointer iface = QAIPointer(event->accessibleInterface()); + if (!iface) { + qWarning() << "StateChanged event from invalid accessible."; + return; + } int checked = iface->state().checked; notifyStateChange(iface, QLatin1String("checked"), checked); } else if (stateChange.active) { QAIPointer iface = QAIPointer(event->accessibleInterface()); - if (!(iface->role() == QAccessible::Window && (sendWindow || sendWindow_activate))) + if (!iface || !(iface->role() == QAccessible::Window && (sendWindow || sendWindow_activate))) return; QString windowTitle = iface->text(QAccessible::Name); QDBusVariant data; -- cgit v1.2.3 From b7f63c6bf74a0eb62bb49c1085584da1b3714a06 Mon Sep 17 00:00:00 2001 From: Tasuku Suzuki Date: Fri, 23 Nov 2012 05:20:04 +0900 Subject: Enable module build with QT_NO_ACCESSIBILITY Change-Id: I330c3ddd70232d94eae5543cb0282b962e67eae5 Reviewed-by: Oswald Buddenhagen Reviewed-by: Frederik Gladhorn --- src/platformsupport/linuxaccessibility/application.cpp | 4 ++++ src/platformsupport/linuxaccessibility/application_p.h | 4 ++++ src/platformsupport/linuxaccessibility/atspiadaptor.cpp | 4 ++++ src/platformsupport/linuxaccessibility/atspiadaptor_p.h | 4 ++++ src/platformsupport/linuxaccessibility/bridge.cpp | 4 ++++ src/platformsupport/linuxaccessibility/bridge_p.h | 4 ++++ src/platformsupport/linuxaccessibility/cache.cpp | 4 ++++ src/platformsupport/linuxaccessibility/cache_p.h | 4 ++++ src/platformsupport/linuxaccessibility/constant_mappings.cpp | 4 ++++ src/platformsupport/linuxaccessibility/constant_mappings_p.h | 3 +++ src/platformsupport/linuxaccessibility/dbusconnection.cpp | 4 ++++ src/platformsupport/linuxaccessibility/dbusconnection_p.h | 4 ++++ src/platformsupport/linuxaccessibility/struct_marshallers.cpp | 4 ++++ 13 files changed, 51 insertions(+) (limited to 'src/platformsupport') diff --git a/src/platformsupport/linuxaccessibility/application.cpp b/src/platformsupport/linuxaccessibility/application.cpp index c2049e536a..22059de864 100644 --- a/src/platformsupport/linuxaccessibility/application.cpp +++ b/src/platformsupport/linuxaccessibility/application.cpp @@ -52,6 +52,8 @@ QT_BEGIN_NAMESPACE +#ifndef QT_NO_ACCESSIBILITY + /*! \class QSpiApplicationAdaptor \internal @@ -217,4 +219,6 @@ 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 14b8a71b42..4a60bbfe84 100644 --- a/src/platformsupport/linuxaccessibility/application_p.h +++ b/src/platformsupport/linuxaccessibility/application_p.h @@ -49,6 +49,8 @@ QT_BEGIN_HEADER QT_BEGIN_NAMESPACE +#ifndef QT_NO_ACCESSIBILITY + /* * Used for the root object. * @@ -80,6 +82,8 @@ 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 0db8e31537..c88f89b634 100644 --- a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp +++ b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp @@ -65,6 +65,8 @@ QT_BEGIN_NAMESPACE +#ifndef QT_NO_ACCESSIBILITY + static bool isDebugging = false; #define qAtspiDebug if (!::isDebugging); else qDebug @@ -2356,4 +2358,6 @@ 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 5b5eb60228..e6f95195fe 100644 --- a/src/platformsupport/linuxaccessibility/atspiadaptor_p.h +++ b/src/platformsupport/linuxaccessibility/atspiadaptor_p.h @@ -56,6 +56,8 @@ QT_BEGIN_HEADER QT_BEGIN_NAMESPACE +#ifndef QT_NO_ACCESSIBILITY + class QAccessibleInterface; class QSpiAccessibleInterface; class QSpiApplicationAdaptor; @@ -216,6 +218,8 @@ 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 f22dc4e191..bf2486fc57 100644 --- a/src/platformsupport/linuxaccessibility/bridge.cpp +++ b/src/platformsupport/linuxaccessibility/bridge.cpp @@ -56,6 +56,8 @@ QT_BEGIN_NAMESPACE +#ifndef QT_NO_ACCESSIBILITY + /*! \class QSpiAccessibleBridge \internal @@ -182,4 +184,6 @@ 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 f7c243cfbb..3865e06489 100644 --- a/src/platformsupport/linuxaccessibility/bridge_p.h +++ b/src/platformsupport/linuxaccessibility/bridge_p.h @@ -51,6 +51,8 @@ class DeviceEventControllerAdaptor; QT_BEGIN_HEADER QT_BEGIN_NAMESPACE +#ifndef QT_NO_ACCESSIBILITY + class DBusConnection; class QSpiDBusCache; class AtSpiAdaptor; @@ -79,6 +81,8 @@ 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 81a54a1ce5..9201fc1d8b 100644 --- a/src/platformsupport/linuxaccessibility/cache.cpp +++ b/src/platformsupport/linuxaccessibility/cache.cpp @@ -49,6 +49,8 @@ QT_BEGIN_NAMESPACE +#ifndef QT_NO_ACCESSIBILITY + /*! \class QSpiDBusCache \internal @@ -89,4 +91,6 @@ 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 898f06f0d6..4b606eadb1 100644 --- a/src/platformsupport/linuxaccessibility/cache_p.h +++ b/src/platformsupport/linuxaccessibility/cache_p.h @@ -49,6 +49,8 @@ QT_BEGIN_HEADER QT_BEGIN_NAMESPACE +#ifndef QT_NO_ACCESSIBILITY + class QSpiDBusCache : public QObject { Q_OBJECT @@ -66,6 +68,8 @@ 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 1840868aa2..5138b9a163 100644 --- a/src/platformsupport/linuxaccessibility/constant_mappings.cpp +++ b/src/platformsupport/linuxaccessibility/constant_mappings.cpp @@ -55,6 +55,8 @@ QT_BEGIN_NAMESPACE +#ifndef QT_NO_ACCESSIBILITY + QHash qSpiRoleMapping; quint64 spiStatesFromQState(QAccessible::State state) @@ -154,4 +156,6 @@ 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 837a68516d..870a3a4b2a 100644 --- a/src/platformsupport/linuxaccessibility/constant_mappings_p.h +++ b/src/platformsupport/linuxaccessibility/constant_mappings_p.h @@ -53,6 +53,7 @@ #include #include +#ifndef QT_NO_ACCESSIBILITY // interface names from at-spi2-core/atspi/atspi-misc-private.h #define ATSPI_DBUS_NAME_REGISTRY "org.a11y.atspi.Registry" @@ -135,4 +136,6 @@ 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 a99e8f0a5e..a38570a465 100644 --- a/src/platformsupport/linuxaccessibility/dbusconnection.cpp +++ b/src/platformsupport/linuxaccessibility/dbusconnection.cpp @@ -48,6 +48,8 @@ QT_BEGIN_NAMESPACE +#ifndef QT_NO_ACCESSIBILITY + /*! \class DBusConnection \internal @@ -104,4 +106,6 @@ 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 674cf28c34..da090da9cf 100644 --- a/src/platformsupport/linuxaccessibility/dbusconnection_p.h +++ b/src/platformsupport/linuxaccessibility/dbusconnection_p.h @@ -49,6 +49,8 @@ QT_BEGIN_HEADER QT_BEGIN_NAMESPACE +#ifndef QT_NO_ACCESSIBILITY + class DBusConnection { public: @@ -62,6 +64,8 @@ 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 713e26f25a..027993c4bd 100644 --- a/src/platformsupport/linuxaccessibility/struct_marshallers.cpp +++ b/src/platformsupport/linuxaccessibility/struct_marshallers.cpp @@ -50,6 +50,8 @@ QT_BEGIN_NAMESPACE +#ifndef QT_NO_ACCESSIBILITY + QSpiObjectReference::QSpiObjectReference() : path(QDBusObjectPath(ATSPI_DBUS_PATH_NULL)) {} @@ -234,4 +236,6 @@ void qSpiInitializeStructTypes() qDBusRegisterMetaType(); } +#endif // QT_NO_ACCESSIBILITY + QT_END_NAMESPACE -- cgit v1.2.3 From 586adeabe4d58a7c8a71bbb1be79c3533ab858ff Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 21 Dec 2012 12:09:56 +0100 Subject: add and use qtHaveModule() function this is much more elegant than the so far propagated !isEmpty(QT.foo.name). also replace feature-specific tests (no-gui and no-widgets) and the obsolete contains(QT_CONFIG, foo) syntax. Change-Id: Ia4b3c8febcabf9eeca67b1f9173a523820b1038b Reviewed-by: Sergio Ahumada Reviewed-by: Tasuku Suzuki Reviewed-by: Oswald Buddenhagen --- src/platformsupport/linuxaccessibility/linuxaccessibility.pri | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/platformsupport') diff --git a/src/platformsupport/linuxaccessibility/linuxaccessibility.pri b/src/platformsupport/linuxaccessibility/linuxaccessibility.pri index 85a02da004..09d437678f 100644 --- a/src/platformsupport/linuxaccessibility/linuxaccessibility.pri +++ b/src/platformsupport/linuxaccessibility/linuxaccessibility.pri @@ -1,4 +1,4 @@ -contains(QT_CONFIG, dbus):contains(QT_CONFIG, xcb):contains(QT_CONFIG, accessibility) { +qtHaveModule(dbus):contains(QT_CONFIG, xcb):contains(QT_CONFIG, accessibility) { QT += dbus include(../../3rdparty/atspi2/atspi2.pri) -- cgit v1.2.3 From 2ebb71468642b7ba3360d5169c0a7e5b3178c4dc Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 21 Dec 2012 19:36:12 -0800 Subject: Fix warning about unused variable in QtPlatformSupport GCC was complaining: qevdevtouch.cpp:475:13: error: 'maxId' may be used uninitialized in this function [-Werror=maybe-uninitialized] Which got me scratching my head: maxId was unconditionally initialised. How could GCC be complaining about it being uninitialised? Well, turns out that bestId could be uninitialised and the code does: if (bestId > maxId) maxId = bestId; Of course, if bestId was uninitialised, the warning should have been in the "if" line first. Change-Id: I5e174ab2957d76ad040c14fa6ef8535129b6dce3 Reviewed-by: Laszlo Agocs --- src/platformsupport/input/evdevtouch/qevdevtouch.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/platformsupport') diff --git a/src/platformsupport/input/evdevtouch/qevdevtouch.cpp b/src/platformsupport/input/evdevtouch/qevdevtouch.cpp index 9dd607b425..042d7547b6 100644 --- a/src/platformsupport/input/evdevtouch/qevdevtouch.cpp +++ b/src/platformsupport/input/evdevtouch/qevdevtouch.cpp @@ -457,7 +457,7 @@ void QEvdevTouchScreenData::assignIds() int maxId = -1; QHash::iterator it, ite, bestMatch; while (!pending.isEmpty() && !candidates.isEmpty()) { - int bestDist = -1, bestId; + int bestDist = -1, bestId = 0; for (it = pending.begin(), ite = pending.end(); it != ite; ++it) { int dist; int id = findClosestContact(candidates, it->x, it->y, &dist); -- cgit v1.2.3 From 2f365ae7ec07878ed4c3148ab56cd8b1d222f0db Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 21 Dec 2012 19:39:46 -0800 Subject: Fix GCC warning about parentheses in QtPlatformSupport atspiadaptor.cpp:2140:12: error: suggest explicit braces to avoid ambiguous 'else' [-Werror=parentheses] Change-Id: Ib21308f9c1b3bf813fed803228d8adbcc3ce7e9f Reviewed-by: Frederik Gladhorn --- src/platformsupport/linuxaccessibility/atspiadaptor.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/platformsupport') diff --git a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp index c88f89b634..534cf4b73a 100644 --- a/src/platformsupport/linuxaccessibility/atspiadaptor.cpp +++ b/src/platformsupport/linuxaccessibility/atspiadaptor.cpp @@ -2137,8 +2137,9 @@ bool AtSpiAdaptor::valueInterface(const QAIPointer &interface, const QString &fu qAtspiDebug() << "WARNING: AtSpiAdaptor::valueInterface does not implement " << function << message.path(); return false; } - if (!value.canConvert(QVariant::Double)) + if (!value.canConvert(QVariant::Double)) { qAtspiDebug() << "AtSpiAdaptor::valueInterface: Could not convert to double: " << function; + } // explicitly convert to dbus-variant containing one double since atspi expects that // everything else might fail to convert back on the other end -- cgit v1.2.3