How to remove frame in SdrCustomShape during import from docx?

Regina Henschel rb.henschel at t-online.de
Mon Nov 28 11:01:38 UTC 2022


Hi Miklos,

Miklos Vajna schrieb am 28.11.2022 um 09:13:
> Hi Regina,
> 
> On Sat, Nov 26, 2022 at 10:01:56PM +0100, Regina Henschel <rb.henschel at t-online.de> wrote:
>> The fact, that the shape should be a text warp (WordArt, Fontwork) is
>> detected in WpsContext in case prstTxWarp exists. At that time a frame
>> already exists in the shape.
>> But with a frame it is impossible to put the custom shape into text path
>> mode.
>>
>> How can I remove the frame when in WpsContext?
> 
> Can you do the same on the UI?

In the UI it is the command .uno:RemoveTextBox. That is internally 
FN_REMOVE_TEXT_BOX. That does
     SwFrameFormat* pFrameFormat = ::FindFrameFormat(pObj);
     if (pFrameFormat)
         SwTextBoxHelper::destroy(pFrameFormat, pObj);
That is in /sw/source/uibase/shells/drawsh.cxx

Problem is that all of SwFrameFormat is local in sw, defined e.g. in 
sw/inc/textboxhelper.hxx, sw/inc/frmfmt.hxx, sw/inc/frameformats.hxx and 
sw/inc/docary.hxx.

  If so, we can research if there is UNO
> API to do the same.

WpsContext has css::uno::Reference<css::drawing::XShape> mxShape member. 
When I debug in VS, I see mxShape [SwXShape] which has m_pFormat 
[SwDrawFrameFormat] and therein m_pOtherTextBoxFormats. If no textbox is 
generated, then VS shows m_pOtherTextBoxFormats as 'empty'. How to 
achieve that state?

Kind regards,
Regina


More information about the LibreOffice mailing list