fix Menu copy constructor

it has to make deep copy of itsOptions.
master
Andrzej Rybczak 17 years ago
parent a20469b403
commit d03c4a88b6
  1. 25
      src/menu.h
  2. 7
      src/strbuffer.h

@ -232,15 +232,22 @@ template <typename T> NCurses::Menu<T>::Menu(size_t startx,
{ {
} }
template <typename T> NCurses::Menu<T>::Menu(const Menu &m) : Window(m) template <typename T> NCurses::Menu<T>::Menu(const Menu &m) : Window(m),
{ itsItemDisplayer(m.itsItemDisplayer),
itsOptions = m.itsOptions; itsItemDisplayerUserdata(m.itsItemDisplayerUserdata),
itsItemDisplayer = m.itsItemDisplayer; itsGetStringFunction(m.itsGetStringFunction),
itsItemDisplayerUserdata = m.itsItemDisplayerUserdata; itsGetStringFunctionUserData(m.itsGetStringFunctionUserData),
itsBeginning = m.itsBeginning; itsOptionsPtr(m.itsOptionsPtr),
itsHighlight = m.itsHighlight; itsBeginning(m.itsBeginning),
itsHighlightColor = m.itsHighlightColor; itsHighlight(m.itsHighlight),
highlightEnabled = m.highlightEnabled; itsHighlightColor(m.itsHighlightColor),
highlightEnabled(m.highlightEnabled),
itsSelectedPrefix(m.itsSelectedPrefix),
itsSelectedSuffix(m.itsSelectedSuffix)
{
itsOptions.reserve(m.itsOptions.size());
for (option_const_iterator it = m.itsOptions.begin(); it != m.itsOptions.end(); it++)
itsOptions.push_back(new Option(**it));
} }
template <typename T> NCurses::Menu<T>::~Menu() template <typename T> NCurses::Menu<T>::~Menu()

@ -47,6 +47,7 @@ namespace NCurses
public: public:
basic_buffer() : itsTempString(0) { } basic_buffer() : itsTempString(0) { }
basic_buffer(const basic_buffer &b);
std::basic_string<C> Str() const; std::basic_string<C> Str() const;
void SetFormatting(short vb, const std::basic_string<C> &s, short ve, bool for_each = 1); void SetFormatting(short vb, const std::basic_string<C> &s, short ve, bool for_each = 1);
@ -71,6 +72,12 @@ namespace NCurses
typedef basic_buffer<wchar_t> WBuffer; typedef basic_buffer<wchar_t> WBuffer;
} }
template <typename C> NCurses::basic_buffer<C>::basic_buffer(const basic_buffer &b) : itsFormat(b.itsFormat),
itsTempString(b.itsTempString)
{
itsString << b.itsString.str();
}
template <typename C> std::basic_string<C> NCurses::basic_buffer<C>::Str() const template <typename C> std::basic_string<C> NCurses::basic_buffer<C>::Str() const
{ {
return itsString.str(); return itsString.str();

Loading…
Cancel
Save