diff --git a/panda/src/tform/mouseWatcherGroup.cxx b/panda/src/tform/mouseWatcherGroup.cxx index 6a4adcee36..ed3cd8feaa 100644 --- a/panda/src/tform/mouseWatcherGroup.cxx +++ b/panda/src/tform/mouseWatcherGroup.cxx @@ -38,8 +38,21 @@ MouseWatcherGroup:: // added, or false if it was already on the list. //////////////////////////////////////////////////////////////////// bool MouseWatcherGroup:: -add_region(MouseWatcherRegion *region) { - return _regions.insert(region).second; +add_region(PT(MouseWatcherRegion) region) { + //return _regions.insert(region).second; + + // See if the region is in the set/vector already + Regions::const_iterator ri = find(_regions.begin(), + _regions.end(), + region); + if (ri != _regions.end()) { + // Already in the set, return false + return false; + } + + // Not in the set, add it and return true + _regions.push_back(region); + return true; } //////////////////////////////////////////////////////////////////// @@ -49,8 +62,17 @@ add_region(MouseWatcherRegion *region) { // added to the MouseWatcherGroup, false otherwise. //////////////////////////////////////////////////////////////////// bool MouseWatcherGroup:: -has_region(MouseWatcherRegion *region) const { - return _regions.count(region) != 0; +has_region(PT(MouseWatcherRegion) region) const { + // See if the region is in the set/vector + Regions::const_iterator ri = find(_regions.begin(), + _regions.end(), + region); + if (ri != _regions.end()) { + // Found it + return true; + } + // Did not find the region + return false; } //////////////////////////////////////////////////////////////////// @@ -61,8 +83,21 @@ has_region(MouseWatcherRegion *region) const { // if it wasn't there in the first place. //////////////////////////////////////////////////////////////////// bool MouseWatcherGroup:: -remove_region(MouseWatcherRegion *region) { - return _regions.erase(region) != 0; +remove_region(PT(MouseWatcherRegion) region) { + //return _regions.erase(region) != 0; + + // See if the region is in the set/vector + Regions::iterator ri = find(_regions.begin(), + _regions.end(), + region); + if (ri != _regions.end()) { + // Found it, now erase it + _regions.erase(ri); + return true; + } + + // Did not find the region to erase + return false; } //////////////////////////////////////////////////////////////////// diff --git a/panda/src/tform/mouseWatcherGroup.h b/panda/src/tform/mouseWatcherGroup.h index 2fc7defce0..6bbce2415f 100644 --- a/panda/src/tform/mouseWatcherGroup.h +++ b/panda/src/tform/mouseWatcherGroup.h @@ -24,7 +24,7 @@ #include "pointerTo.h" #include "referenceCount.h" -#include "pset.h" +#include "pvector.h" //////////////////////////////////////////////////////////////////// // Class : MouseWatcherGroup @@ -36,14 +36,14 @@ public: virtual ~MouseWatcherGroup(); PUBLISHED: - bool add_region(MouseWatcherRegion *region); - bool has_region(MouseWatcherRegion *region) const; - bool remove_region(MouseWatcherRegion *region); + bool add_region(PT(MouseWatcherRegion) region); + bool has_region(PT(MouseWatcherRegion) region) const; + bool remove_region(PT(MouseWatcherRegion) region); MouseWatcherRegion *find_region(const string &name) const; void clear_regions(); protected: - typedef pset< PT(MouseWatcherRegion) > Regions; + typedef pvector< PT(MouseWatcherRegion) > Regions; Regions _regions; public: