[Scummvm-git-logs] scummvm master -> 3f7112d5c9a97aead70616ab5ecde5f0efe41968

sev- sev at scummvm.org
Thu Oct 3 21:51:37 CEST 2019


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

Summary:
c6930f2f78 GRAPHICS: MACGUI: Implement hovering out of menus behaviour
55c5664ced GRPAHICS: MACGUI: Avoid overdraw
3f7112d5c9 GRAPHICS: MACGUI: Refactor some code


Commit: c6930f2f78471e1af3e70967b1f3f7142c233bc4
    https://github.com/scummvm/scummvm/commit/c6930f2f78471e1af3e70967b1f3f7142c233bc4
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-10-03T21:51:28+02:00

Commit Message:
GRAPHICS: MACGUI: Implement hovering out of menus behaviour

Changed paths:
    graphics/macgui/macmenu.cpp


diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index 3bcfdcc..61fa02b 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -837,7 +837,7 @@ bool MacMenu::mouseClick(int x, int y) {
 
 	if (_menustack.size() > 0 && _menustack.back()->bbox.contains(x, y)) {
 		MacMenuSubMenu *it = _menustack.back();
-		int numSubItem = (y - it->bbox.top) / kMenuDropdownItemHeight;
+		int numSubItem = MIN<int>((y - it->bbox.top) / kMenuDropdownItemHeight, it->subitems.size() - 1);
 
 		if (numSubItem != _activeSubItem) {
 			_activeSubItem = numSubItem;
@@ -851,32 +851,36 @@ bool MacMenu::mouseClick(int x, int y) {
 		return true;
 	}
 
-	if (_activeSubItem != -1) {
-		if (_menustack.back()->subitems[_activeSubItem]->submenu != nullptr) {
-			if (_menustack.back()->subitems[_activeSubItem]->submenu->bbox.contains(x, y)) {
-				_menustack.push_back(_menustack.back()->subitems[_activeSubItem]->submenu);
+	if (_activeSubItem != -1 && _menustack.back()->subitems[_activeSubItem]->submenu != nullptr) {
+		if (_menustack.back()->subitems[_activeSubItem]->submenu->bbox.contains(x, y)) {
+			_menustack.push_back(_menustack.back()->subitems[_activeSubItem]->submenu);
 
-				_activeSubItem = 0;
-				_contentIsDirty = true;
+			_activeSubItem = 0;
+			_contentIsDirty = true;
 
-				_menustack.back()->highlight = 0;
+			_menustack.back()->highlight = 0;
 
-				return true;
-			}
+			return true;
 		}
+	}
 
-		if (_menustack.size() > 1) {
-			if (_menustack[_menustack.size() - 2]->bbox.contains(x, y)) {
-				_menustack.back()->highlight = -1; // Erase it for the closed popup
+	if (_menustack.size() > 1) {
+		if (_menustack[_menustack.size() - 2]->bbox.contains(x, y)) {
+			_menustack.back()->highlight = -1; // Erase it for the closed popup
 
-				_menustack.pop_back();
+			_menustack.pop_back();
 
-				_activeSubItem = _menustack.back()->highlight;
+			MacMenuSubMenu *menu = _menustack.back();
 
-				_contentIsDirty = true;
+			_activeSubItem = MIN<int>((y - menu->bbox.top) / kMenuDropdownItemHeight, menu->subitems.size() - 1);
 
-				return true;
-			}
+			menu->highlight = _activeSubItem;
+
+			renderSubmenu(menu);
+
+			_contentIsDirty = true;
+
+			return true;
 		}
 	}
 


Commit: 55c5664cedcf978560ea3277a99a92a181be8021
    https://github.com/scummvm/scummvm/commit/55c5664cedcf978560ea3277a99a92a181be8021
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-10-03T21:51:28+02:00

Commit Message:
GRPAHICS: MACGUI: Avoid overdraw

Changed paths:
    graphics/macgui/macmenu.cpp


diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index 61fa02b..9d05c76 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -836,15 +836,13 @@ bool MacMenu::mouseClick(int x, int y) {
 		return false;
 
 	if (_menustack.size() > 0 && _menustack.back()->bbox.contains(x, y)) {
-		MacMenuSubMenu *it = _menustack.back();
-		int numSubItem = MIN<int>((y - it->bbox.top) / kMenuDropdownItemHeight, it->subitems.size() - 1);
+		MacMenuSubMenu *menu = _menustack.back();
+		int numSubItem = MIN<int>((y - menu->bbox.top) / kMenuDropdownItemHeight, menu->subitems.size() - 1);
 
 		if (numSubItem != _activeSubItem) {
 			_activeSubItem = numSubItem;
+			menu->highlight = _activeSubItem;
 
-			it->highlight = _activeSubItem;
-
-			renderSubmenu(it);
 			_contentIsDirty = true;
 		}
 
@@ -873,11 +871,8 @@ bool MacMenu::mouseClick(int x, int y) {
 			MacMenuSubMenu *menu = _menustack.back();
 
 			_activeSubItem = MIN<int>((y - menu->bbox.top) / kMenuDropdownItemHeight, menu->subitems.size() - 1);
-
 			menu->highlight = _activeSubItem;
 
-			renderSubmenu(menu);
-
 			_contentIsDirty = true;
 
 			return true;
@@ -888,7 +883,6 @@ bool MacMenu::mouseClick(int x, int y) {
 		_activeSubItem = -1;
 
 		if (_menustack.size()) {
-			renderSubmenu(_menustack.back());
 			_contentIsDirty = true;
 		}
 


Commit: 3f7112d5c9a97aead70616ab5ecde5f0efe41968
    https://github.com/scummvm/scummvm/commit/3f7112d5c9a97aead70616ab5ecde5f0efe41968
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2019-10-03T21:51:28+02:00

Commit Message:
GRAPHICS: MACGUI: Refactor some code

Changed paths:
    graphics/macgui/macmenu.cpp


diff --git a/graphics/macgui/macmenu.cpp b/graphics/macgui/macmenu.cpp
index 9d05c76..7ed4f31 100644
--- a/graphics/macgui/macmenu.cpp
+++ b/graphics/macgui/macmenu.cpp
@@ -102,6 +102,8 @@ struct MacMenuSubMenu {
 		for (uint i = 0; i < subitems.size(); i++)
 			delete subitems[i];
 	}
+
+	int ytoItem(int y) { return MIN<int>((y - bbox.top) / kMenuDropdownItemHeight, subitems.size() - 1); }
 };
 
 MacMenuSubItem::~MacMenuSubItem() {
@@ -837,7 +839,7 @@ bool MacMenu::mouseClick(int x, int y) {
 
 	if (_menustack.size() > 0 && _menustack.back()->bbox.contains(x, y)) {
 		MacMenuSubMenu *menu = _menustack.back();
-		int numSubItem = MIN<int>((y - menu->bbox.top) / kMenuDropdownItemHeight, menu->subitems.size() - 1);
+		int numSubItem = menu->ytoItem(y);
 
 		if (numSubItem != _activeSubItem) {
 			_activeSubItem = numSubItem;
@@ -870,8 +872,7 @@ bool MacMenu::mouseClick(int x, int y) {
 
 			MacMenuSubMenu *menu = _menustack.back();
 
-			_activeSubItem = MIN<int>((y - menu->bbox.top) / kMenuDropdownItemHeight, menu->subitems.size() - 1);
-			menu->highlight = _activeSubItem;
+			_activeSubItem = menu->highlight = menu->ytoItem(y);
 
 			_contentIsDirty = true;
 





More information about the Scummvm-git-logs mailing list