summaryrefslogtreecommitdiff
path: root/dbaccess/source/ui/querydesign
AgeCommit message (Collapse)AuthorFilesLines
13 days[API CHANGE]: a11y: Drop com.sun.star.accessibility.AccessibleMichael Weghorn1-2/+1
Drop the unpublished service "com.sun.star.accessibility.Accessible" because it's unused internally. As the doc in the IDL file says: > <p>Service <code>Accessible</code> is just a wrapper for the interface > <code>XAccessible</code>. See the interface's documentation for more > information.</p> That wrapper isn't needed. This is one step towards dropping the XServiceInfo implementation from a11y classes, which will also help avoid linker issues seen on Windows related to multiple classes subclassing cppu::ImplInheritanceHelper<class comphelper::OAccessibleComponentHelper,class com::sun::star::lang::XServiceInfo> seen with upcoming commit Change-Id: Ib56a9ddb1c36356943c2dfd7a5705351ee43e9d9 Author: Michael Weghorn <m.weghorn@posteo.de> Date: Mon May 26 12:24:52 2025 +0200 vcl a11y: Let OAccessibleComponentHelper implement XAccessible (Gerrit change [1], Windows CI log: [2]). A search in Google and on Ask [3] gave one result that looks relevant/where this service is used: [4] It was originally added in commit [5] commit 3f227e8755954e30abf9eb2cde6e4613514e4958 Author: Zev Spitz <shivisi@hotmail.com> Date: Sun Sep 10 09:20:55 2017 +0200 Type definitions for LibreOffice, via Automation , which doesn't explain whether/why the particular use of the Accessible service was chosen there, i.e. whether this is actually of relevance. I've created an issue/discussion to make developers of that project aware: [6] Stopping to implement XServiceInfo in SwAccessibleContext and subclasses will be done in a separate upcoming commit, now that the only service implemented by them has been dropped. [1] https://gerrit.libreoffice.org/c/core/+/185849/6 [2] https://ci.libreoffice.org/job/gerrit_windows/200107/console [3] https://ask.libreoffice.org/ [4] https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/activex-libreoffice/activex-libreoffice-tests.ts [5] https://github.com/DefinitelyTyped/DefinitelyTyped/commit/3f227e8755954e30abf9eb2cde6e4613514e4958 [6] https://github.com/DefinitelyTyped/DefinitelyTyped/discussions/73096 Change-Id: I7432d4a524ceaf404b1a2673d8bb6cdb142baf25 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/186881 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-06-19vcl a11y: Let VCLXAccessibleComponent implement XAccessibleMichael Weghorn3-15/+2
Various VCLXAccessibleComponent subclasses were already implementing the XAccessible interface and returning `this` in their XAccessible::getAccessibleContext implementation. Unify that and move the implementation to the VCLXAccessibleComponent base class. Locking specifics (whether a mutex was locked and which one) and whether a check whether the accessible hadn't been disposed yet was done varied across the different implementations. The new VCLXAccessibleComponent::getAccessibleContext unifies this to use OExternalLockGuard, i.e. it both locks the mutex and throws an exception if the instance is no longer alive. Should this commit result in any issues, it's likely because there is a preexisting locking issue or an object has already been disposed and that needs to be addressed. (The easiest approach in case of a disposed object would be to simply catch + ignore the exception in the caller, but a more thorough investigation would likely be helpful.) This commit also prepares for letting vcl::Window create its accessible directly, at which point the VCLXAccessibleWindow will become both, its XAccessible and its XAccessibleContext (while it is only the latter at the moment for those cases still handled in Window::CreateAccessible, i.e. not an override inside a subclass). Change-Id: I62da0040e6c98636681c4f05dbd0b796dae5b928 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185839 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2025-05-25Unify on VclPtr::resetMike Kaganski6-11/+11
We used to have two duplicating sets: smart pointer-like VclPtr::reset, and Reference-style VclPtr::set / VclPtr::clear. There is no need in this duplication. Further, in ScopedVclPtr, reset is hidden / removed to avoid skipping disposeAndClear; but the twin functions are kept accessible, possibly as an overlook. This change drops Reference-style VclPtr::set / VclPtr::clear, and unifies on VclPtr::reset, which looks more consistent with the class nature (it is closer to shared_ptr, than to uno::Reference). Doing that uncovered one place, where a ScopedVclPtr was used incorrectly: clear() was used for NotebookbarPopup::m_pParent in NotebookbarPopup dtor. I assume then, that the correct class needed here is VclPtr. Change-Id: I0746075c58d793fabdce1bc357afea8ee455cd8a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185553 Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Tested-by: Jenkins
2025-04-13Remove obsolete fw declarations from dbaccess/Gabor Kelemen5-6/+0
found with bin/find-unneeded-includes --fwdecl Change-Id: I1a3b1420119b0c79860a1fde69efa4272356af61 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183882 Tested-by: Jenkins Reviewed-by: Gabor Kelemen <gabor.kelemen.extern@allotropia.de>
2025-04-01dbaccess a11y: Implement OConnectionLineAccess::implGetBoundsMichael Weghorn1-20/+3
Don't manually override OAccessibleExtendedComponentHelper methods related to bounds/position, but implement OConnectionLineAccess::implGetBounds (i.e. override the base class implementation) instead so that the logic in OAccessibleExtendedComponentHelper "just works". Mark the OAccessibleExtendedComponentHelper methods that shouldn't be manually overriden as final, just as is already the case in OAccessibleComponentHelper. Change-Id: Ia24d254384757796a8357928af05dca48e16ada9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183550 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2024-12-12a11y: Stop using VCLXWindow in vcl a11y classesMichael Weghorn3-3/+3
Adjust VCLXAccessibleComponent and subclasses to take a vcl::Window arg instead of a VCLXWindow in the ctor and drop the VCLXAccessibleComponent::m_xVCLXWindow member that used to hold a reference to the VCLXWindow. (VCLXAccessibleComponent still holds a VclPtr to the corresponding vcl::Window.) Instead of passing the UNO/toolkit peer (VCLXWindow and subclasses) to the AccessibleFactory to create an XAccessibleContext context for the underlying VCL widget, pass the underlying vcl widget, which can now be passed as is to the corresponding ctors of VCLXAccessibleComponent and specialized subclasses. This follows earlier commits replacing the use of the VCLXWindow classes by direct uses of the vcl::Window subclasses inside VCLXAccessibleComponent and subclasses and is the next step in reducing the UNO/toolkit dependency in the accessibility implementation for vcl widgets. For now, the logic where those accessible objects are created remains in VCLXWindow::CreateAccessibleContext and overrides, but that can change in the future. `IAccessibleFactory::createAccessibleContext(VCLXMultiLineEdit*)` is just dropped and doesn't need its own replacement: The previous VCLXMultiLineEdit variant was creating a VCLXAccessibleEdit like the variant taking a VCLXEdit, but VCLXMultiLineEdit doesn't subclass VCLXEdit. The vcl MultiLineEdit however subclasses Edit, so VCLXMultiLineEdit::CreateAccessibleContext can make use of `IAccessibleFactory::createAccessibleContext(Edit*)` as well now. This also implements what was mentioned in earlier commit Change-Id: I67bb7a6a237e57d0c522790c09a595c02ac06325 Author: Michael Weghorn <m.weghorn@posteo.de> Date: Thu Dec 12 17:16:29 2024 +0100 sw annotation win a11y: Skip VCLXWindow logic : > Drop the comment about the code being dodgy from > SwAnnotationWin::CreateAccessible. This commit partially > addresses it and switching VCLXAccessibleComponent > to using the vcl::Window will take care of the rest, > see upcoming commit > Change-Id If0894e733273eecad268c6a932ecee7c2e34b4c2 > ("a11y: Stop using VCLXWindow in vcl a11y classes"). Now that the VCLXAccessibleComponent ctor takes a vcl::Window, the sw::annotation::SwAnnotationWin can be passed directly. From a user perspective, no change in behavior is intended by this commit. Change-Id: If0894e733273eecad268c6a932ecee7c2e34b4c2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/178385 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-11-29tdf#158237 dbaccess: use c++20 contains() instead of find() and end()Bogdan Buzea1-1/+1
Change-Id: I03e682093bff3b743b074d0d1dc68994f31ae707 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176800 Tested-by: Jenkins Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
2024-11-11clang-tidy: performance-unnecessary-copy-initialization in dbaccessNoel Grandin1-1/+1
Change-Id: If72f9eea59e5f2a4e183b98888a037ea26333cb8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176377 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Tested-by: Jenkins
2024-11-07[API CHANGE] a11y: Switch AccessibleRelationType to enumMichael Weghorn2-11/+11
Switch css::accessibility::AccessibleRelationType from integer constants to an enum. This provides more type safety and improves the debugging experience, e.g. GDB now prints com::sun::star::accessibility::AccessibleRelationType::AccessibleRelationType_CONTENT_FLOWS_TO instead of just "2" when printing the value of a corresponding variable, so it's no longer necessary to manually look up what constant has that integer value to know what relation this refers to. offapi/com/sun/star/accessibility/AccessibleRelationType.idl had this comment: > <p>We are using constants instead of a more typesafe enum. The reason > for this is that IDL enums may not be extended. Therefore, in order to > include future extensions to the set of roles we have to use constants > here.</p> However, the a11y UNO API is internal (not published), so that shouldn't be a concern. Change-Id: I44a7d56cb085dc24effb24fcd34bb222b78ef4cd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176153 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-10-23tdf#163486: PVS: check pTabWinTmpXisco Fauli1-1/+1
V595 The 'pTabWinTmp' pointer was utilized before it was verified against nullptr. Check lines: 496, 499. Change-Id: Ie263524d6a06adaf7f99555d7aa872e815cab96c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175504 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org> Tested-by: Jenkins
2024-10-22tdf#163486: PVS: Identical branchesBogdan Buzea1-2/+0
V1037 Two or more case-branches perform the same actions. Check lines: 692, 695 Change-Id: I7a7b321b10437897b285c31403aee908da8cd929 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175343 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2024-09-24cid#1607535 silence Overflowed constantCaolán McNamara1-1/+1
and cid#1608504 Overflowed constant cid#1607518 Overflowed constant Change-Id: Ife45a2f414ea703f627b7083d746bc11f6d4f359 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/173832 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-09-07tdf#162833: don't use an OUStringBuffer directly in a concat to assign itselfJulien Nabet1-1/+1
SUM( CASE WHEN \"dtPayTyp\" = 1 THEN \"dtPayBetrag\" * - 1 ELSE \"dtPayBetrag\" END ) is transformed into: Sum(Sum( WHEN \"dtPayTyp\" = 1 THEN \"dtPayBetrag\" * - 1 ELSE \"dtPayBetrag\" END) See https://bugs.documentfoundation.org/show_bug.cgi?id=162833#c3 Change-Id: Ie73dd6871bcda1c22cf6f469bd05ecc4d9dacb4c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172989 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-08-30cid#1606837 silence Overflowed constantCaolán McNamara1-1/+3
Change-Id: I73b29037344056c8649214d110859bbb705e628e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172636 Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-08-14cid#1557980 COPY_INSTEAD_OF_MOVECaolán McNamara1-1/+1
and cid#1557869 COPY_INSTEAD_OF_MOVE cid#1557807 COPY_INSTEAD_OF_MOVE cid#1557804 COPY_INSTEAD_OF_MOVE cid#1557799 COPY_INSTEAD_OF_MOVE cid#1557781 COPY_INSTEAD_OF_MOVE cid#1557781 COPY_INSTEAD_OF_MOVE cid#1557766 COPY_INSTEAD_OF_MOVE cid#1557746 COPY_INSTEAD_OF_MOVE cid#1557737 COPY_INSTEAD_OF_MOVE Change-Id: I1866c576f525ea697c62e9e0a96890e5fdaa780f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171795 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2024-05-08WaE: C6011 Dereferencing NULL pointer warningsCaolán McNamara5-7/+7
Change-Id: Ia64d863baa72a2d32a8bee40968af4f6aacd88bb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167332 Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com> Tested-by: Jenkins
2024-05-07loplugin:ostr in dbaccessNoel Grandin16-139/+139
Change-Id: I6d720ef94d9f29c120f292b844721621e6630856 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/167259 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-04-29Drop uses of css::uno::Sequence::getConstArray in dbaccessMike Kaganski4-27/+12
where it was obsoleted by commits 2484de6728bd11bb7949003d112f1ece2223c7a1 (Remove non-const Sequence::begin()/end() in internal code, 2021-10-15) and fb3c04bd1930eedacd406874e1a285d62bbf27d9 (Drop non-const Sequence::operator[] in internal code 2021-11-05). Change-Id: I4f8dc4f430dc49fa29012b8f064094daceb5e1b4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166818 Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Tested-by: Jenkins
2024-04-28Extended loplugin:ostr manual changesStephan Bergmann1-1/+1
I had done these a while ago, when I looked into extending loplugin:ostr to do more automatic rewriting, and these were places where I needed to do something manually, for one reason or another, because the automatic rewriting would not pick it up correctly. However, I got distracted, and a wholesale automatic rewrite would still run into cases where an _ostr/_ustr instance from a library's .rodata would still be referenced after the library has already been dlcose'd. So I never came around to finishing all that. But there appears to be renewed interest in (automatic) rewritings here now, so it probably makes sense if I share this part of my work anyway. Change-Id: I3da9d38398e4bca373cb0000a9d34b49a36ad58a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166792 Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de> Tested-by: Jenkins
2024-04-24[API CHANGE] a11y: Use XAccessible for relation targetsMichael Weghorn2-6/+6
Use a Sequence of XAccessible rather than its base interface XInterface for AccessibleRelation's TargetSet. As the targets are accessible objects as well, anything other than XAccessible doesn't make much sense. Using XAccessible right away makes that clearer and avoids the need to query the XAccessible interface. (The winaccessibility bridge was already using `static_cast`, relying on the fact that the objects are XAccessibles.) The a11y UNO API is not published, so an API change should be unproblematic. Change-Id: I7f08e98d1ec303d5343d9a7954187cdd71495ebc Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166586 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Tested-by: Jenkins
2024-04-10simplify OGenericUnoController initNoel Grandin1-7/+3
Change-Id: I9053e8f320b140bbb6907daac61939258245ff7f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165913 Tested-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-04-03tdf#146619 Drop unused 'using namespace' in: dbaccess/Gabor Kelemen17-33/+0
Change-Id: If006c5f0002b9d5981220efa22873bf0adb169bb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165543 Tested-by: Jenkins Reviewed-by: Gabor Kelemen <gabor.kelemen.extern@allotropia.de>
2023-12-24cid#1545470 COPY_INSTEAD_OF_MOVECaolán McNamara1-2/+1
and cid#1545468 COPY_INSTEAD_OF_MOVE cid#1545446 COPY_INSTEAD_OF_MOVE cid#1545435 COPY_INSTEAD_OF_MOVE cid#1545419 COPY_INSTEAD_OF_MOVE cid#1545415 COPY_INSTEAD_OF_MOVE cid#1545410 COPY_INSTEAD_OF_MOVE cid#1545390 COPY_INSTEAD_OF_MOVE cid#1545384 COPY_INSTEAD_OF_MOVE cid#1545374 COPY_INSTEAD_OF_MOVE cid#1545371 COPY_INSTEAD_OF_MOVE cid#1545368 COPY_INSTEAD_OF_MOVE cid#1545366 COPY_INSTEAD_OF_MOVE cid#1545335 COPY_INSTEAD_OF_MOVE cid#1545331 COPY_INSTEAD_OF_MOVE cid#1545327 COPY_INSTEAD_OF_MOVE cid#1545308 COPY_INSTEAD_OF_MOVE cid#1545280 COPY_INSTEAD_OF_MOVE cid#1545199 COPY_INSTEAD_OF_MOVE Change-Id: If05a13125b05ccd93d34d0eced566e7b3b58aaef Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161256 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-12-19cid#1557601 COPY_INSTEAD_OF_MOVECaolán McNamara1-2/+1
and cid#1546498 COPY_INSTEAD_OF_MOVE cid#1546384 COPY_INSTEAD_OF_MOVE cid#1546376 COPY_INSTEAD_OF_MOVE cid#1546374 COPY_INSTEAD_OF_MOVE cid#1546373 COPY_INSTEAD_OF_MOVE cid#1546368 COPY_INSTEAD_OF_MOVE cid#1546365 COPY_INSTEAD_OF_MOVE cid#1546356 COPY_INSTEAD_OF_MOVE cid#1546340 COPY_INSTEAD_OF_MOVE cid#1546266 COPY_INSTEAD_OF_MOVE cid#1546236 COPY_INSTEAD_OF_MOVE cid#1546188 COPY_INSTEAD_OF_MOVE cid#1546178 COPY_INSTEAD_OF_MOVE cid#1546166 COPY_INSTEAD_OF_MOVE cid#1546156 COPY_INSTEAD_OF_MOVE cid#1546144 COPY_INSTEAD_OF_MOVE cid#1546143 COPY_INSTEAD_OF_MOVE cid#1546100 COPY_INSTEAD_OF_MOVE cid#1546078 COPY_INSTEAD_OF_MOVE cid#1546041 COPY_INSTEAD_OF_MOVE cid#1546036 COPY_INSTEAD_OF_MOVE cid#1546033 COPY_INSTEAD_OF_MOVE Change-Id: Ib3586d93198992e206baf5c2de5a663d5574aa3c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160979 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-12-10cid#1545177 COPY_INSTEAD_OF_MOVECaolán McNamara1-4/+1
and cid#1545179 COPY_INSTEAD_OF_MOVE cid#1545187 COPY_INSTEAD_OF_MOVE cid#1545188 COPY_INSTEAD_OF_MOVE cid#1545189 COPY_INSTEAD_OF_MOVE cid#1545196 COPY_INSTEAD_OF_MOVE cid#1545197 COPY_INSTEAD_OF_MOVE cid#1545204 COPY_INSTEAD_OF_MOVE cid#1545223 COPY_INSTEAD_OF_MOVE cid#1545236 COPY_INSTEAD_OF_MOVE cid#1545239 COPY_INSTEAD_OF_MOVE cid#1545253 COPY_INSTEAD_OF_MOVE cid#1545274 COPY_INSTEAD_OF_MOVE cid#1545286 COPY_INSTEAD_OF_MOVE cid#1545309 COPY_INSTEAD_OF_MOVE cid#1545311 COPY_INSTEAD_OF_MOVE cid#1545345 COPY_INSTEAD_OF_MOVE cid#1545358 COPY_INSTEAD_OF_MOVE cid#1545361 COPY_INSTEAD_OF_MOVE cid#1545365 COPY_INSTEAD_OF_MOVE cid#1545367 COPY_INSTEAD_OF_MOVE cid#1545372 COPY_INSTEAD_OF_MOVE cid#1545373 COPY_INSTEAD_OF_MOVE cid#1545377 COPY_INSTEAD_OF_MOVE cid#1545392 COPY_INSTEAD_OF_MOVE cid#1545399 COPY_INSTEAD_OF_MOVE cid#1545404 COPY_INSTEAD_OF_MOVE cid#1545408 COPY_INSTEAD_OF_MOVE cid#1545430 COPY_INSTEAD_OF_MOVE cid#1545439 COPY_INSTEAD_OF_MOVE cid#1545449 COPY_INSTEAD_OF_MOVE Change-Id: I3afe836a0bbc8bd70937035e60eb020435e413d2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160539 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-12-08cid#1545692 std::swap COPY_INSTEAD_OF_MOVECaolán McNamara1-6/+2
Change-Id: Ic0679eccd7cc781fb799b15fbb2660fcbd1445f4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160447 Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-12-04cid#1546422 COPY_INSTEAD_OF_MOVECaolán McNamara1-5/+1
and cid#1546416 COPY_INSTEAD_OF_MOVE cid#1546415 COPY_INSTEAD_OF_MOVE cid#1546391 COPY_INSTEAD_OF_MOVE cid#1546390 COPY_INSTEAD_OF_MOVE cid#1546317 COPY_INSTEAD_OF_MOVE cid#1546252 COPY_INSTEAD_OF_MOVE cid#1546251 COPY_INSTEAD_OF_MOVE cid#1546249 COPY_INSTEAD_OF_MOVE cid#1546243 COPY_INSTEAD_OF_MOVE cid#1546195 COPY_INSTEAD_OF_MOVE cid#1546193 COPY_INSTEAD_OF_MOVE cid#1546137 COPY_INSTEAD_OF_MOVE cid#1545738 COPY_INSTEAD_OF_MOVE cid#1545782 COPY_INSTEAD_OF_MOVE Change-Id: I10d5091aa72b682371764b8a18cc5062e272c031 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/160285 Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com> Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
2023-11-18c++20: use std::erase(_if) instead of std::remove(_if)+erase (part 3)Julien Nabet2-4/+4
Change-Id: I1ea95e0bfeaed88b9484403e6796574f1d06f133 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159612 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2023-10-19Extended loplugin:ostr: Automatic rewrite O[U]StringLiteral: dbaccessStephan Bergmann1-2/+2
Change-Id: I5f92e390ef57ae8f2aba43782c11ca5ee31dba93 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158187 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-10-14Use exception ctors, instead of setting members laterMike Kaganski1-5/+3
Avoids overwriting source location in message Change-Id: Ia0290c7dd1ab3ea1357712a27ecab75c7b583dd4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157893 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-08-02split Point/Size/Rectangle into AbsoluteScreenPixel* typesNoel Grandin1-2/+2
to attempt to make it obvious in code what kind of coordinate system we are dealing with. The idea is that by doing this, the compile-time type checking will flush out inconsistencies between different code. I started with vcl::Window::OutputToAbsoluteScreenPixel and worked outwards from there. Change-Id: Ia967d7a0bb38886695f3a761b85c8b9340ddb1c0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154676 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-04-14loplugin:stringviewparam improvementsNoel Grandin3-5/+5
improve the check by checking for methods that exclude using string_view, rather than checking for methods that __can__ use string_view, which leads to exposing some holes in our o3tl/string_view.hxx coverage. Change-Id: Ic9dd60441c671f502692f9cd2a1bb67301c4b960 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/150277 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-04-02Avoid conversions between OUString and OString in VCLMike Kaganski3-5/+5
Standardize on OUString, which is the main internal string class. Convert from/to OUString only when communicating with respective external APIs. Removes about 200 conversions from the code. Change-Id: I96ecee7c6fd271bb76639220e96d69d2964bed26 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149930 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2023-03-25loplugin:stringadd in d*Noel Grandin1-14/+10
after my patch to merge the bufferadd loplugin into stringadd Change-Id: I625a0adf89f54ea25f0377a266c37acf9a37d723 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149550 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2023-03-16Resolves: tdf#153908 scrolling relationships moves the wrong directionCaolán McNamara1-2/+2
Change-Id: Ic49e0c167a020269fa7de58ea9e1ece0b66d57ef Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148950 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2023-01-28Use ImplInheritanceHelper in OTableWindowAccessStephan Bergmann1-11/+1
Change-Id: I4677b9f5e3fe21c6ff80e20bbb7b6befca9f99ea Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146273 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-01-28Use ImplInheritanceHelper in OJoinDesignViewAccessStephan Bergmann1-5/+1
Change-Id: Ib67e03aeea4df67fc7a7b5db5d8cfdd9e57f87f1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146271 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2023-01-28Use ImplInheritanceHelper in OConnectionLineAccessStephan Bergmann1-11/+1
Change-Id: Ib9b1f2c4dc9a8b6190ccfcffbf25e270d5322050 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/146270 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-12-14loplugin:implinheritancehelper in dbaccessNoel Grandin2-29/+3
use more ImplInheritanceHelper to reduce boilerplate Change-Id: Iefeccd009ae03d0dda8b9ff436408d747052b8af Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144161 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-10-21Related: tdf#114441 use better types in place of recently changed onesIlmari Lauhakangas2-2/+2
Best to harmonise these to sal_Int64, along the lines of commit 206543c7bef58fc559852553a3b2faba0b604259 Author: Michael Weghorn <m.weghorn@posteo.de> Date: Fri Sep 2 13:06:08 2022 +0200 [API CHANGE] tdf#150683 a11y: Switch a11y child index to 64 bit Change-Id: I3cddb192990ba87dc637cdd765d1427bc4611d2b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/141621 Tested-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org> Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
2022-10-20tdf#114441 sal_uLong type to sal_uInt32 typeCalvince Otieno1-1/+1
Change-Id: Icaa9c0a45f257c8c8d5e9d80785554ac82902c59 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/141514 Tested-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org> Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org>
2022-09-19Rename MouseNotifyEvent to NotifyEventTypeSamuel Mehrbrodt4-7/+7
Also contains keyboard and focus events, not only mouse events Change-Id: Iec1d6c341b01a489ba80fe9634ea3579afb02ea9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139970 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk> Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>
2022-09-05tdf#147021 Use std::size() instead of SAL_N_ELEMENTS() macrojsala1-4/+4
Also change some integer by std::size_t Change-Id: I6a0fda3ba44815aac3312d523be04f4f973ce84f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137142 Tested-by: Jenkins Reviewed-by: Hossein <hossein@libreoffice.org>
2022-09-02[API CHANGE] tdf#150683 a11y: Switch a11y child index to 64 bitMichael Weghorn3-13/+13
With 16k column support in Calc enabled by default in commit 4c5f8ccf0a2320432b8fe91add1dcadf54d9fd58 Date: Tue Mar 8 12:44:49 2022 +0100 change default Calc number of columns to 16384 (tdf#50916) , the number of Calc cells in a spreadsheet is larger than SAL_MAX_INT32, meaning that a 32-bit a11y child index is no more enough and using it resulted in integer overflows in methods handling corresponding Calc cells in the a11y layer. This e.g. had the effect of the Orca and NVDA screen readers not announcing focused or selected cells properly when their a11y child index was out of the 32-bit integer range. Switch the internal a11y child indices to 64 bit to be able to handle this properly internally. Since the platform APIs (at least AT-SPI on Linux and IAccessible2 on Windows; from what I can see LO's macOS a11y bridge doesn't directly expose the child index) are still restricted to 32 bit, larger child indices still cannot be exposed via the platform APIs. As a consequence, use of the the IAccessible2 and AT-SPI methods that use the child index remains problematic in those cases where the child index is larger. However, as an alternative to using the AT-SPI Table interface and the IAccessibleTable/ IAccessibleTable2 interfaces with the child index to retrieve information about a specific cell, both AT-SPI and IAccessible2 also provide interfaces to retrieve that information directly from the cell object (TableCell interface for AT-SPI, IAccessibleTableCell for IAccessible2). Those interfaces are already implemented/exposed for winaccessibility (s. `CAccTable`) and the qt5/qt6/kf5 VCL plugins (s. the `QAccessibleTableCellInterface` methods implemented in `QtAccessibleInterface`). With the switch to 64-bit internal a11y child indices, these now behave correctly for cells with a child index that doesn't fit into 32 bit as well. NVDA on Windows already uses the IAccessibleTableCell interface and thus announcing focused cells works fine with this change in place. Orca on Linux currently doesn't make use of the AT-SPI TableCell interface yet, but with a suggested change to do so [1], announcement of selected cells works with the qt6 VCL plugin with a current qtbase dev branch as well - when combined with the suggested changes to implement support for the AT-SPI TableCell interface in Qt [2] [3] and the LO change based on that [4] and a fix for a nullptr dereference [5]. The gtk3 VCL plugin doesn't expose the AT-SPI TableCell interface yet, but once it does so (via `AtkTableCell`), it also works with the suggested Orca change [1] in place. (Adding that is planned for an upcoming change, works with a local WIP patch.) For handling return values that are larger than what platform APIs support, the following approach has been chosen for now: 1) When the return value is for the count of (selected) children, the maximum value N supported by the platform API is returned. (This is what `ScAccessibleTableBase::getAccessibleChildCount` did previously.) The first N elements can be accessed by their actual (selection) indices. 2) When the return value is the child/cell index, -2 is returned for objects whose index is greater than the maximum value supported by the platform API. Using a non-negative value would mean that the index would refer to *another* actually existing child. A child index of -1 on the other hand tends to be interpreted as "child is invalid" or "object isn't actually a child of its (previous) parent any more)". For the Orca case, this would result in objects with a child index of -1 not being announced, as they are considered "zombies" [6]. What's still somewhat problematic is the case where more than 2^31 children are *selected*, since access to those children still happens by the index into the selection in the platform APIs, and not all selected items are accessible this way. (Screen readers usually just retrieve the first and last element from the selection and announce those.) Orca already seems to apply different handling for the case for fully selected rows and columns, so "All cells selected" or "Columns ... to ... selected" is announced just fine even if more than 2^31 cells are selected. (Side note: While Microsoft User Interface Automation - UIA - also uses 32-bit indices, it also has specific methods in the ISelectionProvider2 interface that allow to explicitly retrieve the first and last selected item, `ISelectionProvider2::get_FirstSelectedItem` and `ISelectionProvider2::get_LastSelectedItem`, but we currently don't support UIA on Windows.) Bound checks at the beginning of the methods from the `XAccessibleContext`, `XAccessibleSelection` and `XAccessibleTable` interfaces that take a child index (or in helper methods called by those) should generally already prevent too large indices from being passed to the methods in the lower layer code that take smaller integer types. Such bound checking has been been added in various places where it wasn't present yet. If there any remaining issues of this kind that show after this commit, they can probably be solved in a similar way (s.e.g. the change to `AccessibleBrowseBox::getAccessibleChild` in this commit). A few asserts were also added at places where my understanding is that values shouldn't be larger than what is supported by a called method anyway. A test case will be added in a following change. [1] https://gitlab.gnome.org/GNOME/orca/-/merge_requests/131 [2] https://codereview.qt-project.org/c/qt/qtbase/+/428566 [3] https://codereview.qt-project.org/c/qt/qtbase/+/428567 [4] https://gerrit.libreoffice.org/c/core/+/138750 [5] https://codereview.qt-project.org/c/qt/qtbase/+/430157 [6] https://gitlab.gnome.org/GNOME/orca/-/blob/82c8542002e36e0d3d918088d583162d25136143/src/orca/script_utilities.py#L5155 Change-Id: I3af590c988b0e6754fc72545918412f39e8fea07 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139258 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
2022-08-23tdf#148251 Use std::swap instead of using temporary valuesLiu Hao1-7/+3
Change-Id: Ibbc46bfb17d4d27dc40e63c65190b3f3a5f2d9c4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138256 Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> Tested-by: Jenkins
2022-08-20cid#735694 silence Dereference after null checkCaolán McNamara1-0/+1
Change-Id: I76d6d7f33177b3cb15b258d497535e5db0f4d137 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138582 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-08-18Move tools/diagnose_ex.h to comphelper/diagnose_ex.hxxStephan Bergmann7-7/+7
...so that its TOOLS_WARN_EXCEPTION can be used in comphelper/source/misc/logging.cxx in a follow-up commit. (And while at it, rename from diangose_ex.h to the more appropriate diagnose_ex.hxx. The comphelper module is sufficiently low-level for this immediate use case, so use that at least for now; o3tl might be even more suitable but doesn't have a Library until now. Also, for the immediate use case it would have sufficed to only break DbgGetCaughtException, exceptionToString, TOOLS_WARN_EXCEPTION, TOOLS_WARN_EXCEPTION_IF, and TOOLS_INFO_EXCEPTION out of include/tools/diagnose_ex.h into an additional new include/comphelper/diagnose_ex.hxx, but its probably easier overall to just move the complete include file as is.) Change-Id: I9f3222d4ccf1a9ac29d7eb9ba1530d53e2affaee Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138451 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2022-08-08no need for ScrollBarBox if bg is already the desired colorCaolán McNamara1-9/+3
Change-Id: I94f83a1c2142b8b8712fc3527a90dad4f0babb9a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137977 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-08-06tdf#117388 use native scrollbar under gtk in database scrolled windowCaolán McNamara1-8/+13
Change-Id: I84486f8c8761b80fc45cdccc620485b67afdd048 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137879 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2022-07-11tools: rename getHeight/Width() to GetOpenHeight/Width()Chris Sherlock1-1/+1
By default Rectangle uses closed interval, if we really want to use half open intervals then we should specifically say as such in the name. Change-Id: Id7a91120ba1a1a4bc330014216b73a692dbf03a2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136575 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>