[Scummvm-git-logs] scummvm master -> e4c3c690902e546f2a093815cfe2ae6ec19e6c67

sev- sev at scummvm.org
Thu Oct 3 14:16:45 CEST 2019


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
b5573c8e2a GRAPHICS: MACGUI: Fix nested menus command processing
e4c3c69090 GRAPHICS: MACGUI: Fix nested menus parsing


Commit: b5573c8e2af74079cbe2583f75f5dfe3220a4376
    https://github.com/scummvm/scummvm/commit/b5573c8e2af74079cbe2583f75f5dfe3220a4376
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-10-03T14:00:15+02:00

Commit Message:
GRAPHICS: MACGUI: Fix nested menus command processing

Changed paths:
    graphics/macgui/macmenu.cpp


diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index 114f56a..917e1ff 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -922,13 +922,13 @@ bool MacMenu::mouseRelease(int x, int y) {
 			g_system->copyRectToScreen(_wm->_screenCopy->getBasePtr(0, 0), _wm->_screenCopy->pitch, 0, 0, _wm->_screenCopy->w, _wm->_screenCopy->h);
 		}
 
-		if (_activeItem != -1 && _activeSubItem != -1 && _items[_activeItem]->submenu->subitems[_activeSubItem]->enabled) {
-			if (_items[_activeItem]->submenu->subitems[_activeSubItem]->unicode) {
-				(*_unicodeccallback)(_items[_activeItem]->submenu->subitems[_activeSubItem]->action,
-							  _items[_activeItem]->submenu->subitems[_activeSubItem]->unicodeText, _cdata);
+		if (_activeItem != -1 && _activeSubItem != -1 && _menustack.back()->subitems[_activeSubItem]->enabled) {
+			if (_menustack.back()->subitems[_activeSubItem]->unicode) {
+				(*_unicodeccallback)(_menustack.back()->subitems[_activeSubItem]->action,
+							  _menustack.back()->subitems[_activeSubItem]->unicodeText, _cdata);
 			} else {
-				(*_ccallback)(_items[_activeItem]->submenu->subitems[_activeSubItem]->action,
-							  _items[_activeItem]->submenu->subitems[_activeSubItem]->text, _cdata);
+				(*_ccallback)(_menustack.back()->subitems[_activeSubItem]->action,
+							  _menustack.back()->subitems[_activeSubItem]->text, _cdata);
 			}
 		}
 


Commit: e4c3c690902e546f2a093815cfe2ae6ec19e6c67
    https://github.com/scummvm/scummvm/commit/e4c3c690902e546f2a093815cfe2ae6ec19e6c67
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-10-03T14:14:57+02:00

Commit Message:
GRAPHICS: MACGUI: Fix nested menus parsing

Changed paths:
    graphics/macgui/macmenu.cpp


diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index 917e1ff..3bcfdcc 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -225,12 +225,12 @@ MacMenu *MacMenu::createMenuFromPEexe(Common::PEResources &exe, MacWindowManager
 	MacMenu *menu = wm->addMenu();
 
 	Common::Stack<MacMenuSubMenu *> menus;
+	Common::Stack<bool> popups;
 
 	int depth = 0;
 	int curMenuItemId = 0;
 	int action = 0;
 	bool lastPopUp = false;
-	bool lastPopUpCopy = false; // no more than 2 level menu for now
 	while (depth >= 0) {
 		uint16 flags = menuData->readUint16LE();
 		if (flags & kPopUp) {
@@ -244,12 +244,10 @@ MacMenu *MacMenu::createMenuFromPEexe(Common::PEResources &exe, MacWindowManager
 
 			MacMenuSubMenu *submenu = menu->addSubMenu(menus.size() ? menus.top() : nullptr);
 			menus.push(submenu);
-
-			if (lastPopUp) {
-				lastPopUpCopy = lastPopUp;
-			}
+			popups.push(lastPopUp);
 
 			lastPopUp = (flags & kEndMenu) != 0;
+
 			depth++;
 		} else {
 			menuData->readUint16LE(); // menu id
@@ -262,17 +260,19 @@ MacMenu *MacMenu::createMenuFromPEexe(Common::PEResources &exe, MacWindowManager
 			}
 			if (flags & kEndMenu) {
 				menus.pop();
+				depth--;
 
-				if (lastPopUp)
-					depth -= 2;
-				else
+				if (lastPopUp) {
 					depth--;
 
+					if (menus.size())
+						menus.pop();
+				}
+
 				if (depth == 0)
 					curMenuItemId++;
 
-				lastPopUp = lastPopUpCopy;
-				lastPopUpCopy = false;
+				lastPopUp = popups.pop();
 			}
 		}
 	}





More information about the Scummvm-git-logs mailing list