summaryrefslogtreecommitdiff
path: root/src/guichan/widget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/guichan/widget.cpp')
-rw-r--r--src/guichan/widget.cpp15
1 files changed, 5 insertions, 10 deletions
diff --git a/src/guichan/widget.cpp b/src/guichan/widget.cpp
index e143e4a97..8ec3a8178 100644
--- a/src/guichan/widget.cpp
+++ b/src/guichan/widget.cpp
@@ -69,6 +69,7 @@ namespace gcn
Font* Widget::mGlobalFont = NULL;
DefaultFont Widget::mDefaultFont;
std::list<Widget*> Widget::mWidgets;
+ std::set<Widget*> Widget::mWidgetsSet;
Widget::Widget() :
mForegroundColor(0x000000),
@@ -87,6 +88,7 @@ namespace gcn
mCurrentFont(NULL)
{
mWidgets.push_back(this);
+ mWidgetsSet.insert(this);
}
Widget::~Widget()
@@ -104,6 +106,7 @@ namespace gcn
_setFocusHandler(NULL);
mWidgets.remove(this);
+ mWidgetsSet.erase(this);
}
void Widget::drawFrame(Graphics* graphics)
@@ -482,16 +485,8 @@ namespace gcn
bool Widget::widgetExists(const Widget* widget)
{
- bool result = false;
-
- std::list<Widget*>::iterator iter;
- for (iter = mWidgets.begin(); iter != mWidgets.end(); ++iter)
- {
- if (*iter == widget)
- return true;
- }
-
- return result;
+ return mWidgetsSet.find(const_cast<Widget*>(widget))
+ != mWidgetsSet.end();
}
bool Widget::isTabInEnabled() const