diff options
-rw-r--r-- | cui/source/dialogs/SpellDialog.cxx | 2 | ||||
-rw-r--r-- | editeng/inc/editdoc.hxx | 3 | ||||
-rw-r--r-- | editeng/source/editeng/editdoc.cxx | 12 | ||||
-rw-r--r-- | editeng/source/editeng/editeng.cxx | 4 | ||||
-rw-r--r-- | include/editeng/editeng.hxx | 5 |
5 files changed, 25 insertions, 1 deletions
diff --git a/cui/source/dialogs/SpellDialog.cxx b/cui/source/dialogs/SpellDialog.cxx index 388856498f5d..e2e4e6bb735f 100644 --- a/cui/source/dialogs/SpellDialog.cxx +++ b/cui/source/dialogs/SpellDialog.cxx @@ -1112,6 +1112,8 @@ void SentenceEditWindow_Impl::SetDrawingArea(weld::DrawingArea* pDrawingArea) pDrawingArea->get_text_height() * 6); pDrawingArea->set_size_request(aSize.Width(), aSize.Height()); WeldEditView::SetDrawingArea(pDrawingArea); + // tdf#132288 don't merge equal adjacent attributes + m_xEditEngine->DisableAttributeExpanding(); } SentenceEditWindow_Impl::~SentenceEditWindow_Impl() diff --git a/editeng/inc/editdoc.hxx b/editeng/inc/editdoc.hxx index 454f764bbb48..2a5fc1e3f8de 100644 --- a/editeng/inc/editdoc.hxx +++ b/editeng/inc/editdoc.hxx @@ -731,6 +731,7 @@ private: bool bOwnerOfPool:1; bool bModified:1; + bool bDisableAttributeExpanding:1; private: void ImplDestroyContents(); @@ -745,6 +746,8 @@ public: bool IsModified() const { return bModified; } void SetModified( bool b ); + void DisableAttributeExpanding() { bDisableAttributeExpanding = true; } + void SetModifyHdl( const Link<LinkParamNone*,void>& rLink ) { aModifyHdl = rLink; } void CreateDefFont( bool bUseStyles ); diff --git a/editeng/source/editeng/editdoc.cxx b/editeng/source/editeng/editdoc.cxx index ebc55808da25..fbcb4c51ed41 100644 --- a/editeng/source/editeng/editdoc.cxx +++ b/editeng/source/editeng/editdoc.cxx @@ -1908,7 +1908,8 @@ EditDoc::EditDoc( SfxItemPool* pPool ) : mnRotation(TextRotation::NONE), bIsFixedCellHeight(false), bOwnerOfPool(pPool == nullptr), - bModified(false) + bModified(false), + bDisableAttributeExpanding(false) { // Don't create an empty node, Clear() will be called in EditEngine-CTOR }; @@ -2369,6 +2370,15 @@ void EditDoc::InsertAttribInSelection( ContentNode* pNode, sal_Int32 nStart, sal RemoveAttribs( pNode, nStart, nEnd, pStartingAttrib, pEndingAttrib, rPoolItem.Which() ); + // tdf#132288 By default inserting an attribute beside another that is of + // the same type expands the original instead of inserting another. But the + // spell check dialog doesn't want that behaviour + if (bDisableAttributeExpanding) + { + pStartingAttrib = nullptr; + pEndingAttrib = nullptr; + } + if ( pStartingAttrib && pEndingAttrib && ( *(pStartingAttrib->GetItem()) == rPoolItem ) && ( *(pEndingAttrib->GetItem()) == rPoolItem ) ) diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx index 1b76d967b3ba..73d85a07b7ce 100644 --- a/editeng/source/editeng/editeng.cxx +++ b/editeng/source/editeng/editeng.cxx @@ -2814,6 +2814,10 @@ bool EditEngine::IsPageOverflow() { return pImpEditEngine->IsPageOverflow(); } +void EditEngine::DisableAttributeExpanding() { + pImpEditEngine->GetEditDoc().DisableAttributeExpanding(); +} + EFieldInfo::EFieldInfo() { } diff --git a/include/editeng/editeng.hxx b/include/editeng/editeng.hxx index 20c15e6539e1..d8e780e736e8 100644 --- a/include/editeng/editeng.hxx +++ b/include/editeng/editeng.hxx @@ -623,6 +623,11 @@ public: sal_Int32 GetOverflowingLineNum() const; void ClearOverflowingParaNum(); bool IsPageOverflow(); + + // tdf#132288 By default inserting an attribute beside another that is of + // the same type expands the original instead of inserting another. But the + // spell check dialog doesn't want that behaviour + void DisableAttributeExpanding(); }; #endif // INCLUDED_EDITENG_EDITENG_HXX |