The mention of Calc tables having 256 columns
and 32000 rows is a bit outdated.
I actually started looking here because with
16k columns, the 32-bit a11y child indices aren't sufficient
for all cells anymore... (tdf#150683)
Also remove duplicated words.
Change-Id: Id707d56e3947c727811259d5f1c46a7f136efc40
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/139113
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
While the documentation for
`AccessibleEventId::SELECTION_CHANGED_REMOVE`
said that the removed item is set in
`AccessibleEventObject::OldValue`, all places that set the removed
item in that type of event actually set it in
`AccessibleEventObject::NewValue` and e.g. winaccessibility's
`AccContainerEventListener::HandleSelectionChangedRemoveEvent`
also handles the event with that assumption, so adapt the
doc accordingly.
(There are also various places that send `SELECTION_CHANGED_REMOVE`
events without setting any of the two.)
Change-Id: Ib49068715d9436a99e79d13f2c9720a52a094a76
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138881
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
The mention of a `TRUE` value when the return type is
an `XAccessible` rather than a boolean looks like a
copy-paste error from the
`XAccessibleComponent::containsPoint` doc just above.
While at it, also fix a typo present in both.
Change-Id: I9b597f3e500c7f4e448e228ebc27c45d8dc420a6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138095
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
The doc was contradicting itself, saying (emphasis added):
> Returns the substring of the specified text type that is
> located after the given character and DOES NOT INCLUDE IT.
and
> For example, if text type is
> AccessibleTextType::WORD, then the complete word
> that is closest to and LOCATED BEHIND nIndex is returned.
but also
> The index character WILL BE PART of the returned string.
Add the missing "not" to the latter to make this
consistent and match the observed behavior when testing
this with a Writer paragraph consisting of the characters
"abcdefg":
Calling `getTextBehindIndex(2, css::accessibility::AccessibleTextType::CHARACTER)`
on the corresponding a11y object's `XAccessibleText` interface returns
a TextSegment with
* "d" as text
* a start offset of 3
* an end offset of 4
This is also consistent with `XAccessibleText::getTextBeforeIndex`,
whose documentation is similar and includes the "not"
at the corresponding place. Calling
`getTextBeforeIndex(2, css::accessibility::AccessibleTextType::CHARACTER)`
returns a TextSegment with
* "b" as text
* a start offset of 1
* an end offset of 2
The commit message of the commit adding this suggests that the
semantics were changed at some point, maybe the doc just wasn't
updated to reflect this at this one place back then.
commit 161503a286
Date: Thu Apr 24 16:36:13 2003 +0000
INTEGRATION: CWS uaa02 (1.1.2); FILE ADDED
2003/04/08 11:43:30 af 1.1.2.6: #108113# Made validity of index 'length' implementation dependent for getCharacterBounds().
2003/04/08 10:04:41 af 1.1.2.5: #108113# Added a sequence of requested attributes to getCharacterAttributes().
2003/04/04 14:37:30 af 1.1.2.4: #i12332# Made position <length> a valid character for method getCharacterBounds().
-> 2003/03/18 15:59:07 af 1.1.2.3: #108113# Changed the semantics of getText{Before,At,After}Index().
2003/03/14 10:40:54 af 1.1.2.2: #108113# Removed references to the drafts directory.
2003/03/11 15:00:42 af 1.1.2.1: #108113# Moved from drafts/com/sun/star/accessibility.
Change-Id: I4a3e73829f03c79977cef7542ff59603ea10c6dc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137800
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Allow users to specify a job name which is sent to the printer
(by default this is the current document name).
Usage:
Sub PrintWithCustomJobname
Dim mPOpts(1) As New com.sun.star.beans.PropertyValue
mPOpts(0).Name = "JobName"
mPOpts(0).Value = "My Job Name"
ThisComponent.Print(mPOpts())
End Sub
Change-Id: Id7c1c0da7f581b1c050bb3e6d61dd01b7e8205f0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137562
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
Adds new service DataTable, which is reposible for the properties
of a data table for a chart. Also removes the existing properties
related to the data table from Diagram service, which were added
prematurely in the past, without a data table actually being
supported by the chart module.
Also adds an implementation of the DataTable service in chart2
module.
Change-Id: I0c6b32163745704c623d04baaf0ce0e208c107f5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136789
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
which is internal API, unused (as far as I can tell) by external
users.
This state is purely a bitset
(as implemented by utl::AccessibleStateSetHelper)
so we can just return it as a 64-bit value.
This shaves significant time off the performance profiles
of code that loads very complex shapes, because this state
is frequently used, and we no longer need to allocate a return
value on the heap for every call.
Change-Id: Icf1b3bd367c256646ae9015f9127025f59459c2c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136786
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
... added in commit eae791e82c
Author Jens-Heiner Rechtien <hr@openoffice.org>
Date Wed Jun 27 11:30:00 2007 +0000
INTEGRATION: CWS awttree01 (1.1.2); FILE ADDED
where it was misplaced (intended to be <TRUE/>, not <TRUE>/).
Commit 1501e17b88
Author Rüdiger Timm <rt@openoffice.org>
Date Wed Jan 30 07:20:16 2008 +0000
INTEGRATION: CWS dba24d (1.2.92); FILE MERGED
added '/' before the '>', but kept the incorrect initial one.
Later commit 928b8640c0
Author Michael Stahl <mstahl@redhat.com>
Date Sun Apr 28 00:44:31 2013 +0200
*api: convert <TRUE/> <FALSE/> <VOID/> <NULL/>
removed the correctly placed slashes. This is a leftover.
Change-Id: I800f28de02dd8447509bc236614cab05c2b8c0df
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136037
Tested-by: Mike Kaganski <mike.kaganski@collabora.com>
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Caused this warning:
/home/tdf/jenkins/workspace/gerrit_windows/offapi/com/sun/star/view/XMultiSelectionSupplier.idl:60:
warning: found documented return type for com::sun::star::view::XMultiSelectionSupplier::removeSelection
that does not return anything
Change-Id: Iee156519c2075293b8305627ed22d586143c8688
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136033
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
That was causing the warning:
/home/tdf/jenkins/workspace/gerrit_windows/offapi/com/sun/star/embed/XInplaceObject.idl:85: warning:
found documented return type for com::sun::star::embed::XInplaceObject::translateAccelerators that
does not return anything
A similar 'translateAccelerators' is in XInplaceClient.idl.
Change-Id: I9abcb22ce8f460e2d26202542fef74b7e6a27ea6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136032
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
... which caused the warning:
/home/tdf/jenkins/workspace/gerrit_windows/offapi/com/sun/star/sheet/XDataPilotTable2.idl:62: warning: found documented return type for com::sun::star::sheet::XDataPilotTable2::insertDrillDownSheet that does not return anything
Change-Id: I028820dc11ed8110278f2a655f1ad0c26d7b91cc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136031
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
...which were used by ildc, which is gone since
a8485d558f "[API CHANGE] Remove deprecated idlc
and regmerge from the SDK", and have always been ignored as legacy by its
unoidl-write replacement.
This change has been carried out (making use of GNU sed extensions) with
> for i in $(git ls-files \*.idl); do sed -i -z -E -e 's/\n\n((#[^\n]*\n)+\n)*(#[^\n]*\n)+\n?/\n\n/g' -e 's/\n(#[^\n]*\n)+/\n/g' "$i"; done && git checkout extensions/source/activex/so_activex.idl odk/examples/OLE/activex/so_activex.idl
which apparently happened to do the work. (The final two files are not UNOIDL
source files.)
Change-Id: Ic9369e05d46e8f7e8a304ab01740b171b92335cd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135683
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
* Client code must replace uses of idlc and regmerge with uses of unoidl-write,
see the changes to odk/examples/ and ure/source/uretext/ in
40f2aee658 "Provide unoidl-write also for the
SDK" for examples.
* The new types.rdb format is not compatible with LibreOffice < 4.1. Clients
generating extensions containing such files are advised to use appropriate
LibreOffice-minimal-version elements.
* For compatibility with old extensions, reading the legacy types.rdb format is
still supported.
* The SDK no longer ships an idl/ sub-directory containing the udkap and offapi
.idl files (as, unlike idlc, unoidl-write does not need them).
odk/config/cfgWin.js had to be adapted to look (somewhat arbitrarily) for an
examples/ sub-directory instead of idl/ when checking for "an sdk folder".
gb_UnoApi_package_idlfiles became unused and has been removed.
* The idlc and regmerge executables have been removed. Module idlc has been
removed except for idlc/test/parser/, which is also used by
CustomTarget_unoidl/unoidl-write_test, and which may eventually be moved into
module unoidl. Module external/ucpp and the corresponding configure options
have also been removed.
Change-Id: I42a0231699b863b5ebe2bee63bc32c8f79278cc1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122363
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Add hyphenation zone support, i.e. allow the specified
amount of extra space in lines instead of forcing hyphenation.
It's for limiting hyphenation, used especially with
not justified paragraph alignment.
Note: this is an OOXML interoperability feature,
used also in DTP software and CSS.
* Add checkbox to Text Flow in paragraph dialog
* Store property in paragraph model (com::sun::star::style::ParagraphProperties::ParaHyphenationZone)
* Add ODF import/export
* Add ODF unit test
* Add layout test
Note: extend SvxHyphenZoneItem::GetPresentation() with
missing No CAPS and No last word hyphenation options.
Note: fix OSL_ENSURE condition in SwTextFormatInfo::GetHyphValues().
Follow-up to commit 29359fc15c
"tdf#149324 sw offapi xmloff: add option to not hyphenate short words".
Change-Id: Ib8eff6ea98a9aa5ca6cb9d17faa0bbb789687ce9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135247
Tested-by: Jenkins
Reviewed-by: László Németh <nemeth@numbertext.org>
As reported by Julien, once the mediawiki extension is installed, the
xHandler in framework::DispatchProvider::implts_searchProtocolHandler()
points to an UNO component implemented in Java, and we crash in
dynamic_cast<>(), at least on Linux with gcc 7.5 and libstdc++.
This dynamic_cast<>() call was added in commit
c0fa456436 (tdf#149261 sdext: fix crash on
starting the presenter console for the 2nd time, 2022-05-26), to allow
the presenter console to opt out from protocol handler caching. It was
expected that the proxy object created for a Java UNO component would
simply return nullptr when we try to dynamic_cast<>() it down to a C++
interface.
Fix the problem by moving the interface to an UNO one: this side-steps
the dynamic_cast<>() crash at the price of introducing an UNO interface,
which is not meant to be part of the public UNO API (but at least it's
not published).
It may still make sense to improve the bridges/ code at some stage to
not crash in dynamic_cast<>() on generated Java proxy objects.
Change-Id: Iaac44515339e0dc15dddc3be45ef7dee7331e47a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135114
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Add paragraph property to disable automatic hyphenation of short
words based on a minimum character count.
Note: there is a (broken) global option for Minimum Word Length
at hyphenation, see "Minimal number of characters for hyphenation"
in Tools->Options->Language Settings->Writing Aids), but
for better/comfortable paragraph-level adjustment of typesetting,
add a paragraph property for it. The same option is available e.g.
in Adobe InDesign and in CSS Text Module Level 4 (hyphenate-limit-chars).
* Add checkbox to Text Flow in paragraph dialog
* Store property in paragraph model (com::sun::star::style::ParagraphProperties::ParaHyphenationMinWordLength)
* Add ODF import/export
* Add ODF unit test
* Add layout test
Follow-up to commit 8c018910ae
"tdf#149248 sw offapi xmloff: add option to not hyphenate last word".
Change-Id: I68715f47d17b5c022430bd0e74c88a97bc7f81f9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135028
Tested-by: Jenkins
Reviewed-by: László Németh <nemeth@numbertext.org>
Add option to disable automatic hyphenation of the last word of
paragraphs for better typography.
Note: the same option used e.g. in Adobe InDesign, and a
similar one in CSS Text Module Level 4 (hyphenate-limit-last).
* Add checkbox to Text Flow in paragraph dialog
* Store property in paragraph model (com::sun::star::style::ParagraphProperties::ParaHyphenationNoLastWord)
* Add ODF import/export
* Add ODF unit test
* Add layout test
Follow-up to commit 72bd0df107
"tdf#121658 Add option to not hyphenate words in CAPS".
Change-Id: Ida29c65b5a7cbfd7c399c342781531a6fb86f639
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134985
Tested-by: Jenkins
Reviewed-by: László Németh <nemeth@numbertext.org>
Save the current state of the Calc formula bar to the document.
Number of visible lines is saved into the document settings
and restored when loading that document.
Also adds a UNO property, so that the formula bar height can be
changed via UNO.
Change-Id: Ifef0c9e42cb4f7465516629d2c22974367e0eb33
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133499
Tested-by: Jenkins
Reviewed-by: Samuel Mehrbrodt <samuel.mehrbrodt@allotropia.de>
This is somewhat similar to commit
1acf8e3cfa (sw fields: add Title uno
property, 2022-03-24), except that this is for images, and images
already had a Title, which is persisted to ODT.
So add a new Tooltip property which has priority over the tooltip
generated for URLs, in case the tooltip is non-empty. This helps in case
the URL is long / non-readable / confusing and a more helpful
popup text can be provided instead.
Change-Id: Ife34dab5e4490eb1682c55fb7c01f7509d0057fc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132361
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
All places that were previously emitting
`AccessibleTableModelChangeType::INSERT`
and `AccessibleTableModelChangeType::DELETE`
events have been ported to emit
the 4 new event types introduced in
Change-Id I30821a5acafa4f3d1dafdfc219f3b4568d9a6e89,
"a11y: Add new table model change types for row/col insertion/del"
instead.
Therefore, the handling of those events can be
dropped from the gtk3 VCL plugin and for macOS's
a11y listener as well.
Also, drop the now completely unused
constants from the IDL file as mentioned
in Change-Id I30821a5acafa4f3d1dafdfc219f3b4568d9a6e89:
> From a UNO API perspective, this change
> and the final removal of the
> `AccessibleTableModelChangeType::DELETE`
> and `AccessibleTableModelChangeType::INSERT`
> constants in a follow-up commit
> should be unproblematic, because the
> corresponding APIs have been unpublished in
>
> commit 70626249cd
> Date: Thu Nov 29 00:27:03 2012 +0100
>
> API CHANGE a11y unpublishing and add/removeListener rename.
Change-Id: I1c062e26481b916af882e301c5f911aba9550ea3
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132221
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
So far, there were two types/constants
to use in an `AcessibleTableModelChange` event to indicate
the insertion or deletion of rows and/or columns. From
`offapi/com/sun/star/accessibility/AccessibleTableModelChangeType.idl`:
> /** One or more rows and/or columns have been inserted.
>
> <p>Use the fields of the AccessibleTableModelChange
> structure to determine the indices of the rows and/or columns that
> have been inserted.</p>
> */
> const short INSERT = 1;
>
> /** One or more rows and/or columns have been deleted.
>
> <p>The affected area of the table is stored in the fields of the
> AccessibleTableModelChange structure.</p>
> */
> const short DELETE = 2;
From the documentation, it would be possible to indicate an
insertion or deletion of both, rows and columns in a single
event. However, there is no single instance where this is
actually used to indicate the deletion/insertion of
both, whole rows and whole columns at the same time.
The way that indices are currently used is rather confusing
and results in incorrect a11y events being sent on maOS as well
as the gtk3 VCL plugin:
When only rows are inserted, row indices are set as expected
(index of the first and last inserted row), but the column
indices are set to the first and last column in the table;
i.e. the indices actually give the range of the newly
inserted cell range, rather than just the indices of the rows
that have been inserted. (The same applies
the other way around when only columns are inserted.)
That's not what I would have expected when reading the
documentation. ("Use the fields of the AccessibleTableModelChange
structure to determine the indices of the rows and/or columns that
have been inserted.")
In the same way, the range of deleted cells is set
when emitting `AccessibleTableModelChangeType::DELETE` events.
In this case, this can be seen as matching what the
documentation says. ("The affected area of the table is
stored in the fields of the AccessibleTableModelChange
structure.")
In any case, the way that the events are handled
in the gtk3 VCL plugin and for macOS results in
the emission of incorrect events,
since those are handling such indices as if both,
rows and columns had been inserted/deleted.
Example for the gtk3 VCL plugin:
Row with index 1 has been deleted from a table.
-> an AccessibleTableModelChange event is sent with
Type=AccessibleTableModelChangeType::DELETE
FirstRow=1
LastRow=1
FirstColumn=0
LastColumn=<index of last column>
This would then result in 2 AT-SPI events being
emitted by the gtk3 VCL plugin:
* one that indicates that row 1 has been deleted (OK)
* another event that indicates that all columns have been
deleted (NOT OK)
Instead of changing the handling of the existing
`AccessibleTableModelChangeType`s, introduce 4 new
types to replace the existing ones that
don't mix handling of rows and columns at
the same time: one for row insertion,
one for column insertion, one for row deletion,
one for column deletion.
This commit also adds handling for the newly added
change types for macOS and the gtk3 VCL plugin on
Linux.
winaccessibility is unaffected because
it doesn't have any handling specific
to the change type.
The qt5/qt6 VCL plugins don't yet have any
handling for the `AcessibleTableModelChange`
event yet (but that will be added in a follow-up
commit).
Existing uses of
`AccessibleTableModelChangeType::INSERT` and
`AccessibleTableModelChangeType::DELETE` will
be migrated to use the new types in
follow-up commits.
From a UNO API perspective, this change
and the final removal of the
`AccessibleTableModelChangeType::DELETE`
and `AccessibleTableModelChangeType::INSERT`
constants in a follow-up commit
should be unproblematic, because the
corresponding APIs have been unpublished in
commit 70626249cd
Date: Thu Nov 29 00:27:03 2012 +0100
API CHANGE a11y unpublishing and add/removeListener rename.
The following Python script was used in follow-up
commits to check that AT-SPI events with the expected
indices are retrieved with the gtk3 VCL plugin after
porting existing uses of
`AccessibleTableModelChangeType::INSERT` and
`AccessibleTableModelChangeType::DELETE`.
#!/usr/bin/python3
import pyatspi
def listener(e):
try:
if e.host_application.name != 'soffice':
return
except:
return
print(e)
pyatspi.Registry.registerEventListener(listener, "object:row-inserted", "object:column-inserted", "object:column-deleted", "object:row-deleted")
pyatspi.Registry.start()
Change-Id: I30821a5acafa4f3d1dafdfc219f3b4568d9a6e89
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132217
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
The use-case is user fields, which are kind of variables in the
document. They have a name and a value, but the name might be only
readable to an extension or macro, not to the user. In this case, it
makes sense to have a way to specify a user-readable tooltip.
Be consistent with TextFrames which already have a Title property.
Change-Id: I986792f5e55e0b96489347be482d640d155113cc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132077
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
The fix tries to make rendering similar to MS Office.
The ODF standard follows closely the extrusion in RTF and MS binary
format. Rendering uses the 3D scene engine.
The main problem was, that the z-component of the direction was
interpreted with opposite sign. As result the maximum of a light was at
false position. Especially a direction from the observer to the object
has produced a light behind the shape and so looks as if light was off.
The wrong z-direction has produced lighting, which was less intensive
than in MS Office. To compensate that, a third light source was added
as workaround. That part is removed.
Second problem was wrong use of 3D-scene D3DMaterialSpecularIntensity
and D3DMaterialSpecular (= UI Specular color). That was not only wrong
in OOo but in my previous patch too.
D3DMaterialSpecularIntensity corresponds to MS property 'c3DShininess'.
Relationship is Intensity = 2^c3DShininess.
D3DMaterialSpecular is calculated from MS property c3DSpecularAmt and
and c3DKeyIntensity. The light source was missing, but needs to be
included, because c3DSpecularAmt is 'the ratio of incident to specular
light that is reflected on a shape'.
The old unit tests are adapted to this change.
MS gives no information how it softens a light in case of harsh=false.
ODF specifies it as 'implementation-defined'. The patch uses four
additional lights, which have directions in 60° angle to the original
light. The light intensity is distributed. That comes near to rendering
in MS Office. Changing our 3D engine to provide 'soft' lights was not
doable for me.
The way MS Office renders a 'metal' surface is different from ODF
specification. To distinguish the kinds, I have introduced a new
property MetalType. I have discussed it with the ODF TC (see minutes
from 2022-02-07) and got the advise to use namespaced values.
Therefore the datatype is not boolean.
The 'Surface' drop-down in the extrusion bar is changed to make the two
kinds of rendering 'Metal' available to the user.
If a user sets surface 'Metal' in the UI of MS Office, it sets not only
fc3DMetallic but reduces the value of c3DDiffuseAmt in addition. Our
3D-scene engine has the corresponding ODF attribute dr3d:diffuse-color
not implemented. To get a similar rendering I change the material color
of the 3D-objects as workaround.
Change-Id: Ia986b9c318b4c79688e0c0e2d858215b9d612fdc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128449
Tested-by: Jenkins
Reviewed-by: Regina Henschel <rb.henschel@t-online.de>