Bug 135765 - bullets in table not restored after undo cell merging
Summary: bullets in table not restored after undo cell merging
Status: NEW
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: Writer (show other bugs)
Version:
(earliest affected)
Inherited From OOo
Hardware: All All
: low trivial
Assignee: Not Assigned
URL:
Whiteboard:
Keywords: bibisected, bisected
Depends on:
Blocks: Writer-Tables Undo-Redo
  Show dependency treegraph
 
Reported: 2020-08-14 15:57 UTC by Telesto
Modified: 2024-11-03 00:36 UTC (History)
4 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 Telesto 2020-08-14 15:57:54 UTC
Description:
bullets in table not restored after undo cell merging

Steps to Reproduce:
1. Open Writer
2. Insert a table 3x3
3. Select the full table
4. Sidebar -> Styles -> List styles -> Select Arrow bullet
5. Merge the cells in the middle column
6. Undo -> Notice the bullets not being present

Actual Results:
No bullets

Expected Results:
Bullets


Reproducible: Always


User Profile Reset: No



Additional Info:
Found in
7.1

and in
Version: 6.0.5.0.0+
Build ID: 15ea1cda0b3c37ff944ad9a239b7ed453e8b0591
CPU threads: 4; OS: Windows 6.3; UI render: default; 
Locale: nl-NL (nl_NL); Calc: CL

not in
4.4.7.2
Comment 1 raal 2020-08-16 16:47:30 UTC
Confirm with Version: 7.1.0.0.alpha0+
Build ID: ce6c6a5ad6c9dde09bb0bb0c51e16d828cfe0ef7
CPU threads: 4; OS: Linux 4.15; UI render: default; VCL: gtk3
Locale: cs-CZ (cs_CZ.UTF-8); UI: en-US
Calc: threaded
Comment 2 raal 2020-08-16 17:03:55 UTC
This seems to have begun at the below commit.
Adding Cc: to Justin Luth ; Could you possibly take a look at this one?
Thanks
 1be1a0488a9ed49b76991509fda913108ea4c625 is the first bad commit
commit 1be1a0488a9ed49b76991509fda913108ea4c625
Author: Jenkins Build User <tdf@pollux.tdf>
Date:   Fri Feb 10 03:57:25 2017 +0100

    source 53fd124d2488977af8536f439874a15de375dc40

author	Justin Luth <justin_luth@sil.org>	2016-12-30 22:21:19 +0300
committer	Miklos Vajna <vmiklos@collabora.co.uk>	2017-01-03 08:19:46 +0000
commit 53fd124d2488977af8536f439874a15de375dc40 (patch)
tree 0aac39c26a222ee140d974547a8d963445a8da93
parent bd97bca534b61ef302c606ae7452454d5e87910e (diff)
tdf#49102 - UI: remove list numbering from merged cells
Comment 3 Justin L 2020-08-19 17:37:53 UTC
Undo is a massive black-box full of crash-related problems. I don't expect to spend any time on this.
Comment 4 Telesto 2020-08-19 17:54:36 UTC
(In reply to Justin L from comment #3)
> Undo is a massive black-box full of crash-related problems. I don't expect
> to spend any time on this.

Let's add Michael Stahl to the loop; he is the undo/redo specialist and knows the area pretty well. He might want to look at this; OTOH he has still a number of regressions fixing to do .. So not sure I he want's to open another regression prone front.  

FWIW: Nobody complained yet as far I know, so no need to rush this..
Comment 5 Gabor Kelemen (allotropia) 2022-08-14 21:05:58 UTC
Still in

Version: 7.5.0.0.alpha0+ / LibreOffice Community
Build ID: cdf5b6a2a6f0ba2838323ce4398948c3d3a56f8e
CPU threads: 8; OS: Linux 5.4; UI render: default; VCL: gtk3
Locale: hu-HU (hu_HU.UTF-8); UI: en-US
Calc: threaded
Comment 6 Justin L 2024-11-02 21:28:47 UTC
Removing regression status. Already seen in OOo if you merge and undo the MIDDLE ROW - a horizontal merge instead of a vertical one.

Additionally, this only happens with empty paragraphs (which therefore get merged into a single empty paragraph). This edge case is super unimportant.

For testing, you can use numberedMergedCells.odt (attachment 130047 [details]) from bug 49102.
Comment 7 Justin L 2024-11-03 00:36:36 UTC
I expect that the key to fixing this undo problem (at least for the horizontal cells) is related to
sw/source/core/table/swnewtable.cxx's SwTable::PrepareMerge
            if( nCurrCol )
                rBoxes.insert( pBox );
where rBoxes is a list of cells that will simply be deleted. Somehow the restoration of the box doesn't include the numbering of an empty paragraph.

Oh, that likely is handled separately from the cells themselves. Likely handled in all the UNDO stuff in PrepareMerge's if( !IsEmptyBox( *pBox, aChkPam ) )

So, should we tweak IsEmptyBox to treat an empty numbered paragraph as a "normal" paragraph and MOVE it into the merged cell (so that the merged cell has two bullet points)? That doesn't sound like a great workaround...