diff --git a/layout/xul/base/src/outliner/src/nsOutlinerSelection.cpp b/layout/xul/base/src/outliner/src/nsOutlinerSelection.cpp index 1b7ae93ab53d..a073845814bd 100644 --- a/layout/xul/base/src/outliner/src/nsOutlinerSelection.cpp +++ b/layout/xul/base/src/outliner/src/nsOutlinerSelection.cpp @@ -25,6 +25,26 @@ #include "nsOutlinerSelection.h" #include "nsIOutlinerBoxObject.h" +// A helper class for managing our ranges of selection. +struct nsOutlinerRange +{ + PRInt32 mMin; + PRInt32 mMax; + + nsOutlinerRange* mNext; + nsOutlinerRange* mPrev; + + nsOutlinerRange(PRInt32 aSingleVal):mNext(nsnull), mMin(aSingleVal), mMax(aSingleVal) {}; + nsOutlinerRange(PRInt32 aMin, PRInt32 aMax) :mNext(nsnull), mMin(aMin), mMax(aMax) {}; + + ~nsOutlinerRange() { delete mNext; }; + + void Connect(nsOutlinerRange* aPrev = nsnull, nsOutlinerRange* aNext = nsnull) { + mPrev = aPrev; + mNext = aNext; + } +}; + nsOutlinerSelection::nsOutlinerSelection(nsIOutlinerBoxObject* aOutliner) { NS_INIT_ISUPPORTS(); diff --git a/layout/xul/base/src/tree/src/nsTreeSelection.cpp b/layout/xul/base/src/tree/src/nsTreeSelection.cpp index 1b7ae93ab53d..a073845814bd 100644 --- a/layout/xul/base/src/tree/src/nsTreeSelection.cpp +++ b/layout/xul/base/src/tree/src/nsTreeSelection.cpp @@ -25,6 +25,26 @@ #include "nsOutlinerSelection.h" #include "nsIOutlinerBoxObject.h" +// A helper class for managing our ranges of selection. +struct nsOutlinerRange +{ + PRInt32 mMin; + PRInt32 mMax; + + nsOutlinerRange* mNext; + nsOutlinerRange* mPrev; + + nsOutlinerRange(PRInt32 aSingleVal):mNext(nsnull), mMin(aSingleVal), mMax(aSingleVal) {}; + nsOutlinerRange(PRInt32 aMin, PRInt32 aMax) :mNext(nsnull), mMin(aMin), mMax(aMax) {}; + + ~nsOutlinerRange() { delete mNext; }; + + void Connect(nsOutlinerRange* aPrev = nsnull, nsOutlinerRange* aNext = nsnull) { + mPrev = aPrev; + mNext = aNext; + } +}; + nsOutlinerSelection::nsOutlinerSelection(nsIOutlinerBoxObject* aOutliner) { NS_INIT_ISUPPORTS();