diff --git a/src/lib/views/sunlight/include/vContext.h b/src/lib/views/sunlight/include/vContext.h index 4dcd7b0..f3c6f93 100644 --- a/src/lib/views/sunlight/include/vContext.h +++ b/src/lib/views/sunlight/include/vContext.h @@ -21,7 +21,7 @@ vContext(vContext *); virtual vContext * vAttach(vContext *); virtual bool vCreate(void) = 0; - virtual void vDeleteAllStyles(void) { styles.clear(); }; + virtual void vDeleteAllStyles(void); virtual bool vDeleteStyle(const std::string); virtual void vDraw(void) = 0; virtual vContext * vDetach(vContext *); diff --git a/src/lib/views/sunlight/vContext.cpp b/src/lib/views/sunlight/vContext.cpp index 24f7994..81608af 100644 --- a/src/lib/views/sunlight/vContext.cpp +++ b/src/lib/views/sunlight/vContext.cpp @@ -25,6 +25,21 @@ return context; } // vContext::vAttach +void +vContext::vDeleteAllStyles(void) { + map::iterator curStyle = styles.begin(); + while (curStyle != styles.end()) { + std::string str = curStyle->first; + sStyle * tmpStyle = dynamic_cast(styles[str]); +// if (tmpStyle != NULL) cout << "deleting styles[\"" << str << "\"]" << endl; + styles.erase(curStyle); + delete tmpStyle; + ++curStyle; + } + + return; +} // vContext + bool vContext::vDeleteStyle(const std::string styleKey) { /* @@ -107,5 +122,8 @@ delete realView; realView = pContext = NULL; curX = curY = width = height = 0; + + vDeleteAllStyles(); + return; } // vContext::~vContext