Bug 165971 - Need ability to anchor a callout shape endpoint to a piece of text or other content
Summary: Need ability to anchor a callout shape endpoint to a piece of text or other c...
Status: UNCONFIRMED
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: LibreOffice (show other bugs)
Version:
(earliest affected)
Inherited From OOo
Hardware: All All
: medium enhancement
Assignee: Not Assigned
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: Anchor-and-Text-Wrap Shapes
  Show dependency treegraph
 
Reported: 2025-03-29 22:44 UTC by Eyal Rozenberg
Modified: 2025-04-25 07:52 UTC (History)
3 users (show)

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 Eyal Rozenberg 2025-03-29 22:44:00 UTC
Often times in presentations, and occasionally in other documents, one adds a "callout" shape, with a control point at the edge of a line or triangle pointing to, and being close(ish) to, some text or other piece of content.

The problem is, that while the callout itself my be anchored in a way in which it would move reasonably as other parts of the document change - the control-point is only defined/anchored relative to the main body of the callout. Thus, if the item the callout was pointed to moves - the callout now points to an incorrect position, and must be manually edited.

This is especially annoying - and frequent - in Impress presentations, where the text font size and text positions change automatically as one adds more lines to an object.

It would be helpful if we could anchor control points to other pieces of content, especially text, outside of the object they are part of.
Comment 1 Heiko Tietze 2025-03-31 08:45:32 UTC
In other words you want to glue certain points similar to the gluepoint / connector pattern. Doubt this is going to fly. Regina, what do you think?
Comment 2 Eyal Rozenberg 2025-03-31 11:07:38 UTC
(In reply to Heiko Tietze from comment #1)
> In other words you want to glue certain points similar to the gluepoint /
> connector pattern.

It may be a bit similar, but not very, because I don't mean gluing to the side of another object, but to a piece of text within that object.
Comment 3 V Stuart Foote 2025-04-23 12:45:54 UTC
Seems like the anchor of the call-out should be either 'as character' or to an established anchor point on shape object.

+1
Comment 4 Eyal Rozenberg 2025-04-23 12:56:51 UTC
(In reply to V Stuart Foote from comment #3)
> Seems like the anchor of the call-out should be either 'as character' or to
> an established anchor point on shape object.

Well, that would be similar, but I'm not sure if its exactly the right analogy. Suppose I have a presentation slide with a bullet point:

                                +-------+
                                |callout|
                               -+-------+
* The quick brown fox jumped  /
  over the lazy dog.

and the wrapping is automatic, i.e. no line break within the bullet point. I want my callout to be anchored to the paragraph.

If I were to anchor it to the '.' after dog, the callout-leg  would overlap the two words "fox" and "jumped"; but if I were to anchor it after "jumped", and later, I were to add a bit more text to the first line or remove a further bullet point down the line, I may now have (ignoring the callout):

* The qui-ck brown fox     
  jumped over the lazy 
  dog.

and if I were to draw the callout, I would be back to the situation of the callout-leg covering some of my text.
Comment 5 V Stuart Foote 2025-04-23 13:55:52 UTC
(In reply to Eyal Rozenberg from comment #4)

Guess the paragraph object (within its frame margins) could be source of the anchors, maybe available now for what is done to cast border shadows--Bottom Right, Top Right, Bottom Left, Top Left?
Comment 6 Heiko Tietze 2025-04-24 07:20:10 UTC
We discussed the topic in the design meeting.

Since "Callouts" are just custom shapes and not actually connectors the request is questionable. Neither (random) gluepoints nor some anchoring is accepted nor is flexible enough for the task. Me recommends to resolve the ticket as WF.
Comment 7 Regina Henschel 2025-04-24 17:10:07 UTC
(In reply to Heiko Tietze from comment #6)
> We discussed the topic in the design meeting.
> 
> Since "Callouts" are just custom shapes and not actually connectors the
> request is questionable. Neither (random) gluepoints nor some anchoring is
> accepted nor is flexible enough for the task. Me recommends to resolve the
> ticket as WF.

Yes, there is a group of "SpeechBubble" custom shapes. But there exists in addition true callout shapes. They are not in a toolbar in Writer as default, but can be added. Look for  "Callouts" (.uno:DrawCaption). In Draw/Impress they are available in the toolbar "Text".

These callout shapes are written as <draw:caption> element to file markup. The position of the callout end point is written in attributes draw:caption-point-x and draw:caption-point-y. That is the same as it is done with the <office:annotation> element in a spreadsheet.

The movement of a callout shape is tricky:
- If you grab the rectangle of the content, only this rectangle moves and the callout end point keeps its position.
- If you grab the connection line between content rectangle and callout end point, then the whole shape moves.
- If you grab the callout end point, then only this callout end point is moved.

If this callout shape is anchored "to character", then it will move together with its anchor character.

LibreOffice could change the UI of these callout shapes so, that the callout end point can be set to a fixed value that is relative to the anchor character and adapted automatically if needed. The place for that would be the "Callout" dialog page in the "Position and Size" dialog of the shape. Such values would be still written as draw:caption-point attributes to file. Only the UI would get a new feature. Currently the draw:caption-point-x and draw:caption-point-y values are not available in the UI.

I would not try to implement something special to the shapes of the "SpeechBubble" group of the custom shapes, because all custom shapes follow the same rules. Thus it would mean to implement a general "glue to anchor" for handles of any custom shape.
Comment 8 Eyal Rozenberg 2025-04-24 17:35:46 UTC
A-ha... I just noticed that. Well, the 'real' callouts seem like a massively under-developed feature, so much so that the callout shapes are more useful than actual callouts right now.

But - I agree that we should close this bug and open another one - or perhaps another half-dozen - abot actual callouts. Shall it be INVALID or WONTFIX?
Comment 9 Heiko Tietze 2025-04-25 07:52:04 UTC
(In reply to Eyal Rozenberg from comment #8)
> Shall it be INVALID or WONTFIX?

Invalid in terms of speechbubble is not a callout, wontfix since we do not connect (custom) shapes via glue points or other means.