fix Menu copy constructor
it has to make deep copy of itsOptions.
This commit is contained in:
59
src/menu.h
59
src/menu.h
@@ -211,36 +211,43 @@ namespace NCurses
|
||||
}
|
||||
|
||||
template <typename T> NCurses::Menu<T>::Menu(size_t startx,
|
||||
size_t starty,
|
||||
size_t width,
|
||||
size_t height,
|
||||
const std::string &title,
|
||||
Color color,
|
||||
Border border)
|
||||
: Window(startx, starty, width, height, title, color, border),
|
||||
itsItemDisplayer(0),
|
||||
itsItemDisplayerUserdata(0),
|
||||
itsGetStringFunction(0),
|
||||
itsGetStringFunctionUserData(0),
|
||||
itsOptionsPtr(&itsOptions),
|
||||
itsBeginning(0),
|
||||
itsHighlight(0),
|
||||
itsHighlightColor(itsBaseColor),
|
||||
highlightEnabled(1),
|
||||
itsSelectedPrefix(0),
|
||||
itsSelectedSuffix(0)
|
||||
size_t starty,
|
||||
size_t width,
|
||||
size_t height,
|
||||
const std::string &title,
|
||||
Color color,
|
||||
Border border)
|
||||
: Window(startx, starty, width, height, title, color, border),
|
||||
itsItemDisplayer(0),
|
||||
itsItemDisplayerUserdata(0),
|
||||
itsGetStringFunction(0),
|
||||
itsGetStringFunctionUserData(0),
|
||||
itsOptionsPtr(&itsOptions),
|
||||
itsBeginning(0),
|
||||
itsHighlight(0),
|
||||
itsHighlightColor(itsBaseColor),
|
||||
highlightEnabled(1),
|
||||
itsSelectedPrefix(0),
|
||||
itsSelectedSuffix(0)
|
||||
{
|
||||
}
|
||||
|
||||
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),
|
||||
itsItemDisplayerUserdata(m.itsItemDisplayerUserdata),
|
||||
itsGetStringFunction(m.itsGetStringFunction),
|
||||
itsGetStringFunctionUserData(m.itsGetStringFunctionUserData),
|
||||
itsOptionsPtr(m.itsOptionsPtr),
|
||||
itsBeginning(m.itsBeginning),
|
||||
itsHighlight(m.itsHighlight),
|
||||
itsHighlightColor(m.itsHighlightColor),
|
||||
highlightEnabled(m.highlightEnabled),
|
||||
itsSelectedPrefix(m.itsSelectedPrefix),
|
||||
itsSelectedSuffix(m.itsSelectedSuffix)
|
||||
{
|
||||
itsOptions = m.itsOptions;
|
||||
itsItemDisplayer = m.itsItemDisplayer;
|
||||
itsItemDisplayerUserdata = m.itsItemDisplayerUserdata;
|
||||
itsBeginning = m.itsBeginning;
|
||||
itsHighlight = m.itsHighlight;
|
||||
itsHighlightColor = m.itsHighlightColor;
|
||||
highlightEnabled = m.highlightEnabled;
|
||||
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()
|
||||
|
||||
@@ -47,6 +47,7 @@ namespace NCurses
|
||||
|
||||
public:
|
||||
basic_buffer() : itsTempString(0) { }
|
||||
basic_buffer(const basic_buffer &b);
|
||||
|
||||
std::basic_string<C> Str() const;
|
||||
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;
|
||||
}
|
||||
|
||||
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
|
||||
{
|
||||
return itsString.str();
|
||||
|
||||
Reference in New Issue
Block a user