mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 11:55:49 +00:00
Bug 1129078 - part 3, Add a mIsGenerated bit to ranges that ExcludeNonSelectableNodes created due to user-select:none. Also, return the index to the range we want to be the new mAnchorFocusRange, based on the Selection direction. r=smaug
This commit is contained in:
parent
da07886215
commit
a895b6ecaf
@ -49,6 +49,7 @@ public:
|
||||
, mIsDetached(false)
|
||||
, mMaySpanAnonymousSubtrees(false)
|
||||
, mInSelection(false)
|
||||
, mIsGenerated(false)
|
||||
, mStartOffsetWasIncremented(false)
|
||||
, mEndOffsetWasIncremented(false)
|
||||
, mEnableGravitationOnElementRemoval(true)
|
||||
@ -153,6 +154,27 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return true if this range was generated.
|
||||
* @see SetIsGenerated
|
||||
*/
|
||||
bool IsGenerated() const
|
||||
{
|
||||
return mIsGenerated;
|
||||
}
|
||||
|
||||
/**
|
||||
* Mark this range as being generated or not.
|
||||
* Currently it is used for marking ranges that are created when splitting up
|
||||
* a range to exclude a -moz-user-select:none region.
|
||||
* @see Selection::AddItem
|
||||
* @see ExcludeNonSelectableNodes
|
||||
*/
|
||||
void SetIsGenerated(bool aIsGenerated)
|
||||
{
|
||||
mIsGenerated = aIsGenerated;
|
||||
}
|
||||
|
||||
nsINode* GetCommonAncestor() const;
|
||||
void Reset();
|
||||
nsresult SetStart(nsINode* aParent, int32_t aOffset);
|
||||
@ -333,6 +355,7 @@ protected:
|
||||
bool mIsDetached;
|
||||
bool mMaySpanAnonymousSubtrees;
|
||||
bool mInSelection;
|
||||
bool mIsGenerated;
|
||||
bool mStartOffsetWasIncremented;
|
||||
bool mEndOffsetWasIncremented;
|
||||
bool mEnableGravitationOnElementRemoval;
|
||||
|
@ -3512,9 +3512,19 @@ Selection::AddItem(nsRange* aItem, int32_t* aOutIndex)
|
||||
rangesToAdd.AppendElement(aItem);
|
||||
}
|
||||
}
|
||||
*aOutIndex = -1;
|
||||
size_t newAnchorFocusIndex =
|
||||
GetDirection() == eDirPrevious ? 0 : rangesToAdd.Length() - 1;
|
||||
for (size_t i = 0; i < rangesToAdd.Length(); ++i) {
|
||||
nsresult rv = AddItemInternal(rangesToAdd[i], aOutIndex);
|
||||
int32_t index;
|
||||
nsresult rv = AddItemInternal(rangesToAdd[i], &index);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (i == newAnchorFocusIndex) {
|
||||
*aOutIndex = index;
|
||||
rangesToAdd[i]->SetIsGenerated(false);
|
||||
} else {
|
||||
rangesToAdd[i]->SetIsGenerated(true);
|
||||
}
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user