Bug 152361 - Actual value type of ParaAdjust is different from specified type in API
Summary: Actual value type of ParaAdjust is different from specified type in API
Status: NEW
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: sdk (show other bugs)
Version:
(earliest affected)
7.5.0.0 alpha0+
Hardware: x86-64 (AMD64) Windows (All)
: medium normal
Assignee: Not Assigned
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: Dev-related
  Show dependency treegraph
 
Reported: 2022-12-03 09:17 UTC by Regina Henschel
Modified: 2023-05-17 19:47 UTC (History)
0 users

See Also:
Crash report or crash signature:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Regina Henschel 2022-12-03 09:17:14 UTC
The API specifies
com::sun::star::style::ParagraphAdjust ParaAdjust
in ParagraphProperties Service Reference

And com::sun::star::style::ParagraphAdjust as enum ParagraphAdjust

Now take a text document or a shape with text and look at property ParaAdjust using the DevelopmentTools. There you see that "ParaAdjust" has type "short".

That is a problem, as for example the C++ code
     sal_Int16 nParaAdjust(3);
     xParagraphPropSet->getPropertyValue("ParaAdjust") >>= nParaAdjust;
works, but
     style::ParagraphAdjust eParaAdjust(style::ParagraphAdjust_CENTER);
     xParagraphPropSet->getPropertyValue("ParaAdjust") >>= eParaAdjust;
does not work.

Example of its use in core is
https://opengrok.libreoffice.org/xref/core/filter/source/svg/svgexport.cxx?r=7dd9790b#2173
There you see the required type conversions.

I don't know what is the best solution. But in case we keep it as "short" in core, there should be a comment in the API description of ParaAdjust property, that its actual value type is "short" and using the enum needs type conversions.
Comment 1 Mike Kaganski 2022-12-03 09:34:48 UTC
https://gerrit.libreoffice.org/c/core/+/140344
Comment 2 Mike Kaganski 2022-12-05 08:26:29 UTC
FTR: the innermost implementation is SvxAdjustItem::QueryValue, putting sal_Int16. The counterpart, SvxAdjustItem::PutValue, uses cppu::enum2int, so is prepared for both plain integers and enums in the passed Any.