The problem was that the Table1:A2 cell contents was wrapped in a
section that was first split, then all the contents was moved to the
next page, finally the empty master was also moved to the next page. At
this point the master had 0 height, and when it was removed, the follow
section frame had invalid positions, including all of its contents.
Position invalidation for table contents works by first invalidating the
table frame position, which triggers an invalidation chain for both all
next frames and the lower frame. Other lower frames are not invalidated,
that happens when the first lower is calculated, in
SwLayoutFrame::MakeAll(), when the SwLayNotify dtor is executed. This
mechanism did not help us here, as the master section frame was already
marked for deletion, so SwLayoutFrame::MakeAll() was not called for it,
so neither of its next frames were re-positioned.
Fix the bug by explicitly invalidating the position of the next frame in
SwSectionFrame::MakeAll(), for the "return early, this section will be
deleted anyway" case. (The alternative could be to watch out for
0-height sections in the SwLayNotify dtor, but the problem is specific
to section frames, so SwSectionFrame is probably a more expected place
for this change.)
Change-Id: I5ab9475675d25bef7c0647893b1b5909da019f3f
Reviewed-on: https://gerrit.libreoffice.org/43604
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Jenkins <ci@libreoffice.org>
The FlyFrames containing a graphic now support an
interactive rotation mode. Added a rotation icon to the
Toolbar close to right/left 90degree rotation. When
activated, works as similar to draw object mode as
possible. Shear and move of the rotation center is
deactivated since not supported. It uses as much of the
existing interaction stuff as possible.
Change-Id: Ia1a4e5c064d8576b114c3fcf3a96ccb42c9372bb
Position was taken from OuterBound FlyFrame, even in current
master which is wrong. There can be a distance defined between
InnerBound and OuterBound that has to be taken into account
Change-Id: Id88f99c0b218bd26fa1daa5e8215eced00c0baa6
WIth rotaiton being allowed the handle visualisation may be
dependent on this, so it is necessary to refresh their
visualisation on rotation chnage, e.g. for crop handles
Change-Id: I218e326894999381fc4058b7eba432491a0cf23b
The FlyFrame which may contain a Graphic needs working Crop,
interactive and in core. Adapted this to work with now possible
rotation, changed common code in svx which has to handle cases
for Draw/Impress/Calc and Writer differently. Tried to use as
much in common as possible. Additionally furter adaptions
to rotation itself.
Change-Id: Ia961e9490e2627c74220b186116f5aa4fcabca78
This version allows rotation (in 10th degrees) and perserves
it over save/load cycles. Rotation of multiples of 90 degree
behave close to original except not changing the contained
Graphic and being adaptable to all kinds of graphic. The
rotated Graphic is displayed centered and under preserved
AspectRatio in the available frame space (so no rotation,
180 degree is identical, 90/-90 is identical with 1:1 ratio
of the graphic)
Change-Id: I54b3385f709ee0d34a55324aca919dcd2ce0c009
To allow free rotation of Graphic FlyFrames in Writer,
several adaptions are necessary. This change takes care
of all needed changes to internally support a freely
definable rotation angle for that case. Save/Load round
trip is working, the graphic does no longer get modified
and added in 90-degree-changed state to the object, the
original will be preserved. Support for needed slot in
core/ui is implemented. Rotation can be applied from
Menus/Toolbars in the known 90/180 degree steps. Added
a slot/Button/command to reset rotation in these cases.
Added support in Sidebar to rotate using the rotation
wheel and/or numeric field. These fields and support added
to Image TabPage, too, fully functional.
Missing now is a solution for displaying the rotated
Graphic. For now, it just gets rotated, but this will not
be the final state of this change.
Change-Id: I6f3b85ebb5be2b4ad3311c536d54f27a37a494e7
RotGrfFlyFrame: Linux build adaptions
Change-Id: I365287ecd6525b1972e8436d61332f7121d88649
All of the RES_CHRATR_* items are poolable, hence we have
(pItem1 != pItem2) == (pItem1->Which() != pItem2->Which() || *pItem1 != *pItem2)
Move the redundant check to an assert() so we notice in case
somebody adds a new non-poolable RES_CHRATR.
Thanks to ccsheller for pointing me to this condition.
Change-Id: I9e0634946b8bede3f483bb8997f69de05beae64c
The problem was in SwFrame::GetNextSctLeaf(): it called WrongPageDesc()
to find out if pLayLeaf is a container that is on an acceptable page,
but it was too aggressive, and discarded a split table cell that was in
a follow table (so later it'll be moved to a next page), but on the same
page.
The result was that a new page was created, but later in
::doInsertPage() we noticed this unnecessary page and removed it. The
effect of that was that the in-progress layout action's m_bIsAgain flag
was set to true, restart the layout again and again.
Given that in-table split sections never need to create a new page frame
for the follow section (the cell does this for us already), just don't
discard pLayLeaf when WrongPageDesc() finds it and we're in the split
section-in-table case.
Change-Id: Iea98a26c14fc1fb3154378eab24daa2fd6e84459
Reviewed-on: https://gerrit.libreoffice.org/43429
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Jenkins <ci@libreoffice.org>
between 0716aca251 "tscp: move getting the current
policy type to class. helper" on the one hand and
217dd15374 "TSCP: edit paragraph classification"
and c140d8d973 "TSCP: paragraph classification
support" on the other.
Change-Id: I9c399b0224c485d71e39ad547be2f9b51fbbecc9
Example instdir/program/dbg_lay.ini:
# 0x0007ffff
[record] 524287
This logs all functions and all frames. To have it:
1) Don't mention hex values in the example, support for this was removed
in ef513fd4b0 (remove unnecessary use of
OString::getStr, 2017-05-26).
2) "all frame IDs" is represented with a nullptr, so don't clear it
unconditionally.
3) Fix two other regressions from bytestring conversion in commit
778ef20d74 (sw now ByteString free except
for windows related ones, 2011-11-04).
(Additionally you need a dbgutil build, dbg_lay.go has to exists in the
same dir, and output goes to dbg_lay.out in the same dir.)
Change-Id: Ida0f3032f11225f1d079cdcbb05ec64c42a71e5d
Reviewed-on: https://gerrit.libreoffice.org/43347
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Jenkins <ci@libreoffice.org>
This reverts commit ce057e662b2e10e111353e9461c3c01434ddbb0f; the original
63d845dc88 appears to be useful after all to make
UBSan 'instdir/program/soffice sw/qa/extras/uiwriter/data/tdf112860.fodt'
succeed after 'make -O -j12 ExternalPackage_fonts_liberation.clean', see
tdf#112942.
Previously shapes/frames were identified either by name or by SdrObject,
but in some cases name can be empty. New approach is to use names if they
exist and SdrObject reference if name is empty.
This is just a partial fix for mentioned TDF issue.
Change-Id: I3bd53f07fdb3fe69b2898d855eda48b6534cd75d
Reviewed-on: https://gerrit.libreoffice.org/43176
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
The grammar checker always wants to be started in DoIdleJobs(),
even if all paragraphs are already marked as checked.
This is because there is currently no call anywhere of
SwRootFrame::SetNeedGrammarCheck(false) to reset the flag
and prevent DoIdleJobs from trying to start the grammar checker.
This call was already there before but was removed without
any justification in commit 9160fe814a.
This has become an infinite loop in several Junit tests with commit
53da556c60.
Change-Id: Ibe7ad93442070aac0577725d044281912307d9e8
This reverts commit 63d845dc88. The immediate
problem is fixed with 9dd0c0fcc1 "Missing
dependency" now. For the general issue that loading
sw/qa/extras/uiwriter/data/tdf112860.fodt fails with a UBSan error or a null
deref SIGSEGV when fonts are missing see
<https://bugs.documentfoundation.org/show_bug.cgi?id=112942>
"SwUiWriterTest::testTdf112860 crashes when Liberation fonts are missing".
This refactors DocumentTimerManager to export the busy status
independent of the Idle function. This way it can be ignored in
the Scheduler while the document is busy,
Change-Id: Icec2075d3338ad8dd4440678eb0570d7fe887778
Reviewed-on: https://gerrit.libreoffice.org/43197
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Jan-Marek Glogowski <glogow@fbihome.de>