diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2018-02-16 18:08:46 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2018-02-16 23:44:27 +0100 |
commit | f0c25c751cf8e166a84b289746bce6202a40391d (patch) | |
tree | 4a39e7c4ef54ca4ca1b1c121f94c681533d467e0 /include/editeng/editeng.hxx | |
parent | Add a test case for importing cell background colors... (diff) | |
download | core-f0c25c751cf8e166a84b289746bce6202a40391d.tar.gz core-f0c25c751cf8e166a84b289746bce6202a40391d.zip |
tdf#115783 sd: fix lost char attributes during in-table copy&paste
The SvxFontHeightItem (12pt) is originally a character-level property on
the table cell (covering the whole cell text) but when the user sets the
font height of the cell,
sdr::properties::CellProperties::ItemSetChanged() will turn that into a
paragraph-level property. This is fine, except that this way the
property has unclear semantics when the user pastes single-paragraph
content into an existing paragraph. (Keep the old paragraph properties?
Use the new ones?)
The current behavior is that sd::View::OnEndPasteOrDrop() calls into
ContentAttribs::SetStyleSheet() at the end of the paste, which removes
paragraph-level formatting (giving visibility to the from-style 18pt
font height this way for the existing content), so both the old and the
new paragraph formatting is lost.
Improve the situation by copying these paragraph-level character
properties back to character-level before paste at the paste position
(so doc model is back to the state after load), that way font height and
similar properties are not removed by the on-end-paste handler.
Change-Id: I43d321dedcda6c0df9b009b9d99c3544f783473c
Reviewed-on: https://gerrit.libreoffice.org/49868
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Jenkins <ci@libreoffice.org>
Diffstat (limited to 'include/editeng/editeng.hxx')
-rw-r--r-- | include/editeng/editeng.hxx | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/editeng/editeng.hxx b/include/editeng/editeng.hxx index c47c281f22bb..fc3a6713707a 100644 --- a/include/editeng/editeng.hxx +++ b/include/editeng/editeng.hxx @@ -313,6 +313,8 @@ public: virtual void SetParaAttribs( sal_Int32 nPara, const SfxItemSet& rSet ); const SfxItemSet& GetParaAttribs( sal_Int32 nPara ) const; + /// Set attributes from rSet an all characters of nPara. + void SetCharAttribs(sal_Int32 nPara, const SfxItemSet& rSet); void GetCharAttribs( sal_Int32 nPara, std::vector<EECharAttrib>& rLst ) const; SfxItemSet GetAttribs( sal_Int32 nPara, sal_Int32 nStart, sal_Int32 nEnd, GetAttribsFlags nFlags = GetAttribsFlags::ALL ) const; |