Bug 150302 - Toggle SameLetterHeights does not work if property not initialized
Summary: Toggle SameLetterHeights does not work if property not initialized
Status: NEW
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: LibreOffice (show other bugs)
Version:
(earliest affected)
7.5.0.0 alpha0+ Master
Hardware: x86-64 (AMD64) Windows (All)
: medium minor
Assignee: Not Assigned
URL:
Whiteboard: reviewed:2022
Keywords: difficultyMedium, easyHack
Depends on:
Blocks:
 
Reported: 2022-08-08 12:52 UTC by Regina Henschel
Modified: 2022-08-17 22:34 UTC (History)
2 users (show)

See Also:
Crash report or crash signature:
Regression By:


Attachments
Fontwork shapes for testing (44.59 KB, application/vnd.oasis.opendocument.graphics)
2022-08-08 12:52 UTC, Regina Henschel
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Regina Henschel 2022-08-08 12:52:51 UTC
Created attachment 181653 [details]
Fontwork shapes for testing

Open attached file. It contains two Fontwork shapes. Click on such shape. That should open the "Fontwork" toolbar. Click on icon "SameLetterHeights" (=.uno:FontworkSameLetterHeights). 
Error: Nothing happens
Expected: The shape shows the characters vertical stretched to fit the place between the paths.

The property SameLetterHeights corresponds to the ODF attribute draw:text-path-same-letter-heights. If you add the attribute in the file markup, the command works as expected. But the ODF attribute is optional, so it is valid, that it is missing.
Comment 1 Regina Henschel 2022-08-08 13:14:38 UTC
The error is in case SID_FONTWORK_SAME_LETTER_HEIGHTS in impl_execute method in https://opengrok.libreoffice.org/xref/core/svx/source/toolbars/fontworkbar.cxx?r=4c0b033e#242
The else part is missing.
Since the icon has a .uno command, a unit test is possible using the dispatcher.

@Hossein: I think, this can be an EasyHack. Do you agree?
Comment 2 Hossein 2022-08-08 20:26:01 UTC
Reproduced with the latest LO 7.5 dev master:

Version: 7.5.0.0.alpha0+ / LibreOffice Community
Build ID: cc3e2e7efa35dea85eecdd163de1ca1e71ce01f7
CPU threads: 8; OS: Linux 5.15; UI render: default; VCL: gtk3
Locale: en-US (en_US.UTF-8); UI: en-US
Calc: threaded
Comment 3 Hossein 2022-08-08 20:40:38 UTC
(In reply to Regina Henschel from comment #1)
> The error is in case SID_FONTWORK_SAME_LETTER_HEIGHTS in impl_execute method
> in
> https://opengrok.libreoffice.org/xref/core/svx/source/toolbars/fontworkbar.
> cxx?r=4c0b033e#242
> The else part is missing.
> Since the icon has a .uno command, a unit test is possible using the
> dispatcher.
> 
> @Hossein: I think, this can be an EasyHack. Do you agree?

Yes! And thanks for suggesting this issue for an EasyHack.

I've tested your code pointer, and the fix is straightforward. On the other hand, I think it should be marked as difficultyMedium, because one needs to gain a basic understanding of ODF and the draw:text-path-same-letter-heights attribute and change it manually inside <draw:enhanced-geometry> to see its effect, then fix the code and write a test similar to some of those in sd/qa/unit/uiimpress.cxx.

This is the related part of the ODF 1.3 standard for the above attribute:

Open Document Format for Office Applications (OpenDocument) Version 1.3. Part 3: OpenDocument Schema
OASIS Standard - 27 April 2021
19.224 draw:text-path-same-letter-heights
https://docs.oasis-open.org/office/OpenDocument/v1.3/os/part3-schema/OpenDocument-v1.3-os-part3-schema.html#__RefHeading__1417288_253892949
Comment 4 Hossein 2022-08-17 22:34:35 UTC
I've written a blog post around this issue that can be useful for the EasyHackers:

ODF standard and the code – EasyHack
https://dev.blog.documentfoundation.org/2022/08/16/odf-standard-and-the-code-easyhack/