diff --git a/mozilla/layout/generic/nsFrame.cpp b/mozilla/layout/generic/nsFrame.cpp index 475d772de5f..e8395562ecf 100644 --- a/mozilla/layout/generic/nsFrame.cpp +++ b/mozilla/layout/generic/nsFrame.cpp @@ -1883,56 +1883,52 @@ nsFrame::HandlePress(nsPresContext* aPresContext, return frameselection->HandleTableSelection(parentContent, contentOffset, target, me); } - PRBool supportsDelay = frameselection->GetDelayCaretOverExistingSelection(); frameselection->SetDelayedCaretData(0); - if (supportsDelay) + // Check if any part of this frame is selected, and if the + // user clicked inside the selected region. If so, we delay + // starting a new selection since the user may be trying to + // drag the selected region to some other app. + + SelectionDetails *details = 0; + PRBool isSelected = ((GetStateBits() & NS_FRAME_SELECTED_CONTENT) == NS_FRAME_SELECTED_CONTENT); + + if (isSelected) { - // Check if any part of this frame is selected, and if the - // user clicked inside the selected region. If so, we delay - // starting a new selection since the user may be trying to - // drag the selected region to some other app. + details = frameselection->LookUpSelection(offsets.content, 0, + offsets.EndOffset(), PR_FALSE); - SelectionDetails *details = 0; - PRBool isSelected = ((GetStateBits() & NS_FRAME_SELECTED_CONTENT) == NS_FRAME_SELECTED_CONTENT); + // + // If there are any details, check to see if the user clicked + // within any selected region of the frame. + // - if (isSelected) + if (details) { - details = frameselection->LookUpSelection(offsets.content, 0, - offsets.EndOffset(), PR_FALSE); + SelectionDetails *curDetail = details; - // - // If there are any details, check to see if the user clicked - // within any selected region of the frame. - // - - if (details) + while (curDetail) { - SelectionDetails *curDetail = details; - - while (curDetail) + // + // If the user clicked inside a selection, then just + // return without doing anything. We will handle placing + // the caret later on when the mouse is released. We ignore + // the spellcheck selection. + // + if (curDetail->mType != nsISelectionController::SELECTION_SPELLCHECK && + curDetail->mStart <= offsets.StartOffset() && + offsets.EndOffset() <= curDetail->mEnd) { - // - // If the user clicked inside a selection, then just - // return without doing anything. We will handle placing - // the caret later on when the mouse is released. We ignore - // the spellcheck selection. - // - if (curDetail->mType != nsISelectionController::SELECTION_SPELLCHECK && - curDetail->mStart <= offsets.StartOffset() && - offsets.EndOffset() <= curDetail->mEnd) - { - delete details; - frameselection->SetMouseDownState(PR_FALSE); - frameselection->SetDelayedCaretData(me); - return NS_OK; - } - - curDetail = curDetail->mNext; + delete details; + frameselection->SetMouseDownState(PR_FALSE); + frameselection->SetDelayedCaretData(me); + return NS_OK; } - delete details; + curDetail = curDetail->mNext; } + + delete details; } } @@ -2275,9 +2271,7 @@ NS_IMETHODIMP nsFrame::HandleRelease(nsPresContext* aPresContext, if (!selectionOff) { frameselection = GetFrameSelection(); - if (nsEventStatus_eConsumeNoDefault != *aEventStatus && - frameselection && - frameselection->GetDelayCaretOverExistingSelection()) { + if (nsEventStatus_eConsumeNoDefault != *aEventStatus && frameselection) { // Check if the frameselection recorded the mouse going down. // If not, the user must have clicked in a part of the selection. // Place the caret before continuing! diff --git a/mozilla/layout/generic/nsFrameSelection.h b/mozilla/layout/generic/nsFrameSelection.h index d513ff9896c..5a8411d999a 100644 --- a/mozilla/layout/generic/nsFrameSelection.h +++ b/mozilla/layout/generic/nsFrameSelection.h @@ -424,27 +424,8 @@ public: void SetDisplaySelection(PRInt16 aState) { mDisplaySelection = aState; } PRInt16 GetDisplaySelection() { return mDisplaySelection; } - /** Allow applications to specify how we should place the caret - * when the user clicks over an existing selection. A aDelay - * value of PR_TRUE means delay clearing the selection and - * placing the caret until MouseUp, when the user clicks over - * an existing selection. This is especially useful when applications - * want to support Drag & Drop of the current selection. A value - * of PR_FALSE means place the caret immediately. If the application - * never calls this method, the nsIFrameSelection implementation - * assumes the default value is PR_TRUE. - * @param aDelay PR_TRUE if we should delay caret placement. - */ - void SetDelayCaretOverExistingSelection(PRBool aDelay); - - /** Get the current delay caret setting. - */ - PRBool GetDelayCaretOverExistingSelection() { return mDelayCaretOverExistingSelection; } - - /** If we are delaying caret placement til MouseUp (see - * Set/GetDelayCaretOverExistingSelection()), this method - * can be used to store the data received during the MouseDown - * so that we can place the caret during the MouseUp event. + /** This method can be used to store the data received during a MouseDown + * event so that we can place the caret during the MouseUp event. * @aMouseEvent the event received by the selection MouseDown * handling method. A NULL value can be use to tell this method * that any data is storing is no longer valid. @@ -655,7 +636,6 @@ private: nsMouseEvent mDelayedMouseEvent; - PRPackedBool mDelayCaretOverExistingSelection; PRPackedBool mDelayedMouseEventValid; PRPackedBool mChangesDuringBatching; diff --git a/mozilla/layout/generic/nsSelection.cpp b/mozilla/layout/generic/nsSelection.cpp index 788296b9f05..fbcff8e90c3 100644 --- a/mozilla/layout/generic/nsSelection.cpp +++ b/mozilla/layout/generic/nsSelection.cpp @@ -852,7 +852,6 @@ nsFrameSelection::nsFrameSelection() mDisplaySelection = nsISelectionController::SELECTION_OFF; - mDelayCaretOverExistingSelection = PR_TRUE; mDelayedMouseEventValid = PR_FALSE; mSelectionChangeReason = nsISelectionListener::NO_REASON; } @@ -3893,15 +3892,6 @@ nsFrameSelection::DeleteFromDocument() return NS_OK; } -void -nsFrameSelection::SetDelayCaretOverExistingSelection(PRBool aDelay) -{ - mDelayCaretOverExistingSelection = aDelay; - - if (! aDelay) - mDelayedMouseEventValid = PR_FALSE; -} - void nsFrameSelection::SetDelayedCaretData(nsMouseEvent *aMouseEvent) {