diff options
author | Eugene Sandulenko | 2019-12-17 00:00:19 +0100 |
---|---|---|
committer | Eugene Sandulenko | 2019-12-17 00:00:47 +0100 |
commit | 7d13c60a8bb7a1d71d2eb86b6530749a791d4792 (patch) | |
tree | ad18e6e64f6c0509f5a6d6f2922b29873c263c89 /engines/director/lingo/lingo-builtins.cpp | |
parent | e9aea0c5bee923d408759b19d813d0c242b0d985 (diff) | |
download | scummvm-rg350-7d13c60a8bb7a1d71d2eb86b6530749a791d4792.tar.gz scummvm-rg350-7d13c60a8bb7a1d71d2eb86b6530749a791d4792.tar.bz2 scummvm-rg350-7d13c60a8bb7a1d71d2eb86b6530749a791d4792.zip |
DIRECTOR: LINGO: Support menu items without commands
Diffstat (limited to 'engines/director/lingo/lingo-builtins.cpp')
-rw-r--r-- | engines/director/lingo/lingo-builtins.cpp | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/engines/director/lingo/lingo-builtins.cpp b/engines/director/lingo/lingo-builtins.cpp index 97afef64da..8b741a6236 100644 --- a/engines/director/lingo/lingo-builtins.cpp +++ b/engines/director/lingo/lingo-builtins.cpp @@ -1193,6 +1193,8 @@ void Lingo::b_installMenu(int nargs) { menu->setCommandsCallback(menuCommandsCallback, g_director); + debugC(3, kDebugLingoExec, "installMenu: '%s'", Common::toPrintable(menuStxt).c_str()); + for (const byte *s = (const byte *)menuStxt.c_str(); *s; s++) { // Get next line line.clear(); @@ -1221,8 +1223,10 @@ void Lingo::b_installMenu(int nargs) { p++; if (!submenuText.empty()) { // Adding submenu for previous menu - handlers += g_lingo->genMenuHandler(&commandId, command); - submenuText += Common::String::format("[%d]", commandId); + if (!command.empty()) { + handlers += g_lingo->genMenuHandler(&commandId, command); + submenuText += Common::String::format("[%d]", commandId); + } menu->createSubMenuFromString(submenu, submenuText.c_str(), 0); } @@ -1243,20 +1247,24 @@ void Lingo::b_installMenu(int nargs) { if (!p) p = strchr(line.c_str(), '\xc5'); - if (!p) { - warning("installMenu: syntax error at line %d", linenum); - continue; - } + Common::String text; - Common::String text(line.c_str(), p); - command = Common::String(p + 1); + if (p) { + text = Common::String(line.c_str(), p); + command = Common::String(p + 1); + } else { + text = line; + command = ""; + } text.trim(); command.trim(); if (!submenuText.empty()) { - handlers += g_lingo->genMenuHandler(&commandId, command); - submenuText += Common::String::format("[%d];", commandId); + if (!command.empty()) { + handlers += g_lingo->genMenuHandler(&commandId, command); + submenuText += Common::String::format("[%d];", commandId); + } } submenuText += text; @@ -1266,8 +1274,10 @@ void Lingo::b_installMenu(int nargs) { } if (!submenuText.empty()) { - handlers += g_lingo->genMenuHandler(&commandId, command); - submenuText += Common::String::format("[%d]", commandId); + if (!command.empty()) { + handlers += g_lingo->genMenuHandler(&commandId, command); + submenuText += Common::String::format("[%d]", commandId); + } menu->createSubMenuFromString(submenu, submenuText.c_str(), 0); } |