You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by or...@apache.org on 2013/06/27 11:56:33 UTC

svn commit: r1497274 - /openoffice/trunk/main/sw/source/core/edit/eddel.cxx

Author: orw
Date: Thu Jun 27 09:56:32 2013
New Revision: 1497274

URL: http://svn.apache.org/r1497274
Log:
121925: fixed by reverting change for issue 119652

Modified:
    openoffice/trunk/main/sw/source/core/edit/eddel.cxx

Modified: openoffice/trunk/main/sw/source/core/edit/eddel.cxx
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/sw/source/core/edit/eddel.cxx?rev=1497274&r1=1497273&r2=1497274&view=diff
==============================================================================
--- openoffice/trunk/main/sw/source/core/edit/eddel.cxx (original)
+++ openoffice/trunk/main/sw/source/core/edit/eddel.cxx Thu Jun 27 09:56:32 2013
@@ -47,77 +47,70 @@
 
 void SwEditShell::DeleteSel( SwPaM& rPam, sal_Bool* pUndo )
 {
-	// nur bei Selektion
-	if( !rPam.HasMark() || *rPam.GetPoint() == *rPam.GetMark())
-		return;
-
-	// besteht eine Selection in einer Tabelle ?
-	// dann nur den Inhalt der selektierten Boxen loeschen
-	// jetzt gibt es 2 Faelle die beachtet werden muessen:
-	//	1. Point und Mark stehen in einer Box, Selection normal loeschen
-	//	2. Point und Mark stehen in unterschiedlichen Boxen, alle
-	// selektierten Boxen suchen in den Inhalt loeschen
-
-	//Comment:If the point is outside of a table and the mark point is in the a table cell,
-	//			should go throw the following code
-	if( (rPam.GetNode()->FindTableNode() || rPam.GetNode(sal_False)->FindTableNode()) &&
-		rPam.GetNode()->StartOfSectionNode() !=
-		rPam.GetNode(sal_False)->StartOfSectionNode() )
-	{
-		// in Tabellen das Undo gruppieren
-		if( pUndo && !*pUndo )
+    // only on a selection
+    if ( !rPam.HasMark() || *rPam.GetPoint() == *rPam.GetMark())
+        return;
+
+    // besteht eine Selection in einer Tabelle ?
+    // dann nur den Inhalt der selektierten Boxen loeschen
+    // jetzt gibt es 2 Faelle die beachtet werden muessen:
+    //	1. Point und Mark stehen in einer Box, Selection normal loeschen
+    //	2. Point und Mark stehen in unterschiedlichen Boxen, alle
+    // selektierten Boxen suchen in den Inhalt loeschen
+
+    if( rPam.GetNode()->FindTableNode() &&
+        rPam.GetNode()->StartOfSectionNode() != rPam.GetNode(sal_False)->StartOfSectionNode() )
+    {
+        // in Tabellen das Undo gruppieren
+        if( pUndo && !*pUndo )
         {
             GetDoc()->GetIDocumentUndoRedo().StartUndo( UNDO_START, NULL );
-			*pUndo = sal_True;
-		}
-		SwPaM aDelPam( *rPam.Start() );
-		const SwPosition* pEndSelPos = rPam.End();
-		do {
-			aDelPam.SetMark();
-			SwNode* pNd = aDelPam.GetNode();
-			//Comment:If the point is outside of table, select the table start node as the end node of current selection node
-			const SwNode& rEndNd = !rPam.GetNode()->FindTableNode() && !pNd->FindTableNode()?
-						*(SwNode*)(rPam.GetNode(sal_False)->FindTableNode())
-						:
-						*pNd->EndOfSectionNode();
-			if( pEndSelPos->nNode.GetIndex() <= rEndNd.GetIndex() )
-			{
-				*aDelPam.GetPoint() = *pEndSelPos;
-				pEndSelPos = 0;		// Pointer als Flag missbrauchen
-			}
-			else
-			{
-				// dann ans Ende der Section
-				aDelPam.GetPoint()->nNode = rEndNd;
-				aDelPam.Move( fnMoveBackward, fnGoCntnt );
-			}
-				// geschuetze Boxen ueberspringen !
-			//For i117395, in some situation, the node would be hidden or invisible, which makes the frame of it unavailable
-			//So verify it before use it.
-			SwCntntFrm* pFrm = NULL;
-			if( !pNd->IsCntntNode() ||
-				!((pFrm=((SwCntntNode*)pNd)->getLayoutFrm( GetLayout() ))!=NULL && pFrm->IsProtected()) )
-			{
-				// alles loeschen
-				GetDoc()->DeleteAndJoin( aDelPam );
-				SaveTblBoxCntnt( aDelPam.GetPoint() );
-			}
-
-			if( !pEndSelPos )				// am Ende der Selection
-				break;
-			aDelPam.DeleteMark();
-			aDelPam.Move( fnMoveForward, fnGoCntnt );	// naechste Box
-		} while( pEndSelPos );
-	}
-	else
-	{
-			// alles loeschen		
-		GetDoc()->DeleteAndJoin( rPam );
-		SaveTblBoxCntnt( rPam.GetPoint() );
-	}
+            *pUndo = sal_True;
+        }
+        SwPaM aDelPam( *rPam.Start() );
+        const SwPosition* pEndSelPos = rPam.End();
+        do {
+            aDelPam.SetMark();
+            SwNode* pNd = aDelPam.GetNode();
+            const SwNode& rEndNd = *pNd->EndOfSectionNode();
+            if( pEndSelPos->nNode.GetIndex() <= rEndNd.GetIndex() )
+            {
+                *aDelPam.GetPoint() = *pEndSelPos;
+                pEndSelPos = 0;		// Pointer als Flag missbrauchen
+            }
+            else
+            {
+                // dann ans Ende der Section
+                aDelPam.GetPoint()->nNode = rEndNd;
+                aDelPam.Move( fnMoveBackward, fnGoCntnt );
+            }
+            // geschuetze Boxen ueberspringen !
+            //For i117395, in some situation, the node would be hidden or invisible, which makes the frame of it unavailable
+            //So verify it before use it.
+            SwCntntFrm* pFrm = NULL;
+            if( !pNd->IsCntntNode() ||
+                !((pFrm=((SwCntntNode*)pNd)->getLayoutFrm( GetLayout() ))!=NULL && pFrm->IsProtected()) )
+            {
+                // alles loeschen
+                GetDoc()->DeleteAndJoin( aDelPam );
+                SaveTblBoxCntnt( aDelPam.GetPoint() );
+            }
+
+            if( !pEndSelPos )				// am Ende der Selection
+                break;
+            aDelPam.DeleteMark();
+            aDelPam.Move( fnMoveForward, fnGoCntnt );	// naechste Box
+        } while( pEndSelPos );
+    }
+    else
+    {
+        // alles loeschen
+        GetDoc()->DeleteAndJoin( rPam );
+        SaveTblBoxCntnt( rPam.GetPoint() );
+    }
 
-	// Selection wird nicht mehr benoetigt.
-	rPam.DeleteMark();
+    // Selection wird nicht mehr benoetigt.
+    rPam.DeleteMark();
 }