From b9f86f8b983ca14d8a1c60b6572bf542023793d3 Mon Sep 17 00:00:00 2001 From: "jfrancis%netscape.com" Date: Tue, 6 Mar 2001 20:16:38 +0000 Subject: [PATCH] fix for 70602: selection not properly reset when joining nodes. {r,sr}={kin,sfraser} git-svn-id: svn://10.0.0.236/trunk@88681 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/editor/base/nsEditor.cpp | 16 +++++++++------- mozilla/editor/libeditor/base/nsEditor.cpp | 16 +++++++++------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/mozilla/editor/base/nsEditor.cpp b/mozilla/editor/base/nsEditor.cpp index fef60eda5ac..76dcca61820 100644 --- a/mozilla/editor/base/nsEditor.cpp +++ b/mozilla/editor/base/nsEditor.cpp @@ -2830,6 +2830,8 @@ nsEditor::JoinNodesImpl(nsIDOMNode * aNodeToKeep, // and adjust the selection if needed // HACK: this is overly simplified - multi-range selections need more work than this PRBool bNeedToAdjust = PR_FALSE; + + // check to see if we joined nodes where selection starts if (selStartNode.get() == aNodeToJoin) { bNeedToAdjust = PR_TRUE; @@ -2844,12 +2846,8 @@ nsEditor::JoinNodesImpl(nsIDOMNode * aNodeToKeep, bNeedToAdjust = PR_TRUE; selStartOffset += firstNodeLength; } - - if (bNeedToAdjust) - selection->Collapse(selStartNode,selStartOffset); - - bNeedToAdjust = PR_FALSE; - + + // check to see if we joined nodes where selection ends if (selEndNode.get() == aNodeToJoin) { bNeedToAdjust = PR_TRUE; @@ -2865,8 +2863,12 @@ nsEditor::JoinNodesImpl(nsIDOMNode * aNodeToKeep, selEndOffset += firstNodeLength; } + // adjust selection if needed if (bNeedToAdjust) - selection->Extend(selEndNode,selEndOffset); + { + selection->Collapse(selStartNode,selStartOffset); + selection->Extend(selEndNode,selEndOffset); + } } } } diff --git a/mozilla/editor/libeditor/base/nsEditor.cpp b/mozilla/editor/libeditor/base/nsEditor.cpp index fef60eda5ac..76dcca61820 100644 --- a/mozilla/editor/libeditor/base/nsEditor.cpp +++ b/mozilla/editor/libeditor/base/nsEditor.cpp @@ -2830,6 +2830,8 @@ nsEditor::JoinNodesImpl(nsIDOMNode * aNodeToKeep, // and adjust the selection if needed // HACK: this is overly simplified - multi-range selections need more work than this PRBool bNeedToAdjust = PR_FALSE; + + // check to see if we joined nodes where selection starts if (selStartNode.get() == aNodeToJoin) { bNeedToAdjust = PR_TRUE; @@ -2844,12 +2846,8 @@ nsEditor::JoinNodesImpl(nsIDOMNode * aNodeToKeep, bNeedToAdjust = PR_TRUE; selStartOffset += firstNodeLength; } - - if (bNeedToAdjust) - selection->Collapse(selStartNode,selStartOffset); - - bNeedToAdjust = PR_FALSE; - + + // check to see if we joined nodes where selection ends if (selEndNode.get() == aNodeToJoin) { bNeedToAdjust = PR_TRUE; @@ -2865,8 +2863,12 @@ nsEditor::JoinNodesImpl(nsIDOMNode * aNodeToKeep, selEndOffset += firstNodeLength; } + // adjust selection if needed if (bNeedToAdjust) - selection->Extend(selEndNode,selEndOffset); + { + selection->Collapse(selStartNode,selStartOffset); + selection->Extend(selEndNode,selEndOffset); + } } } }