summaryrefslogtreecommitdiff
path: root/vcl/qt5/Qt5AccessibleWidget.cxx
AgeCommit message (Collapse)Author
2021-09-29qt5: Rename sources + headers according to new class namesMichael Weghorn
This renames the source and header files according to the new class names without a "5" in them, as mentioned in Change-Id: Idf422f82ca9dafbb70e9a64de9c8cfc4cc8c0909 (qt5: Remove "5" from class names in qt5 VCL plugin): > Renaming the headers and source files will be done > in a separate commit to make tracking git history easier. Change-Id: If955e77c8ba508d0a2e01e3a9df1be6dc04c4e4e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122806 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2021-09-29qt5: Remove "5" from class names in qt5 VCL pluginMichael Weghorn
Rename classes for the qt5 VCL plugin to no longer contain the Qt version number "5" in them, e.g. "Qt5Widget" -> "QtWidget". Also, adapt some variable names and comments accordingly. The code will be used for an upcoming qt6 VCL plugin as well, so a "Qt" prefix fits better than a "Qt5" one. Renaming the headers and source files will be done in a separate commit to make tracking git history easier. Change-Id: Idf422f82ca9dafbb70e9a64de9c8cfc4cc8c0909 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122805 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2021-09-21qt5 a11y: Implement Qt5AccessibleWidget::is{Column,Row}SelectedMichael Weghorn
Change-Id: I2abfbc69a422a56dc07afd76f0c7a8ead1891830 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122398 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2021-09-21qt5 a11y: Implement QAccessibleTableCellInterfaceMichael Weghorn
Let 'Qt5AccessibleWidget' derive from 'QAccessibleTableCellInterface' and implement the most important methods. This is e.g. one of the steps needed to make Orca announce the focused cell in Calc. Since there's no specific XInterface for table cells make use of the fact that a table cell's parent is a table and query information from there, similar to how the following commit does for winaccessibility: commit 97a88e30e2e084ab860635ff4e0a03442d8a12af Author: Michael Weghorn <m.weghorn@posteo.de> Date: Wed Sep 8 14:37:53 2021 +0100 tdf#100086 tdf#124832 wina11y: Implement IAccessibleTableCell Change-Id: I160bc04f3e4fcf7b77723540aba6945b8fdf36ae Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122395 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2021-09-21qt5 a11y: Drop Qt5AccessibleWidget::{text,value}InterfaceMichael Weghorn
They're unused and at first glance look like they might be overriding the non-virtual methods from 'QAccessibleInterface' with the same name that do something more useful (calling 'interface_cast' with the corresponding 'QAccessible::InterfaceType' param). Change-Id: I9258a5f9386f9a7d23bb35cfa33e55a169eb753e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122394 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2021-07-28qt5 a11y: Implement Qt5AccessibleWidget::minimumStepSizeMichael Weghorn
This makes use of the newly introduced XAccessibleValue::getMinimumIncrement method, s. Change-Id: Ie148a4e1cedbdbb5964f8565c81611d3480465cb, "Add XAccessibleValue::getMinimumIncrement method". With this in place, Accerciser now shows the correct "Minimum increment" and the exact decimal value instead of a rounded integer value for FormattedFields, s. note in commit message for Change-Id: I8af326c2d24c1801147a56ea2e2a886ab42ac634 "a11y: Expose FormattedField as spinbox" for more details. Change-Id: Ia9d07552197357c81ae8ea3b62e2de07e82148bd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119597 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2021-07-22qt5 a11y: Always query the XAccessibleContext for a11y interfacesMichael Weghorn
The accessibility interfaces are implemented by the object implementing 'XAccessibilityContext' which is often the same as the 'XAccessible' (in which case the corresponding 'XAccessible::getAccessibleContext()' call just returns a reference to self), but it doesn't have to be that way. From offapi/com/sun/star/modules.idl: > /** UNO Accessibility API > > <p>This modules contains the basic interfaces of the UAA (UNO > Accessibility API). Services that describe how these interfaces are > implemented can be found in other modules. The services in this module > describe only what every accessible object has to support.</p> > > <p>Making a class accessible starts by supporting the > ::com::sun::star::accessibility::XAccessible interface. > This interface's only method returns the actual accessibility object, an > instance of ::com::sun::star::accessibility::XAccessibleContext. > These two interfaces may be implemented by the same class in which case > a call to ::com::sun::star::accessibility::XAccessible getAccessible() > returns the same object that is > called. Alternatively the implementation of the > ::com::sun::star::accessibility::XAccessibleContext > interface can be done by another class. This makes it possible to put > all accessibility implementations into their own library which has only > to be loaded when necessary.</p> > > <p>Note that all other interfaces have to be implemented by the same > class that implements the > ::com::sun::star::accessibility::XAccessibleContext > interface. Note also that there is no way back from an accessibility > object to the object from which it has been obtained by means of the > UAA. If you need such a back-link you have to provide one on your > own.</p> > */ > module accessibility {}; This e.g. makes Accerciser show the correct values of the "URL" and "Text" controls in Writer's "Insert" -> "Hyperlink" dialog. Change-Id: I909b1fdf5e1e7ca50db5d5191ae69cb558a49dc8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119364 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2021-07-22qt5 a11y: Improve Qt5AccessibleWidget::attributesMichael Weghorn
* handle case where out params are nullptr * set fallback values for out params at the beginning This e.g. makes Accerciser show '-1' for both, startIndex and endIndex for the text interface of the "URL" and "Text" controls in Writer's "Insert" -> "Hyperlink" dialog along with no text. Making the actual text show up if there is any will be handled in an upcoming commit. Change-Id: Ie864f729ad06e28684bd426e4ba37b8a9d4d4634 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119363 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2021-07-21qt5 a11y: Implement Qt5AccessibleWidget::cursorPositionMichael Weghorn
Use 'XAccessibleText::getCaretPosition', similar to how 'Qt5AccessibleWidget::setCursorPosition' calls 'XAccessibleText::setCaretPosition'. Change-Id: Ic9e4533d6a39de90fee7ec2e8e0bd3fc6a69bba0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119320 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2021-07-21qt5 a11y: Implement Qt5AccessibleWidget::textAtOffsetMichael Weghorn
The Orca screen reader uses 'IAccessibleText::textAtOffset' e.g. in order to retrieve the text of the current Writer paragraph on cursor movement. With this and various other WIP changes to qt5 a11y on top which are required to make Orca speak at all (well, at least sometimes...), Orca now also speaks the text of paragraphs that contain more than just a single character. The single-character case was working because Orca has a special handling for this; a comment in the source code says: "We do this because Gecko's implementation of getTextAtOffset is broken if there is just one character in the string.") This implementation is inspired by the corresponding winaccessibility one, see 'CAccTextBase::get_textAtOffset' in winaccessibility/source/UAccCOM/AccTextBase.cxx. Change-Id: I67775a03c6e4384f410e1e9d727d7a412ba4112e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119310 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2021-07-21qt5 a11y: Handle AccessibleStateType::MULTI_LINEMichael Weghorn
This addresses warnings like warn:vcl.qt5:53343:53343:vcl/qt5/Qt5AccessibleWidget.cxx:639: Unmapped state: 17 seen e.g. when navigating to a Writer paragraph in Accerciser when using LO with the kf5 VCL plugin. With this in place, the "multi line" state is correctly shown in Accerciser. Change-Id: Ib38a7374d9c81f2d5c361809583f711f4eadccba Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119295 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2021-07-21qt5 a11y: Handle AccessibleStateType::MOVEABLEMichael Weghorn
This addresses warnings like warn:vcl.qt5:151782:151782:vcl/qt5/Qt5AccessibleWidget.cxx:636: Unmapped state: 31 which I started seeing when running LO with kf5 VCL plugin and Orca enabled after commit ddbc111555607e62b94b74aacadd6a964b9fe4a5 Author: Michael Weghorn <m.weghorn@posteo.de> Date: Mon Jul 19 17:13:04 2021 +0200 qt5 a11y: Set proper a11y states had fixed handling of a11y states. Change-Id: I00b8f2f75954fbd7d9e5f0807b51e5632d1a8035 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119248 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2021-07-21qt5 a11y: Skip attributes without valueMichael Weghorn
Skip attributes with empty string value in 'Qt5AccessibleWidget::attributes'. Besides not being a useful value, I also got a crash using Accerciser to navigate in Calc's "Format Cells" dialog -> "Font Effects" -> "Text Decoration" -> "Overlining" -> "Overlining". 'Qt5AccessibleWidget::attributes' had returned "font-family:;font-size:0pt;font-weight:normal;" and 'AtSpiAdaptor::getAttributes' (from the Qt library) aborts, since it splits the "font-family:" part at the colon, then expects two substrings: one for the attribute name, one for the value - but there was no value set: QString joined = interface->textInterface()->attributes(offset, &startOffset, &endOffset); const QStringList attributes = joined.split (QLatin1Char(';'), Qt::SkipEmptyParts, Qt::CaseSensitive); for (const QString &attr : attributes) { QStringList items; items = attr.split(QLatin1Char(':'), Qt::SkipEmptyParts, Qt::CaseSensitive); -> AtSpiAttribute attribute = atspiTextAttribute(items[0], items[1]); if (!attribute.isNull()) set[attribute.name] = attribute.value; } The IAccessible2 spec for the "background-color" text attribute [1] doesn't specify any default value to be used. Backtrace: Thread 1 received signal SIGABRT, Aborted. __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 50 ../sysdeps/unix/sysv/linux/raise.c: No such file or directory. (rr) bt #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50 #1 0x00007f4dcd0bd537 in __GI_abort () at abort.c:79 #2 0x00007f4dba7fd810 in qt_message_fatal(QtMsgType, QMessageLogContext const&, QString const&) (context=..., message=...) at global/qlogging.cpp:1914 #3 0x00007f4dba7f9d48 in QMessageLogger::fatal(char const*, ...) const (this=0x7ffc30a4a6b0, msg=0x7f4dbab9ebb0 "ASSERT failure in %s: \"%s\", file %s, line %d") at global/qlogging.cpp:893 #4 0x00007f4dba7f1484 in qt_assert_x(char const*, char const*, char const*, int) (where=0x7f4db778eb36 "QList<T>::operator[]", what=0x7f4db778eac8 "index out of range", file=0x7f4db778ea90 "../../../include/QtCore/../../src/corelib/tools/qlist.h", line=579) at global/qglobal.cpp:3366 #5 0x00007f4db7736a65 in QList<QString>::operator[](int) (this=0x7ffc30a4a730, i=1) at ../../../include/QtCore/../../src/corelib/tools/qlist.h:579 #6 0x00007f4db773017e in AtSpiAdaptor::getAttributes(QAccessibleInterface*, int, bool) const (this=0x557748f27800, interface=0x7f4d8c07cc30, offset=9, includeDefaults=true) at atspiadaptor.cpp:2059 #7 0x00007f4db772cd74 in AtSpiAdaptor::textInterface(QAccessibleInterface*, QString const&, QDBusMessage const&, QDBusConnection const&) (this=0x557748f27800, interface=0x7f4d8c07cc30, function=..., message=..., connection=...) at atspiadaptor.cpp:1802 #8 0x00007f4db77274f8 in AtSpiAdaptor::handleMessage(QDBusMessage const&, QDBusConnection const&) (this=0x557748f27800, message=..., connection=...) at atspiadaptor.cpp:1286 #9 0x00007f4db7fe4d04 in QDBusConnectionPrivate::activateObject(QDBusConnectionPrivate::ObjectTreeNode&, QDBusMessage const&, int) (this=0x7f4d8c014b00, node=..., msg=..., pathStartPos=27) at qdbusintegrator.cpp:1458 #10 0x00007f4db7fe58ca in QDBusActivateObjectEvent::placeMetaCall(QObject*) (this=0x557753615310) at qdbusintegrator.cpp:1617 #11 0x00007f4dbaab3c66 in QObject::event(QEvent*) (this=0x557748f27800, e=0x557753615310) at kernel/qobject.cpp:1314 #12 0x00007f4db96be845 in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=0x557747e30970, receiver=0x557748f27800, e=0x557753615310) at kernel/qapplication.cpp:3632 #13 0x00007f4db96bbcfb in QApplication::notify(QObject*, QEvent*) (this=0x557747f1d8b0, receiver=0x557748f27800, e=0x557753615310) at kernel/qapplication.cpp:2972 #14 0x00007f4dbaa70aba in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x557748f27800, event=0x557753615310) at kernel/qcoreapplication.cpp:1064 #15 0x00007f4dbaa71452 in QCoreApplication::sendEvent(QObject*, QEvent*) (receiver=0x557748f27800, event=0x557753615310) at kernel/qcoreapplication.cpp:1462 #16 0x00007f4dbaa7213a in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x0, event_type=0, data=0x557747eff460) at kernel/qcoreapplication.cpp:1821 #17 0x00007f4dbaa71acc in QCoreApplication::sendPostedEvents(QObject*, int) (receiver=0x0, event_type=0) at kernel/qcoreapplication.cpp:1680 #18 0x00007f4dbaaff079 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x557748056a30) at kernel/qeventdispatcher_glib.cpp:277 #19 0x00007f4dbfe4ce6b in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #20 0x00007f4dbfe4d118 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #21 0x00007f4dbfe4d1cf in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #22 0x00007f4dbaaff7a2 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x557748062a70, flags=...) at kernel/qeventdispatcher_glib.cpp:423 #23 0x00007f4db76af8fc in QXcbGlibEventDispatcher::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x557748062a70, flags=...) at qxcbeventdispatcher.cpp:143 #24 0x00007f4db9255353 in Qt5Instance::DoYield(bool, bool) (this=0x557747f22580, bWait=4, bHandleAllCurrentEvents=2) at .../libreoffice/vcl/qt5/Qt5Instance.cxx:400 #25 0x00007f4db9255465 in Qt5Instance::AnyInput(VclInputFlags) (this=0xd87f0c9bbde3ed00, nType=(VclInputFlags::PAINT | VclInputFlags::TIMER | VclInputFlags::OTHER | VclInputFlags::APPEVENT | unknown: 0x7fc0)) at .../libreoffice/vcl/qt5/Qt5Instance.cxx:422 #26 0x00007f4dc594b64a in ImplYield(bool, bool) (i_bWait=true, i_bAllEvents=false) at .../libreoffice/vcl/source/app/svapp.cxx:465 #27 0x00007f4dc594be0b in Application::Yield() () at .../libreoffice/vcl/source/app/svapp.cxx:532 #28 0x00007f4dc594b357 in Application::Execute() () at .../libreoffice/vcl/source/app/svapp.cxx:444 #29 0x00007f4dcd2c4226 in desktop::Desktop::Main() (this=0x7ffc30a4c540) at .../libreoffice/desktop/source/app/app.cxx:1602 #30 0x00007f4dc5967cc6 in ImplSVMain() () at .../libreoffice/vcl/source/app/svmain.cxx:199 #31 0x00007f4dc5967de7 in SVMain() () at .../libreoffice/vcl/source/app/svmain.cxx:231 #32 0x00007f4dcd324e9f in soffice_main() () at .../libreoffice/desktop/source/app/sofficemain.cxx:98 #33 0x000055774613895d in sal_main () at .../libreoffice/desktop/source/app/main.c:49 #34 0x0000557746138943 in main (argc=2, argv=0x7ffc30a4c8b8) at .../libreoffice/desktop/source/app/main.c:47 [1] https://wiki.linuxfoundation.org/accessibility/iaccessible2/textattributes Change-Id: I5e9d5121e69340ff728a87b4a6cb5c182d9ad11b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119247 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2021-07-21qt5 a11y: Adapt loop for string construction here a bitMichael Weghorn
Behavior should be unchanged. This is in preparation of changing handling for empty values in an upcoming commit. Change-Id: If913680ea544c24fea6e418fb27ccdcb396920cd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119246 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2021-07-19qt5 a11y: Set proper a11y statesMichael Weghorn
Set the states actually set in the 'XAccessibleStateSet', rather than setting states 0 to n-1, with n being the number of states present in the state set. With this commit in place, Accerciser now e.g. initially correctly shows the 'checked' attribute for checkboxes only if they are actually checked. (Better handling of updating states still needs to be implemented separately.) Change-Id: Idbc84f5754eae65cee471834c322b8ddfdb0bb29 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119223 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2021-07-14qt5: Map AccessibleStateType::EXPANDEDMichael Weghorn
This addresses warn:vcl.qt5:75450:75450:vcl/qt5/Qt5AccessibleWidget.cxx:633: Unmapped state: 9 seen when running LO with kf5 VCL plugin and the Orca screen reader enabled. Change-Id: I05e7b0cbbdce63300288ab4d74afc0933c93ec9e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118847 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2021-01-16make the Color constructors explicitly specify transparencyNoel
to reduce the churn, we leave the existing constructor in place, and add a clang plugin to detect when the value passed to the existing constructor may contain transparency/alpha data. i.e. we leave expressions like Color(0xffffff) alone, but warn about any non-constant expression, and any expression like Color(0xff000000) Change-Id: Id2ce58e08882d9b7bd0b9f88eca97359dcdbcc8c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109362 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-09-26Avoid -Werror=deprecated-declarationsStephan Bergmann
...with qt5-qtbase-devel-5.15.1-1.fc33.x86_64 on Fedora 33: > ~/lo/core/vcl/qt5/Qt5AccessibleWidget.cxx: In function ‘QAccessible::Relation {anonymous}::lcl_matchUnoRelation(short int)’: > ~/lo/core/vcl/qt5/Qt5AccessibleWidget.cxx:138:20: error: ‘constexpr QFlags<T>::QFlags(QFlags<T>::Zero) [with Enum = QAccessible::RelationFlag; QFlags<T>::Zero = int QFlags<QAccessible::RelationFlag>::Private::*]’ is deprecated: Use default constructor instead [-Werror=deprecated-declarations] > 138 | return nullptr; > | ^~~~~~~ > In file included from /usr/include/qt5/QtCore/qglobal.h:1304, > from /usr/include/qt5/QtCore/qnamespace.h:43, > from /usr/include/qt5/QtCore/qobjectdefs.h:48, > from /usr/include/qt5/QtCore/qobject.h:46, > from /usr/include/qt5/QtCore/QObject:1, > from ~/lo/core/vcl/inc/qt5/Qt5AccessibleWidget.hxx:14, > from ~/lo/core/vcl/qt5/Qt5AccessibleWidget.cxx:20: > /usr/include/qt5/QtCore/qflags.h:123:80: note: declared here > 123 | QT_DEPRECATED_X("Use default constructor instead") Q_DECL_CONSTEXPR inline QFlags(Zero) noexcept : i(0) {} > | ^~~~~~ Change-Id: Ic0c113fe208764e8bc0b9c3fbf7358d6af4000ce Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103474 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2020-09-07tdf#136323 qt5: Remember accessible objectMichael Weghorn
'QAccessibleCache::insert' from the Qt library has a 'Q_ASSERT' checking that the corresponding 'QObject' for which the 'QAccessibleInterface' provides information is actually the same as the object passed as a parameter: QAccessible::Id QAccessibleCache::insert(QObject *object, QAccessibleInterface *iface) const { // ... QObject *obj = iface->object(); -> Q_ASSERT(object == obj); However, 'Qt5AccessibleWidget::object' so far was always returning 'nullptr', triggering this assert when using a Qt version not built with 'QT_NO_DEBUG'. To fix this, remember and return the object as needed. Change-Id: I4015b4c37aa8a073b02465df580a7235884e6cf3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102196 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2020-06-12PopupMenuFloatingWindow is now unusedCaolán McNamara
Change-Id: Ie8fa026becb1899e466fb0e7dbb987290788aaf2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96207 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2020-05-21use for-range on Sequence in testtools..xmloffNoel Grandin
Change-Id: I05b02a2f8b4b9091c7de0f7e98409d5b608ed250 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94610 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2020-05-09tdf#118418 implement scrollSubstringTo() for Qt & windowsSamuel Thibault
Use new accessibility scroll type compatible with IAccessible2. Change-Id: I0967d1c56425e1e860db34f4b9c17427e531fe02 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93636 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
2019-12-03Use o3tl::doAccess, prevent -Werror=maybe-uninitializedStephan Bergmann
Change-Id: Ibc7bffe3bb2bf67f85102c03f48e3b44d89c60cc Reviewed-on: https://gerrit.libreoffice.org/84334 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-08-23Qt5 some minor code cleanupsJan-Marek Glogowski
Change-Id: I1ee81de7ef03447991e12dcf01aef7858408dc40 Reviewed-on: https://gerrit.libreoffice.org/77975 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-07-31Improved loplugin:stringconstant (now that GCC 7 supports it): vclStephan Bergmann
Change-Id: I0bd1d26f6fc4052b812fde33ebd1d63111426942 Reviewed-on: https://gerrit.libreoffice.org/76627 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2019-06-03tdf#122200 Qt5AccessibleWidget: Handle special offset valuesMichael Weghorn
Handle special values for offset in 'Qt5AccessibleWidget::attributes' the same way that the base class's 'QAccessibleTextWidget::attributes' does, s. [1]. In particular, an offset matching the text length can be passed e.g. by "accerciser" or screen readers, which previously resulted in an 'IndexOutOfBoundsException' being thrown when the index was later checked in the call to 'VCLXAccessibleStatusBarItem::getCharacterAttributes'. See also 'IAccessibleText::attributes' documentation at [2] and the page on special offset values referenced there [3]. [1] https://code.qt.io/cgit/qt/qtbase.git/tree/src/widgets/accessible/qaccessiblewidgets.cpp?h=5.12.4#n791 [2] https://accessibility.linuxfoundation.org/a11yspecs/ia2/docs/html/interface_i_accessible_text.html#a29e5c8f69ec13c683ed6bca53333e6a5 [3] https://accessibility.linuxfoundation.org/a11yspecs/ia2/docs/html/_general_info.html#_specialOffsets Change-Id: I623995aeb689b31c5b49fb3ace8e4dd4c18927d2 Reviewed-on: https://gerrit.libreoffice.org/73225 Tested-by: Jenkins Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
2019-05-06Qt5 make Qt5Widdget's frame a private referenceJan-Marek Glogowski
Kind of a regression from commit 4d382636b0b1 ("qt5: Add basic a11y support"), which made it public for a single call. Change-Id: I631a861a98388223770cfca2704c3ddee6a0a8a0 Reviewed-on: https://gerrit.libreoffice.org/71836 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2019-03-30tdf#122056: Catch DisposedExceptions everywhereKatarina Behrens
Change-Id: I6bdb9aa89a8a5181b096f47f90ab6fb5711e7447 Reviewed-on: https://gerrit.libreoffice.org/69541 Tested-by: Jenkins Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
2019-01-10tdf#122056: catch DisposedException to avoid crash w/ screen readerKatarina Behrens
The repro scenario is closing a slideshow with screen reader on. Some object are already disposed by the time [full-screen] win with presentation closes Change-Id: I7e2ae7a5b694daaf7355ef93d87a998c9f2e345a Reviewed-on: https://gerrit.libreoffice.org/65931 Tested-by: Jenkins Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
2018-12-18tdf#122055: catch RuntimeException if a11y context no longer aliveKatarina Behrens
otherwise Desktop::Main will do it and soffice will crash w/ empty error msg Change-Id: I56768909227a6ff158ae353e1eff9b249d6ba9d4 Reviewed-on: https://gerrit.libreoffice.org/65357 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
2018-11-05qt5 a11y: Fix crashSamuel Mehrbrodt
Change-Id: I908bf6bb54ced0a43069b1ac1928f0655d2bbe9f Reviewed-on: https://gerrit.libreoffice.org/62890 Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> Tested-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2018-11-05qt a11y: Correct way to retrieve XAccessibleContextSamuel Mehrbrodt
Change-Id: I6d9ae80daa7cc6f14868691ac499b897271d683a Reviewed-on: https://gerrit.libreoffice.org/62889 Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> Tested-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2018-11-05This is no longer unsupportedSamuel Mehrbrodt
Change-Id: Ibe5b518f393cb0e15e578240549f6547f2c28dba Reviewed-on: https://gerrit.libreoffice.org/62888 Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> Tested-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2018-11-01kde5: fix buildThorsten Behrens
Change-Id: Ife5a5075fcfbfd83425c021b9f535c1f5e3e8d7e Reviewed-on: https://gerrit.libreoffice.org/62740 Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> Tested-by: Jenkins Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
2018-10-31qt5 a11y: Implement QAccessibleEditableTextInterfaceSamuel Mehrbrodt
Change-Id: I21106ac31484c4bf47363e3805315c5fb698e172 Reviewed-on: https://gerrit.libreoffice.org/62682 Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> Tested-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2018-10-31-Werror,-Wunused-parameterStephan Bergmann
Change-Id: I32713889f92f56bd1ec711116ac8232a6a462163
2018-10-31fix clang -fpermissive warnings in Qt5AccessibleWidgetNoel Grandin
error: converting to ‘bool’ from ‘std::nullptr_t’ requires direct-initialization Change-Id: Id002e2bf0363ddde1a1172cf6364180dbcac64ee
2018-10-31qt5 a11y: Add table selection supportSamuel Mehrbrodt
Change-Id: I4e655a2b4c6a0057935ac5e47c93b16e763d4357 Reviewed-on: https://gerrit.libreoffice.org/62675 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2018-10-31qt5 a11y: Implement QAccessibleTableInterfaceSamuel Mehrbrodt
Change-Id: Ic632a2253afb960cda43f84905dd519e9052c0eb Reviewed-on: https://gerrit.libreoffice.org/62668 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2018-10-30qt5 a11y: Implement QAccessibleTextInterface::attributesSamuel Mehrbrodt
Only a few basic attributes for now Change-Id: I1147e4feaf9eac3664142a678e918a65e9a7b2a3 Reviewed-on: https://gerrit.libreoffice.org/62633 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2018-10-30Qt5 actually return the selectionJan-Marek Glogowski
This broke my Windows build with interesting error messages: Qt5AccessibleWidget.cxx(772): error C2440: "=": "sal_Int32 *" kann nicht in "int *" konvertiert werden Qt5AccessibleWidget.cxx(772): note: Die Typen, auf die verwiesen wird, sind nicht verknuepft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat. Same for line 774. So actually return the selection parts depending on the provided int pointers. Change-Id: Iffbe4481883450b9dacefa867ba7035861d62cdf Reviewed-on: https://gerrit.libreoffice.org/62635 Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2018-10-30qt5 a11y: Fix QAccessibleValueInterfaceSamuel Mehrbrodt
Needs to be part of Qt5AccessibleWidget Change-Id: I3543cb3b5834c9967066733f0dbd73e974175892 Reviewed-on: https://gerrit.libreoffice.org/62515 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2018-10-30qt5 a11y: Implement most of QAccessibleTextInterfaceSamuel Mehrbrodt
Change-Id: I184bad8a6915048d425f8baa56d2e5675d4b97d1 Reviewed-on: https://gerrit.libreoffice.org/62512 Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> Tested-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2018-10-23tdf#120803: avoid crash if no valid vcl::WindowKatarina Behrens
when called from the destructor it is no longer alive Change-Id: Ia68272253f9c459b2647a0bd389e833fb0b519e3 Reviewed-on: https://gerrit.libreoffice.org/62228 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2018-10-17qt5 a11y: Add event notificationsSamuel Mehrbrodt
Change-Id: Idb2fb2f880b4e848adc213a4e2cea33c5eb56f05 Reviewed-on: https://gerrit.libreoffice.org/61424 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2018-10-09Qt5: fix build with Qt 5.11Jan-Marek Glogowski
And while at it annotate Qt5Font fall-throughs. Change-Id: I31a73407f3228f303236983df17c66bc88eef6c5 Reviewed-on: https://gerrit.libreoffice.org/61557 Tested-by: Jenkins Tested-by: Rene Engelhard <rene@debian.org> Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2018-10-08Qt5AccessibleWidget: Add stub for QAccessibleTextInterfaceSamuel Mehrbrodt
Change-Id: Iee80b40d2c33a0464abfc285360e76774c644b32 Reviewed-on: https://gerrit.libreoffice.org/61372 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2018-10-05Qt5AccessibleWidget: Implement QAccessibleValueInterfaceSamuel Mehrbrodt
Change-Id: Ia431650586ec26f5dc321cb162afa632ddb53ab3 Reviewed-on: https://gerrit.libreoffice.org/61361 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2018-10-04loplugin:nullptr (--enable-qt5)Stephan Bergmann
Change-Id: I85e310a4e2cf8e9f726d8d7c6ac8bbb399f0cd7c
2018-10-04Fix crash when no key bindings are availableSamuel Mehrbrodt
Change-Id: I89693a01bd3e89f6d4000901c01accf88b453691 Reviewed-on: https://gerrit.libreoffice.org/61232 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>