Blob Blame History Raw
From 342f3cfe6f2b27ea62bd9883e16014c188276356 Mon Sep 17 00:00:00 2001
From: Kohei Yoshida <kyoshida@novell.com>
Date: Wed, 22 Dec 2010 12:31:22 -0500
Subject: [PATCH 1/2] Avoid double-paste when pasting text into cell comment. (fdo#32572)

Original patch is from Caolan.  I re-worked it to handle more use
cases.
---
 sc/source/ui/view/gridwin.cxx |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index 0d32bae..6826829 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -4298,6 +4298,23 @@ void ScGridWindow::PasteSelection( const Point& rPosPixel )
     SCsROW	nPosY;
     pViewData->GetPosFromPixel( rPosPixel.X(), rPosPixel.Y(), eWhich, nPosX, nPosY );
 
+    // If the mouse down was inside a visible note window, ignore it and
+    // leave it up to the ScPostIt to handle it
+    SdrView* pDrawView = pViewData->GetViewShell()->GetSdrView();
+    if (pDrawView)
+    {
+        ULONG nCount = pDrawView->GetMarkedObjectCount();
+        for (ULONG i = 0; i < nCount; ++i)
+        {
+            SdrObject* pObj = pDrawView->GetMarkedObjectByIndex(i);
+            if (pObj && pObj->GetLogicRect().IsInside(aLogicPos))
+            {
+                // Inside an active drawing object.  Bail out.
+                return;
+            }
+        }
+    }
+
     ScSelectionTransferObj* pOwnSelection = SC_MOD()->GetSelectionTransfer();
     if ( pOwnSelection )
     {