https://bugs.documentfoundation.org/show_bug.cgi?id=146795

--- Comment #14 from Kohei Yoshida <[email protected]> ---
(In reply to Aron Budea from comment #13)
> (In reply to Kohei Yoshida from comment #7)
> > If someone can isolate this to a reproducible case with mdds alone, that
> > would be helpful.
> Kohei, could you add code pointers where mdds is called during the described
> steps?

I don't have that info yet, but I can tell you how one may start investigating
it.

Before you begin, it would be helpful to look through this page:

https://mdds.readthedocs.io/en/latest/multi_type_vector.html

to get an overview of what mdds::multi_type_vector does.  You don't have to
read the entire page, but just going through the Quickstart section should give
you a good idea of how to use mdds::multi_type_vector standalone.  The page
also have API reference toward the bottom.

People here casually refers to mdds::multi_type_vector as just "mdds", but
technically that's not correct.  mdds contains multiple data structures that
Calc uses, and multi_type_vector is just one of them.  mdds::flat_segment_tree
is another one Calc uses, but I won't go into that here.

ScColumn::maCells data member is where all cell values are stored, so tracing
its use would be the starting point.

Here

https://opengrok.libreoffice.org/s?refs=maCells&project=core

shows all call sites of ScColumn::maCells which is quite extensive,
understandably so since lots and lots of Calc code does access it since it's
the core of Calc cell data I/O.

Now, the entry point for pasting data into Calc can be tricky since there are
several entry points depending on where the data being pasted is coming from.
But I believe it's ScViewFunc:PasteFromClip()

https://opengrok.libreoffice.org/xref/core/sc/source/ui/view/viewfun3.cxx?r=9436f7e2#871

for copy-n-pasting within the same Calc document.

The bMarkIsFiltered flag on line 1024 is set, since the value is being pasted
onto a filtered area i.e. autofilter is applied in the destination area.

Eventually the code here will find its way into ScDocument::CopyToDocument,
which moves to ScTable (sheet), and then eventually to ScColumn (column
storage), and you can inspect how that code accesses and updates the maCells
there...

That's the gist of it.

The tricky part is that, every action creates an undo object which also has its
own ScDocument store, so that could be another source of the problem too. I
just don't know where the problem may be...

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to