소스 검색

*** empty log message ***

Joe Shochet 24 년 전
부모
커밋
03476f1b2f
2개의 변경된 파일46개의 추가작업 그리고 11개의 파일을 삭제
  1. 41 6
      panda/src/tform/mouseWatcherGroup.cxx
  2. 5 5
      panda/src/tform/mouseWatcherGroup.h

+ 41 - 6
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;
 }
 
 ////////////////////////////////////////////////////////////////////

+ 5 - 5
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: