summaryrefslogtreecommitdiffstats
path: root/src/plugins/accessible/widgets/itemviews.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Cache QAccessibleInterfaces.Frederik Gladhorn2013-04-021-85/+224
| | | | | | | | | | | | | | | | | | | | | | | | | | | Since there already is a one-to-one relationship between QObject and QAccessibleInterface it makes little sense to create and destroy the interfaces on each call to queryAccessibleInterface. Add a cache and keep created interfaces around for the lifetime of the corresponding QObject. This changes the memory management rules: accessible interfaces must no longer be deleted. If you get an QAccessibleIntrface pointer that pointer will stay valid as long as the corresponding QObject is not deleted. This also re-enables accessibility for Mac. We limit the range of the IDs so that they are useable for Windows directly. That means we can get rid of the event cache there. This is based on: Iebf2f374916fc70a9dd29e95f45a6444b85f6cee Change-Id: I9fe6531812c0dbc5b41101ac05830a6dd75e13a3 Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Accessibility: Fix crash when updating in dtorFrederik Gladhorn2013-03-231-1/+6
| | | | | | | | | | | | | | This happens for example when running several tests. Widgets in destructor should be treated as invalid since their window pointer and other properties are no longer valid. When deleting a window containing only a table view there would be a table model reset update comming from the window being destroyed. Change-Id: Ia387c814333ce373fe132b189fc180787e36cdd5 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Fix crash when trying to access accessible parent in dtorFrederik Gladhorn2013-03-191-1/+1
| | | | | Change-Id: I36a065facc0ea80b3a155eaf646613cbd86fdfac Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Make qaccessible2.h internal.Frederik Gladhorn2013-03-141-1/+1
| | | | | | | | | | | This should have been done right from the start, instead we only made the documentation internal. Also remove the classes from the BIC data. Change-Id: I238a7a7cc5d26980b23931c78e7e5a4477d46920 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Fix some warnings that have crept up since I last fixed warningsThiago Macieira2013-02-271-1/+1
| | | | | | | | | | | | qgtkstyle.cpp:3177:103: error: suggest parentheses around ‘&&’ within ‘||’ [-Werror=parentheses] qcups.cpp:517:66: error: ‘QString::QString(const char*)’ is deprecated itemviews.cpp:795:13: error: unused parameter ‘actionName’ [-Werror=unused-parameter] qeglconvenience.cpp:268:9: error: ‘cfg’ may be used uninitialized in this function [-Werror=maybe-uninitialized] Change-Id: I9b8a175ff1c2ddc443363e08b92e09cf7c2f91cf Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: John Layt <jlayt@kde.org> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Simplify a function to fix a warning reported by ICCThiago Macieira2013-02-111-5/+2
| | | | | | | | | | | | ICC thinks that the return statement is missing: src/plugins/accessible/widgets/itemviews.cpp(867): error #1011: missing return statement at end of non-void function "QAccessibleTableHeaderCell::parent" Clearly it's wrong, but the function is overly complex for no good reason. So just simplify it instead. Change-Id: Ic63029df18b4712d9864a4dc66b6751b2d4574b7 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-01-221-1/+1
|\ | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/io/qsavefile_p.h src/corelib/tools/qregularexpression.cpp src/gui/util/qvalidator.cpp src/gui/util/qvalidator.h Change-Id: I58fdf0358bd86e2fad5d9ad0556f3d3f1f535825
| * Update copyright year in Digia's license headersSergio Ahumada2013-01-181-1/+1
| | | | | | | | | | Change-Id: Ic804938fc352291d011800d21e549c10acac66fb Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Merge remote-tracking branch 'origin/stable' into devFrederik Gladhorn2013-01-161-1/+1
|\| | | | | | | | | | | | | Conflicts: src/widgets/styles/qstyleanimation.cpp Change-Id: Iae570895be6544de80f9c1ec309d1a08c59daff8
| * Fix crash in tst_qtreewidget.Friedemann Kleint2013-01-141-1/+1
| | | | | | | | | | | | | | | | | | | | A division by zero occurred since an empty model was used. Task-number: QTBUG-28611 Change-Id: I1f9e869bda9f76a1c97840dff6ba48ab813bce9a Reviewed-by: Janne Anttila <janne.anttila@digia.com> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* | Implement QAccessibleActionInterface in QAccessibleTableCellJosé Millán Soto2013-01-111-0/+85
| | | | | | | | | | | | | | | | | | | | | | | | Implemented QAccessibleActionInterface in QAccessibleTableCell to allow selecting and unselecting table cells, as there was no way of selecting or deselecting a simple cell using accessible tools. tst_qaccessibility.cpp was modified to test the new methods. Change-Id: I7bdfe0b363a9813d4a7c62e96b6c924b163f2121 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* | Change behaviour of selectRow, selectColumn, unselectRow, unselectColumnJosé Millán Soto2012-12-181-10/+115
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | According to the comments of selectRow and selectColumn, the expected behaviour of this method was to select a row or a column and unselect any cell that were previously selected. However the actual behavior was to select only one cell and not deselect any cell. Moreover, according to the specification there's no simple way of selecting multiple rows or columns as when one of the methods is called for selecting one row or column the others should be unselected. The specification was changed not to require the rest of the cells to be deselected, although they might be deselected if the selectionMode requires that in order for the new row/column to be selected. The implementation of these methods was changed in QAccessibleTable and QAccessibleTree to select the whole row/column and take into acount selectionMode and selectionBehavior. tst_qaccessibility.cpp was modified to test the new behaviour of the methods. Change-Id: I29635d014792169302435e81704e02c16f951238 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* Clean up index handling in itemviews accessibility.Frederik Gladhorn2012-10-271-13/+17
| | | | | Change-Id: Icc017c7df9cb0dc4bf17e5168c1e3acda6af7523 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Accessibility: itemviews check for valid model.Frederik Gladhorn2012-10-191-4/+49
| | | | | | | | | | The problem is that isValid() should return true as soon as we have a view widget. That sadly means we need to verify that the model is still valid whenever accessing it. Change-Id: I9237528abf2f5c75a73382525103307e9ca15f05 Reviewed-by: Jan Arve Sæther <jan-arve.saether@digia.com>
* Check that row and column are not less than 0 in indexFromLogicalJosé Millán Soto2012-10-131-1/+1
| | | | | Change-Id: Icf6dbb234513de12c772618a046461b8674b01ce Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* Return if header is 0.Frederik Gladhorn2012-10-041-0/+2
| | | | | | | QT-BUG: 184868 Change-Id: Iff041c66fdfb2267e0349bdd47fec0fe63b1799d Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Check for valid model and view in isValid for TableCells.Frederik Gladhorn2012-10-031-2/+3
| | | | | Change-Id: Iadca5503ed2a1d6411d46ed6fe9d5b9a56461a3a Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
* Change copyrights from Nokia to DigiaIikka Eklund2012-09-221-24/+24
| | | | | | | | Change copyrights and license headers from Nokia to Digia Change-Id: If1cc974286d29fd01ec6c19dd4719a67f4c3f00e Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
* Accessibility: fix updates for models with rootIndex set.Frederik Gladhorn2012-07-311-6/+12
| | | | | | | | | | | | | | | The accessible table/list implementation would ignore when a root index is set, resulting in trying to use row/column for the top level index, leading to accessing invalid indexes. (cherry picked from commit def2ee829435c705055733a0f99c0ca44a012c50) Conflicts: src/plugins/accessible/widgets/itemviews.cpp Change-Id: Ic2745ab3e262ccee2d43e0d532e165d2958f519e Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
* Accessibility: Check for valid range of tree items.Frederik Gladhorn2012-04-171-0/+4
| | | | | | | This might lead to crashes otherwise. Change-Id: Ib28ac03b7d200571a0e759467eb692cfee3b05f3 Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
* Use QPointer to store accessible object.Frederik Gladhorn2012-04-131-78/+89
| | | | | | | | | | | | | | | | | Itemview were not following the established pattern of keeping the referenced object in a QPointer. This made them a lot more crash prone. Port of Qt 4 change. Conflicts: src/plugins/accessible/widgets/itemviews.cpp src/plugins/accessible/widgets/itemviews.h Change-Id: I210b112b9c3647b246fde2d6c69aba9ce8d25bd3 Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com> (cherry picked from commit f420ab2870d3c96e9678c24c64b4e26ec8a771bd)
* Remove QAccessible2::TableModelChange.Frederik Gladhorn2012-03-121-64/+0
| | | | | | | | | | | | | | This was never a good idea since it has issues: It doesn't really work with more than one update without the client fetching the data. The same is unlikely to work reliable since it involves two ipc roundtrips. Instead we should have an extended QAccessibleEvent that contains the data so that the bridges can decide how to pass on the data if needed. Change-Id: Iaf6b74f49586f7155909a6fe1a17137b71b31175 Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
* Remove QAccessible::FocusChild, add focusChild()Jan-Arve Saether2012-02-061-52/+0
| | | | | | | | Also cleanup (reduce) all implementations of navigate() in order to make the final removal of navigate smoother. Change-Id: I2c216db8f5b2e40afcce8f859fc775053adc2fe3 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
* Remove "All rights reserved" line from license headers.Jason McDonald2012-01-301-1/+1
| | | | | | | | | | As in the past, to avoid rewriting various autotests that contain line-number information, an extra blank line has been inserted at the end of the license text to ensure that this commit does not change the total number of lines in the license header. Change-Id: I311e001373776812699d6efc045b5f742890c689 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Update contact information in license headers.Jason McDonald2012-01-231-1/+1
| | | | | | | Replace Nokia contact email address with Qt Project website. Change-Id: I431bbbf76d7c27d8b502f87947675c116994c415 Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Remove all reimplementations of relationTo() returning Unrelated.Jan-Arve Saether2012-01-161-15/+0
| | | | | | | | QAccessibleInterface::relationTo() already return QAccessible::Unrelated by default. No need to duplicate that code. Change-Id: I40e6758b946c43ca8773cdb2d28407edf99aad49 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
* Make QAccessibleInterface::indexOfChild() 0-based.Frederik Gladhorn2012-01-111-7/+7
| | | | | | | Makes the code nicer and more consistent with the rest of the world. Change-Id: I5ba0ee39f5b0afd1a079a3cea9990d123955ed3f Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
* Accessiblity State as bit field.Frederik Gladhorn2012-01-101-13/+13
| | | | | | | | | | | We would like to add more flags that will be over the 32 bit boundary. On Windows enums don't seem to digest values >32 bit. This patch changes the state flags to be a bit field instead. The windows part of the patch was written by Jan-Arve Sæther. Change-Id: I2d1d87807f920ce4d4a5c7bfea8b1122ed44eb08 Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
* Remove all references to QAccessible:: {Child|Ancestor|Sibling}Jan-Arve Saether2012-01-061-94/+34
| | | | | | | | | | | These are deprecated in favor of QAccessibleInterface::child() and QAccessibleInterface::parent() QAccessible::Sibling can be done with a combination of those two. This is handled by the bridges, if required. Change-Id: I2e2a6eb2a982e7c9001a393d69f0c5f1ae9c0970 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
* Update copyright year in license headers.Jason McDonald2012-01-051-1/+1
| | | | | Change-Id: I02f2c620296fcd91d4967d58767ea33fc4e1e7dc Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Accessibility: childAt returns interfaceFrederik Gladhorn2011-12-191-6/+6
| | | | | | | | | | | | | | | | | | childAt used to return an integer. Return an interface instead. Not requiring a direct child to be returned allows optimizing by bypassing iterating through the hierarchy of accessibles. For QtQuick this is the only sensible way of implementing this. The bridges are still responsible for finding the top-most element. The default implementation in QAccessibleObject is sufficient to return direct children. The implementation in QAccessibleApplication is therfore no longer needed. Change-Id: Id7100dd5bcc3a98de516a7f4a12eaaa41cb46d26 Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
* Finish removing virtual child integersBradley T. Hughes2011-12-131-1/+1
| | | | | | | | | Finish the work started by commit beb72b2fbf17a20b4a9d51d75d79f9c3c69bb357. This silences warnings found by -Woverloaded-virtual. Change-Id: Ic6f5e77e324463ade8349f23f272b41b509d87e4 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
* Do not assert on invalid model index.Frederik Gladhorn2011-12-091-6/+2
| | | | | | | | No need to crash here, just warn. This will happen when asking a table for out of range indexes. Change-Id: Ida83604bd587390a3b54fbed68f98dab8038c757 Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
* Create a class to contain accessibilty enums.Frederik Gladhorn2011-12-081-29/+26
| | | | | | | | This is needed in order to expose the enums to qml. Do not inherit QAccessible. Change-Id: I220a0ea3add2d790e4fa6e93ce3deda762859e1a Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com>
* Accessibility: table2 -> tableFrederik Gladhorn2011-12-021-106/+106
| | | | | | | | Rename the new interface after the old one has been removed. This interface is very close to the IAccessible2 Table2 interface. Change-Id: I8659232189fe0e8307151c743727de425c30ac9a Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
* Make cell a proper QAccessible2Interface.Frederik Gladhorn2011-12-011-6/+13
| | | | | Change-Id: I9b245037e8448f39ed2cb80d1ef5fb0714173518 Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
* Fix casting. Casting is now done through the virtual interface_cast.Jan-Arve Saether2011-11-301-0/+7
| | | | | | | | | Change interface_cast to return void* to avoid using virtual inheritance. Get rid of the magic Q_ACCESSIBLE_OBJECT macro. Change-Id: I94b824aef53f2ba657d39d406b387c8681d47ee4 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
* Remove virtual child integers.Frederik Gladhorn2011-11-231-100/+30
| | | | | | | | | | | | | | This makes the accessibility apis much simpler and less error prone. Disable the itemviews implementation that is in complex widgets. The itemviews will use the new code from itemviews.h/cpp everywhere now. QToolBox was broken before, now at least it simply exposes all its children. The children are the buttons (tabs of the toolbox) and their contents. Change-Id: I45e218f49f02aebbd678ddfe29f94c2a112a2125 Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
* Accessible widgets: Fix warning.Friedemann Kleint2011-11-231-1/+1
| | | | | Change-Id: Iaf9b112db86a4238ef24f3c6341c83ab0f9ba217 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
* Accessibility: Clean up usage of navigate.Frederik Gladhorn2011-11-211-3/+2
| | | | | | | Prefer to use parent/child functions instead. Change-Id: Ic92165b9439eb750c9d762ddf5dcd2a5ccf0277d Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
* Accessible ComboBox: remove virt children, add actions.Frederik Gladhorn2011-09-231-0/+3
| | | | | | | | | | Simplify the combobox implementation by removing child logic. Instead have an option to open the combobox. Change-Id: I1bb517d0d064aefa28594b8fa957b8b2c9d48e88 Reviewed-on: http://codereview.qt-project.org/5032 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
* Add parent and child functions to QAccessibleInterface.Frederik Gladhorn2011-09-191-25/+53
| | | | | | | | | | | | | | | | | | | | | | Stop the mis-use of navigate to find the parent. In order to make navigation straight forward parent and child functions are now part of QAccessibleInterface. This allows navigating the hierarchy of accessible objects without the 1-based indexes in the navigate function which lead to confusion. Eventually the support for Ancestor in navigate can be completely removed and forwarded in the windows bridge if needed. In addition default parameters for virtual children. This will make the transition smooth since it allows to remove the integer already. Change-Id: I278287ce17161f9fa46797ac244676778c859576 Reviewed-on: http://codereview.qt-project.org/5024 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com> Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
* Remove AccessibleEx classes.Frederik Gladhorn2011-09-151-2/+2
| | | | | | | | | | | This was a binary compatibility hack to extend the accessibility framework towards IAccessible2. Start fixing it properly. Change-Id: I82bb0daa6469930c5bf6e440c919159603d56a83 Reviewed-on: http://codereview.qt-project.org/4750 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Morten Johan Sørvig <morten.sorvig@nokia.com> Reviewed-by: Jan-Arve Sæther <jan-arve.saether@nokia.com>
* Add IAccessible2 table2 implementation.Frederik Gladhorn2011-08-221-0/+1029
Implement the IAccessible table2 interface for itemviews. This is simpler than what we have in complexwidgets. For now it is only used on Linux. The new table2 interface is ifdef'ed to only be used on X11. Improve handling of accessible events and clean up. There are two xfails for the Table and Tree where sibling navigation is not implemented yet. Reviewed-by: Gabi (cherry picked from commit e797ba558dddd45522b5a317316e497e9efc44a8) (cherry picked from commit eff5ecc5d8f65fa25d6cfd6ed96a9d2a00d0c663) (cherry picked from commit d29876008fad400bca8d6b37e5d5f61dd1bcb39d) (cherry picked from commit 2a326fdc8f8bf2bd2c5764394616100906d9db2d) (cherry picked from commit 9b72e79e20d0d3560e0b064b8b0d75e35feb720e) (cherry picked from commit 075b0f744363842ed4179c644d933d461389544f) Change-Id: I654f74991830ae1fc7df7cc91d930390fb88b2a4 Reviewed-on: http://codereview.qt.nokia.com/3274 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com> Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>