summaryrefslogtreecommitdiff
path: root/vcl/qt5
AgeCommit message (Collapse)Author
2021-08-26tdf#144037 Qt5 just close popup with mouse outsideJan-Marek Glogowski
How hard could it be to close a popup window when losing focus or clicking outside of it (AKA tdf#143114 problem 3)? At least with Qt it feels like solving an NP problem... So don't always force-close the popup window if clicked anywhere on it. Seems to be consistent with gen and gtk3. Change-Id: Ia1c231c0b51a55bec2c587feffcf14bb4b4cee55 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121093 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2021-08-26tdf#144008 Qt5/Kf5 create frames in the GUI threadJan-Marek Glogowski
There was a 50% chance my pick would have been correct... ok, just half-true, as in hindsight, I should have preferred the secure variant using RunInMain to start with. I thought I could use some templated class functions to get rid of all the copy and paste, but that looked even more ugly. P.S. if you wonder - like myself - about the code formatting in Qt5Instance::CreateFrame: that if from clang-format. Change-Id: I3a6b0c12c9d71ad8e777ed82526d1515a249832c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121091 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2021-08-20New loplugin:unusedcapturedefaultStephan Bergmann
In sc/qa/unit/ucalc_formula.cxx, dropping the capture-default from the lExpectedinF lambda revealed that MSVC in C++17 mode (i.e., when building without --with-latest-c++) requires ROW_RANGE (a local const int variable from the enclosing TestFormula::testTdf97369) to be captured, even though all uses of that variable within the lambda body are constant expressions. That is still true at least for the latest Visual Studio 2019 version 16.11.1. (This is not an issue for the lExpectedinH and lExpectedinI lambdas a few lines further down, as they, in addition to using that ROW_RANGE, also use the local const double variables SHIFT1 and SHIFT2, whose uses are not constant expressions, so they are implicitly captured and loplugin:unusedcapturedefault does not suggest dropping those lambdas' capture-defaults in the first place.) Change-Id: Iee7efb485187cbe8eba6a2d470afca4993eb1816 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120693 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2021-08-20tdf#143957 Qt5 always create an OpenGLContextJan-Marek Glogowski
Nothing checks the result and a lot of code just uses it. Change-Id: I1a672e98d42673fd684538ead831622f6a14e9f0 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120761 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2021-08-16Drop tools::Rectangle::getX/getY, which are just duplicates of Left/TopMike Kaganski
The change allowed to simplify many places where previously this API was used, to avoid inefficient calculations (e.g., moving rectangle keeping its size, and then immediately changing the size). Change-Id: Ica2dc594d91cae83e2c2740c1f4fb23f44998916 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120461 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
2021-08-05vcl::KeyCode::GetName doesn't need a specific vcl::WindowCaolán McNamara
any will do Change-Id: Ice1875d9b9e1cd46ecbc6e306c77768dc0b07dbd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120029 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-08-03Pass context and resource string down to boost::locale separatelyNoel Grandin
because this is often on a hot path, and we can avoid the splitting and joining of strings like this. Change-Id: I2a24a123a64b762fd0741c45eaca3ad4bdd5580d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119884 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-08-01Fix typosAndrea Gelmini
Change-Id: Ib48f6c8e0424e6843d2b3a7b3558d1d8714a80ce Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119792 Tested-by: Jenkins Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
2021-07-30tdf#143580 Qt5 don't use Qt::Popup for FLOAT winsJan-Marek Glogowski
Main problem is, that Qt::Popup grabs the focus and therefore generates a focus-out event for the combobox, which then closes the just shown popup window. The grab happens inside QWidget private code and there is no way around it. But instead of "faking" Qt::Tooltip, this uses Qt::Widget with additional flags. Regression from commit 7e6fee830116823b9cd8e46d6962df4ea2bc1ea6 ("Qt5 fix Qt::Popup window handling"). Change-Id: Ia1f8e33d98f7ec36cf1ebc350886121dfaadd658 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119691 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.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-22tdf#143493 Qt5 key modifier events don't have textJan-Marek Glogowski
Regression from commit 862fdb98ca271b60a831cd5420fd16d5f9c1c747 ("tdf#143298 Qt5 send SalEvent::KeyModChange events"). Change-Id: I6981af06e3a73dee45ed10416f5d3b17b860a73b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119375 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.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-20Qt5 fix Qt::Popup window handlingJan-Marek Glogowski
I guess to get popup windows somehow working, they were matched to Qt::ToolTip. Fixing that by removing SalFrameStyleFlags::FLOAT from the tooltip check, resulted in rather bizarre bahviour. The Qt::Popup window is modal, as documented, but wouldn't close when clicked outside, like normal popups. And I neither got any mouse button or focus events, just some leave or enter. The only way to interact with anything again, was by clicking somewhere on the popup where it can't take focus... and it has nothing to do with the transition setting either. In the end it turned out that Qt::StrongFocus prevented the mouse events to happen. Even without it the widget accepts mouse and keyboard focus, so nothing seems lost by omitting that for the Qt::Popup case; hopefully... Change-Id: Icda7bbe87268293a400fe0da551d2804675d4c2d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119236 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2021-07-20tdf#143298 Qt5 send SalEvent::KeyModChange eventsJan-Marek Glogowski
I originally omitted this in the Qt implementation, as I couldn't find any non-working use case. The implementation got a bit hacky, because Qt doesn't have a non- native way to identify different L/R modifier keys, so we must process the X11/xkb keycode ourself, which obviously won't work on Wayland... but most times this is not relevant, so the default modifier notification may be good enough. P.S. it's basically the same code then X11 and Gtk... Change-Id: I37fbfde4a33a966b6017f3e0c280e2c7ea91e4db Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119235 Tested-by: Jenkins Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2021-07-20tdf#143334 Qt5 don't reset buffer on style changeJan-Marek Glogowski
This bug was "unveiled" by commit 963f252cd1ea9c268a6ced68a3454b10cbee1a89 ("Qt5/KF5 get rid of unneeded own grahics handling"). I'm not sure why I ever came up with that code. Eventually we would need a paint event, but at least changing the theme correctly updated LO UI, so that seems to be handled correctly. Change-Id: I528b551180be184427eeeeeb2977e2b7da073ce6 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119237 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-07-02vcl: drop GenericUnixSalDataTypeJan-Marek Glogowski
It's just used for a singke assert and SalData is generally just used as a static cast. Change-Id: I8d74e82e511413d940a3f200f022a9204e588cd7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118288 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2021-06-10loplugin:unnecessaryreturn SalFrame::SetPluginParentNoel Grandin
Change-Id: If927a834f5b5d722fc36cce40e161597af6234ca Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116972 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-05-18tdf#104169 - Change mouse cursor to FatCross in calc spreadsheetSarabjot Singh
Added new cursor FatCross to calc. Change mouse cursor to FatCross while hovering over the spreadsheet in calc instead of earlier Arrow. Co-authored-by: Mesut Çifci <mesutcifci97@gmail.com> Change-Id: I672a058cc702eab0cba6ac953534def915766859 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114679 Tested-by: Jenkins Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
2021-05-05WASM: add Emscripten demo applicationJan-Marek Glogowski
Change-Id: I31297142761255b1f357fc9677a644b7a93c921a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111128 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2021-05-03loplugin:unnecessaryparen small improvementNoel Grandin
when calling a function, and passing only one arg, but the function has defaulted args, we were ignoring this case. Change-Id: I86517f18e30531127664088ddc09ef96dbd8bdf5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115033 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-05-01Related: cid#1478001 CreateVirtualDevice never passed a null pGraphics argCaolán McNamara
Change-Id: I0701b15a28ab3583586c0c8018c511e100b41a93 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114948 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-04-29remove support for BITMASK in vcl backendsNoel Grandin
Rather use a proper alpha channel if we need transparency. This is another small step towards merged alpha in our vcl layer. I suspect the intent in a lot of this code was to save memory. Which have been a thing way back then, but these days our backends mostly end up doing a copy-and-convert to a real alpha channel anyway, so the existing code is actually now a pessimisation. Change-Id: I4a2bcbb2f76b841f05bc00580f364492829c69de Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114808 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-04-23tdf#141504 Qt5 fix transparency revertJan-Marek Glogowski
Regression from commit cb09533c4a007e7cfde69046bcaeb47117d30a86 ("tdf#141269 Incorrect transparency after roundtrip"). Change-Id: Ic20db743e6f364fe14305ccb9f4b74d95a7040aa Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114527 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2021-04-21loplugin:stringadd replace OUStringLiteral temporaries with OUString::ConcatNoel Grandin
Change-Id: I656f06a74d9f0180ae460264563d6a935c7d2c60 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114377 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-04-20use OUString::Concat here, not OUStringLiteralNoel Grandin
Change-Id: Ia2172bcab60f32c9d9d4f6ca0230484343eef69b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114321 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-04-15tdf#141269 Incorrect transparency after roundtripCaolán McNamara
Revert "convert internal bitmap formats transparency->alpha" This reverts commit c181e510c5f5e74f1f6824b64637849aace9ae63. and later fix up of Revert "tdf#141504 qt5: ugly images" This reverts commit e7424ff25a724ea5bb54b2282d5c3cbf74c92053. a lot of places are still working int transparency values and not opacity Change-Id: I31342cdb76629acbaebfcdfa385407d3291fe06f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114150 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-04-15Qt5 correctly focus the navigator windowJan-Marek Glogowski
Handle SalFrame::Show's bNoActivate. The missing implementation became visible with commit 001cf630f14109b4200b218161418350562713fa ("register navigator individually in each module that it exists in") Change-Id: I5edf43bdf2b0460410fdd846c7698d00299088bb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114116 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2021-04-14Qt add additional info to ToolkitNameJan-Marek Glogowski
Adds the used font backend and the QPA platform name, so we don't need to ask / verify all time (and less chance of wrong info). Examples: - qt5 (qfont+xcb) => QFont text rendering + X11 backend - kf5 (cairo+wayland) => Cairo text rendering + Wayland backend Change-Id: I1102dd6d83b0ed48318ac5c31c8ca09d4fdd73eb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113945 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2021-04-11Qt5/KF5 get rid of unneeded own grahics handlingJan-Marek Glogowski
This was hiding tdf#141623, when I decided to implement the override to run the kf5 VCL plugin with the qfont text rendering. Change-Id: Id1fcd363bd77a756cb27e3a171c872ce792da5ad Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113956 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2021-04-11tdf#141623 Qt5+cairo init surface with widget sizeJan-Marek Glogowski
The QFont based rendering path directly uses the widgets size to initialize the QImage buffer image, so do the same for the Cairo surface, instead of the arbitrarily size of 640x480. Change-Id: I91326dab67cbbb5e75b78b02c34eaca61ad26482 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113955 Tested-by: Jenkins Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>
2021-04-09Recheck include/ with IWYUGabor Kelemen
See tdf#42949 for motivation Change-Id: Ifc253bf800bb1468b5774663a93f4fb30bec81d3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113657 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2021-04-07vcl: move graphic handling into Qt5GraphicsBackendTomaž Vajngerl
This is an effort to make SalGraphicsImpl mandatory for all backends. This introduces Qt5GraphicsBackend: a subclass of SalGraphicsImpl, which now handles graphic rendering. Change-Id: I42aece59d0c692ca1dd33e30f31c5bcceab02008 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113734 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2021-04-06tdf#141504 qt5: ugly imagesNoel Grandin
regression from commit c181e510c5f5e74f1f6824b64637849aace9ae63 Date: Thu Jan 7 09:46:07 2021 +0200 convert internal bitmap formats transparency->alpha Change-Id: I858ba2c986bdac6f7e26145efde253485e8b2281 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113660 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-04-06tdf#140404 Qt ignore "unchanged" clipboard eventsJan-Marek Glogowski
LO gets a Qt signal on all clipboard changes. For X11 you get one signal when you set the clipboard. Anything else normally signals lost of clipboard ownership. But on Wayland LO somehow gets a second notification without any actual change. AFAIK it's not triggered by any LO actions and isOwner still indicates, that LO has the ownership. This breaks the single notification assumption, the code was relying on. Initially I found it quite tricky to find a rule to identify the ignorable change signals. Change-Id: I744cdd3c4254533b01d909309ecc3967d789361e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113617 Reviewed-by: Michael Weghorn <m.weghorn@posteo.de> Reviewed-by: Ilmari Lauhakangas <ilmari.lauhakangas@libreoffice.org> Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de> Tested-by: Jenkins
2021-04-06vcl: use PixelFormat enum in SalBitmap interface and backendsTomaž Vajngerl
This changes all backends to use PixelFormat as the input to the SalBitmap::Create method (and all the backends). This is the first part as we need to make sure to also limit the use of GetBitCount method and also use of it in SalGraphics. Change-Id: I8d2b6adfcb8fe3dd78010538411f338c9a1c3996 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113603 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2021-04-06vcl: remove 4-bit bitmap support from qt5 backendTomaž Vajngerl
We removed 4-bit support for bitmaps, but the qt5 backend still has (special) support this bitmap format, which now can safely be removed and make the backend a lot simpler. Change-Id: I12309909a9ee3079cef7c4e59154ac48151e18d5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113619 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
2021-03-31remove internal 4bit scanline formatsNoel
since we have already removed the 4-bit internal bitmap formats. Change-Id: Ie481aaa8e25642a47e30beb6f37e2d3beda304e9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113412 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-03-03vcl/floatwin.hxx can be toolkit only nowCaolán McNamara
Change-Id: Ifd8f58771ea6f9212a0dca7d4550c86ebecd9333 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111814 Tested-by: Caolán McNamara <caolanm@redhat.com> Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2021-03-03loplugin:refcounting in vclNoel
Change-Id: I92e9db7abdfe5912335fd94e42422e8556d71091 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111769 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2021-02-24add additional 0-1 alpha argument to DrawTransformedBitmap()Luboš Luňák
This allows the VCL backends the apply the extra alpha transformation as it sees fit, rather than it being done manually elsewhere (and even if the backend doesn't implement it, at least do it in one place in the function). With the document from tdf#136223, going from slide 2 to slide 3, this easily saves 10-30% of CPU cycles. As an additional bonus, using AlphaMask::BlendWith() rather than AlphaMask::Replace() makes edges of shapes noticeably more smooth. Change-Id: I036dc9b887d6def0c7cdad3982becabdc7cd5206 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111247 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
2021-02-24simply use drawTransformedBitmap()Luboš Luňák
At least with Skia this is faster than GraphicObject trying to handle it manually, even in raster mode. Change-Id: If77d108751f5621878d4ea87a996c2ea0253d111 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111246 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lunak@collabora.com>