[Libufo-commits] ufo-0.5/src/ui ustylemanager.cpp,1.1,1.2
Status: Beta
Brought to you by:
schmidtjf
|
From: Johannes S. <sch...@us...> - 2005-09-02 14:28:46
|
Update of /cvsroot/libufo/ufo-0.5/src/ui In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29427/src/ui Modified Files: ustylemanager.cpp Log Message: Fixed memory leak of created style hints and styles. Index: ustylemanager.cpp =================================================================== RCS file: /cvsroot/libufo/ufo-0.5/src/ui/ustylemanager.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ustylemanager.cpp 21 May 2005 15:32:12 -0000 1.1 --- ustylemanager.cpp 2 Sep 2005 14:28:38 -0000 1.2 *************** *** 84,96 **** hints->opacity = 1.0f; hints->background = NULL; - m_hints["default"] = hints; - // FIXME: mem leak UStyleHints * widget = new UStyleHints(); m_hints["widget"] = widget; - // FIXME: mem leak UStyleHints * buttons = new UStyleHints(); buttons->border->borderType = StyleBorder; --- 84,93 ---- *************** *** 100,104 **** m_hints["button"] = buttons; - // FIXME: mem leak UStyleHints * menuitem = new UStyleHints(); menuitem->margin = UInsets(2, 2, 2, 2); --- 97,100 ---- *************** *** 107,123 **** m_hints["menuitem"] = menuitem; - // FIXME: mem leak UStyleHints * separator = new UStyleHints(); m_hints["separator"] = separator; - // FIXME: mem leak UStyleHints * menubar = new UStyleHints(); menubar->border->borderType = BottomLineBorder; menubar->border->color[0] = UColor(0.53f, 0.53f, 0.50f); - m_hints["menubar"] = menubar; - - // FIXME: mem leak UStyleHints * popup = new UStyleHints(); popup->border->borderType = LineBorder; --- 103,114 ---- *************** *** 126,136 **** m_hints["popupmenu"] = popup; - // FIXME: mem leak - UStyleHints * iframe = new UStyleHints(); iframe->border->borderType = StyleBorder; m_hints["internalframe"] = iframe; - // FIXME: mem leak UStyleHints * textedit = new UStyleHints(); textedit->border->borderType = LineBorder; --- 117,124 ---- *************** *** 138,142 **** m_hints["textedit"] = textedit; ! m_hints["listbox"] = textedit; } --- 126,130 ---- m_hints["textedit"] = textedit; ! m_hints["listbox"] = textedit->clone(); } *************** *** 148,151 **** --- 136,153 ---- } + UStyleManager::~UStyleManager() { + for (std::map<std::string, UStyleHints*>::iterator iter = m_hints.begin(); + iter != m_hints.end(); + ++iter) { + if ((*iter).second) { + delete ((*iter).second); + } + } + m_hints.clear(); + if (m_style) { + m_style->unreference(); + } + } + UStyle * *************** *** 270,275 **** m_hints[(*iter).first]->transcribe((*iter).second); } else { ! (*iter).second->update(getStyleHints((*iter).first)); ! m_hints[(*iter).first] = (*iter).second; } } --- 272,278 ---- m_hints[(*iter).first]->transcribe((*iter).second); } else { ! UStyleHints * hints = ((*iter).second)->clone(); ! hints->update(getStyleHints((*iter).first)); ! m_hints[(*iter).first] = hints; } } |