From 26526207cf40a67b8685ab600407a2bf081e397b Mon Sep 17 00:00:00 2001 From: "pierre%netscape.com" Date: Fri, 16 Oct 1998 09:18:03 +0000 Subject: [PATCH] added Previous() and ResetToLast() to the Enumerator --- widget/src/xpwidgets/nsBaseWidget.cpp | 29 +++++++++++++++++++++++++++ widget/src/xpwidgets/nsBaseWidget.h | 2 ++ 2 files changed, 31 insertions(+) diff --git a/widget/src/xpwidgets/nsBaseWidget.cpp b/widget/src/xpwidgets/nsBaseWidget.cpp index 0dcbc1fe3da7..a2856e53cf79 100644 --- a/widget/src/xpwidgets/nsBaseWidget.cpp +++ b/widget/src/xpwidgets/nsBaseWidget.cpp @@ -452,6 +452,24 @@ nsISupports* nsBaseWidget::Enumerator::Next() return NULL; } +//------------------------------------------------------------------------- +// +// Get enumeration previous element. Return null at the end +// +//------------------------------------------------------------------------- +nsISupports* nsBaseWidget::Enumerator::Previous() +{ + if (mCurrentPosition > 0) { + mCurrentPosition--; + nsIWidget* widget = (nsIWidget*)mChildren.ElementAt(mCurrentPosition); + + NS_IF_ADDREF(widget); + return widget; + } + + return NULL; +} + //------------------------------------------------------------------------- // @@ -464,6 +482,17 @@ void nsBaseWidget::Enumerator::Reset() } +//------------------------------------------------------------------------- +// +// Reset enumerator internal pointer to the end +// +//------------------------------------------------------------------------- +void nsBaseWidget::Enumerator::ResetToLast() +{ + mCurrentPosition = mChildren.Count(); +} + + //------------------------------------------------------------------------- // // Append an element diff --git a/widget/src/xpwidgets/nsBaseWidget.h b/widget/src/xpwidgets/nsBaseWidget.h index 683cb68ca369..2422a7b27709 100644 --- a/widget/src/xpwidgets/nsBaseWidget.h +++ b/widget/src/xpwidgets/nsBaseWidget.h @@ -118,7 +118,9 @@ protected: ~Enumerator(); NS_IMETHOD_(nsISupports*) Next(); + NS_IMETHOD_(nsISupports*) Previous(); NS_IMETHOD_(void) Reset(); + NS_IMETHOD_(void) ResetToLast(); void Append(nsIWidget* aWidget); void Remove(nsIWidget* aWidget);