Age | Commit message (Collapse) | Author |
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
Change-Id: Ib48f6c8e0424e6843d2b3a7b3558d1d8714a80ce
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119792
Tested-by: Jenkins
Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
* 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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
Change-Id: If927a834f5b5d722fc36cce40e161597af6234ca
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116972
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
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>
|
|
Change-Id: I31297142761255b1f357fc9677a644b7a93c921a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111128
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
|
|
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>
|
|
Change-Id: I0701b15a28ab3583586c0c8018c511e100b41a93
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114948
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
|
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>
|
|
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>
|
|
Change-Id: I656f06a74d9f0180ae460264563d6a935c7d2c60
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114377
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
Change-Id: Ia2172bcab60f32c9d9d4f6ca0230484343eef69b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114321
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
Change-Id: I92e9db7abdfe5912335fd94e42422e8556d71091
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111769
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
|
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>
|
|
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>
|