sd/source/ui/view/drviews7.cxx | 8 ++++++++ sd/source/ui/view/sdview2.cxx | 9 ++++++--- sd/source/ui/view/sdview3.cxx | 7 +++++++ 3 files changed, 21 insertions(+), 3 deletions(-)
New commits: commit d2257fbe9111ba75bd8235f4d3089253a1dafc04 Author: Andreas Heinisch <[email protected]> AuthorDate: Tue Oct 28 08:11:26 2025 +0100 Commit: Andreas Heinisch <[email protected]> CommitDate: Tue Nov 4 21:43:14 2025 +0100 tdf#139269 - Prevent pasting text into master pages Prevent text pasting into readonly areas of master views. Change-Id: I733a54fb19101dd813883ba76d4f4410998d0e67 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/193071 Tested-by: Jenkins Reviewed-by: Andreas Heinisch <[email protected]> diff --git a/sd/source/ui/view/drviews7.cxx b/sd/source/ui/view/drviews7.cxx index 2ba69e13f035..bd847be0eb42 100644 --- a/sd/source/ui/view/drviews7.cxx +++ b/sd/source/ui/view/drviews7.cxx @@ -856,6 +856,14 @@ void DrawViewShell::GetMenuState( SfxItemSet &rSet ) rSet.Put(SfxBoolItem(SID_PAGEMODE, false)); rSet.Put(SfxBoolItem(SID_MASTERPAGE, true)); + // tdf#139269 - disable menu entries to paste text into read only areas of master views + const OutlinerView* pOlView = mpDrawView->GetTextEditOutlinerView(); + if (pOlView && pOlView->IsReadOnly()) + { + rSet.DisableItem(SID_PASTE); + rSet.DisableItem(SID_PASTE_UNFORMATTED); + } + /********************************************************************** * Background page mode **********************************************************************/ diff --git a/sd/source/ui/view/sdview2.cxx b/sd/source/ui/view/sdview2.cxx index 7ce74bc04c25..ae24b8e4f288 100644 --- a/sd/source/ui/view/sdview2.cxx +++ b/sd/source/ui/view/sdview2.cxx @@ -285,10 +285,13 @@ void View::DoPaste (::sd::Window* pWindow,bool /*bMergeMasterPagesOnly*/) if( pOLV && EditEngine::HasValidData( aDataHelper.GetTransferable() ) ) { - const_cast< OutlinerView* >(pOLV)->PasteSpecial(); + SdrObject* pObj = GetTextEditObject(); + SdPage* pPage = static_cast<SdPage*>(pObj ? pObj->getSdrPageFromSdrObject() : nullptr); + // tdf#139269 - prevent text pasting into readonly areas of master views + if (pPage && pPage->IsMasterPage() && pOLV->IsReadOnly()) + return; - SdrObject* pObj = GetTextEditObject(); - SdPage* pPage = static_cast<SdPage*>( pObj ? pObj->getSdrPageFromSdrObject() : nullptr ); + const_cast< OutlinerView* >(pOLV)->PasteSpecial(); ::Outliner& rOutliner = pOLV->GetOutliner(); if( pObj && pPage && pPage->GetPresObjKind(pObj) == PresObjKind::Title ) diff --git a/sd/source/ui/view/sdview3.cxx b/sd/source/ui/view/sdview3.cxx index 6d89abe6b32b..6d3bc7e4d519 100644 --- a/sd/source/ui/view/sdview3.cxx +++ b/sd/source/ui/view/sdview3.cxx @@ -1633,6 +1633,13 @@ bool View::InsertData( const TransferableDataHelper& rDataHelper, if( pOLV ) { + // tdf#139269 - prevent text pasting into readonly areas of master views + if (!pPage) + pPage = static_cast<SdPage*>(GetSdrPageView()->GetPage()); + + if (pPage && pPage->IsMasterPage() && pOLV->IsReadOnly()) + return false; + pOLV->InsertText( aOUString ); return true; }
