Comment 52 for bug 1481835

Revision history for this message
In , 8-mail-p (8-mail-p) wrote :

Code pointers:

- All CLICK and SHIFT+CLICK operations for grouping Drawing objects handled in ./sw/source/uibase/docvw/edtwin.cxx:2770 : https://opengrok.libreoffice.org/xref/core/sw/source/uibase/docvw/edtwin.cxx?r=216a43bc#2770

- SHIFT+CLICK occurs in: https://opengrok.libreoffice.org/xref/core/sw/source/uibase/docvw/edtwin.cxx?r=216a43bc#3470

- Select objects : SwFEShell::SelectObj: https://opengrok.libreoffice.org/xref/core/sw/source/core/frmedt/feshview.cxx?r=715797bc#177

- Marked object list: https://opengrok.libreoffice.org/xref/core/include/svx/svdmark.hxx?r=40595834#230

- Types of forms of content: https://opengrok.libreoffice.org/xref/core/sw/inc/editsh.hxx?r=1feb59c3#130

- Mark object: https://opengrok.libreoffice.org/xref/core/svx/source/svdraw/svdmrkv.cxx?r=8a850eed#1877

You can read the full-detailed blog post of my 2-week research on this bug: https://bayramcicek.com.tr/libreoffice-dev/2021/07/05/week-03-04-gsoc.html

(I don't want to write everything in the blog post here because it's too long), just want to point out:

All selected objects store in rMrkList list:
const SdrMarkList &rMrkList = pDView->GetMarkedObjectList();

Output of SAL_DEBUG( rMrkList.GetMarkDescription() ); (in SwFEShell::SelectObj):

For shapes: "shapes"
For 2+ shapes: "2 shapes"
For draw images: "Image with transparency"
For text box: "Text Frame"
For raster images: "[Drawing object]" (defined as #define STR_ObjNameSingulNONE)

rMrkList.GetMarkCount(); always increases by 1 when selecting drawing objects via SHIFT+CLICK. But always gives 1 when selecting raster images because pOldSelFly = ::GetFlyFromMarked( &rMrkList, this ); always return an address and this causes rMrkList doesn’t add the second selected raster image to itself and do unmark it.
(if we force rMrkList to add raster images to itself by removing the pDView->UnmarkAll() line, this time, debugging warns "warn: /*...*/ frame is not accessible." )

I don't understand why images handled different in Writer and Draw/Calc/Impress.

IMHO, should we get rid of writer-images and convert them into drawing objects as like in the Draw? Otherwise, from my point of view, it seems a bit complicated to group raster images and raster&shapes. What do you think?

Thanks.