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;
                 }

Reply via email to