diff --git a/bazaar/XMLMenu/XMLCommand.cpp b/bazaar/XMLMenu/XMLCommand.cpp index 797520cf8..54c2d8031 100644 --- a/bazaar/XMLMenu/XMLCommand.cpp +++ b/bazaar/XMLMenu/XMLCommand.cpp @@ -5,6 +5,31 @@ NAMESPACE_UPP //////////////////////////////////////////////////////////////////////////////////// +// copy constructors +XMLCommand::XMLCommand(XMLCommand const &c, int) +{ + control = c.control; + ctrlSize = c.ctrlSize; + callback = c.callback; + menuCallback = c.menuCallback; + menuTb <<= c.menuTb; + enabled = c.enabled; + custom = c.custom; + commandString = c.commandString; +} + +XMLCommand::XMLCommand(XMLCommand rval_ c) +{ + control = c.control; + ctrlSize = c.ctrlSize; + callback = c.callback; + menuCallback = c.menuCallback; + menuTb = c.menuTb; + enabled = c.enabled; + custom = c.custom; + commandString = c.commandString; +} + // xml support void XMLCommand::Xmlize(XmlIO xml) { @@ -215,12 +240,12 @@ XMLCommands &XMLCommands::Sort(void) { if(commands[i].GetIsCustom()) { - custom.Add(commands[i]); + custom.AddPick(commands[i]); customIdx.Add(commands.GetKey(i)); } else { - builtIn.Add(commands[i]); + builtIn.AddPick(commands[i]); builtInIdx.Add(commands.GetKey(i)); } } @@ -228,9 +253,9 @@ XMLCommands &XMLCommands::Sort(void) IndexSort(builtInIdx, builtIn, XMLCmdLess()); commands.Clear(); for(int i = 0; i < builtIn.GetCount(); i++) - commands.Add(builtInIdx[i], builtIn[i]); + commands.AddPick(builtInIdx[i], builtIn[i]); for(int i = 0; i < custom.GetCount(); i++) - commands.Add(customIdx[i], custom[i]); + commands.AddPick(customIdx[i], custom[i]); return *this; } @@ -253,7 +278,7 @@ void XMLCommands::Xmlize(XmlIO xml) // appends new commands to current list for(int i = 0; i < newCmds.GetCount(); i++) - commands.Add(newCmds.GetKey(i), newCmds[i]); + commands.AddPick(newCmds.GetKey(i), newCmds[i]); } else { @@ -261,7 +286,7 @@ void XMLCommands::Xmlize(XmlIO xml) ArrayMap custCmds; for(int i = 0; i < commands.GetCount(); i++) if(commands[i].GetIsCustom()) - custCmds.Add(commands.GetKey(i), commands[i]); + custCmds.Add(commands.GetKey(i), new XMLCommand(commands[i], 1)); // stream out custom commands xml("commands", custCmds); diff --git a/bazaar/XMLMenu/XMLCommand.h b/bazaar/XMLMenu/XMLCommand.h index fead6e15a..4ad210583 100644 --- a/bazaar/XMLMenu/XMLCommand.h +++ b/bazaar/XMLMenu/XMLCommand.h @@ -8,7 +8,7 @@ NAMESPACE_UPP //////////////////////////////////////////////////////////////////////////////////// // a single command, i.e. available entry for menu and bars class XMLToolBar; -class XMLCommand +class XMLCommand : DeepCopyOption { friend class XMLCommands; private: @@ -37,6 +37,13 @@ class XMLCommand String commandString; public: + // constructor + XMLCommand() {} + + // copy constructor + XMLCommand(XMLCommand rval_ c); + XMLCommand(XMLCommand const &c, int); + Ctrl *GetCtrl(void) const { return control; } Size const &GetCtrlSize(void) const { return ctrlSize; } Callback const &GetCallback(void) const { return callback; } @@ -70,7 +77,7 @@ class XMLCommands : DeepCopyOption XMLCommands(XMLCommands const &cmds, int dummy) : commands(cmds.commands, 0) {} // pick constructor - XMLCommands(XMLCommands pick_ &cmds) : commands(cmds.commands) {} + XMLCommands(XMLCommands rval_ cmds) : commands(cmds.commands) {} // adds a custom command XMLCommands &Add(String const &id, String const &cmd); diff --git a/bazaar/XMLMenu/XMLMenuEditor.cpp b/bazaar/XMLMenu/XMLMenuEditor.cpp index f9d5dd070..a89ac5287 100644 --- a/bazaar/XMLMenu/XMLMenuEditor.cpp +++ b/bazaar/XMLMenu/XMLMenuEditor.cpp @@ -320,8 +320,8 @@ void XMLBarEditor::treeContextAddCb(int mode) item.isSeparator = true; mode -= 4; } - Value v = RawToValue(item); String lbl = (item.IsSeparator() ? t_("") : ""); + Value v = RawPickToValue(item); switch(mode) { case 1: diff --git a/bazaar/XMLMenu/XMLToolBar.cpp b/bazaar/XMLMenu/XMLToolBar.cpp index 5cc93600f..f2d49c85c 100644 --- a/bazaar/XMLMenu/XMLToolBar.cpp +++ b/bazaar/XMLMenu/XMLToolBar.cpp @@ -28,7 +28,7 @@ XMLToolBarItem::XMLToolBarItem(const XMLToolBarItem &item, int dummy) } // pick constructor -XMLToolBarItem::XMLToolBarItem(XMLToolBarItem pick_ &item) +XMLToolBarItem::XMLToolBarItem(XMLToolBarItem rval_ item) { commandId = item.commandId; label = item.label; diff --git a/bazaar/XMLMenu/XMLToolBar.h b/bazaar/XMLMenu/XMLToolBar.h index 065863da2..a076b9196 100644 --- a/bazaar/XMLMenu/XMLToolBar.h +++ b/bazaar/XMLMenu/XMLToolBar.h @@ -70,7 +70,7 @@ class XMLToolBarItem : DeepCopyOption XMLToolBarItem(const XMLToolBarItem &item, int dummy); // pick constructor - XMLToolBarItem(XMLToolBarItem pick_ &item); + XMLToolBarItem(XMLToolBarItem rval_ item); #ifdef flagDEBUG // debugging stuff -- dumps bar content